SRv6 TE Policy场景-原理浅谈及配置示例
个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。
但是由于SRv6 TE Policy场景的特殊性及其实现上的限制,这里仅仅浅谈下SRv6 TE Policy的个人理解。并且以EVPN L3VPN for IPv4 Over SRv6 TE Policy场景为例试图进行相关分析。
关于BGP/MPLS工作原理的相关内容,可参考2006年发布的RFC4364。
关于MP-BGP协议的相关内容,可参考2007年发布的RFC4760。
关于SRv6对L3VPN/EVPN的承载原理内容,可参考2022年发布的RFC9252
关于SRv6原理相关内容,可参考博客SRv6(BE)-原理介绍+报文解析+配置示例。
关于EVPN协议原理相关内容,可参考博客VXLAN-原理介绍+报文分析+配置实例。
关于BGP协议的相关字段信息,可参考IANA的Border Gateway Protocol (BGP) Parameters。
并且SRv6 TE还可结合控制器完成配置下发;联动链路质量检测协议,进行链路选择等
- 关于OWAMP基本原理的RFC,可参考2006年发布的RFC4656。
- 关于TWAMP基本原理的RFC,可参考2008年发布的RFC5357。
- 用于配置下发的NETCONF协议,可参考2011年发布的RFC6241。
- 关于YANG模型基本原理的RFC,可参考2016年发布的RFC7950。
- 关于TWAMP的YANG模型RFC,可参考2021年发布的RFC8913。
- 关于Telemetry基本原理的RFC,可参考2022年发布的RFC9232。
- 关于SRv6 OAM基本原理的RFC,可参考2022年发布的RFC9259。
......
SRv6还存在大量相关RFC,感兴趣者可查阅相关资料。
本文从架构上来看,主要是针对SRv6 TE Policy的应用提供相应参考。SRv6的详细内容主要记录于博客SRv6(BE)-原理介绍+报文解析+配置示例。感兴趣者可查阅相关资料
第2和第3章节直接描述了SRv6 TE Policy的相关场景,有基础者可直接阅读相关内容。
目录
@
1.SR Policy的扩展介绍
博客SRv6(BE)-原理介绍+报文解析+配置示例已进行部分介绍。为阅读方便,这里将SR Policy相关内容直接挪用。
主要参考2022-RFC9256-Segment Routing Policy Architecture进行描述。此处仅进行简单介绍,详细的取值和定义可查阅相关资料。
1.1.SR Policy和Candidate Path
1@:SR Policy必须通过元组<Headend,Color,Endpoint>来标识。Color和Endpoint共同描述了到目标的信息。
元组是一个程序概念,可以理解为数据结构的最小单元。只是这个单元有三个要素/成员。
Headend:实例化或实施策略的节点。也即IPv4/IPv6地址,在SR domain中全局唯一。
Color:非0的32-bit整数。将SR策略与意图或目标(例如,低延迟)相关联。
Endpoint:policy的目的。同样即IPv4/IPv6地址,在SR domain中全局唯一。特定情况下可为未指定地址:0.0.0.0或::。
2@:SR Policy与一个或多个 Candidate Path 候选路径相关联。候选路径可通过 Path Computation Element Communication Protocol (PCEP) 或BGP SR Policy协议或手工传递相应的信令。
3@:候选路径可以是动态的、显式的或复合的。
动态的候选路径表示特定数据平面(即SR-MPLS或SRv6)的优化目标和一组约束。Headend可借助PCE对优化问题动态的生成SL或SL的集合。
显式的候选路径表示为SL或SL的集合。
复合的候选路径充当对SR Policy进行分组的容器。每个策略都具有显式的候选路径和/或具有潜在不同优化目标和约束的动态候选路径的组合,可用于对分组流进行负载平衡的引导。
简单来说候选路径就是Segment List,用于标识的流量经过的路径。并且如果动态候选路径与SL相关联,则SID报文中的weight有效,并默认置为1用于负载分担。
自动换行
SR Policy可包含/继承其他SR policy,此时要求子父SR Policy有如下要求:
@:子父SR Policy的endpoints必须相同。
@:子父SR Policy的Color必须不同。
@:父SR Policy不可使用复合的候选路径。
4@:至少有一个Candidate Path 候选路径,SR Policy才可生效。
因此SR Policy的关键在于候选路径的选择。
CP的标识:候选路径的标识主要有以下原则:
@:前文提到SR Policy可有多个候选路径,这里要说明的是一个候选路径只为一个SR Policy服务。一个候选路径不可共享给其他SR Policy。
@:SL不可用于区分候选路径,即使他们一样。SL是候选路径的一个属性。
@:元组<Protocol Origin,Originator,Discriminator>唯一标识候选路径。
@:候选路径使用ASCII[RFC0020]字符(即0x20到0x7E)的符号名称发信号,以用作用户友好属性,用于调试和故障排除。此类符号名称不得被视为候选路径的标识符。
Protocol-Origin of CP:8-bit,候选路径的协议起源。
目前RFC9256建议PCEP协议取10;BGP SR Policy协议取20;配置取30。
该值可作为同等条件下候选路径选择依据之一。
Originator of CP:160-bit,候选路径的始发者用于识别节点。该节点在Headend上提供或用信号标识候选路径。
Originator主要由ASN(4字节)和Node Address(16字节)进行标识。当AS Number取2字节时,高bit置0。同样的当使用IPv4地址时,映射到低32-bit位而高bit置0。
Discriminator of CP:32-bit,候选路径在来自特定Protocol-Origin的SR policy的上下文中唯一地标识。
候选路径的唯一标识,与Protocol-Origin相关。不同的Protocol-Origin有不同的选择定义。
Preferencer of CP:32-bit,用于为SR Policy选择最佳候选路径。
越大越优,默认100。PCEP协议和BGP SR Policy协议对优先级的定义可查阅相关文档。
Active CP:当候选路径可用并被选择为最优时称为Active CP。每一次的路径信息改动必须重新选举Active CP。选举原则如下
@:比较Preferencer,越大越优
@:比较Protocol-Origin,越大越优。如果都是手工配置的,优选已经存在的。
@:比较Originator,越小越优。
@:比较Discriminator,越大越优
SR Policy的实际应用:在SR Policy的实际应用上通常有如下原则:
@:只有可用的SR Policy才能下发到转发面,指导流量执行转发。
@:Active CP必须用于转发被引导到该策略上的流量,但某些情况除外,如Fast ReRoute快速重新路由。
@:如果一组SL与策略的Active CP相关联,则转向是按流的,并根据每个SL的相对权重加权ECMP(W-ECMP)。当复合候选路径处于活动状态时,引导到每个组成SR策略的流的分数等于每个组成SR政策的相对权重。w/Sw。
@:加权负载平衡的准确性取决于平台实现。
SR Policy的priority:取值0-255,越小优先级越高。默认128。SR Policy的priority可以用在如下场景:
当拓扑发生改变时,每一条SR Policy势必要重新计算Active CP。priority可用于指导优先进行计算的SR Policy。
当使用非默认的priority时,也用于选举。
SR Policy的应用举例:
有如下场景1:
SR Policy1有候选路径CP1和CP2,按上文介绍应选择CP1作为Active CP。并且在引导数据流量时,根据flow-based哈希到SL1的流量应为W1/(W1+W2)。
有如下场景2:
SR Policy100为复合Policy,有父SR Policy color1和SR Policy color2。并且依照上文定义,父SR Policy color1和SR Policy color2都不包含复合CP。此时在父SR Policy color1上进行per-flow的哈希流量应为W1/(W1+W2)。
这里的流量还是根据转发表里的SL来。
1.2.其他概念和SR Policy的Implement
Segment Routing Database:也即SR-DB。
SR-DB是一个数据库概念,用于说明可能有助于SR Policy计算和验证的各种信息及其来源。SR Policy计算节点(例如,Headend或控制器)通常维护SR-DB。Headend可通过SR-DB验证显式候选路径和动态候选路径。
SR-DB通常包括:
@:IGP拓扑信息
@:Segment Route信息,例如SRGB、SRLB和SID等。
@:TE链路属性,例如TE度量、Shared Risk Link Groups共享风险链路组、attribute-flag属性标志、extended admin group扩展管理组等。
@:扩展TE链路属性,例如延迟、丢包。
@:AS内部拓扑信息。
所连接域的拓扑可以通过IGP、BGP-LS和NETCONF协议获得。非所连接则可通过BGP-LS和NETCONF协议获得。
Segment Types:
基于所需的数据平面,可从Segment List构建MPLS标签栈或SRv6 SRH。但是,Segment List本身可以使用不同的Segment Types来指定,并且当前定义了以下内容:
Type A=SR-MPLS Label:与SR-MPLS定义的任何Segment Types相对应的MPLS标签
Type B=SRv6 SID:与SRv6的任何SID行为相对应的IPv6地址
Type C=IPv4 Prefix with optional SR Algorithm:这是一种特殊情况。要求headend将指定的IPv4前缀地址解析为与其前缀SID段相对应的SR-MPLS标签。
Type D=IPv6 Global Prefix with optional SR Algorithm for SR-MPLS:这是一种特殊情况。要求headend将指定的IPv6全局前缀地址解析为与其前缀SID段相对应的SR-MPLS标签
Type E=IPv4 Prefix with Local Interface ID:这是一种特殊情况。要求headend将指定的IPv4前缀地址解析为发起它的节点,然后使用本地接口ID来识别其邻接为点对点链路。
Type F=IPv4 Addresses for link endpoints as Local, Remote pair:这是一种特殊情况。要求headend将指定的IPv4本地地址解析为发起它的节点,然后使用IPv4远程地址来识别所引用的链路邻接。
Type ...
Type K= IPv6 Addresses for link endpoints as Local, Remote pair for SRv6
Binding SID of a Candidate Path:
相同SR Policy的候选路径应该具有相同的Binding SID。
不同SR Policy的候选路径不得具有相同的Binding SID。
Binding SID of a SR Policy:
SR Policy的Binding SID是其活动候选路径的Binding SID。
使用SR Policy导入流量:主要的方式有4种。
通过Active SID:传入数据包具有与头端的本地Binding SID相匹配的Active SID。
举例:头端H
@有Active SL<S1, S2, S3>和Binding SID B
自动换行
当H收到具有标签/SL为<B, L2, L3>数据包K时,H将进行POP/PHP弹出B并压入<S1, S2, S3>。此时形成<S1, S2, S3, L2, L3>的标签/SL进行相应转发。
Per-Destination的引导:传入数据包与BGP/服务路由匹配,该路由在SR策略上重复出现。
举例:头端H
@从BGP学习到路由R有下一跳N,Color扩展属性C和VPN标签V;
@有可用SR Policy P(headend=H,Color=C,endpoint=N),且其有可用候选路径<S1, S2, S3>和Binding SID B
@有BGP policy可匹配到Color扩展属性C并可应用
自动换行
如果满足所有这些条件,H在RIB/FIB中安装R,下一跳设置BSID B的SR Policy P,而非N。当H收到可匹配路由R的数据包K时,H将压入标签栈/SL<S1, S2, S3, V>。
举例:头端H
@从BGP学习到路由R有下一跳N,Color扩展属性C和VPN标签V;
@有可用SR Policy P1(headend=H,Color=C1,endpoint=N),且其有可用候选路径<S1, S2, S3>和Binding SID B1
@有可用SR Policy P2(headend=H,Color=C2,endpoint=N),且其有可用候选路径<S4, S5, S6>和Binding SID B2
自动换行
如果满足所有这些条件,H在RIB/FIB中安装R,下一跳设置BSID B的SR Policy P2,而非N。因为优选Color大者。并且当SR Policy P1失效时,继续优选Color大的SR Policy。
Per-Flow的引导:传入数据包根据特定的Flow特征在Forwarding Class转发数组上匹配或递归,根据选中的SR Policy进行转发。
举例:头端H
@有可用SR Policy P1(headend=H,Color=C1,endpoint=N),且其有可用候选路径<S1, S2, S3>和Binding SID B1
@有可用SR Policy P2(headend=H,Color=C2,endpoint=N),且其有可用候选路径<S4, S5, S6>和Binding SID B2
@有指向N的数组/队列A。这一数组/队列称为Forwarding Class,并且有元素0-7。例如A[0],A[1],A[2],...,A[7]。数组/队列A中进行如下定义,使用IGP转发至N的数据流定义为A[0],具有Color=C1映射A[2],具有Color=C1映射A[2]。
@具有相应的Flow分类,例如基于VLAN/TOS/DSCP/IP Destination/IP Source/Port等。并对相应的Flow进行着色Color。
自动换行
如果满足所有这些条件,发往N的数据将进行递归。Entry A(0)将按IGP最短路径转发,Entry A(1)将引导至SR Policy P1,Entry A(2)将引导至SR Policy P2。
需要注意的是,即使走A[0]数组/队列也可压入Prefix-SID进行SL转发。并且其他未匹配或无效匹配的数据走A[0]。
当所有流量都进行A[0]转发时,发往N的转发条目被更新以绕过数组/队列并直接指向其传出接口和下一跳。
Policy-Based的引导:传入的数据包与在SR Policy上引导它们的路由策略相匹配。
头端H可以配置有本地路由策略,该策略覆盖任何BGP/IGP路径并在SR Policy上引导指定的数据包。这包括使用IGP Shortcut等机制,通过SR策略自动路由IGP前缀。
2.EVPN L3VPN for IPv4 Over SRv6 TE Policy
2.1.前言
在正式进行场景介绍前,应当简略的进行说明以便进一步了解相关内容。
1@传统的L3VPN场景:传统的L3VPN场景下,我们通常也称为BGP/MPLS IP VPN场景。私网路由通过MP-BGP协议建立邻居关系并传递VPNv4/VPNv6路由,公网使用MPLS/LDP作为数据平面进行相应转发。
2@SRv6 BE场景:与传统的L3VPN场景相比,私网路由仍是以VPNv4路由形式进行传递并额外携带了BGP Pre-fix属性,公网使用SID/IPv6地址进行数据传递。
3@本场景:这样一来我们准备介绍的场景就相当清晰了。控制面上使用EVPN进行私网路由发布,数据面由SRv6 TE承担流量转发角色。
对比EVPN L3VPN for IPv4 Over SRv6 TE Policy来看传统场景可以这样描述MP-BGP L3VPN for IPv4 Over MPLS BE。
当然在具体实现上BGP/MPLS隧道可自动迭代,而SRv6 TE Policy隧道需要有相应的隧道策略。
实现逻辑:为了实现以上功能应当做到
1@:搭建公网环境建立SRv6功能。
这里指需要在PE和P设备上运行IGP协议传递SID信息,为搭建隧道进行相应准备。
2@:每个站点的PE节点创建SRv6 TE Policy隧道,并进行相关功能绑定。
这里绑定指两方面的绑定:1需要将SRv6 TE Policy与EVPN实例进行绑定;2需要将SRv6 TE Policy与隧道流量进行绑定以便流量流入相关隧道中。
3@:创建EVPN邻居关系,以便传递私网路由。
2.2.案例配置
//这里直接场景配置介绍:有上图场景,按上图进行各节点的loopback和互联地址配置以完成场景搭建。
这里直接场景配置介绍:
2.2.1.公网及SRv6基本配置
ISIS公网配置省略,需注意配置宽度量并使能IPv6多拓扑。
NE1:
ISIS 100
segment-routing ipv6 locator <PE1> auto-sid-disable
#
segment-routing ipv6
encapsulation source-address 2001:DB8:1::1
locator <PE1> ipv6-prefix 2001:DB8:100:: 64 static 32
opcode ::1 end-x interface GE1/0/1 nexthop 2001:DB8:10::2 psp
#
自动换行
NE2:
ISIS 100
segment-routing ipv6 locator <P> auto-sid-disable
#
segment-routing ipv6
encapsulation source-address 2001:DB8:2::2
locator <P> ipv6-prefix 2001:DB8:300:: 64 static 32
opcode ::1 end-x interface GE1/0/0 nexthop 2001:DB8:10:1 psp
opcode ::2 end-x interface GE1/0/1 nexthop 2001:DB8:20.2 psp
#
自动换行
NE3:
ISIS 100
segment-routing ipv6 locator <PE2> auto-sid-disable
#
segment-routing ipv6
encapsulation source-address 2001:DB8:3::3
locator <PE2> ipv6-prefix 2001:DB8:300:: 64 static 32
opcode ::1 end-x interface GE1/0/1 nexthop 2001:DB8:20::1 psp
#
这里在公网节点PE和P设备上进行了两项配置:
1@指定以loopback地址作为SRv6隧道的源地址。
2@指定以SRv6相应的End.X SID邻接SID。该邻接SID将后续用于执行TE Policy严格路径的对应路径SID。
在博客SRv6(BE)-原理介绍+报文解析+配置示例中,我们介绍了SID的组成。
SID=Locator+function+Arg。
这里我们介绍下如何手动配置SID。
locator <PE2> ipv6-prefix 2001:DB8:300:: 64 static 32
//定义了名为<PE2>的locator,且locator前缀64bit值为2001:DB8:300::。同时该SID的静态部分为32bit长,因此该SID需要手动配置。
opcode ::1 end-x interface GE1/0/1 nexthop 2001:DB8:20::1 psp
//配置了32bits的Function/Opcode,同时指定该SID为End.X 邻接SID。该邻接指向下一跳2001:DB8:20::1,该下一跳为邻居接口地址。相应的处理动作为PSP倒数第二个Endpoint节点执行移除SRH操作。Args字段未指定则该SID不包含Args。
2.2.2.SRv6 Candidate Path配置
NE1:
segment-routing ipv6
segment-list <pe1-pe2>
index 5 sid ipv6 2001:DB8:100::1
index 10 sid ipv6 2001:DB8:200::2
#
srv6-te policy <policy1> endpoint 2001:DB8:3::3 color 101
candidate-path preference 200
segment-list <pe1-pe2>
#
自动换行
NE3:
segment-routing ipv6
segment-list <pe2-pe1>
index 5 sid ipv6 2001:DB8:300::1
index 10 sid ipv6 2001:DB8:200::2
#
srv6-te policy <policy1> endpoint 2001:DB8:1::1 color 101
candidate-path preference 200
segment-list <pe2-pe1>
#
这里主要在PE节点上定义相应的Candidate Path,也即相应的TE Policy。之后的私网流量经隧道策略后会依照所定义的节点进行转发。
自动换行
//此时可通过ping srv6-te policy来检查SRv6 TE Policy的联通性。
2.2.3.BGP/EVPN配置
CE--PE的互操作配置类略,两者建立的是普通的BGP邻居。
NE1:
ip vpn-instance <vpn1>
ipv4-family
route-distinguisher 100:1
vpn-target 1:1 export-extcommunity evpn
vpn-target 1:1 import-extcommunity evpn
#
segment-routing ipv6
encapsulation source-address 2001:DB8:1::1
locator <PE1> ipv6-prefix 2001:DB8: 100::64 static 32
opcode ::100 end-dt4 vpn-instance <vpn1> evpn
#
bgp 100
router-id 1.1.1.1
peer 2001:DB8:3::3 as-number 100
peer 2001:DB8:3::3 connect-interface LoopBack1
#
ipv4-family vpn-instance <vpn1>
import-route direct
advertise l2vpn evpn
segment-routing ipv6 locator <PE1> evpn
segment-routing ipv6 traffic-engineer best-effort evpn
peer 10.1.1.2 as-number 65410
#
l2vpn-family evpn
policy vpn-target
peer 2001:DB8:3::3 enable
peer 2001:DB8:3::3 advertise encap-type srv6
#
自动换行
NE3:
ip vpn-instance <vpn1>
ipv4-family
route-distinguisher 200:1
vpn-target 1:1 export-extcommunity evpn
vpn-target 1:1 import-extcommunity evpn
#
segment-routing ipv6
encapsulation source-address 2001:DB8:3::3
locator <PE2> ipv6-prefix 2001:DB8: 300::64 static 32
opcode ::300 end-dt4 vpn-instance <vpn1> evpn
#
bgp 100
router-id 3.3.3.3
peer 2001:DB8:1::1 as-number 100
peer 2001:DB8:1::1 connect-interface LoopBack1
#
ipv4-family vpn-instance <vpn1>
import-route direct
advertise l2vpn evpn
segment-routing ipv6 locator <PE2> evpn
segment-routing ipv6 traffic-engineer best-effort evpn
peer 10.2.1.2 as-number 65420
#
l2vpn-family evpn
policy vpn-target
peer 2001:DB8:1::1 enable
peer 2001:DB8:1::1 advertise encap-type srv6
#
这里主要在PE节点上定义End.DT4 SID并将其与VPN实例进行绑定,以便于将来自该VPN实例的流量插入End.DT4 SID。
同时建立的EVPN邻居将私网路由转化为Type-5 IP Prefix路由(该路由携带Locator SID属性,主要是携带End.DT4 SID)向对端发送。
segment-routing ipv6 traffic-engineer best-effort evpn
//使能SRV6模式EVPN L3VPN,使能EVPN L3VPN业务迭代SRv6 TE Policy隧道的功能。best-effort作为可选参数,用于当SRv6 TE Policy隧道故障时业务可以使用SRv6 BE隧道作为逃生路径场景。
2.2.4.路由迭代入SRv6 TE Policy
NE1:
ip vpn-instance <vpn1>
ipv4-family
route-distinguisher 200:1
vpn-target 1:1 export-extcommunity evpn
vpn-target 1:1 import-extcommunity evpn
tnl-policy <p1> evpn
#
tunnel-policy <p1>
tunnel select-seq ipv6 srv6-te-policy load-balance-number 1
#
bgp 100
l2vpn-family evpn
peer 2001:DB8:3::3 route-policy <rp1> import
#
route-policy <rp1> permit node 10
apply extcommunity color 0:101
#
自动换行
NE3:
ip vpn-instance <vpn1>
ipv4-family
route-distinguisher 200:1
vpn-target 1:1 export-extcommunity evpn
vpn-target 1:1 import-extcommunity evpn
tnl-policy <p1> evpn
#
tunnel-policy <p1>
tunnel select-seq ipv6 srv6-te-policy load-balance-number 1
#
bgp 100
l2vpn-family evpn
peer 2001:DB8:1::1 route-policy <rp1> import
#
route-policy <rp1> permit node 10
apply extcommunity color 0:101
#
tunnel-policy 主要用于在PE节点上来自VPN的流量迭代入TE policy中;
route-policy 主要为接收到的EVPN进行着色,该着色内容与《2.2.2.SRv6 Candidate Path配置》相对应以便将发往该私网路由的流量流入TE Policy。
Note:这里的路由策略可以在两个PE上都指定为出口方向,但指定为出口方向时需要使能通告extcommunity。也即peer advertise-community命令。
因为Color属于团体属性的一种。
2.2.5.配置总结及注意事项
ip vpn-instance <vpn1>
ipv4-family
route-distinguisher 200:1
vpn-target 1:1 export-extcommunity evpn
vpn-target 1:1 import-extcommunity evpn
tnl-policy <p1> evpn
#
//创建VPN实例并绑定EVPN属性,应用隧道策略。注意这里私网为IPv4网络类型,因此地址族为IPv4。
tunnel-policy <p1>
tunnel select-seq ipv6 srv6-te-policy load-balance-number 1
#
//配置VPN应用隧道策略时将优先选择SRv6 TE Policy类型的隧道。
ISIS 100
segment-routing ipv6 locator <PE1> auto-sid-disable
#
//IGP关联SRv6,用于传递SID信息搭建公网IPv6隧道。
segment-routing ipv6
encapsulation source-address 2001:DB8:1::1
locator <PE1> ipv6-prefix 2001:DB8:100:: 64 static 32
opcode ::1 end-x interface GE1/0/1 nexthop 2001:DB8:10::2 psp
opcode ::100 end-dt4 vpn-instance <vpn1> evpn
#
segment-list <pe1-pe2>
index 5 sid ipv6 2001:DB8:100::1
index 10 sid ipv6 2001:DB8:200::2
#
srv6-te policy <policy1> endpoint 2001:DB8:3::3 color 101
candidate-path preference 200
segment-list <pe1-pe2>
#
//创建SRv6隧道,为各节点定义SID值。并且创建SRv6 Candidate Path。
bgp 100
router-id 1.1.1.1
peer 2001:DB8:3::3 as-number 100
peer 2001:DB8:3::3 connect-interface LoopBack1
#
ipv4-family vpn-instance <vpn1>
import-route direct
advertise l2vpn evpn
segment-routing ipv6 locator <PE1> evpn
segment-routing ipv6 traffic-engineer best-effort evpn
peer 10.1.1.2 as-number 65410
#
l2vpn-family evpn
policy vpn-target
peer 2001:DB8:3::3 enable
peer 2001:DB8:3::3 advertise encap-type srv6
peer 2001:DB8:3::3 route-policy <rp1> import
#
//建立EVPN邻居关系,传递EVPN Type-5 IP-Prefix路由。
在VPN实例下,使能私网路由携带SID属性。
在VPN实例下,使能SRV6模式EVPN L3VPN迭代SRv6 TE Policy隧道的功能。
在VPN实例下,将私网路由通告为EVPN路由。
在EVPN地址族下,为通告出去的EVPN携带SRv6封装属性。
在EVPN地址族下,为EVPN路由着色以便路由可正确迭代SRv6 TE Policy隧道。
route-policy <rp1> permit node 10
apply extcommunity color 0:101
#
2.3.MP-BGP Update报文及路由
//Update报文携带相关属性。
//传递的EVPN路由信息。
//传递的路由表信息。
3.SR Policy行为分析
3.1.控制面
1@:本端CE节点首先通过IGP协议将路由发布给本端PE节点。
这里CE--PE之间选用的协议为普通BGP。
也可以选用OSPF发布给PE后,在PE节点上进行双点双向重分发。
2@:本端PE节点接受后,将其转化为VPN路由并通过EVPN将其发布出去
advertise l2vpn evpn会将VPN路由转化为EVPN路由发布,这里会将其转化为Type-5 IP Prefix路由。
3@:对端PE节点接收该ype-5 IP Prefix路由,经过RT选择后放入VPN实例路由表中并将其向对端CE节点发布。
此时对端PE节点发给对端CE节点的路由为普通路由。
4@:对端CE节点接收后,成功获取到相应站点的私网路由
这一过程需要BGP进行相应的优选。
3.2.转发面
11.11.11.11--->22.22.22.22:
1@:本端CE节点依照普通路由表进行转发。
2@:本端PE节点在绑定了特定VPN实例的接口接收到相应流量后,该VPN实例绑定相应End.DT4 SID,因此封装相应的End.DT4 SID。
同时查表VRFs下一跳为Policy,因此迭代TE Policy封装相应的SL。
//也即此时的流量为上图所示。
- 内层Payload仍保持原样IPv4格式;
- SRH中的SL分别携带了SRv6 Candidate Path,同时也是指定的End.X SID;
- 最外层为SRv6 Tunnel携带相应的IPv6地址。
自动换行
或者表示为
//实际转发时,PE1可以不将本地End.X SID (也即End.X1) 封装在SRH中,用于减小报文开销。
//不封装第一个需要处理的SID。如果SRH本身只有一个SID,那么按照标准规定,可以不封装SRH扩展头。
3@:本端PE节点至对端PE进行SRv6的标准动作End.X进行转发。
这一过程类似MPLS的Label SWAP动作。
//P节点根据SRH进行SL-1替换相应的DIPv6地址,进行转发。
4@:对端接收到该IPv6报文(DIPv6=End.DT4),进行解封转查表转发。