从MPLS到SR,再到SRv6,到底发生了什么?

铁打的数据,流水的技术。 这也许会是多年.

铁打的数据,流水的技术。


这也许会是多年从事ICT行业老兵对IP技术最深的感受,长江后浪推前浪,技术的波浪那是一波一波的,稍有不慎,前浪已躺在沙滩上。​今天我们就来聊一聊承载传输网络中IP数据传输技术从MPLS到SR技术,再到SRv6,到底都发生了什么。


MPLS

MPLS全称是Multi-Protocol Label Switching,直译过来就是多协议标签交换,它是操作在OSI的2层(数据链路层)和3层(网络层)之间的数据转发技术。

那么MPLS能风靡至今,靠的是什么?简单来说,它靠的是两把主要的刷子。

第一把刷子:LDP标签分发协议,解决传统路由技术剥洋葱式的繁琐;
通过LDP协议,MPLS把路由信息映射到标签信息上,而数据被封装在了盒子里,上面贴了标签,每个经手的人只需要读标签就知道盒子该送到哪。而传统的路由网络里面,每个经手的人都需要打开盒子,看看里面的内容,再决定送往哪。如同我们生活中的快递包裹标签,LDP自身不维护状态,转发是无连接的,跟着IGP走到哪算哪。

第二把刷子:RSVP-TE基于流量工程扩展的资源预留协议,灵活选择转发路径;
相比于传统的路由协议基于目的IP的简单转发,RSVP-TE最大的优势在于收集了整网拓扑和链路状态信息,可以根据业务的需要灵活地选择流量的转发路径。RSVP如同我们开车用的导航软件,它在计算行驶路线前需要收集道路信息并知晓当前路况,然后基于你的要求,上不上高速,是否避开拥堵,为选择一条合适的转发路径。

看上去MPLS很完美,但是现实很骨感!
MPLS的两把刷子虽然解决了很多问题,但MPLS对技术是做了加法,MPLS是通过在原有IGP协议基础上增加LDP协议来实现标签的分发,又因为LDP不具有流量工程,增加RSVP-TE。然而RSVP信令非常复杂,同时还得维护庞大的链路信息,因此信息交互效率低下,扩展也非常困难。
也正是在这样的背景下,SR(Segment Routing)技术应运而生。


SR


伟大的达芬奇老师曾经这样教导我们:"Simplicity is the ultimate sophistication."即,"大道至简"。

人类天生的惰性总是希望事情简单化,Segment Routing(简称SR),就是带着这样一种使命,对MPLS做了革命性的颠覆和创新。

那么SR到底做了什么?简单总结就是“一减一集中”,有点一花一世界的感觉。
减:既然LDP不维护状态信息,只对IGP中的目的IP和MPLS标签做了一层映射,本质上是依靠IGP协议制定标签转发,SR技术干脆直接使用对IGP协议扩展SR属性,不再部署LDP协议,由IGP来分发标签(这怎么感觉就像快递员小哥也要被淘汰一样)。
集中:既然每个节点都要通过RSVP进行大量的交互以维护全网的状态信息,干脆把RSVP功能集中起来,不用每个节点都计算交互。这也正谙合了SDN的思想,集中控制管理,可以说SR天然的支持SDN。

我们不难理解SR的几个特点:

• 源路由:在始发机场西雅图贴上标签路径。

• 无状态:中间机场不需要知道行李从哪来,最终去往哪里,而只需要根据标签转发。

• 集中控制:机场代码由航空运输系统集中分配和维护(当然在SR世界里,表达的路径标签也是集中计算和下发的)。

但在这需要强调的是,上面的SR在数据平面仍然是基于MPLS的,无论控制面分发标签是基于IPv4还是IPv6,从本质上来说还是MPLS下的Segment Routing,也就是SR-MPLS。
当网络全面由IPv4向IPv6演进时,我们能不能摆脱MPLS ?
答案是肯定的,这也就是我们最后要聊的SRv6,也就是IPv6下的Segment Routing(SRv6)。


SRv6


我们先看一看SRv6与SR-MPLS在帧结构上作了哪些改变。

可以看得出,SRv6在IPv6报文中新增了SRH扩展,来替代传统的MPLS下的标签转发功能,并使用128位的IPv6地址作为网线节点标识SID。
当传输数据时,SRv6在首节点传输路径上和各节点的SID集合起来以Segment List的形式放在SRH中,并通过SL(Segment Left)来表示中间节点的数量,以此修改SL值来实现下一跳。

与SR-MPLS相比,传统的SR-MPLS是在MPLS的基础上运用了减法和集中的思想,减去LDP集中RSVP,而SRv6则是在传统SR-MPLS基础上,给我们带来了大一统和编程的思想。

  • 为什么要说SRv6有大一统的思想:

从上面的帧结构对比中我们可以看得出,与传统SR-MPLS的3层类型标签(VPN/BGP/SR)相比,SRv6在标签分层上更为简单,只有一种IPv6头,以此实现统一的转发。

另外,由于SRv6帧头的标准性,使得它更能兼容现网的IPv6设备,当中间节点不支持SRv6功能时,也可以根据IPv6路由方式来转发报文。
给我们感觉就是,全网都可以采用统一的数据转发技术,这也是为什么说SRv6具有大一统的思想。

  • 那为什么又说SRv6具有编程的思想?

这主要是SRH扩展中128位SID特殊的帧结构中定义的Function字段。

Function字段支持编程自定义,可以根据业务需要灵活地定义任意功能和业务。比如说,可以定义Function为END,表示此SID标识的是一个节点,当定义为END.X时,表示此SID标识的是一段路径信息。
这就使得SRv6融合了编程的思想,可以提供更加灵活多样化的服务,这是传统的SR-MPLS所不具备的。


最后总结一下,从MPLS到SR(SR-MPLS),通过IGP扩展SR属性省略了LDP协议,并实现将基于源地址的集中控制。从SR到SRv6,通过在IPv6中增加SRH字段,实现基于IPv6的标签转发,替代传统的MPLS下的标签转发功能。
至少在目前来说,SRv6提供了可预见的网络业务变革的最终形态。
本期就聊到这儿了,感谢您的阅读!

发表回复