【精选】SRv6(BE) 您所在的位置:网站首页 vpws配置实例 【精选】SRv6(BE)

【精选】SRv6(BE)

2023-11-05 02:17| 来源: 网络整理| 查看: 265

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

因此本文将以SRv6 BE场景下报文交互过程为例,以详细介绍SRv6。

关于SR-MPLS的场景介绍,可参见博客SR-MPLS(BE)-原理介绍+报文解析+配置示例。关于SRv6-TE的场景介绍,可参见博客SRv6 TE Policy场景-原理浅谈及配置示例。关于SRv6扩展介绍内容,可参考博客SRv6扩展阅读-故障保护+Flex-Algo+G-SRv6+网络切片。

关于SRv6的相关资料,可参考如下RFC:

2017-RFC8200-Internet Protocol, Version 6 (IPv6) Specification2018-RFC8402-Segment Routing Architecture2019-RFC8669-Segment Routing Prefix-SID Extensions for BGP2020-RFC8754-IPv6 Segment Routing Header (SRH)2021-RFC8986-Segment Routing over IPv6 (SRv6) Network Programming2021-RFC9012-The BGP Tunnel Encapsulation Attribute2022-RFC9252-BGP Overlay Services Based on SRv62022-RFC9256-Segment Routing Policy Architecture

IGP对SRv6的扩展支持参考RFC:

2016-RFC7981-IS-IS Extensions for Advertising Router Information2019-RFC8665-OSPF Extensions for Segment Routing2019-RFC8666-OSPFv3 Extensions for Segment Routing2019-RFC8667-IS-IS Extensions for Segment Routing2023-RFC9352-IS-IS Extensions to Support SRv6

其他相关扩展功能还有:

2008-RFC5286- Basic Specification for IP Fast Reroute: Loop-Free Alternates2012-RFC6571-Loop-Free Alternate (LFA) Applicability in Service Provider (SP) Networks2015-RFC7490-Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)2020-RFC8924-Service Function Chaining (SFC) Operations, Administration, and Maintenance (OAM) Framework2022-RFC9259-Operations, Administration, and Maintenance (OAM) in Segment Routing over IPv6 (SRv6)2023-Internet-Draft (active)-Topology Independent Fast Reroute using Segment Routing2023-Internet-Draft (active)-Enhanced Topology Independent Loop-free Alternate Fast Re-route2023-Internet-Draft (active)-Topology Independent Fast Reroute using Segment RoutingSRv6可靠性方案介绍可参考博客SRv6技术课堂:SRv6可靠性方案

自动换行 SRv6还存在大量相关RFC,感兴趣者可查阅相关资料。

Note:第一章主要简介了SRv6内容。有相关基础可以直接阅读第二和三章节。 个人能力有限,敬请各位指导。

目录

SRv6 BE场景 目录1.SRv6概念1.1.SRv6是什么1.2.SRv6特点 2.SRv6术语2.1.SRH简介2.2.SRv6的SID2.3.SRv6的其他概念 3.SRv6(BE)跨域场景介绍3.1.SID介绍3.1.1.Function功能3.1.2.Flavors附加行为 3.2.SID地址的传递(IGP报文分析)3.2.1.IGP报文分析3.2.2.SID扩展阅读 3.3.SRv6的场景分析3.4.L3VPN for IPv4 over SRv6 BE3.5.状态查看 4.SR Policy的扩展介绍4.1.SR Policy和Candidate Path4.2.其他概念和SR Policy的Implement 更新

1.SRv6概念 1.1.SRv6是什么

SRv6(Segment Routing v6,基于IPv6转发平面的段路由)是基于源路由理念而设计的在网络上转发数据包的一种协议。其核心思想是将报文转发路径切割成不同的段,再为其分配SID(Segment Identifier,段标识符)进行标识从而以段指导报文转发。 SR-MPLS基于MPLS转发平面 SRv6的一个重要特点是不再使用LDP/RSVP-TE协议,也不需要MPLS标签,简化了协议。 SRv6基于Native IPv6进行转发。Native IPv6指的是普通的IPv6报文。SRv6是通过IPv6扩展报文头来实现的。普通的IPv6设备也可以识别SRv6报文(其实是识别IPv6报文)。SRv6设备能够和普通IPv6设备共同部署,对现有网络具有更好的兼容性。

这就是SR的Segment概念,例如在SR网络中End节点可以支持SR路由能力,而对中间节点只要求进行普通的IPv6报文转发即可。

1.2.SRv6特点

SRv6原理简介:SRv6主要是利用的IPv6的扩展头部。在扩展头部中携带了“IPv6地址(被称为SID)”,利用这个IPv6地址来指导支持SRv6的设备对报文进行报文转发。该IPv6携带了报文的处理动作。 SRv6可编程:SR的设计理念在于对路径进行分段(Segment)以及在起始节点对路径进行排序组合(Segment List),确定出行路径。例如可以在SRH头部中(IPv6扩展头的一种),携带多个SID。每个节点设备处理不同的SID,从而严格规定报文的转发路径实现可编程。 传统路由网络如果需要指定路径则需要全网统一规划路由,这通常是难以实现的。

2.SRv6术语 2.1.SRH简介

SRH也即(Segment Route Header)是IPv6的扩展头。 如下是IPv6的头部信息 在这里插入图片描述Version:固定为6表示IPv6。 Traffic class:类似IPv6的TOS,用于QOS为报文分配优先级。 Flow Label:流标签。该字段用来标记 IP 数据包的一个流。 Payload Length:IPv6有效载荷的长度,包括扩展头长度。 Next header: IPv6 基本报头后的那一个扩展报头的信息类型。一个IPv6可以有多个扩展头,通过在扩展头中指定下一个头部信息。 Hop limit:跳数限制。与IPv4的TTL作用相同。 Source Address:IPv6源地址。 destination Address:IPv6目的地址。 Extension Header:扩展头。类型由Next header定义。

IPv6的Next Header: 2017年的RFC8200定义了多种扩展头,这里对其进行简介 1@逐跳选项报头(Hop-by-Hop Options header,Next Header=0)=该选项主要用于为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段。(每台IPv6都需要处理的参数)

应用场景:用于巨型载荷;用于路由器提示;用于资源预留。 在SR的5G网络切片场景下,也会用到该报头。主要用于差异化服务。 RFC8200规定逐跳选项报头必须紧跟在 IPv6 标头之后。

2@目的选项报头(Destination Options header,Next Header=60)=目的选项报头携带了一些只有目的节点才会处理的信息。目前,目的选项报文头主要用于移动lPv6 3@路由报头(Routing header,Next Header=43)=路由报头和IPv4的Loose Source and Record Route选项类似,该报头能够被lPv6源节点用来强制数据包经过特定的路由器。 4@分段报头(Fragment header,Next Header=44)=同IPv4一样,IPv6报文发送也受到MTU的限制。当报文长度超过MTU时就需要将报文分段发送,而在IPv6中,分段通过分段报头来实现。 5@认证报头(Authentication header,Next Header=51)=该报头由IPSec使用,提供认证、数据完整性以及重放保护。它还对IPv6基本报头中的一些字段进行保护。 6@封装安全净载报头(Encapsulating Security Payload header,Next Header=50)=该报头由IPSec使用,提供认证、数据完整性以及重放保护和IPv6数据报的保密,类似于认证报头。

1@:RFC8200强烈建议当数据包出现多个报头时,应当按照以上顺序插入。但也允许节点以任意顺序处理收到报文中的扩展标头。 2@:封装安全净载报头后还可根据需要插入目的选项报头。详细的报头插入原则可查看相关资料。 3@:目的选项报头最多出现二次,其他报头最多出现一次。 4@:如果定义了其他扩展标头,则必须指定它们相对于上面列出的标头的排序约束。

IPv6的SRH: SRH实际是43号IPv6扩展报头路由报头的一种。 在这里插入图片描述Next Header:1字节。描述后续头部类型。可以正常报文也可以是扩展头。这里携带的就是ICMPv6报文。 Length:1字节。自己扩展头的长度。 Type:1字节。标识路由报头的类型。4表示SRH。 Segment Left:1字节。SRv6激活的SID。前文提到类似于MPLS的多层标签,SRH可以携带多个SID。这里用于标识当前节点应使用的SID号。该字段与C语言的指针有点类似。 SRv6的SID可以形象理解为IPv6网络中的标签 Last Entry:1字节。 Flags:1字节。

当前在RFC8754中对该Flags定义为未来使用,传输时必须置0并在接收时忽略该Flags字段。 在RFC9259中对该Flags进行如下定义。 在这里插入图片描述//目前仅定义SRv6 O-bit,O-bit用于指示OAM处理。若O-bit置位,则每一个SRv6 Endpoint节点需要复制一份数据包并打上时间戳,然后上送复制报文和时间戳到控制平面处理。为了防止重复处理报文,控制平面无需响应IPv6上层的协议,比如ICMPv6 Ping&Tracert。通常在ping ipv6-sid时会携带该O-bit。 关于SRv6的另一个OAM实现是通过End.Op SID来实现连通性检测或连通质量检测,这里不在进行相关介绍。

Tag:2字节。用于对数排包分组。可以实现基于组的策略。 Address:16字节,这一字段也叫Segment List[]。IPv6地址,也即SRv6的SID。一般有多个,只是这里只有一个SID=SL[0]。每有一个SID增加16字节。 有一个需要说明的是这个SID列表 Segment List从上往下依次为SL0,1,2,…。在使用时,首先使用的是最低层的SL,而传统MPLS是从外层开始使用剥离。(正好相反) 点击此处回到目录

2.2.SRv6的SID

Segment用于指导报文转发,总的来说可分为3类。分别是Prefix Segment、Node Segment、Adjacency Segment。而针对Segment的标识SID(Segment ID)也有如下三种。

分类生成方式作用Prefix SID手工标识目的地址前缀。简单理解可以用于标识目标网络Node SID手工标识节点设备。简单理解可以用于标识设备,例如OSPF的router-idAdjacency SID手工或协议动态分配标识网络邻接。

Prefix SID/Node SID和Adjacency SID可以分别类比于传统IP转发中的目的地址和出接口。 SR-MPLS的SID是与MPLS概念相同的标签,SRv6的SID则可以单纯理解为IPv6地址 SRv6的SID=Locator+Function+Arguments Locator:提供IPv6的路由能力,报文通过该字段实现寻址转发。此外,Locator对应的路由也是可聚合的。(用于传递报文的路由前缀) Function:用来表达该设备指令要执行的转发动作,不同的转发行为由不同的Function来表达。(比如可以指定邻居转发或按节点解封装SRH按链路转发,传统L3VPN是按所建立的LSP转发) Arguments:可选字段,是对Function的补充。这些参数可能包含流、服务或任何其他相关的信息,目前应用较少。

(SID的每个字段都是可变长的,并且可人为指定也可动态分配。并且一个SRH可以包含多个SID)

2.3.SRv6的其他概念

Segment Routing domain (SR domain):一组参与源路由模型计算的节点。这些节点可以连接到相同的物理基础设施(例如,服务提供商的网络)。如果部署了多个协议实例,则SR域通常包括网络中的所有协议实例。

SR Global Block (SRGB):SR域中的全局Segment的集合。如果一个节点参与多个SR域,则节点为每个SR域分配一个SRGB。 @在SR-MPLS中,SRGB具有节点的本地属性,并且标识为全局Segment保留的一组本地标签。在里面SR-MPLS,强烈推荐在SR域内的所有节点上使用相同的SRGB。这样做可以简化操作和故障排除。 @在SRv6中,SRGB是SR域中全局SRv6 SID的集合。

SR Local Block (SRLB):SR节点的局部属性。如果一个节点参与多个SR域,则节点为每个SR域分配一个SRLB。 @在SR-MPLS中,SRLB是为本地段保留的一组本地标签。 @在SRv6中,SRLB是为本地SRv6 SID保留的一组本地IPv6地址。在控制器驱动的网络中,一些控制器或应用程序可以使用控制平面来发现本地段的可用集合。

SR Policy:一个有序的Segments列表。用于将数据包与指定的路径相关联。Segments列表是基于目的地和一组优化目标和约束(例如,延迟、亲和性、SRLG等)来计算的。计算可以是本地的,也可以委托给PCE服务器。 SR Policy的下发可以手工配置也可以通过NETCONF或PCEP协议。

PUSH:PUSH动作包括在Segments列表的顶部插入一个段。类似于MPLS的标签压入。 NEXT:当活动Segments执行完成时,NEXT动作是由下一个Segments的检查组成的操作。下一个分段变为活动分段。在SR-MPLS中,NEXT指的是顶部标签的POP。在SRv6中,NEXT指的是从SRH到IPv6报头的目的地地址的下一段的拷贝。 CONTINUE:Segments未执行完成时或数据包处于Segments中执行时。在SR-MPLS中,CONTINUE指的是顶部标签的SWAP。在SRv6中,CONTINUE指的是IPv6目的地址的转发。

点击此处回到目录

3.SRv6(BE)跨域场景介绍

根据之前的介绍可以知道SRv6是一种新型的隧道技术。IPv6地址(SID)替代MPLS的标签用于公网数据传递。 这里以L3VPN跨域BE场景为例子进行SRv6技术的介绍。实际上SRv6方案也可用于承载EVPN。

3.1.SID介绍

SRv6的SID主要是由Locator路由前缀+Function+Argument组成。 Locator:网络节点的标识。是IPv6路由前缀,主要用于路由传递。一个重要特性是可路由。 Argument:SID的可选参数,在双归双活场景下有应用。

3.1.1.Function功能

Function:SID处理的选择动作,指导报文进行转发。Function比较复杂,这里重点进行介绍。 相关文档可参考2021-RFC8986-Segment Routing over IPv6 (SRv6) Network Programming,这里对不同类型进行介绍。 End:表示Endpoint SlD,用于标识目的节点(Node)。对应的处理动作为更新IPv6 DA,目的为End SID时正常路由表转发。 End.X:表示三层连接的Endpoint SID,用于标识链路。对应的转发动作是:更新IPv6 DA,从End.x SID绑定的出接口转发报文。 End.DT4:表示PE类型的Endpoint SID,用于标识IPv4 VPN实例。对应的转发动作是:解封装报文,并且查找IPv4 VPN实例路由表转发。等价于IPv4 VPN的标签。 End.DT6:表示PE类型的Endpoint SID,用于标识IPv6 VPN实例。对应的转发动作是:解封装报文,并且查找IPv6 VPN实例路由表转发。等价于IPv6 VPN的标签。 End.DX4:表示PE类型三层连接的Endpoint SID,用于标识IPv4 CE。对应的转发动作是:解封装报文,并且查找绑定CE SID的三层接口转发。 End.DX6:表示PE类型三层连接的Endpoint SID,用于标识IPv6 CE。对应的转发动作是:解封装报文,并且查找绑定CE SID的三层接口转发。 其实Function有一定的命名规则: End:是最基础的Segment处理动作,中止当前动作。处理时将SRH的Segment Left字段-1,Segment List复制到IPv6的Destination Address中。 D:Discapsulate。不仅解封装IPv6扩展头还解封装IPv6报文。 X:指定出接口进行转发。 T:Table。查找路由表转发。 V:Vlan。查找vlan转发。 U:Unicast。查找单播Mac表转发。 M:Multicast。查看组播表转发。 B6:指定应用SRv6 Policy。 BM:指定应用SR-MPLS Policy。

3.1.2.Flavors附加行为

Flavors是为了增强SRv6 Segment而定义的附加Function行为。这些附加行为是可选项,它们将会增强SRv6 Segment的执行动作,满足更丰富的业务需求。2021年发布的RFC8986-Segment Routing over IPv6 (SRv6) Network Programming定义了如下三种Flavors。 PSP: Penultimate Segment Pop of the SRH:在倒数第二个Endpoint节点执行移除SRH操作。类似于MPLS的倒数第二跳弹出。但是这里是段的概念,每个段之间可能经历了多台设备。 USP: Ultimate Segment Pop of the SRH:在倒数第一个Endpoint节点执行移除SRH操作 USD: Ultimate Segment Decapsulation:在倒数第一个Endpoint节点执行移除IPv6头部操作

设备如何知晓对报文的Function处理动作: 在报文中携带SID时,会进行SID标识。例如在ISIS的LSP报文的SRv6 Locator型SubTLV中会携带Code字段进行标识具体是哪种Function,以及是否需要进行Flavors行为。 控制面:IGP会将SID在全网通告(还有BGP的相应动作)。

例如《3.2.1.IGP报文分析》中展示的ISIS LSP携带的SRv6 Locator-Type=27就携带了PSP型的End SID。 RFC8402中也表明BGP也可作为控制面传递SID。

转发面:End节点收到DIP=SID的IPv6报文后,根据该SID相应的Function字段进行相应报文转发行为。 (对于该IPv6报文收到后,会进行SRH的SID替换DIP。这一过程在3.3章节进行详细介绍)。点击此处到达第3.3章节

和L3VPN的小区别: 在L3VPN中,标签不仅作为数据转发的指导也承载了对私网租户的标识作用。 SRv6不存在L3VPN的标签,而是由SID代替了标签。SID的Locator本身作为IPv6路由前缀可以指导数据转发。而丰富的Function不仅可以承载对私网的标识,而且可以进一步指导报文的处理动作。相比于Label,业务承载类型和业务处理动作的丰富性都大大提高!!

3.2.SID地址的传递(IGP报文分析) 3.2.1.IGP报文分析

与SR-MPLS相同,SR的SID都可由IGP协议动态生成。在IGP协议的收敛完成的同时,标签转发路径LSP也随之建立。 本场景下以ISIS作为Underlay协议进行SID信息的传递。本场景下ISIS协议涉及SRv6功能的有如下三种TLV:Router capability、SRv6 Locator和Extender IS reachability。接下来对其进行介绍: 自动换行 Router Capability-Type=242:由RFC7981介绍 在这里插入图片描述 Router Capability:T=242。 Type:1字节。取值242。 Length:1字节。取值5-255。 Router ID:4字节。 S-bit:1bit。置1时,表示Router capability整个ISIS域泛洪。 D-bit:1bit。UP/Down bit,置1时,表示从Level-2区域泄漏到Level-1区域。并不得在泄露至Level-2区域水平分割。

并在该TLV中标识携带 SRv6 capability :T=25。由RFC9352介绍。 OAM-bit:Operations, Administration, and Maintenance功能。 其中标识了路由器对SRv6的支持能力。Node Maximum SID Depth:T=23。 Router capability作用在于协商对SRv6的支持能力,因为设备对SID的处理程度是有限制的。这一限制主要在于芯片处理能力的限制。 Maximum Segment Left:对Segment Left字段最大支持处理能力;Maximum End Pop:节点POP能力;Maximum T Insert:最多插入SID数;Maximum T Encaps:最多的封装SID数;Maximum End D:执行End.D动作时,可指定SID最大值。 自动换行 SRv6 Locator-Type=27:由RFC9352介绍在这里插入图片描述 SRv6 Locator:T=27。主要用于传递SID信息,建立LSP。 Topology ID:12bit。表示所承载IGP协议对网络的支持能力。 在这里插入图片描述Algorithm:1字节。表示所使用的路由算法。目前只有两种0和1:0表示SPF,1表示严格SPF。

由RFC8402介绍严格SPF表示结果严格按照SPF算法执行忽略任何可能的覆盖SPF决策的本地策略。如果使用严格SPF通常要求全网都使用严格SPF。

Locator Size:1字节。和Locator共同表示了SID的Locator或路由前缀。 SubTLV=SRv6 End SID:Code=5。这里的End SID用于标识节点的SID。 SRv6 Endpoint Function:2字节。表示Endpoint Behavior行为。

而PSP指的是Flavors行为(用于增强SRv6 Segment的执行动作) PSP表示在倒数第二个End节点剥离SRH。 在这里插入图片描述 这里的Local-sid也即节点SID。此外在Extended IS reachability中携带了邻居SID。

自动换行 Extended IS reachability-Type=22:由RFC5305介绍 在这里插入图片描述 Extended IS reachability:T=22。主要用于传递SID信息。这里主要传递的是邻居SID End.X SID表示按链路进行传递。 在这里插入图片描述 并在该TLV中标识携带Sub TLV SRv6 LAN End.X SID :Code=44。由RFC9352介绍。 B-bit:Backup备份标志位。如果置位表明SID受保护,使用IPFRR等功能。 S-bit:Set标志位。如果置位表明SID指的是一组相邻(因此也可以分配给其他相邻)。 P-bit:Persistent永久标志位。如果置位表明SID是永久分配的,即SID值在路由器重新启动和/或接口波动之间保持一致。 Algorithm:1字节。表示所使用的路由算法。目前只有两种0和1:0表示SPF,1表示严格SPF。

由RFC8402介绍严格SPF表示结果严格按照SPF算法执行忽略任何可能的覆盖SPF决策的本地策略。如果使用严格SPF通常要求全网都使用严格SPF。

Weight:1字节。RFC8402中主要描述了用于负载分担场景。 Endpoint Behavior:2字节。对于不支持或不识别的Behavior将进行忽略。 RFC8986中主要描述了所定义的几种End节点行为。本文档的3.1.1.章节对其进行了相关描述。 SID:16字节。封装通告的SRv6 SID。 Sub-sub-TLV-length:1字节。所使用的sub-sub- TLVs字节数,也即之后还可根据选择携带相应的sub-sub- TLVs。

在IGP分发SID收敛完成后,BGP为CE分配Prefix-SID即可:由RFC8669介绍。 在这里插入图片描述 Extended Community:传递VPN的RT。 BGP Prefix-SID:为相应的节点配置Prefix-SID。目前wireshark4.0.1暂不支持对该字段的识别。但是可以隐约识别出:3001:1:1:1::。 MP-NLRI:传递相应的VPNv4路由192.168.1.0/24(可以通过Prefix Length=112进行判断),下一跳指定为1111::1111。

点击此处回到目录

3.2.2.SID扩展阅读

BGP-SID简介: RFC8402的page-9中介绍BGP也可作为Underlay网络传输SID地址信息,也即BGP-based distributed control plane。此时BGP Segments可分为:BGP-Prefix Segment和BGP Peering Segments。 BGP-Prefix Segment:SR域中的BGP-Prefix segment具有全局属性并且等价于IGP-Prefix Segment。 BGP Peering Segment:在BGP Egress Peer Engineering(EPE)的概念中,启用了EPE的出口节点可以通告与其所连接的对等体相对应的分段。这些Segment称为BGP Peering Segment或BGP peering SIDs。它们用于表达SR域间路径。

而BGP Peering Segment则又可分为:PeerNode SID、PeerAdj SID和PeerSet SID。 PeerNode SID:本地Segment(local segment),SR动作为NEXT。segment相关的对等体Node。类似于LDP的标签SWAP。 PeerAdj SID:本地Segment(local segment),SR动作为NEXT。接口连接与Segment相关的对等体。 PeerSet SID:本地Segment(local segment),SR动作为NEXT。同一个组的对等体集合,通过任意连接的接口进行负载分担。

Binding Segment: Binding Segment称为绑定Segment,又称为粘连Segment。主要用于SID的扩展,网络不透明和服务独立性。

通常由于设备的芯片等硬件的限制,SRH所能携带的SL通常是有限的。当进行一个大范围多个Segment的网络时,就无法一次包含所有的SID。此时可通过SID映射的方式进行扩展。 此外与SR Policy强相关的Binding Segment也可以实现多种策略路由。

3.3.SRv6的场景分析

SRv6可以分为控制面和转发面。通俗意义上控制面通常指的是路由信息生成,而转发面则指的是具体的流量传输。 例如我们所说的传统MPLS L3VPN的控制面是MPLS(LDP生成标签)。转发面则是依照LSP进行流量传递。 普通L2VPN没有控制面通过2层的MAC/ARP泛洪学习来导通的,而基于MP-BGP的EVPN是以MP-BGP作为控制面传递5种EVPN路由(目前已新增到8种)实现了转控分离。 接下来以图示为例进行相应介绍: CX1-CX6用于公网隧道建立(CX1-3为AS100,CX4-6为AS200。CX2和CX5可以支持SRv6功能,也可以不支持); AR1和AR2分别作为VPN的CE路由器; NE路由器可用于模拟SDN控制器(SRv6通常与SDN技术相关联)在这里插入图片描述AR1向AR2通信:

控制面: 1@控制面上首先应进行IPv6网络的构造,通常CX1-6的每台设备都需要进行IPv6的地址改造。 2@CX1-6都运行IGP协议,同时应使能SRv6功能。自动或手动指定相应的SID信息,由IGP协议进行泛洪。 SRv6的一个强大之处在于不要求所有网络节点都支持SR功能。并且工程应用上的设备通常跨越多个AS。 因为在使用时节点设备实际上执行的IPv6的普通路由转发,只有支持SRv6功能的End节点才处理SRH头部信息。(TLV格式构造报文的一个好处是,可以忽略自己不支持的TLV)

3@在IGP完成SID的泛洪同步后,需要建立BGP邻居传递相应的SID和VPN私网路由。CX1和CX3建立iBGP,CX4和CX6建立iBGP,CX3和CX4建立eBGP。如果有控制器的加入,还需另外和控制器NE建立BGP邻居。 (根据实际的网络规划决定是否需要建立BGP的RR反射器。) 在传统MPLS L3VPN场景下,CE-PE端BGP的作用在于生成MP-BGP标签作为私网VPN的标识。而SRv6场景没有单纯的标签概念,CE-PE端只需将相应的VPN实例与SID关联即可。而SID(Function)中自动包含的相应处理动作。 (当然还是需要BGP传递私网IPv4路由,只是下一跳指向了IPv6。RFC9252)

SDN控制器的加入为SRv6提供了可编程功能: SDN控制器通过建立BGP邻居,下发BGP SID属性(BGP-LS等)。从而指导相应的流量行为。 目前的SDN控制器可以达到在底层可达的网络(underlay)自动下发配置,更加简化了网络变动的工作量。 SRv6的一个重要特点:跨域 在传统MPLS L3VPN中,经常有跨域场景出现。而MPLS是无法连续的为非AS域的设备分配标签(一般来说LSP的连续通常只能在一个AS内)。针对这种情况MPLS 提出了3种方案:OptionA(各自AS当成对端的CE设备转发),OptionB(ASBR之间的MP-eBGP分配MPLS单层标签),OptionC(有两种方案可分别产生2层和3层标签,相同点在于内层都是目标CE的私网标签)。 在SRv6场景中,不存在传统意义的标签概念(标签被SID/IPv6地址替代)。控制面传递的是SID/IPv6地址。也即只需要每台设备仅知道去往目标CE的IPv6地址即可。

转发面: 在转发面上,实际是IPv6的路由转发。只是IPv6的报文携带了相应的SRH

在控制面完成后AR1和AR2(CE)以及CX1和CX6都具有了相应的路由信息。(或在PE上双点双向重分发,或使用缺省路由。)

1@在源节点收到AR1传递过来的数据流量。查表发现下一跳为CX6。去往CX6的地址可以迭代入相应的SRv6隧道(工程上可以有多种隧道并行) 2@在源节点对该报文进行封装。外层封装IPv6报文,Mac取相应的下一跳地址。同时IPv6插入相应的SRH头部信息。 目的IPv6地址取SRH的Segment List字段的最大值,发送时Segment left-1。 3@在中间节点对相应报文进行2层解封装。 如果支持SRv6功能,则取SRH字段中Segment left对应Segment List的SID/IPv6地址,替换为DIPv6地址,随后Segment left-1发送。 点击此处回到SRH报文介绍 这一行为与MPLS网络中间节点设备的标签替换非常类似 如果不支持SRv6功能,则只查找IPv6路由表比对该SID进行转发。 4@在目地节点对相应报文进行解封装。目的节点收到该IPv6报文,可以识别该IPv6地址(也是SID)相应的Function。例如可以是End.DT4型SID,此时就会将SRH和IPv6同时剥离暴露出里边的IPv4报文查找IPv6路由表转发。

这里未提到的一点是Flavors附加行为。 具有Flavors附加行为的SID可以进行倒数第二段弹出,或弹出SRH弹出IPv6等操作。 SRv6的Segment概念可以理解为处理SRH的两个最近节点。在这两个End之间只需查表转发IPv6。 具体转发时,SR可以分为不同的SID类型(不同的SID具有不同的行为)。 例如可以指定链路转发,可以仅查路由表的节点转发。 而添加链路检测的SDN网络,可以根据需求实时下发SID更改转发情况。因此选择性非常强。 实际SRH携带情况还需以实际为准

点击此处回到目录

3.4.L3VPN for IPv4 over SRv6 BE

这里以SRv6 BE为例进行介绍。SRv6 BE可能更像一个加强版的MPLS转发。

考虑到设备所支持情况,这里在CX1、CX2和CX3之间建立AS=100,并且在CX3和CX4之间建立eBGP邻居关系AS200。 1@这里只提供了PE设备配置,有能力者可自行进行其他P和PE设备的配置。 有需要者可私信联系提供模拟器源文件及配置。 在这里插入图片描述这里以CX3为例进行配置介绍: sysname CX3 # segment-routing ipv6 locator CX3 ipv6-prefix 3003:1:1:1:: 64 # //设置SRv6的SID,指定locator为3003:1:1:1:: 且前缀为64。 //设备自动根据定义的长度进行选择。例如此时Locaor指定为64,Function未指定则动态分配那么Function为128-64。Function可以静态指定也可以动态指定,例如 locator CX3 ipv6-prefix 3003:1:1:1:: 64 static 32 opcode ::1111 end //此时为64的Locator,32的人为分配Function,32的动态Function指定。 //(Arg参数未指定则该SID完全由Locator和Function组成。)

isis 10 is-level level-2 cost-style wide network-entity 49.0000.0000.0003.00 # ipv6 enable topology standard segment-routing ipv6 locator CX3 # # //指定IGP携带SRv6相关信息,并且未定义的SID长度部分由IGP自动分配。 bgp 100 router-id 3.3.3.3 peer 2003::4 as-number 200 peer 2222::2222 as-number 100 peer 2222::2222 connect-interface LoopBack1 # ipv4-family unicast undo synchronization # ipv6-family unicast undo synchronization network 1111::1111 128 network 2222::2222 128 peer 2003::4 enable peer 2222::2222 enable peer 2222::2222 next-hop-local # ipv4-family vpnv4 undo policy vpn-target peer 2222::2222 enable peer 2222::2222 prefix-sid # //使能VPNv4传递BGP Prefix-SID信息。 //这里宣告了AS内部的loopback用于建立BGP邻居。

3.5.状态查看

SID信息在这里插入图片描述Local-sid:描述了节点的SID。包括End SID、End.x SID和End.DT4等。 Locator:描述了本地定义的Segment信息。 3.2.章节(点击可达)已做过体现,这里不在举例。

VPN路由信息在这里插入图片描述 私网流量传递时的报文 在这里插入图片描述

这里直接携带的是CX4的End型SID地址,直接查IPv6路由表转发。因为只有1个Segment,这里携带的是目的选项报头而非SRH。

具有SRH的报文 使用ping ipv6-sid -a 1111::1111 4444::4444可以进行相应SID可达性检查。 在这里插入图片描述

点击此处回到目录

4.SR Policy的扩展介绍

主要参考2022-RFC9256-Segment Routing Policy Architecture进行描述。 此时仅进行简单介绍,详细的取值和定义可查阅相关资料。

有关于SRv6-TE的场景介绍,可参见博客SRv6 TE Policy场景-原理浅谈及配置示例。

4.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是候选路径的一个属性。 @:元组唯一标识候选路径。 @:候选路径使用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来。

4.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和Binding SID B 自动换行 当H收到具有标签/SL为数据包K时,H将进行POP/PHP弹出B并压入。此时形成的标签/SL进行相应转发。

Per-Destination的引导:传入数据包与BGP/服务路由匹配,该路由在SR策略上重复出现。

举例:头端H @从BGP学习到路由R有下一跳N,Color扩展属性C和VPN标签V; @有可用SR Policy P(headend=H,Color=C,endpoint=N),且其有可用候选路径和Binding SID B @有BGP policy可匹配到Color扩展属性C并可应用 自动换行 如果满足所有这些条件,H在RIB/FIB中安装R,下一跳设置BSID B的SR Policy P,而非N。当H收到可匹配路由R的数据包K时,H将压入标签栈/SL。

举例:头端H @从BGP学习到路由R有下一跳N,Color扩展属性C和VPN标签V; @有可用SR Policy P1(headend=H,Color=C1,endpoint=N),且其有可用候选路径和Binding SID B1 @有可用SR Policy P2(headend=H,Color=C2,endpoint=N),且其有可用候选路径和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),且其有可用候选路径和Binding SID B1 @有可用SR Policy P2(headend=H,Color=C2,endpoint=N),且其有可用候选路径和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前缀。

点击此处回到目录

更新


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有