产品
产品中心
< 返回主菜单
产品

交换机

交换机所有产品
< 返回产品
交换机
查看交换机首页 >

无线

无线所有产品
< 返回产品
无线
查看无线首页 >

云桌面

云桌面产品方案中心
< 返回产品
云桌面
查看云桌面首页 >

安全

安全所有产品
< 返回产品
安全
查看安全首页 >
产品中心首页 >
行业
行业中心
< 返回主菜单
行业
行业中心首页 >

新一代IP承载核心技术SRv6的转发原理 —一文带你了解网络新贵

【SRv6】分段路由SR是一种源路由技术,具有集中控制、中间网络无状态、可扩展性好等优点,本文主要介绍SR的另一种标签寻址技术IPv6分段路由SRv6。

  • 发布时间:2020-01-02

  • 点击量:

  • 点赞:

分享至

我想评论

本期作者:李健明

互联网系统部行业咨询

引言

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


二、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技术的最新进展,并基于商用芯片打造支持SRv6的产品,后续将和业界一起努力完善Micro SID、Unified SID等扩展方案的产品化,与业界共创SRv6的完善生态系统。

 

相关推荐:

更多技术博文

任何需要,请联系我们

返回顶部

请选择服务项目
关闭咨询页
售前咨询 售前咨询
售前咨询
售后服务 售后服务
售后服务
意见反馈 意见反馈
意见反馈
更多联系方式