技术盛宴 | 新一代IP承载核心技术SRv6的转发原理

2020-01-03 11:45:58

来源:MOUU网络

本期作者:李健明

互联网系统部行业咨询

一文带你了解网络新贵

引言

分段路由(SR,Segment Routing)是一种源路由技术,具有集中控制、中间网络无状态、可扩展性好等优点,SR更是面向软件定义网络(SDN,Software Defined Network)架构设计的协议,融合了设备自主转发和集中编程控制的优势,能够更好地实现应用驱动的网络。关于SR技术的优势、技术演进等在上一篇技术文章《一文读懂网络界新贵Segment Routing技术化繁为简的奥秘》里有详细介绍,本文将接着SR技术演进的话题,介绍SR的另一种标签寻址技术IPv6分段路由(SRv6,Segment Routing IPv6)。

1

从“大道至简”到“极简”——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的报头和Segment的具体格式。

注: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的“极简”转发。

2

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网络上实现增量部署,无须替换所有现网设备。

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地址的低比特位。

• Locator具有路由定位功能,需要在SRv6域内唯一,网络里其他节点通过Locator网段路由就可以定位到本节点,同时本节点发布的所有SRv6 SID也都可以通过该Locator网段路由到达。

• 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的完善生态系统。

索取“此产品”的详细资料,请留言
  • *姓名:
  • *手机:
  • *邮寄地址:
<