Segment Routing(直译为分段路由,缩写为SR)技术,脱胎于MPLS,但是又做了革命性的颠覆和创新,它代表的是一种新的网络理念——应用驱动网络。自从诞生那一刻起,SR技术便被誉为网络领域最大的黑科技,因其与SDN天然结合的特性,也逐渐成为SDN的主流网络架构标准。本文为大家梳理了SR技术的起源,引出SR技术的基本概念和优势,并展望SR下阶段的演进方向。
追踪朔源—MPLS
MPLS介绍
MPLS(Multi-Protocol Label Switching,多协议标签交换)是一种在开放的通信网上利用标签引导数据高速、高效传输的技术。(定义来自:维基百科)
图1:MPLS报文结构
简单说MPLS采用标签分发技术,将IP地址映射为简单的具有固定长度的标签(如图1, MPLS头部包含20bits的标签位),MPLS网络是利用标签进行数据转发的。
Segment Routing的“继往&开来”
MPLS在广域网等场景已经得到了大量部署。ISP/OTT/大企业通过部署LDP、RSVP-TE等协议,为广域网业务提供VPN隔离以及差异化的流量调度方案。随着MPLS技术的广泛应用,其优势和劣势也都更加凸显。被称为“下一代MPLS”的Segment Routing技术很好地继承了MPLS的优势,同时也对MPLS的劣势进行了颠覆和创新。
SR继往:传统MPLS的数据平面既保持了标签转发的简单高效,还能支持显式路径从而提供强大的流量调度能力。这使得MPLS的数据平面成为经典,Segment Routing聪明地继承了MPLS的数据平面。
SR开来:与MPLS数据平面大受好评不同,MPLS的控制平面却因为协议复杂、扩展性差、部署&运维困难等问题深受诟病。MPLS的控制面依赖的主要技术是LDP(Label Distribution Protocol,标签分发协议),以及RSVP-TE(Resource Reservation Protocol - Traffic Engineering,基于流量工程扩展的资源预留协议)。接下来我们重点分析一下LDP和RSVP-TE存在哪些问题,SR又是如何解决的?
LDP标签分发协议
通过LDP协议,MPLS设备可以把路由信息映射到标签信息上,并通过协议通告建立起标签交换路径。关于LDP的详细介绍,限于篇幅原因,不在这里展开。我们只需要知道:LDP是依赖IGP路由信息为IP网络中的目的地址分配标签(本身不维护状态信息),并通过邻居间的LDP信令周知不同目的IP的标签信息。
LDP的优势
- 部署简单:只需要接口使能LDP功能即可。
- 易扩展:目前OSPF/IS-IS等IGP协议都支持LDP,扩展性较好。
- 天然的ECMP能力:LDP本质上依赖IGP的路由转发,因此可以直接复用IGP的负载均衡能力。
LDP的劣势
- 没有流量工程机制:和IP网络一样,LDP也无法指定转发路径,也就无法做到基于业务要求(时延、带宽、丢包等)的流量调度。
- 交互复杂:LDP重度依赖IGP,导致交互复杂,详见LDP-IGP synchronization issue,RFC 5443&RFC 6138。当LDP和IGP状态不一致时,还可能产生流量黑洞的问题。
RSVP-TE技术
为了解决LDP不支持流量工程的问题,MPLS中引入了RSVP-TE控制面。
传统路由是依据目的IP进行查找转发,且只关心下一跳怎么走,而并不关心流量的完整路径。而RSVP-TE引入了源路由的概念:当流量进入RSVP网络后,在源节点就会计算出完整的每一跳路径(显式路径)。
如同导航软件在计算行驶路线前需要收集道路信息并知晓当前路况,计算源路由的先决条件则是需要收集全网拓扑信息及链路状态信息。RSVP-TE通过扩展IGP协议收集了这些信息(IS-IS扩展了TLV字段,OSPF则是用特定的LSA)。
知晓路况信息是第一步,具体选择走哪条线路,还要取决于选路算法。一如导航软件根据我们的要求(时间优先,距离优先,不走高速等)选择最优路线,RSVP-TE流量调度也可以依据业务的要求:如延时低于50ms、带宽大于10G等规划出最优的转发路径。
RSVP-TE优势
相比于传统的路由协议基于目的IP的简单转发,RSVP-TE最大的优势在于收集了整网拓扑和链路状态信息,因此可以根据业务的需要灵活地选择流量的转发路径(为流量指定一条显式路径)。
RSVP-TE劣势
RSVP-TE听上去是一个完美的流量调度解决方案,应该大受欢迎。然而现实很骨感:部署RSVP-TE的案例并不多,并且在为数不多的RSVP-TE案例中,大部分也只用到了RSVP-TE的快速重路由功能,而非流量调度功能。究其原因,无外乎以下三点:
- 过于复杂:RSVP信令非常复杂,每个节点都需要维护一个庞大的链路信息数据库;
- 扩展性受限:为了准确预留带宽,RSVP-TE要求所有IP流量都需要通过隧道转发,节点之间建立Full-mesh隧道导致扩展性差,大规模部署几无可能;
- 不支持ECMP(Equal-Cost Multipath Routing,等价多路径):现代IP网络中,ECMP是一个最基础的需求。而从源路由的机制我们可以看到,RSVP-TE只会选择一条最优路径进行转发。如果想要实现流量分担,还需要在相同的源和目的之间预先建立多条隧道。
注:关于ECMP的技术文章可以参考技术盛宴第十二期:数据中心网络等价多路径(ECMP)技术应用研究。https://mp.weixin.qq.com/s/DM-jlOdSlDOHKqObeIdt0w
二、大道至简-Segment Routing
综上所述,MPLS虽然解决了很多问题,但其本身也有待优化,尤其是在流量工程方面复杂性亟待改善。在这样的背景下,一种保留了MPLS能力,且更为简单易用的技术架构——Segment Routing,恰如其时地出现了。
Segment Routing,这项号称“下一代MPLS”的技术,从其被设计之初就坚持了对网络协议做减法的原则。那么对比MPLS,Segment Routing到底“减”在哪里?
减法一:去掉RSVP复杂的信令机制
RSVP-TE是一种分布式的架构,每台设备只能看到自身的状态。想要获取其他设备的状态信息,就必须依赖RSVP的信令来进行频繁的、大量的交互,这也就造成了RSVP协议的复杂性。我们不妨设想下,如果有一种集中控制平台负责交互这些信息,那这一切是否就迎刃而解了?
提到集中式,大家一定会首先想到转控分离的SDN。没错,SDN集中式控制思想和源路由可谓是天作之合。
2015年开源的SDN控制器Open Daylight支持Segment Routing是一个标志性的事件,这使得Segment Routing演进成集中式/分布式混合架构成为可能。事实上,目前落地的SR项目中也几无例外地都使用了SDN来收集拓扑信息以及下发隧道路径。
减法二:去掉 LDP,直接由IGP分发标签
LDP实际上不维护任何的状态信息,仅仅是对IGP中的目的IP和MPLS标签做了一层映射,那么这样的标签分发和同步是否可以通过拓展IGP协议的方式来实现,从而减少部署LDP协议呢?
Segment Routing实现了这一点,它扩展了IGP协议的SR属性(IS-IS通过TLV实现,OSPF通过不透明LSA携带,具体可以参考http://www.segment-routing.net/),并用于直接分发和同步标签信息。当然,引入SDN控制器后,这部分工作也可以交给控制器完成。
什么是Segment Routing
读到这里,相信大家对SR技术已经有了基本的认识,下面我们通过一个举例再来理解一下。
《Segment Routing详解第一卷》中,用了一个很形象的比喻来解释SR:机场行李标签。设想某人要把行李从西雅图发送到柏林(TXL),途径墨西哥城(MEX)和马德里(MAD)。航空运输系统并不会为这件行李产生一个单独的ID并维护它,而是采用了一种更具扩展性的方法:在始发机场给行李贴上一个标签“先到墨西哥城,再到马德里,最后到柏林”。这样一来,航空传输系统不需要识别行程中的单个行李,而只需要识别机场代码,就会知道怎么按照行李标签把行李从一个机场发送到另一个机场。比如刚才的例子,只需要在始发机场西雅图为行李箱贴上{MEX;MAD;TXL}的标签,机场依据行李标签发送即可。
SR的做法其实完全相同,在SR的世界里,始发机场西雅图就是源节点,机场代码就是中间节点标签。SR会在源节点压入转发标签路径,中间节点只需要根据标签转发。
在这个例子中我们不难理解SR的几个特点:
- 源路由:在始发机场西雅图贴上标签路径。
- 无状态:中间机场不需要知道行李从哪来,最终去往哪里,而只需要根据标签转发。
- 集中控制:机场代码由航空运输系统集中分配和维护(当然在SR世界里,表达的路径标签也是集中计算和下发的)。
SR标签分类
理解完SR是什么后,我们再具体学习下SR技术中最重要的概念:SR标签。SR标签具体分类如下:
分类 |
作用 |
使用范围 |
Prefix SID |
为网络中目的地址前缀分配的标签 |
全局有效 |
Node SID |
为网络设备分配的标签(类似Loopback口) |
全局有效 |
Adjacency SID |
为节点邻接的IP网段分配的标签 |
本地有效 |
表1:SR 标签分类
另外两个需要知晓的、密切相关的概念:
Segment Routing Domain:一组SR节点的集合
SRGB:为全局SR预留的本地标签集合,生成的Segment需在SRGB范围内。
前缀/节点标签(Prefix/Node Segment)
图2: Prefix/Node Segment
Prefix-SID:是为目的地址前缀分配的标签,标签在SR域内全局唯一,标识的方式为SRGB+Index。如图2,如果SRGB从16000起始,10.2.2.0/24网段被分配的Index为1,那么10.2.2.0/24的Prefix-SID为16001。
Node-SID:可以简单理解为一种特殊的Prefix-SID, 如:将设备 Loopback接口下配置的IP地址作为前缀,其对应的 Prefix SID实际就是Node SID 。
邻接标签(Adjacency Segment)
邻接标签(Adjacency Segment)表示设备上某条链路的单跳路径,仅在设备本地有效。每个设备向与自己相邻一跳的设备通过IGP扩展通告邻接标签。当然,也可以通过SDN控制器直接为SR域内的每条链路进行标签分配。
图3: Adjacency Segment
如图3所示,9001、9002、9003表示的是为每条链路分配的邻接标签。
了解完SR标签的分类和作用后,我们不难理解:利用Prefix/Node Segment的组合,网络中很容易形成多条转发路径(条件宽松)。当需要对流量进行精细化调度时,加入Adj-Segment可以指定一条显式路径(条件严格)。
SR转发流程
接下来我们看一个典型的SR转发流程:
图4: SR转发流程
- 控制器收集全网的拓扑信息,链路状态信息,并分配SR标签(也可以设备上生成通告给控制器)。
- 如图4所示,10.1.1.0/24与10.6.6.0/24主机互访,默认情况下网络中会有非常多的路径,比如ABCF,ADEF,ABCEF等等。如果不需要对流量做调度,按照默认的多路径转发即可。
- 应用驱动网络:如果应用对网络提出了要求,比如需要一条带宽大于8G,延时少于30ms的转发路径。那么源节点A设备会向控制器发起路径计算请求。
- 控制器已经掌握了全网的拓扑信息、状态信息、标签信息,因此可以计算出符合条件的显式路径。
- 如图4所示,假设红色链路出现了拥塞,不满足业务的带宽要求。最终计算的结果黄色的箭头路径是满足需求的,控制器会给源节点A下发符合路径的标签栈{16021,16031,323,16032,16041}来引导流量按指定路径转发。
- 源节点A收到标签栈后,会压入到转发数据包。
- 接下来,就是常规的标签转发。可以参考图4的标签列表:节点A收到标签栈后,发现第一个标签16021对应B节点,于是查找路由将报文转发给B;B节点收到后,发现顶层标签16021是自己,于是将标签弹出,并将标签发往16031对应的链路…最终数据表会依据指定的路径转发到目的地F。
SR优势总结
最后简单总结下SR技术的优势:
- 简化的控制平面(去除LDP/RSVP-TE);
- 可扩展性好:SR的源路由和无状态特性决定了其良好的扩展性;
- 战术型流量工程:对于普通流量不指定路径,自动负载;对于需要调度的流量计算出显式路径,并下发Segment执行;
- 与SDN结合,继承集中控制带来的好处;
- 与拓扑无关且针对IP优化的FRR(快速重路由);
- 标准化,多厂商支持。
三、展望
场景演进
Segment Routing目前在一些运营商和OTT公司已经得到试点部署,但大多数应用场景还集中在骨干网的流量调度。SR在其他场景譬如数据中心是否也有用武之地呢?Segment Routing优异的流量调度机制以及转控分离的架构,或许可以解决数据中心的一些难题:比如大量ECMP路径带来的转发路径不确定性、传统网络设备黑盒不可见等。另外,2017年发布的Linux内核4.10已经正式支持SR,这意味着从主机甚至是容器开始就可以调度其对应的业务流在全网的端到端路径,端到端的SR部署成为可能。
技术演进
IPv4向IPv6演进是时下热点话题,SR同样也需要向IPv6演进。SR支持IPv6有两种方式,一种是仍然采用MPLS数据面,控制面为IPv6地址分发MPLS标签。但更好的方式是直接采用SRv6技术, SRv6是一项更具颠覆性的技术,它直接利用IPv6地址作为标签寻址(Locator),并融入编程思想,加入了指令(Function)字段。我们甚至可以把网络类比为计算平台,而SRv6 Segment是CPU指令,通过SDN有机调度将应用需求自动映射到网络基础设施上执行,进而实现端到端的网络配置及调度。相信SRv6的极简和编程的理念,将引发全新的设计和运营网络的思考。
锐捷网络成立了SRv6专项研发团队,持续跟进SRv6技术的进展。基于商用芯片,预计在2019年完成SRv6功能的开发,并已有计划推动SRv6的商用部署落地。