SRv6 TE Policy场景-原理浅谈及配置示例

发布时间 2023-06-24 19:48:46作者: m风行者

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。

但是由于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还可结合控制器完成配置下发;联动链路质量检测协议,进行链路选择等

......
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下一跳NColor扩展属性CVPN标签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下一跳NColor扩展属性CVPN标签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),进行解封转查表转发。

更新

点击此处回到目录