第五章:SRv6-TE Policy(上)

张开发
2026/5/18 8:39:43 15 分钟阅读
第五章:SRv6-TE Policy(上)
​​​​​​定义SRv6 TE Policy是在SRv6技术基础上发展的一种新的隧道引流技术。SRv6 TE Policy路径表示为指定路径的段列表Segment List称为SID列表Segment ID List。每个SID列表是从源到目的地的端到端路径指示网络中的设备遵循SID列表进行数据转发而不是依赖IGP计算的最短路径。如果数据包被导入SRv6 TE Policy中SID列表由头端添加到数据包上网络的其余设备执行SID列表中嵌入的指令即可。SRv6 TE Policy包括以下三部分HeadEnd头端SRv6 TE Policy生成的节点Color颜色SRv6 TE Policy携带的Color属性携带相同Color拓展团体属性的BGP路由可以使用该SRv6 TE PolicyEndpoint尾端SRv6 Policy的目的地址其中Color属性定义了应用级的网络SLA策略可以基于特定业务的SLA规划网络路径实现业务价值细分构建新的商业模式。Color和Endpoint信息通过配置添加到SRv6 TE Policy业务网络头端通过路由携带的Color属性和下一跳信息来匹配对应的SRv6 TE Policy实现业务流量转发。SRv6 TE Policy模型SRv6 TE Policy的模型和SR MPLS TE Policy完全相同一个SRv6 Policy路径可以包含多个候选路径Candidate Path候选路径携带优先级Preference属性可以根据优先级来定义主备路径一个候选路径可以包含多个Segment List每个Segment List携带权重Weight属性可以根据权重来进行ECMP或UCMPSRv6 TE Policy创建方式SRv6 TE Policy可以静态配置也可以由控制器动态生成然后传递给设备。静态配置的方式会在后面章节详细讲述本小节先简单讲述控制器动态生成的方式。控制器通过BGP-LS收集网络拓扑和SID信息网络拓扑信息包括链路开销、时延、丢包率等。控制器与头端转发器之间建立BGP IPv6 SR-Policy地址族的BGP邻居。控制器基于链路开销、时延、丢包率等维度计算SRv6 TE Policy然后通过BGP邻居下发给头端头端生成SRv6 TE Policy表项。SRv6 TE Policy引流方案方案介绍SRv6 TE Policy的引流方案步骤第一步对路由进行着色配置BGP拓展团体属性color第二步对流量进行引流有以下引流方式通过Color引流通过Flow-groupDSCP、Service Class、TE-Class引流第三步配置隧道策略VPN数据需要在隧道上承载。针对IPv4网络系统默认为VPN选择LSP类型隧道且不进行隧道的负载分担。如果系统的默认操作不满足VPN的需求那么就需要应用隧道策略隧道策略有以下两种隧道类型优先级策略该策略可以改变VPN选择的隧道类型,或者进行隧道的负载分担。隧道绑定策略该策略可以为VPN绑定TE隧道以保证QoS。针对IPv6网络只支持隧道类型优先级策略后面全部简称“隧道策略”而且可供选择的隧道只有SRv6 TE Policy和SRv6 TE Flow Group。实验案例ColorEndpoint引流热备路径实验背景R1~R7 IGP运行ISIS协议R1、R2、R6、R7属于PE设备R3、R4属于RR设备PE分别与RR建立EVPN IBGP邻居关系AS号为100R1的VPN实例与R8建立EBGP邻居关系R8的AS号为65001R6和R7的VPN实例与R9建立EBGP邻居关系R9的AS号为65002。编址规则R1的loopback地址为1::1/1283/0/1接口地址为13::1/643/0/2接口地址为12::2/643/0/0接口地址为10.1.18.1/24Locator地址为A1:100::/64其余设备和接口按照R1的编制规则设计。实验需求R1~R7运行SRv6R8访问R9通过ColorEndpoint的方式迭代到SRv6 TE Policy主用路径为1-3-4-7备用路径为1-2-4-3-6同时开启热备功能R9访问R8走SRv6 BE路径即可。控制层分析R9-R8第一步R1~R7配置设备和接口的ISIS协议以R1的配置为示例R2~R7的配置类似不再赘述。完成配置后设备间可以相互学习到彼此的loopback地址。[R1]isis[R1-isis-1]network-entity 49.0001.0010.0000.0001.00[R1-isis-1]is-level level-2[R1-isis-1]cost-style wide[R1-isis-1]ipv6 enable topology ipv6[R1]interface LoopBack 0[R1-LoopBack0]ipv6 enable[R1-LoopBack0]ipv6 address 1::1 128[R1-LoopBack0]isis ipv6 enable[R1]interface GigabitEthernet 3/0/2[R1-GigabitEthernet3/0/2]ipv6 enable[R1-GigabitEthernet3/0/2]ipv6 address 12::1 64[R1-GigabitEthernet3/0/2]isis ipv6 enable第二步R1~R7配置Locator并在ISIS下发布以R1的配置为示例R2~R7的配置类似不再赘述。完成配置后设备间能够相互学习到彼此的Locator地址。[R1]segment-routing ipv6[R1-segment-routing-ipv6]locator R1 ipv6-prefix A1:100:: 64 static 32[R1-segment-routing-ipv6-locator]opcode ::1 end no-flavor[R1]isis[R1-isis-1]segment-routing ipv6 locator R1 auto-sid-disable第三步PE设备R1、R2、R6、R7分别与RRR3、R4建立EVPN IBGP邻居关系PE与CER8、R9之间建立IPv4 EBGP邻居关系以R1和R3配置为示例其余PE设备配置与R1类似R4配置与R3类似不再赘述。完成配置后PE设备与RR的EVPN IBGP邻居关系正常建立PE与CE之间的IPv4 EBGP邻居关系正常建立。[R1]bgp 100[R1-bgp]router-id 1.1.1.1[R1-bgp]peer 3::3 as-number 100[R1-bgp]peer 3::3 connect-interface lo0[R1-bgp]peer 4::4 as-number 100[R1-bgp]peer 4::4 connect-interface lo0[R1-bgp]l2vpn-family evpn[R1-bgp-af-evpn]peer 3::3 enable[R1-bgp-af-evpn]peer 3::3 advertise encap-type srv6[R1-bgp-af-evpn]peer 4::4 enable[R1-bgp-af-evpn]peer 4::4 advertise encap-type srv6[R1]ip vpn-instance vpn.a[R1-vpn-instance-vpn.a]route-distinguisher 65001:1[R1-vpn-instance-vpn.a-af-ipv4]vpn-target 1:1 both evpn[R1]interface GigabitEthernet 3/0/0[R1-GigabitEthernet3/0/0]ip binding vpn-instance vpn.a[R1-GigabitEthernet3/0/0]ip address 10.1.18.1 24[R1]bgp 100[R1-bgp]ipv4-family vpn-instance vpn.a[R1-bgp-vpn.a]peer 10.1.18.8 as-number 65001[R3]bgp 100[R3-bgp]router-id 3.3.3.3[R3-bgp]group IBGP internal[R3-bgp]peer IBGP connect-interface Lo0[R3-bgp]peer 1::1 group IBGP[R3-bgp]peer 2::2 group IBGP[R3-bgp]peer 6::6 group IBGP[R3-bgp]peer 7::7 group IBGP[R3-bgp]l2vpn-family evpn[R3-bgp-af-evpn]undo policy vpn-target[R3-bgp-af-evpn]peer IBGP reflect-client[R3-bgp-af-evpn]peer IBGP advertise encap-type srv6[R3-bgp-af-evpn]peer 1::1 group IBGP[R3-bgp-af-evpn]peer 2::2 group IBGP[R3-bgp-af-evpn]peer 3::3 group IBGP[R3-bgp-af-evpn]peer 4::4 group IBGP第四步打通SRv6 BE隧道控制层R9-R8为后续引流至SRv6 TE Policy做准备以R6的配置为示例其余设备配置类似不再赘述。[R6]bgp 100[R6-bgp]ipv4-family vpn-instance vpn.a[R6-bgp-vpn.a]advertise l2vpn evpn[R6-bgp-vpn.a]segment-routing ipv6 locator R6 evpn[R6-bgp-vpn.a]segment-routing ipv6 traffic-engineer best-effort evpn[R1]bgp 100[R1-bgp]ipv4-family vpn-instance vpn.a[R1-bgp-vpn.a]segment-routing ipv6 traffic-engineer best-effort evpn完成以上配置后R6成功通过EVPN将172网段路由发送给RRRR反射路由给R1R1收到路由后传递给CE至此控制层的路由传递便完成了在R1抓取来自R6的BGP update报文可以看到在控制层的报文与SRv6 BE是一样的第五步创建SRv6 TE Policy隧道R8-R9方向1、为目标路由着色以R1的配置为示例R2的配置类似不再赘述。[R1]acl 2000[R1-acl4-basic-2000]rule permit source 172.16.10.0 24[R1]route-policy p1 permit node 10[R1-route-policy]if-match acl 2000[R1-route-policy]apply extcommunity color 0:100[R1]route-policy p1 permit node 20[R1]bgp 100[R1-bgp]l2vpn-family evpn[R1-bgp-af-evpn]peer 3::3 route-policy p1 import[R1-bgp-af-evpn]peer 4::4 route-policy p1 import完成以上配置后在R1可以看到去往172网段的路由携带了color属性2、静态配置SRv6 TE Policy隧道以R1的配置为示例R2的配置类似不再赘述。[R1]segment-routing ipv6[R1-segment-routing-ipv6]segment-list s1//定义主用路径的segment-list[R1-segment-routing-ipv6-segment-list-s1]index 10 sid ipv6 A3:300::1[R1-segment-routing-ipv6-segment-list-s1]index 20 sid ipv6 A4:400::1[R1-segment-routing-ipv6-segment-list-s1]index 30 sid ipv6 A7:700::1[R1-segment-routing-ipv6-segment-list-s1]index 40 sid ipv6 A6:600::1//segment-list可以使用End SIDEnd.X SIDAnycast SID或者Binding SID等进行组合[R1-segment-routing-ipv6]segment-list s2//定义备用路径的segment-list[R1-segment-routing-ipv6-segment-list-s2]index 10 sid ipv6 A2:200::1[R1-segment-routing-ipv6-segment-list-s2]index 20 sid ipv6 A4:400::1[R1-segment-routing-ipv6-segment-list-s2]index 30 sid ipv6 A3:300::1[R1-segment-routing-ipv6-segment-list-s2]index 40 sid ipv6 A6:600::1[R1-segment-routing-ipv6]srv6-te policy p1 endpoint 6::6 color 100//创建基于colorendpoint方式引流的srv6 te policy[R1-segment-routing-ipv6-policy-p1]candidate-path preference 200//数值越大越优[R1-segment-routing-ipv6-policy-p1-path]segment-list s1[R1-segment-routing-ipv6-policy-p1]candidate-path preference 100[R1-segment-routing-ipv6-policy-p1-path]segment-list s2完成以上配置后可以使用指令display srv6-te policy policy-name p1来检查该SRv6 TE Policy的隧道状态和配置信息。值得注意的是SRv6 TE Policy创建完默认就会UP就算被segment list使用的SRv6 SID不存在隧道也会UP需要配合故障检测功能使用比如bfd才能判断流量是否可以通。以下部分输出是对该隧道的整体描述指明该隧道使用的color和endpoint目前的状态有没有关联BFD封装模式是什么共关联多少条候选路径等信息以下部分输出是针对第一条候选路径的主要指明该路径的优先级和使用的Segment List以下部分输出是针对第二条候选路径的主要指明该路径的优先级和使用的Segment List该SRv6 TE Policy有两条候选路径但是优先级不同只能实现主备路径可以通过使用指令tracert srv6-te policy policy-name p1来检查TE路径的可达性此时只会检测处于激活状态的主路径现在开启热备路径[R1]segment-routing ipv6[R1-segment-routing-ipv6]srv6-te policy p1[R1-segment-routing-ipv6-policy-p1]backup hot-standby enable再来看看该TE隧道的输出信息总体描述这里的的热备状态显示已开启主路径的描述没有什么变化备用路径的输出如下路径状态变为Active现在再tracert该TE隧道会同时检测主备路径3、创建隧道策略引入私网流量SRv6 TE Policy配置完成以后需要将业务流量当前可以使用SRv6 TE Policy的业务包括BGP L3VPN和EVPN业务等引入SRv6 TE Policy上进行转发这个过程称为引流。在R1上查看去往172网段路由的下一跳信息目前走的是SRv6 BE路径下一跳为A6为172网段分配的End.DT4 SID这个步骤需要做的事情就是将这些VPN私网流量通过隧道策略迭代到SRv6 TE Policy进行数据转发。[R1]tunnel-policy t1[R1-tunnel-policy-t1]tunnel select-seq ipv6 srv6-te-policy load-balance-number 1//配置隧道类型为srv6-te-policy负载均衡条目数为1[R1]ip vpn-instance vpn.a[R1-vpn-instance-vpn.a]tnl-policy t1 evpn//在vpn实例下引用隧道策略完成以上配置后再在R1上检查VPN实例的RIB表发现去往172网段路由的下一跳变成R6的Lo0地址而出接口变成srv6 te policy p1假设本地还有多条srv6 te policy为什么172网段的路由就正好匹配p1这个te隧道呢这是因为172网段携带的color和RIB表的路由下一跳正好与p1配置的color和Endpoint地址相同这样流量才能被正确导入对应的srv6 te policy。这里正好也解释了为什么在配置srv6 te policy的Endpoint时必须要使用设备的lo0地址因为这个地址正好是用来建立BGP的源地址。至此控制层的路由传递就完成了比起SRv6 BE,总体来说就是多了设置SRv6 TE Policy和引流这两个步骤而已,但是配置量却大大增加了。数据层分析R8-R9R8发送数据包R1从vpn实例表接收到数据包于是查本地的FIB表发现下一跳需要迭代到srv6 te policy p1隧道srv6 te policy p1定义的封装方式为Insert可以理解为在原先的SRv6 BE报文中间SRH主路径使用的Segment List为s1R1作为头节点将业务报文封装成:: A3:300::1|A6:600::1:0:3 s1|payload在R1的3/0/1抓包验证R1发出的数据包IPv6目的地址是A3:300::1SL3指向的SID根据最长匹配原则匹配到路由A3:300::/64于是将数据包转发给R3。R3这台Endpoint节点设备根据目的地址查询本地SID表发现要执行End动作于是将SL-12将A4:400::1作为IPv6的目的地址根据最长匹配原则将报文转发给R4R4与R7的转发行为与R3一致。R6接收到数据包目的地址是A6:600::1:0:3查询本地SID表发现需要执行的动作是END.DT4于是解封装IPv6报文向vpn.a实例查询IPv4报文目的地址最后向R9转发至此数据转发层就完成了。附录SRv6 TE Policy的选路规则关于SRv6 TE Policy的输出信息中有一栏“Protocol-Origin”的属性值是用来比较SRv6 TE Policy来源优先级的数值越大越优。静态配置的默认值为30通过BGP接收的默认值为20通过PCEP接收的默认值为10。SRv6 TE Policy的输出信息中有一栏“Originator”的属性值格式为ASN, node-address其中ASN是AS编号。ASN和node-address都是取值越小优先级越高。对于静态配置的SRv6 TE Policy目前ASN固定取值是0node-address固定取值是0.0.0.0。SRv6 TE Policy的输出信息中有一栏“Discriminator”的属性值取值越大优先级越高。对于静态配置的SRv6 TE PolicyDiscriminator固定取preference的值。以上这三个参数Protocol-Origin、Originator、Discriminator其实是用来选路的。当设备存在多个方式产生的SRv6 TE Policy时设备先比较Protocol-Origin、再比较Originator、最后比较Discriminator。附录SRv6 TE Policy的热备路径本实验中SRv6 TE Policy定义了两条候选路径主用路径优先级为200备用路径优先级为100同时在该SRv6 TE Policy视图下开启了热备功能但这不代表这两条候选路径可以实行流量的负载分担。指定EndpointColor实际生效的SRv6 TE Policy隧道只有一条隧道不存在负载分担但是单隧道可以具有多路径不同路径之间可以实现ECMP或UCMP。一般在实际的部署环境中候选路径都是与BFD联动的BFD会实时检测主备用路径的可达性当主路径下所有的Segment List都发生故障依赖于BFD的快速检测设备可以无缝切换到备用路径。在R1的3/0/1抓包可以发现所有的Ping请求包Ping一次默认发送5次请求包都是从这个接口发出的可以说明尽管SRv6 TE Policy开启了热备功能但在正常情况下备用路径是不跑流量的附录隧道策略tunnel select-seq ipv6 {srv6-te-policy|srv6-te-flow-group| gre6 } load-balance-number loadBalanceNumber举例 tunnel select-seq ipv6 srv6-te-policy srv6-te-flow-group load-balance-number 3 unmix系统会按照隧道类型顺序优先选择排在前面的srv6-te-policysrv6-te-policy和srv6-te-flow-group不能混合选择只有当排在前面的隧道不可达才会后向选择所以隧道类型如果同时添加了这两种类型后面必然要添加unmix参数这里配置的负载分担条目数为3若当前系统有3条或以上可用的srv6-te-policy则随机选择其中3条若少于3条可用的srv6-te-policy系统也不再从srv6-te-flow-group隧道中取附录CE双归的问题本实验中R9这台CE是双归到R6和R7两台PE的但是由于引流方式是colorendpoint而endpoint指定了R6那么R8访问R9的流量就必须经过R6才能向R9转发无法实现负载分担。如何解决这个问题呢可以通过增加SRv6 TE Policy来实现负载分担。实现负载均衡的前提不管流量走的是SRv6 BE还是SRv6 TE PolicyRIB表首先要实现负载分担最好在打通SRv6 BE的时候就检查RIB表有没有实现负载均衡。BGP的路由表永远只有一条最优路由要实现RIB表的负载分担需要执行以下指令[R1]bgp 100[R1-bgp]ipv4-family vpn-instance vpn.a[R1-bgp-vpn.a]maximum load-balancing ibgp 2//最多两条下一跳不同的路由进行负载分担完成以上配置后RIB表也只有一条路由现在再增加Endpoint为R7的SRv6 TE Policy[R1]segment-routing ipv6[R1-segment-routing-ipv6]srv6-te policy p2 endpoint 7::7 color 100[R1-segment-routing-ipv6-policy-p2]candidate-path preference 200[R1-segment-routing-ipv6-policy-p2-path]segment-list s1完成以上配置后去往172网段的SRv6 TE Policy可以实现负载分担了还有一个值得注意的事情现在的隧道策略还是保持不变的tunnel select-seq ipv6 srv6-te-policy load-balance-number 1不要被load-balance-number 1误导了因为现在的SRv6 TE Policy是通过ColorEndpoint定义的p1和p2两条隧道的Color相同而Endpoint不同属于两条不同的SRv6 TE Policy。指定EndpointColor实际生效的SRv6 TE Policy只有一条不存在负载分担所以load-balance-number恒等于1。Color only引流UCMP路径实验背景R1~R7 IGP运行ISIS协议R1、R2、R6、R7属于PE设备R3、R4属于RR设备PE分别与RR建立EVPN IBGP邻居关系AS号为100R1的VPN实例与R8建立EBGP邻居关系R8的AS号为65001R6和R7的VPN实例与R9建立EBGP邻居关系R9的AS号为65002。编址规则R1的loopback地址为1::1/1283/0/1接口地址为13::1/643/0/2接口地址为12::2/643/0/0接口地址为10.1.18.1/24Locator地址为A1:100::/64其余设备和接口按照R1的编制规则设计。实验需求R1~R7运行SRv6R8访问R9通过Color-Only的方式迭代进SRv6 TE Policy路径1设置为1-3-4-7权重值为70路径2设置为1-2-4-3-6权重值为80 R9访问R8走SRv6 BE路径即可。控制层分析R9-R8第一步R1~R7配置设备和接口的ISIS协议略第二步R1~R7配置Locator并在ISIS下发布略第三步PE设备R1、R2、R6、R7分别与RRR3、R4建立EVPN IBGP邻居关系PE与CER8、R9之间建立IPv4 EBGP邻居关系略第四步打通SRv6 BE隧道控制层R9-R8略第五步创建SRv6 TE Policy隧道R8-R9方向1、为目标路由着色以R1的配置为示例R2的配置类似不再赘述。[R1]acl 2000[R1-acl4-basic-2000]rule permit source 172.16.10.0 24[R1]route-policy p1 permit node 10[R1-route-policy]if-match acl 2000[R1-route-policy]apply extcommunity color 0:100[R1]route-policy p1 permit node 20[R1]bgp 100[R1-bgp]l2vpn-family evpn[R1-bgp-af-evpn]peer 3::3 route-policy p1 import[R1-bgp-af-evpn]peer 4::4 route-policy p1 import2、静态配置SRv6 TE Policy隧道以R1的配置为示例R2的配置类似不再赘述。[R1]segment-routing ipv6[R1-segment-routing-ipv6]segment-list s1[R1-segment-routing-ipv6-segment-list-s1]index 10 sid ipv6 A3:300::1[R1-segment-routing-ipv6-segment-list-s1]index 20 sid ipv6 A4:400::1[R1-segment-routing-ipv6-segment-list-s1]index 30 sid ipv6 A7:700::1[R1-segment-routing-ipv6-segment-list-s1]index 40 sid ipv6 A6:600::1[R1-segment-routing-ipv6]segment-list s2[R1-segment-routing-ipv6-segment-list-s2]index 10 sid ipv6 A2:200::1[R1-segment-routing-ipv6-segment-list-s2]index 20 sid ipv6 A4:400::1[R1-segment-routing-ipv6-segment-list-s2]index 30 sid ipv6 A3:300::1[R1-segment-routing-ipv6-segment-list-s2]index 40 sid ipv6 A6:600::1[R1-segment-routing-ipv6]srv6-te policy p1 endpoint :: color 100//创建基于color only方式引流的srv6 te policy[R1-segment-routing-ipv6-policy-p1]candidate-path preference 200[R1-segment-routing-ipv6-policy-p1-path]segment-list s1 weight 80//设置权重为80[R1-segment-routing-ipv6-policy-p1-path]segment-list s2 weight 40//设置权重为40查看SRv6 TE Policy P1的输出信息可以看到Endpoint是没有指定的用::表示路径都带权重值。3、创建隧道策略引入私网流量[R1]bgp 100[R1-bgp]ipv4-family vpn-instance vpn.a[R1-bgp-vpn.a]segment-routing ipv6 color-only evpn//使能路由迭代进SRv6 TE Policy Color-Only隧道的能力[R1]tunnel-policy t1[R1-tunnel-policy-t1]tunnel select-seq ipv6 srv6-te-policy load-balance-number 1[R1]ip vpn-instance vpn.a[R1-vpn-instance-vpn.a]tnl-policy t1 evpn从以下输出可以看到172网段的下一跳不管是R6还是R7,只要匹配了color 100就走p1隧道数据分析层R8-R9略

更多文章