作者:蒋星
思科凯发在线的解决方案架构师 蒋星
思享家
是一个介绍如何利用思科先进技术解决客户难题的栏目。每期聚焦一个技术热点或应用场景,邀请资深思科技术专家深入浅出地介绍,为读者提供实用性强的建议。
srv6 是什么?
segment routing( 以下简称 sr )指由思科院士 clarence filsfils 发明,并主要由 ietf spring ( source packet routing in networking )工作组进行标准化的新一代网络传送技术。sr 基于源路由并且只在网络边缘维持状态,这使得 sr 非常适合于超大规模 sdn 部署,现已成为支持 5g 、物联网、多云、微服务发展的标准网络传送技术。
srv6 代表了全新的思考、设计、运营网络的方式——网络即计算机。使用 ipv6 数据平面,基于 ipv6 路由扩展头进行扩展,可以在现有 ipv6 网络上增量部署。
srv6 实现了网络极简:控制平面是支持 ipv6 的 igp / bgp ,转发平面则是纯 ipv6 。“ 简单即力量 ”,srv6 无疑在降低 opex / capex 方面有着非常好的前景。
srv6 极简和可编程两大特性得到了业界的广泛认可。srv6 满足未来固移、云网技术统一,是实现业务差异化、网络实时感知、业务隔离的关键技术,能够更好满足未来业务发展需求。
随着中国新基建的政策推进,作为下一代宽带互联网核心技术的 segment routing v6 ( 简称 srv6 )正在步入技术和应用创新的快车道。srv6 赋能网络真正的智能调度优化能力, 可以让游戏更顺畅,使金融交易更加快速并避免网络问题带来的交易失败和中断, srv6 还可以通过将流量调度到空闲链路上从而提升链路利用率,降低网络费用。srv6 已经被越来越多的运营商、互联网企业和大型企业所认可,并开始积极研究与部署。
谁吃掉了我的带宽?
除了极简和可编程两大特性, srv6 还可以通过将流量调度到空闲链路上从而提升链路利用率,降低网络费,优势十分明显。作为一家中型股份银行的网工,我却吃惊地发现,原来平稳顺畅的网络,部署 srv6 后,很多线路发生拥塞,核心业务发生卡顿,网络流量大增,金融客户投诉电话如暴风骤雨般呼啸而入……
经过排查,所有线路都工作正常,设备也没有发生故障,一切硬件相关的问题经过检查都被排除,难道这是 srv6 造成的吗?
原来,为了保持和 ipv6 地址的兼容性, srv6 用于流量调度的路径 segment 标识 ( sid )都采用了 128 比特的报文长度。相比较于 sr mpls 的每个标识 32 比特报文长度,足足多出来了 96 比特。在我的网络中需要设定 10 跳路由器节点, 这使我的 srv6 的报文总体长度比 sr mpls 多出 960 比特( = 120 字节 )。考虑到我的业务平均包长约为 256 字节,部署 srv6 后我的每条线路有效带宽减少了 25 %。( 如下图 )
不算不知道一算吓一跳,难怪现在流量激增,链路纷纷挤爆!按照我所在的某中型股份银行当前每年 1 个亿的通讯链路费用的小目标计算,要保持和之前相同的业务承载能力,每年需要新增通讯费用 2500 万。按照目前的 srv6 协议实现,运营商,互联网公司和大型银行这样的带宽消耗大户则需要更大的设备和带宽的投入。
产生这一问题的根源在于:
在 sr-mpls 下,协议引入的开销较小,因此现有的大多数网络设备硬件均可以在一个处理周期内读取完 sr 报头信息,完成转发,意味着现有的硬件无须替换,只需升级软件即可支持 sr-mpls 。
srv6 引入的协议开销远大于 sr-mpls , segment 所对应的操作也比 sr-mpls 复杂,因此 srv6 对网络设备提出了非常高的要求。
所以 srv6 虽然有千般好,但按照目前的协议配置网络,要么需要替换掉绝大多数的网络设备,要么网络吞吐降低一半( recycle )—— 这成为了 srv6 的阿喀琉斯之踵。
拿什么拯救你 —— 带宽?
srv6 在网络可编程性和负载均衡方面有着巨大的优势,但要发挥其优势,需要迫切解决在协议开销、承载效率、 mtu 和对硬件要求方面的问题。有没有一种方案能够切实提高 srv6 segment 效率?
思科联合业界众多领先的运营商、 ott 、设备厂商和芯片厂商,在 2019 年 7 月 8 日提交了 ietf 草案 draft-filsfils-spring-srv6-net-pgm-extension-usid-08 。这个草案对现有 srv6 框架做了扩展,定义了新的 segment 类型 usid ( micro segment id )—— srv6 包头压缩技术 ( 简称 srv6 usid )。
思科包头压缩的技术非常聪明又很简单。
一个正常的 srv6 包头( srh ),每一个 sid 都需要保存相同的公共前缀,但这些相同的部分实在是多余。把 sid list 中相同的公共前缀( 网段 )提取作为压缩包头的前缀块,将 node id 和 function id 作为压缩 sid( usid )与公共前缀一起形成压缩后的 sid 列表。( 如图 )
一个典型的 usid( 如下图 )
一个 128 bit 的 ipv6 地址被分为 7 份,第 1 份( 本文中采用 32 bit ,实际可灵活选定 )用于表示 ipv6 网络公共前缀( 网段 )信息, 该网络地址可以从已有的公网 ip 地址中分配,也可以采用私网地址段( fc00::/8 )。后续的 6 份( 本文采用 16 bit )每份用于表示一个 usid ,压缩后效率可提升 6 倍!
思科 srv6 usid 包头压缩机制的高效率,还表现在下面的场景:
小于 6 跳的 usid 压缩包头( 如下图 )
当 usid 小于 6 跳, usid 甚至不需要额外的 srh 包头,只需要将 ipv6 目的地址( da )重新规划和定义,即可实现 segment routing 的功能。
这非常有利于主机和存量网络设备的硬件处理,大幅度的简化了 srv6 实现难度,数据包的长度和原有 ipv6 包长等。srv6 数据包完全没有产生额外的包头开销,带宽完全被节约下来了。
大于 6 跳的 usid 压缩包头( 如下图 )
当 usid 大于 6 跳,只需要增加 srh 即可实现更多的 sid , srh 中的 sid 即可以采用压缩格式, 也可以用非压缩格式,甚至支持混合编排,在获得包头压缩的好处的同时,也可灵活兼容非压缩设备与原有 sr 网络的分阶段升级。
思科 srv6 usid 高效率的包头压缩机制可以显著提升每条链路有效使用带宽 5 %~ 15 %,进一步通过 srv6 usid 全网流量的智能调度能力,保障了关键业务运行质量,并进一步提升了全网链路利用率。还以网络带宽费用 1 个亿的小目标测算,仅这一项技术创新,就可为我司降低了企业运营最高 1500 万的线路带宽成本。
思科 srv6 包头压缩技术 srv6 usid 可以彻底解决协议开销、承载效率、mtu 和对硬件要求高方面的问题。usid 将极大加速 srv6 在网络侧的部署,并成为 srv6 新范式。