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

铁打的数据 , 流水的技术 。
这也许会是多年从事ICT行业老兵对IP技术最深的感受 , 长江后浪推前浪 , 技术的波浪那是一波一波的 , 稍有不慎 , 前浪已躺在沙滩上 。
今天我们就来聊一聊承载传输网络中IP数据传输技术从MPLS到SR技术 , 再到SRv6 , 到底都发生了什么 。
MPLS
MPLS全称是Multi-ProtocolLabelSwitching , 直译过来就是多协议标签交换 , 它是操作在OSI的2层(数据链路层)和3层(网络层)之间的数据转发技术 。
从MPLS到SR,再到SRv6,到底发生了什么?
文章图片
那么MPLS能风靡至今 , 靠的是什么?简单来说 , 它靠的是两把主要的刷子 。
从MPLS到SR,再到SRv6,到底发生了什么?
文章图片
第一把刷子:LDP标签分发协议 , 解决传统路由技术剥洋葱式的繁琐;
通过LDP协议 , MPLS把路由信息映射到标签信息上 , 而数据被封装在了盒子里 , 上面贴了标签 , 每个经手的人只需要读标签就知道盒子该送到哪 。 而传统的路由网络里面 , 每个经手的人都需要打开盒子 , 看看里面的内容 , 再决定送往哪 。 如同我们生活中的快递包裹标签 , LDP自身不维护状态 , 转发是无连接的 , 跟着IGP走到哪算哪 。
从MPLS到SR,再到SRv6,到底发生了什么?
文章图片
第二把刷子:RSVP-TE基于流量工程扩展的资源预留协议 , 灵活选择转发路径;
相比于传统的路由协议基于目的IP的简单转发 , RSVP-TE最大的优势在于收集了整网拓扑和链路状态信息 , 可以根据业务的需要灵活地选择流量的转发路径 。 RSVP如同我们开车用的导航软件 , 它在计算行驶路线前需要收集道路信息并知晓当前路况 , 然后基于你的要求 , 上不上高速 , 是否避开拥堵 , 为选择一条合适的转发路径 。
从MPLS到SR,再到SRv6,到底发生了什么?
文章图片
看上去MPLS很完美 , 但是现实很骨感!
MPLS的两把刷子虽然解决了很多问题 , 但MPLS对技术是做了加法 , MPLS是通过在原有IGP协议基础上增加LDP协议来实现标签的分发 , 又因为LDP不具有流量工程 , 增加RSVP-TE 。 然而RSVP信令非常复杂 , 同时还得维护庞大的链路信息 , 因此信息交互效率低下 , 扩展也非常困难 。
也正是在这样的背景下 , SR(SegmentRouting)技术应运而生 。
SR
伟大的达芬奇老师曾经这样教导我们:"Simplicityistheultimatesophistication."即 , "大道至简" 。
从MPLS到SR,再到SRv6,到底发生了什么?
文章图片
人类天生的惰性总是希望事情简单化 , SegmentRouting(简称SR) , 就是带着这样一种使命 , 对MPLS做了革命性的颠覆和创新 。
从MPLS到SR,再到SRv6,到底发生了什么?
文章图片
那么SR到底做了什么?简单总结就是“一减一集中” , 有点一花一世界的感觉 。
减:既然LDP不维护状态信息 , 只对IGP中的目的IP和MPLS标签做了一层映射 , 本质上是依靠IGP协议制定标签转发 , SR技术干脆直接使用对IGP协议扩展SR属性 , 不再部署LDP协议 , 由IGP来分发标签(这怎么感觉就像快递员小哥也要被淘汰一样) 。
集中:既然每个节点都要通过RSVP进行大量的交互以维护全网的状态信息 , 干脆把RSVP功能集中起来 , 不用每个节点都计算交互 。 这也正谙合了SDN的思想 , 集中控制管理 , 可以说SR天然的支持SDN 。
我们引用一个视频来说明SR , 相信更容易理解:
在这个例子中我们不难理解SR的几个特点:
?源路由:在始发机场西雅图贴上标签路径 。
?无状态:中间机场不需要知道行李从哪来 , 最终去往哪里 , 而只需要根据标签转发 。
?集中控制:机场代码由航空运输系统集中分配和维护(当然在SR世界里 , 表达的路径标签也是集中计算和下发的) 。
但在这需要强调的是 , 上面的SR在数据平面仍然是基于MPLS的 , 无论控制面分发标签是基于IPv4还是IPv6 , 从本质上来说还是MPLS下的SegmentRouting , 也就是SR-MPLS 。
当网络全面由IPv4向IPv6演进时 , 我们能不能摆脱MPLS?
答案是肯定的 , 这也就是我们最后要聊的SRv6 , 也就是IPv6下的SegmentRouting(SRv6) 。
SRv6
我们先看一看SRv6与SR-MPLS在帧结构上作了哪些改变 。
从MPLS到SR,再到SRv6,到底发生了什么?
文章图片
可以看得出 , SRv6在IPv6报文中新增了SRH扩展 , 来替代传统的MPLS下的标签转发功能 , 并使用128位的IPv6地址作为网线节点标识SID 。
当传输数据时 , SRv6在首节点传输路径上和各节点的SID集合起来以SegmentList的形式放在SRH中 , 并通过SL(SegmentLeft)来表示中间节点的数量 , 以此修改SL值来实现下一跳 。
从MPLS到SR,再到SRv6,到底发生了什么?
文章图片
与SR-MPLS相比 , 传统的SR-MPLS是在MPLS的基础上运用了减法和集中的思想 , 减去LDP集中RSVP , 而SRv6则是在传统SR-MPLS基础上 , 给我们带来了大一统和编程的思想 。
为什么要说SRv6有大一统的思想:
从上面的帧结构对比中我们可以看得出 , 与传统SR-MPLS的3层类型标签(VPN/BGP/SR)相比 , SRv6在标签分层上更为简单 , 只有一种IPv6头 , 以此实现统一的转发 。
从MPLS到SR,再到SRv6,到底发生了什么?
文章图片
另外 , 由于SRv6帧头的标准性 , 使得它更能兼容现网的IPv6设备 , 当中间节点不支持SRv6功能时 , 也可以根据IPv6路由方式来转发报文 。
给我们感觉就是 , 全网都可以采用统一的数据转发技术 , 这也是为什么说SRv6具有大一统的思想 。
那为什么又说SRv6具有编程的思想?
这主要是SRH扩展中128位SID特殊的帧结构中定义的Function字段 。
从MPLS到SR,再到SRv6,到底发生了什么?
文章图片
Function字段支持编程自定义 , 可以根据业务需要灵活地定义任意功能和业务 。 比如说 , 可以定义Function为END , 表示此SID标识的是一个节点 , 当定义为END.X时 , 表示此SID标识的是一段路径信息 。
这就使得SRv6融合了编程的思想 , 可以提供更加灵活多样化的服务 , 这是传统的SR-MPLS所不具备的 。
最后总结一下 , 从MPLS到SR(SR-MPLS) , 通过IGP扩展SR属性省略了LDP协议 , 并实现基于源地址标签转发的集中控制 。 从SR到SRv6 , 通过在IPv6中增加SRH字段 , 实现基于IPv6的标签转发 , 替代传统的MPLS下的标签转发功能 。
至少在目前来说 , SRv6提供了可预见的网络业务变革的最终形态 。
本期就聊到这儿了 , 感谢您的阅读 , 谢谢!
【从MPLS到SR,再到SRv6,到底发生了什么?】部分图片来源于网络 , 若侵权 , 请联系 , 将及时替换!


    推荐阅读