|1.3 All IP 1.0的挑战:IP/MPLS的困局|
虽然IP/MPLS使网络进入了All IP 1.0时代,但IPv4和MPLS的技术组合也面临不少挑战。这些挑战随着网络规模的扩大以及云时代的到来更加凸显,阻碍了网络的进一步发展。
1. MPLS的困局
MPLS虽然在网络All IP化中发挥了重要作用,但是也带来了网络孤岛问题,增加了网络跨域互通的复杂性。
一方面,MPLS被部署到不同的网络域,例如IP骨干网、城域网和移动承载网等,形成了独立的MPLS域,也带来了新的网络边界。但很多业务需要端到端部署,所以在部署业务时需要跨越多个MPLS域,这带来了复杂的MPLS跨域问题。历史上,MPLS VPN有Option A/B/C等多种形式的跨域方案 [14-15],业务部署复杂度都相对较高。
另一方面,随着互联网和云计算的发展,云数据中心越来越多。为满足多租户组网的需求,业界提出了多种Overlay的技术,典型的就是VXLAN。历史上也有不少人尝试过将MPLS引入DC(Data Center,数据中心)来提供VPN服务,但由于网络边界多、管理复杂度大和可扩展性不足等多方面的原因, MPLS进入数据中心的尝试均告失败。
如图1-2所示,从终端用户到云数据中心访问的流量需要先穿过基于MPLS的固定、移动融合的承载网,通过Native IP网络进入基于MPLS的IP骨干网,在IP骨干网的边缘进入DC的IP网络,再到达VXLAN网关,进入VXLAN隧道,到达VXLAN的终点TOR(Top of Rack,架顶模式)交换机,最后访问VNF(Virtual Network Function,虚拟网络功能)设备。过多的网络域导致了这个业务访问过程过于复杂。
图1-2 MPLS网络孤岛
限制MPLS发展的另一个主要原因是可扩展性不足。可扩展性可以分为标签空间的可扩展性和封装格式的可扩展性两方面。
标签空间方面,如图1-3所示,MPLS只有20 bit的标签空间,在网络规模变大时,就会出现标签资源不足的问题。而且在网络规模变大之后,控制平面RSVP-TE协议的可扩展性不足,复杂度也过高。
封装格式方面,MPLS标签的封装格式是32 bit的固定编码,MPLS标签提供了一定的可扩展性,但是面对越来越多需要扩展报文头携带数据的新业务,比如支持SFC携带元数据 [16]和IOAM(In-situ Operations,Administration and Maintenance,随流操作、管理和维护)[17]时,MPLS显得心有余而力不足。
图1-3 MPLS标签的封装格式
2. IPv4的困局
IPv4最大的问题是地址资源不足。从20世纪80年代起,IPv4地址开始以更快的速度被消耗,超出了人们的预期。随着IANA(Internet Assigned Numbers Authority,因特网编号分配机构)把最后5个地址块分配出去, IPv4主地址池在2011年2月3日耗尽。2019年11月25日15:35(UTC+1),随着欧洲地区的最后一块掩码长度为22 bit的公网地址被分配出去,全球所有的IPv4公网地址耗尽。虽然有NAT-PT(Network Address Translation Protocol Translation,网络地址转换-协议转换)等技术使得人们可以通过复用私网地址网段来缓解公网地址耗尽的问题,但使用NAT只能治标,并不能治本。
如图1-4所示,NAT(Network Address Translation,网络地址转换)技术需要增加新的网络配置,需要维持网络的映射状态,使得网络的复杂度进一步增加,而且使用NAT之后,真实地址被隐藏,IPv4流量不可被溯源,这带来了一定的管理风险。
图1-4 NAT的示意
注:图中IP地址均为示意。
IPv4还面临另一个困局,即报文头可扩展性不足,导致可编程能力不足。因此很多需要扩展报文头的新业务,比如源路由机制、SFC和IOAM等,都很难由IPv4扩展支持。虽然IPv4也定义了一些选项(Options)扩展,但这些选项除了用于故障检测,很少有其他应用。IPv4报文头的可扩展性不足一定程度上限制了IPv4的发展。考虑到这一点,IAB(Internet Architecture Board,因特网架构委员会)在2016年已经建议IETF未来在制定标准时不要基于IPv4扩展新的特性。
为了解决IPv4地址空间耗尽和可编程能力差的问题,业界设计了IPv4的下——代升级方案—IPv6[2]。
3. IPv6的难题
IPv6作为IPv4的下一代协议,它的提出旨在解决IPv4地址空间受限和可扩展性不足这两个主要问题 [18]。为此,IPv6做了一些改进。
一方面,IPv6扩展了地址空间。与IPv4的地址长度只有32 bit相比, IPv6的地址长度是128 bit,这就提供了非常大的地址空间,甚至可以为地球上的每一粒沙子分配一个IPv6地址,有效地解决了IPv4地址空间不足的问题。
另一方面,IPv6设计了扩展报文头机制。根据RFC 8200[18]的定义,目前IPv6的扩展报文头以及推荐的扩展报文头排列顺序如下(IPv6的详细介绍请参考附录A,此处不展开介绍):
• IPv6基本报文头(IPv6 Header);
• 逐跳选项扩展报文头(Hop-by-Hop Options Header);
• 目的选项扩展报文头(Destination Options Header);
• 路由扩展报文头(Routing Header);
• 分片扩展报文头(Fragment Header);
• 认证扩展报文头(Authentication Header);
• 封装安全有效载荷扩展报文头(Encapsulating Security Payload Header);
• 目的选项扩展报文头(Destination Options Header),指那些将被IPv6报文的目的地处理的选项;
• 上层协议报文头(Upper-Layer Header)。
一个携带TCP报文的IPv6扩展报文头封装结构如图1-5所示。
图1-5 携带TCP报文的IPv6扩展报文头封装结构
扩展报文头的设计给IPv6带来了很好的可扩展性和可编程能力,比如,利用逐跳选项扩展报文头可以实现IPv6逐跳数据的处理,利用路由扩展报文头可以实现源路由等。
然而一晃20多年过去了,IPv6始终发展得不温不火,直到最近几年,由于技术发展和政策等原因,运营商才开始加速部署IPv6网络。回顾历史,IPv6发展不顺主要有两方面原因。
第一,不兼容IPv4,网络升级成本高。IPv4的地址长度只有32 bit,而IPv6的地址长度是128 bit。虽然地址空间得到了扩展,但是IPv6无法兼容IPv4,使用IPv6地址的主机无法和使用IPv4地址的主机直接互通,这就需要设计过渡方案,导致网络升级成本大。
第二,业务驱动力不足,网络升级收益小。除了升级成本高之外,业务驱动力不足和网络升级收益小其实也是IPv6发展缓慢的重要原因。一直以来, IPv6的支持者都在宣传128 bit的地址空间可以解决IPv4地址耗尽的问题,但是解决IPv4地址耗尽的方法并不是只有IPv6,还有NAT等技术。NAT是现在解决IPv4地址不足的主要手段,通过使用私网地址和NAT,IPv4地址资源不足的问题得到了暂时的缓解,而且并没有影响到网络业务的发展。部署NAT的成本也要比升级到IPv6网络的成本低。已有的业务在IPv4网络中运行良好,升级到IPv6网络也不会带来新的收入,这就是运营商迟迟不愿升级到IPv6网络的主要原因。
因此,解决IPv6发展缓慢问题的关键在于找到IPv6支持而IPv4不支持的业务,从而通过商业收益驱动运营商升级到IPv6。