2020-01-03 11:45:58
来源:MOUU网络
本期作者:李健明
互联网系统部行业咨询
一文带你了解网络新贵
引言
1
从“大道至简”到“极简”——SRv6
“大道至简”的控制平面
SRv6控制层面与SR-MPLS一样,控制面基于传统支持IPv6的路由协议(OSPFv3/ISISv6/BGP4+)进行能力扩展,取代独立的LDP、RSVP实现整体架构的简化。同时,SRv6相比SR-MPLS更加简化,无需通告IPv6前缀外的其他信息,因为前缀本身就是分段标识符(SID,Segment Identifier)。
当SRv6的控制面配合集中的SDN控制器,SRv6 SID的分配和相关指令下发均交给控制器下发,面向业务和应用进一步实现简化,只需要在边缘设备为应用指定路径,中间设备无需维护路径和应用的状态,使得网络边缘更智能、核心更简单,极大地简化了网络设计和管理。
“极简”的数据平面
▲ 图1:SR-MPLS与SRv6报文结构对比
从图1可以看到,在MPLS网络中,Segment就是MPLS标签,头端一次性压入多个标签形成Segment List,每一跳转发采用标签查找和标签弹出的动作(SR节点);在IPv6网络中,Segment就是IPv6地址,路径就是封装在一个分段路由扩展头(SRH,Segment Routing Header)中的IPv6地址列表,每一跳的转发均是采用纯IPv6的标准转发动作,实现转发面标准化的简单处理,这极大地降低了网络复杂性。
注:IPv6路由扩展头技术详解可参考《IPv6基础篇(上)——地址与报文格式》
SRv6报头(SRv6 Header)
SRH格式如下图:
▲ 图2:SRH报文格式
2
SRv6转发流程
▲ 图3:SRv6域中数据包转发过程
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网络上实现增量部署,无须替换所有现网设备。
3
关于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地址的低比特位。
• Function代表设备的指令,用于指示SRv6 SID的节点进行相应的功能操作,例如End.DX6 SID:该操作要求 Segments Left为0且数据包内封装了IPv6的数据包去掉外层的IPv6报头,并将内部的IPv6数据包转发给指定的下一跳地址,类似于VPNv6 Per-CE标签。
• 可选参数Arguments字段可以定义一些报文的流和服务等信息,或者是与SRv6 SID相关的功能所需的其他信息。这里的Function和Arguments都是可以定义的,这也反映出SRv6 SID的结构更有利于对网络进行编程。
关于SRv6的可编程能力,未来再跟大家进一步探讨。
4
SRv6规模部署的挑战
作为网络新贵的SR技术,基于MPLS平面的SR-MPLS已经在业界得到了运营商和互联网客户的初步认可和应用部署,而基于SRv6的SR技术普及和应用却处于滞后的状态,特别是对于流量工程和服务链等这类SRv6支持较好的高级功能也鲜有部署。这是什么原因呢?简而言之是关系到承载效率和芯片能力的问题。
从承载效率的角度分析,当前SRv6方案基于SRH扩展头实现,而SID长度为128bits,对于一组Segment List就会增加n * 128bits的长度,而SR-MPLS,每转一跳会弹出顶层标签,因此SRv6引入的协议开销远大于SR-MPLS,造成了网络承载效率低;从芯片能力的角度,SRH扩展头的方式要求交换机芯片可以一次读取报头的深度更高,对硬件有特殊要求,而更换硬件需要增加新的投资成本。
针对上述这些问题,也推动了SRv6技术本身的继续优化、演进。
5
SRv6技术的现状与演进展望
从目前来说,SRv6提供了可预见的网络业务变革的最终形态,同时业界针对SRv6也已经基本完成准备,从主机端(Linux内核4.10以上支持SRv6)到网络转发芯片的硬件等均已具备规模部署的条件。
前面提到SRv6的承载效率低和和需要更换新硬件带来投资增加,从而导致SRv6技术规模部署的进展缓慢,针对这些问题,业界已经提出了几种解决方案。现在进展较快的有Micro SID和Unified SID,这两种方案均是对标准SRv6的SRH方案进行扩展,解决承载效率低的问题。
这两种扩展解决方案均刚刚起步,MOUU网络持续跟进SRv6技术的最新进展,并基于商用芯片打造支持SRv6的产品,后续将和业界一起努力完善Micro SID、Unified SID等扩展方案的产品化,与业界共创SRv6的完善生态系统。