第四章:SRv6 BE(上)

张开发
2026/5/19 3:16:52 15 分钟阅读
第四章:SRv6 BE(上)
版本修改2026.4.1增加BGP为SRv6增加的TLV分析原理介绍BEBest Effort尽力而为模式。SRv6 BE的报文封装没有代表路径约束的SRH其格式与普通IPv6报文格式一致转发行为也与普通IPv6报文一致这就意味着普通的IPv6节点也可以处理SRv6 BE的报文。然而普通IPv6报文的目的地址是一个主机或者网段但是SRv6 BE报文的目的地址是一个业务SID。SRv6 BE只需要在网络头尾节点部署中间节点仅支持IPv6转发即可便于快速开通业务。公网IPv4 Over SRv6 BE实验背景R1~R6之间使用ISIS作为IGP协议R1和R6作为PE设备分别与CE建立EBGP邻居关系R1与R6建立IPv4单播IBGP邻居关系。实验需求R7与R8、R9之间的公网IPv4业务能够实现互通中间的承载通道使用SRv6 BE。1、R1~R6配置设备和接口的ISIS协议以R1的配置为示例R2~R6的配置类似不再赘述[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/0[R1-GigabitEthernet3/0/0]ipv6 enable[R1-GigabitEthernet3/0/0]ipv6 address 12::1 64[R1-GigabitEthernet3/0/0]isis ipv6 enable完成以上配置后R1~R6能够学到彼此的Lo0地址2、R1和R6配置Locator并在ISIS下发布以R1的配置为示例R6的配置类似不再赘述[R1]segment-routing ipv6[R1-segment-routing-ipv6]locator R1 ipv6-prefix A1:100:: 64 static 32[R1]isis[R1-isis-1]segment-routing ipv6 locator R1 auto-sid-disable完成以上配置后R1和R6发布的Locator便在ISIS域内传递3、R1与R6建立IPv4 IBGP邻居关系PE与CE之间建立IPv4 EBGP邻居关系以R1的配置为示例R6、PE与CE的配置类似不再赘述[R1]int gi 3/0/2[R1-GigabitEthernet3/0/2]ip address 10.1.17.1 24[R1]bgp 100[R1-bgp]router-id 1.1.1.1[R1-bgp]peer 6::6 as-number 100[R1-bgp]peer 6::6 connect-interface LoopBack 0[R1-bgp]ipv4-family unicast[R1-bgp-af-ipv4]peer 6::6 enable[R1-bgp]peer 10.1.17.7 as-number 65001完成以上配置后R1与R6成功建立IPv4 IBGP邻居关系PE与CE之间成功建立IPv4 EBGP邻居关系控制层分析R6-R1R8和R9的IPv4业务路由通过EBGP邻居关系传递给R6R6已经通过IPv4 IBGP邻居关系传递给R1R1也接收到R6发送过来的路由但是提示下一跳不可达R1如此提示的原因是中间设备如R2、R4是没有关于172网段的业务路由的因此数据包去到这些设备后会直接被丢弃。解决办法是令去往172网段的路由走SRv6 BE隧道因为SRv6 SID是全网可达的。现在的问题就变成如何令业务路由走SRv6 BE隧道了无容置疑R6要首先发送带SRv6 SID的业务路由过来给R1方法如下[R6]bgp 100[R6-bgp]ipv4-family unicast[R6-bgp-af-ipv4]segment-routing ipv6 locator R6//先为这些IPv4公网路由分配SRv6 SID[R6-bgp-af-ipv4]peer 1::1 prefix-sid//再使能R6向IPv6单播邻居发送带SID的路由能力R1也要手工指定IPv4单播路由走SRv6 BE隧道[R1]bgp 100[R1-bgp]ipv4-family unicast[R1-bgp-af-ipv4]segment-routing ipv6 best-effort完成以上配置后R1去往172网段的路由变成最优加入了BGP路由表并传递给EBGP邻居R7至此控制层的路由传递过程便完成了。这里顺势分析BGP为支持SRv6增加了哪些属性在SRv6场景BGP update消息一个比较明显的变化是增加了BGP Prefix-SID属性而其它的Path Attribute和NLRI信息基本没有变化。BGP Prefix-SID属性是专门为SR定义的BGP路径属性这个属性是可选和可传递的类型号为40其value字段是实现各种业务功能的一个或多个TLV。IETF拓展了两个BGP Prefix-SID属性TLV用于携带业务相关的SRv6 SID:SRv6 L3 Service TLV用于携带三层业务的SRv6 SID信息支持携带End.DX4End.DT4End.DX6End.DT6等SID。SRv6 L2 Service TLV用于携带二层业务的SRv6 SID信息支持携带End.DX2End.DX2VEnd.DT2UEnd.DT2M等SID。在R6的3/0/1抓取BGP的update报文数据层分析R1-R6R7向R1发送一个普通IPv4报文R1收到报文后查FIB表发现下一跳是SRv6 BE隧道于是使用A6:600::1:0:3的业务SID作为目的地址封装为IPv6报文最后根据最长掩码匹配原则匹配到路由A6:600::/64于是将数据包转发给R2或R3在R1的3/0/0抓包验证中间设备按照最长掩码匹配原则将数据包转发到R6R6收到数据包后使用A6:600::1:0:3查找本地SID表匹配到End.DT4 SID于是解封装IPv6报文头根据该End.DT4 SID匹配到的IPv4公网实例表于是查找公网IPv4路由表将数据包传递给R8。至此数据转发层便完成了。附录这个实验还有一个值得注意的地方按照以上的配置方法R6为172.16.10.0/24和172.16.20.0/24这两段路由分配了同一个SRv6 SID这样并不会影响数据转发因为R6最终会通过查找公网路由表进行数据的精准转发那R6能不能基于路由的下一跳来分配SID呢也就是针对172.16.10.0/24和172.16.20.0/24这两个不同的路由下一跳分配不同的SID答案是肯定的在R6增加如下配置[R6]bgp 100[R6-bgp]ipv4-family unicast[R6-bgp-af-ipv4]segment-routing ipv6 apply-sid per-nexthop pop-go完成以上配置后R6为172.16.10.0/24和172.16.20.0/24分配了不同的SRv6 SID值得注意的是数据包来到R6后R6查找本地SID表匹配到的不再是之前的End.DT4 SID而是End.DX4 SID, End.DX4对应的转发动作是将IPv6报文头去除然后将解封装后的IPv4报文在该SID绑定的三层口上转发不再像之前一样通过查找IPv4公网路由表转发了这样做的效率是不是提高了公网IPv6 over SRv6 BE实验背景R1~R6之间使用ISIS作为IGP协议R1和R6作为PE设备分别与CE建立IPv6 EBGP邻居关系R1与R6建立IPv6单播IBGP邻居关系。实验需求R7与R8、R9之间的公网IPv4业务能够实现互通中间的承载通道使用SRv6 BE。1、R1~R6配置设备和接口的ISIS协议略2、R1和R6配置Locator并在ISIS下发布略3、R1与R6建立IPv6 IBGP邻居关系PE与CE之间建立IPv6 EBGP邻居关系以R1的配置为示例R6、PE与CE的配置类似不再赘述[R1]interface GigabitEthernet 3/0/2[R1-GigabitEthernet3/0/2]ipv6 address 17::1/64[R1]bgp 100[R1-bgp]peer 17::7 as-number 65001[R1-bgp]ipv6-family unicast[R1-bgp-af-ipv6]peer 17::7 enable[R1-bgp]peer 6::6 as-number 100[R1-bgp]peer 6::6 connect-interface LoopBack 0[R1-bgp]ipv6-family unicast[R1-bgp-af-ipv6]peer 6::6 enable完成以上配置后R1与R6成功建立IPv6 IBGP邻居关系PE与CE之间成功建立IPv6 EBGP邻居关系4、打通SRv6 BE隧道[R6]bgp 100[R6-bgp]ipv6-family unicast[R6-bgp-af-ipv6]segment-routing ipv6 locator R6[R6-bgp-af-ipv6]peer 1::1 prefix-sid[R1]bgp 100[R1-bgp]ipv6-family unicast[R1-bgp-af-ipv6]segment-routing ipv6 best-effort按照公网IPv4 over SRv6 BE的方式完成以上配置后发现R1去往172网段的路由仍然提示下一跳不可达原因是在R1看到的路由原始下一跳是68::8而不是6::6所以在IPv6场景需要在R6设置下一跳自我[R6]bgp 100[R6-bgp]ipv6-family unicast[R6-bgp-af-ipv6]peer 1::1 next-hop-local完成以上配置后R1去往172网段的路由是最优的了。公网IPv6 over SRv6 BE控制层与数据层的分析与公网IPv4 over SRv6 BE一致不再赘述。

更多文章