传统网络在应对日益复杂的业务需求时,显得力不从心。IP/MPLS网络的孤岛问题、IPv4/MPLS的可编程空间有限、应用与承载网的隔离以及数据面与控制面的紧密耦合,都限制了网络的发展。SRv6的出现,正是为了解决这些痛点。它通过基于IPv6的转发平面,结合SR的源路由优势,实现了网络路径、业务和转发行为的三层可编程,极大地提升了网络的智能化水平。
SRv6的技术价值体现在其“智慧”、“极简”和“纯IP化”三大特点上。它不仅具有强大的可编程能力,还能简化网络协议,打破MPLS的跨域边界,实现纯IPv6的极简转发。这种设计使得SRv6能够与现有IPv6网络无缝兼容,支持业务的快速上线和平滑演进。
在SRv6的架构中,控制平面基于传统IPv6路由协议进行扩展,无需额外信息通告,简化了整体架构。数据平面则通过IPv6路由扩展头实现,SRv6节点按照SRH中的路径信息进行处理和转发,而普通IPv6节点只需进行标准转发,确保了网络的极简性和兼容性。
SRv6的转发流程清晰高效。数据包在进入SRv6域后,头节点添加SRH并指定路径,中间节点根据SRH中的信息进行转发,最终节点剥离SRH和IPv6报头,完成数据包的传输。这一流程不仅简化了转发过程,还实现了与现有IPv6网络的无缝对接。
然而,SRv6在规模部署时也面临挑战,主要集中在承载效率和芯片能力上。为此,业界提出了Micro SID和Unified SID等优化方案,旨在提高承载效率,降低硬件要求,推动SRv6技术的进一步普及。
总的来说,SRv6作为一种创新的网络技术,以其独特的优势正逐步引领网络进入一个更加智慧、极简和纯IP化的新时代。随着技术的不断优化和演进,SRv6有望在未来网络中发挥更加重要的作用。
引言
分段路由(SR,Segment routing)是一种源路由技术,具有集中控制、中间网络无状态、可扩展性好等优点,SR更是面向软件定义网络(SDN,Software Defined network)架构设计的协议,融合了设备自主转发和集中编程控制的优势,能够更好地实现应用驱动的网络。
一、为什么需要SRv6?
传统网络困局
全球信息化的进程使得互联网应用得到了迅速而蓬勃的发展,随着网络规模的扩大以及云时代的到来,网络业务种类越来越多,不同业务对网络的要求不尽相同,传统IP/MPLS网络遇到不少挑战:
- IP承载网的孤岛问题。MPLS统一了承载网,但是IP骨干网、城域网、移动承载网之间是独立的MPLS域,是相互分离的,需要使用跨域VPN等复杂的技术来互联,导致端到端业务的部署非常复杂。 而且在L2VPN、L3VPN多种业务并存的情况下,设备中可能同时存在LDP、RSVP、IGP、BGP等协议,管理复杂,不适合大规模业务部署。
- IPv4与MPLS的可编程空间有限。当前很多新业务需要在转发平面加入更多的转发信息,但IETF已经发表声明,停止为IPv4制定更新的标准;另外MPLS只有20bit的标签空间,且标签字段固定、长度固定,缺乏可扩展性,导致很难满足未来业务的网络编程需求。
- 应用与承载网隔离。目前应用与承载网的解耦,导致网络自身的优化困难,难以提升网络的价值。当前运营商普遍面临被管道化的挑战,无法从增值应用中获得相应的收益;而应用信息的缺失,也使得运营商只能采用粗放的方式进行网络调度和优化,造成资源的浪费。MPLS也曾试图更靠近主机和应用,但因为其本身网络边界多、管理复杂度大等多方面的原因,均以失败告终。
- 传统网络数据面和控制面紧密耦合,相互绑定销售,在演进上相互依赖,业务上线周期长,难以应对现在新兴业务快速发展的局面。
SRv6的出现解决了上述一系列问题,推动网络进入一个全新的时代。
二、SRv6技术价值
SRv6是基于IPv6转发平面的SR技术,其结合了SR源路由优势和IPv6简洁易扩展的特质,具有其独特的优势。SRv6技术特点及价值可以归纳为以下三点:
- 智慧:
- SRv6具有强大的可编程能力。SRv6具有网络路径、业务、转发行为三层可编程空间,使得其能支撑大量不同业务的不同诉求,契合了业务驱动网络的大潮流。
- SRv6完全基于SDN架构,可以跨越APP和网络之间的鸿沟,将APP的应用程序信息带入到网络中,可以基于全局信息进行网络调度和优化。
- 极简:
- SRv6不再使用LDP/RSVP-TE协议,也不需要MPLS标签,简化了协议,管理简单。EVPN和SRv6的结合,可以使得IP承载网简化归一。
图1-2 简化网络协议
-
- SRv6打破了MPLS跨域边界,部署简单,提升了跨域体验。
- 纯IP化:
- SRv6基于Native IPv6进行转发。SRv6是通过扩展报文头来实现的,没有改变原有IPv6报文的封装结构,SRv6报文依然是IPv6报文,普通的IPv6设备也可以识别SRv6报文。SRv6设备能够和普通IPv6设备共同部署,对现有网络具有更好的兼容性,可以支撑业务快速上线,平滑演进。另外基于Native IPv6,使得其可以进入数据中心网络,甚至用户终端,促进云网融合。
SRv6基于以上特点,成为构建“智简IP”的利器。同时也为IPv6的发展带来了转机,开启了IPv6+新时代。
三、什么是SRv6?
“大道至简”的控制平面
SRv6控制层面与SR-MPLS一样,控制面基于传统支持IPv6的路由协议(OSPFv3/ISISv6/BGP4+)进行能力扩展,取代独立的LDP、RSVP实现整体架构的简化。同时,SRv6相比SR-MPLS更加简化,无需通告IPv6前缀外的其他信息,因为前缀本身就是分段标识符(SID,Segment Identifier)。
当SRv6的控制面配合集中的SDN控制器,SRv6 SID的分配和相关指令下发均交给控制器下发,面向业务和应用进一步实现简化,只需要在边缘设备为应用指定路径,中间设备无需维护路径和应用的状态,使得网络边缘更智能、核心更简单,极大地简化了网络设计和管理。“极简”的数据平面
SR技术为数据平面设计了两种实现方式,一种是复用MPLS数据平面的SR-MPLS,另一种是SRv6。SRv6使用IPv6数据平面,基于IPv6路由扩展头进行扩展,这部分扩展没有破坏标准的IPv6报头,而且,只有SRv6节点需要针对扩展头进行额外的处理,对于其他普通IPv6节点没有任何影响,这让SRv6可与现有IPv6网络无缝兼容,更让转发层面达到纯IPv6的极简转发。
为方便大家更直观地了解到SRv6数据面的“极简”,我们拿SRv6与SR-MPLS的帧结构做下对比,看看在帧结构上做了哪些改变。
图1:SR-MPLS与SRv6报文结构对比
从图1可以看到,在MPLS网络中,Segment就是MPLS标签,头端一次性压入多个标签形成Segment List,每一跳转发采用标签查找和标签弹出的动作(SR节点);在IPv6网络中,Segment就是IPv6地址,路径就是封装在一个分段路由扩展头(SRH,Segment Routing Header)中的IPv6地址列表,每一跳的转发均是采用纯IPv6的标准转发动作,实现转发面标准化的简单处理,这极大地降低了网络复杂性。
SRv6报头(SRv6 Header)
SRv6采用IPv6标准规范(RFC2460)中定义的路由扩展报头,新定义了一种IPv6的扩展报头——SRH,该扩展头指定一个IPv6的显式路径,存储的是IPv6的Segment List信息,其作用与SR-MPLS里的Segment List类似,头节点在IPv6报文中增加一个SRH扩展头,中间SRv6节点就可以按照SRH里包含的路径信息进行处理和转发,而非SRv6节点只需要按照标准的目的IPv6进行传统转发即可。
SRH格式如下图:
图2:SRH报文格式
在SRv6中,每经过一个SRv6节点,该节点将读取SRH中的信息,执行相关的SID指令,将活动Segment List拷贝到标准头中的目的地址,将SL(Segments Left)字段减1,同时更新相关的指针,最后进行纯IPv6的“极简”转发。
四、SRv6转发流程
SRv6的转发是通过读取SRH报头,更新指针,变换目的地址进行转发的,接下来我们看一个典型的SRv6转发流程:
图3:SRv6域中数据包转发过程
如图3所示,假设SRv6域中有五个节点,节点1、3、4、5是支持SRv6的节点,节点2为普通IPv6节点,数据包从节点1转发到节点5。
1) 数据包进入到节点1(源节点),节点1给数据包增加SRH,并会指定整条路径中SR节点的相关操作,外层再封装标准的IPv6报头。其中SRH里面包含三个Segment List,SL为2(由于从节点1到节点5需要经过3个SRv6节点);外层的IPv6报头源地址为2001::1(节点1地址),目的地址是从SRH中Segment List[2]拷贝过来的2001::3(节点3地址);
2) 数据包转发到节点2,由于节点2只支持常规的IPv6而不支持SRv6,节点2收到SRv6数据包时,按照IPv6 RFC的规定,当数据包目的地址不是节点自身网段地址时,此节点不处理扩展报头,直接根据IPv6报头中的目的地址进行转发;
3) 节点3收到数据包时,节点3根据外层IPv6地址2001::3查找本地Local SID表,命中本地的Local SID表,执行相关指令。将SL减1操作,指针指向Segment List[1](此为活动Segment),并将Segment List[1]的地址拷贝到外层IPv6报头中的目的地址,然后根据IPv6目的地址进行转发;
4) 节点4的处理过程和节点3一致,将Segment List变为[0],IPv6报头中的目的地址更新为2001::5;
5) 节点5收到数据报文时,识别到目的地址是本节点,同时Segment List为0。此时,节点5会剥离SRH和IPv6报头,读取真正的Payload,并根据SID里的相关指令完成转发。
从这个转发流程可以看出,SRv6的转发与SR-MPLS更加简化、清晰,在数据包转发过程中SRv6不需要弹出Segment,而是通过SRH中的SL字段作为指针,指向活动Segment,并更新IPv6报头的目的地址为Segment列表中活动Segment,并按照常规的IPv6路由把数据包转发出去。当网络中有不支持SRv6的节点时,该节点可根据数据包目的地址进行标准的IPv6转发,这意味着,SRv6可以与现有的IPv6网络可以实现无缝兼容,即SRv6可以在传统IPv6网络上实现增量部署,无须替换所有现网设备。
五、关于SRv6 Segment
SRv6 Segment通常简称SRv6 SID(Segment Identifier)或SID,SID表现为一个128 bits的IPv6地址。Segment List就表现为插入在SRH中的一组有序的IPv6地址列表。但并不是所有的IPv6地址都是SID,需要SRv6节点显性声明某个地址为SID,SID可以是节点的地址或者某个接口的地址。
SID中含有相关指令和可带参数,具体如下。
图4:SRv6 Segment格式
如图4所示,SID由Locator和Function两部分组成,其中Function部分还可以分出一个可选的参数段(Arguments),格式是Locator:Function:Arguments,其中Locator占据IPv6地址的高比特位,Function部分占据IPv6地址的其余部分,可选参数Arguments占据IPv6地址的低比特位。
1. Locator具有路由定位功能,需要在SRv6域内唯一,网络里其他节点通过Locator网段路由就可以定位到本节点,同时本节点发布的所有SRv6 SID也都可以通过该Locator网段路由到达。
2. Function代表设备的指令,用于指示SRv6 SID的节点进行相应的功能操作,例如End.DX6 SID:该操作要求 Segments Left为0且数据包内封装了IPv6的数据包去掉外层的IPv6报头,并将内部的IPv6数据包转发给指定的下一跳地址,类似于VPNv6 Per-CE标签。
3. 可选参数Arguments字段可以定义一些报文的流和服务等信息,或者是与SRv6 SID相关的功能所需的其他信息。这里的Function和Arguments都是可以定义的,这也反映出SRv6 SID的结构更有利于对网络进行编程。
关于SRv6的可编程能力,未来再跟大家进一步探讨。
六、SRv6规模部署的挑战
为网络新贵的SR技术,基于MPLS平面的SR-MPLS已经在业界得到了运营商和互联网客户的初步认可和应用部署,而基于SRv6的SR技术普及和应用却处于滞后的状态,特别是对于流量工程和服务链等这类SRv6支持较好的高级功能也鲜有部署。这是什么原因呢?简而言之是关系到承载效率和芯片能力的问题。
从承载效率的角度分析,当前SRv6方案基于SRH扩展头实现,而SID长度为128bits,对于一组Segment List就会增加n * 128bits的长度,而SR-MPLS,每转一跳会弹出顶层标签,因此SRv6引入的协议开销远大于SR-MPLS,造成了网络承载效率低;从芯片能力的角度,SRH扩展头的方式要求交换机芯片可以一次读取报头的深度更高,对硬件有特殊要求,而更换硬件需要增加新的投资成本。
针对上述这些问题,也推动了SRv6技术本身的继续优化、演进。
七、SRv6技术的现状与演进展望
从目前来说,SRv6提供了可预见的网络业务变革的最终形态,同时业界针对SRv6也已经基本完成准备,从主机端(Linux内核4.10以上支持SRv6)到网络转发芯片的硬件等均已具备规模部署的条件。
前面提到SRv6的承载效率低和和需要更换新硬件带来投资增加,从而导致SRv6技术规模部署的进展缓慢,针对这些问题,业界已经提出了几种解决方案。现在进展较快的有Micro SID和Unified SID,这两种方案均是对标准SRv6的SRH方案进行扩展,解决承载效率低的问题。
华为工程师讲解视频:
华为工程师讲解什么是SRv6?
- 23年1月3日
- 喜欢:0
- 浏览:1k
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。