本文作者:大河云联,闫浩
IP网络从1982年TCP/IP 成为互联网前身的ARPANET标配以来,随着互联网的发展而迅猛扩展。在数据网络方面基本已经一统天下,做到了 everything over IP。IP网络作为承载互联网,物联网,云计算以及VR,AI等未来各种无限可能的数据服务的底层网络,其灵活性,扩展性以及对业务的支持可编程需求要求网络更快的完成自身演进。
从IP网络的整体发展看,从网络的基本可以清晰的分为三个阶段,当然这三个阶段的网络在现实世界是并存的。
纯IP网络 (IP战胜了其他网络层协议,成为数据网络的主流)MPLS based 网络SDN 网络纯IP网络
回退到几十年前,IP网刚诞生时,IP协议和IP网络还是有很多竞争对手的,比如IPX,Appletalk,Netbios,这些现在听着很久远的协议当时还是很流行的。比如IPX在企业网就远比IP流行。当年的网络和网络设备复杂性很大程度体现于支持多种网络层协议,支持从E1到OC-12,OC-48的多种网络速率和接口类型。IP以及Ethernet仅是众多选择中的一种。
APPANET 选择TCP/IP组合后,IP的简单易用,Ethernet的低成本,再加上互联网的病毒式传播,短短的20年。这三者的强力组合就像 Intel + 微软一样,横扫数据网络。 可以认为应用层发轫的Everything Over IP 水到渠成,到了2000年左右,语音网络,视频网络和数据网络,已经可以说是 Everything Over IP了。
纯IP网络主要在统一网络层协议和简化传输介质上贡献显著。
纯IP网络的转发
从本质上说是逐跳基于目的IP地址转发完成这个动作的方式是通过 IGP + BGP 路由协议来实现附加的网络调控手段:PBR,ACL, IP-Based QoS
这个阶段的网络主要实现连通的目的,通过IGP和BGP路由协议,获取AS域内和域间路由。构成网络的路由器或交换机根据路由表,形成转发表。当IP报文到达接口,入方向的芯片提取IP报文头,根据目的IP查找转发表,找到出端口。
多年来,大多数企业网,园区网以及相当多运营商的公众网都采用这种方式。优点是简单,大多数设备都支持。随着路由协议的大规模使用和设备的大规模部署,作为整体系统的健壮性,可扩展性和稳定性以及建网成本都有了很大的优化。相应的网络设备芯片体系也日趋完备。
但从服务的角度则看起来乏善可陈。当业务对网络有连通以外的要求时,比如要基于源地址进行选路时,设备可以通过PBR(Policy-based routing)实现。但这并不是一种普世的服务,对于少量,临时,非做不可的需求,可以用CLI在某些节点配置,但没有人会疯狂到在全网通过PBR去做路由。网络工程师通常称PBR这样的实现叫做“Feature”。
在那些年里,厂商们各自都有很多Feature。用于炫技,用于投标,用于教育客户。用于不那么完美的解决某些实际问题。
Feature 有两个隐含的意思:
不是随便的阿猫阿狗就能实现的,是一种能力起了这个Feature是对网络和设备而言都有代价有条件的
另一个现象是当某些需求用Feature无法满足,或者是设备的性能瓶颈,或者是功能瓶颈时,网络工程师又设计出各种appliance,叠加了特殊功能的各种大box和小Box,最著名的就是防火墙,还有4-7层交换,广域网优化等。这些设备说到底,还是在对IP报文的处理上,解决了“基于目的地址寻址”以外的问题。
总结来说,在纯IP网络时代,是靠路由协议+feature+appliance满足基本需求的。
MPLS based网络
在IP协议和IP网络PK掉ATM时,尽管ATM协议的复杂和设备昂贵等诸多原因导致了市场的失败。 IP网也由衷的羡慕ATM实现的虚电路的优势,对于无连接的IP来说,如果能形成一个按需的虚电路,能够根据用户的特点提供不同的服务质量和转发路径,是非常有吸引力的事情,再加上当时转发性能的一些瓶颈,综合因素促成了MPLS的诞生和流行。
当MPLS开始规划化使用和部署时,两个基本概念是代表了运营商期盼已久的事情。
FEC转发等效类
FEC(Forwarding equivalence class) ,对于相同分类的一组数据报文,提供相同的转发处理方式。 这里所说的相同分类,相同的目的地址仅是其中的一种,基于不同的标准进行自由的网络转发一直是网络工程师的愿景之一。
LSP:Label-switched path
LSP 基于FEC对报文的分类,实现了端到端的对IP报文封装,在每跳基于Label进行转发的单向虚电路,正如IP网络向Frame Rely,ATM, SONET/SDH 学习的初衷,MPLS把网络分为Core 和Edge两个部分,其基本想法是Edge设备封装各种需求,Core部分仅完成标签转发。
在全网通过Label的分发机制,从Edge节点通过Label替代目的IP地址,在网络的提供了转发平面的抽象。
MPLS的强大之处在于基于标签交换,开发了一系列服务。
VPN服务:L3VPN,L2VPN,VPLSTE:Traffic Engineering 服务Multicast 服务
其中最成功的要算部署相当广泛的L3VPN服务。其背后原因可能是三层网络隔离而出现的巨大市场需求。即使在没有L3VPN的互联网,IPsec,SSL VPN等技术也发展起来。
其他的VPN如VPLS,尽管有一定的使用。但由于其市场需求有限,且有一些MPLS网络共性的缺点和自身弱点,始终没有大规模实施。
MPLS 当年雄心勃勃,在IETF有多个WG,无数RFC在同时演进。但复杂套着复杂,最后很多内容变成曲高和寡的纸上文章。至少在能接触到的中国运营商和企业网层面无法大规模落地。
MPLS服务的共性弱点
多层协议累加带来的复杂度和协议之间的配合问题
以实现VPLS的网络为例,至少需要如下协议:IGP - 最底层的PE的/32 路由LDP - 用于外层标签,PE的寻址BGP - 用于Internet服务,尽管不是VPLS必须的,但IP服务的BGP,其实也是运营商的标配。MP-BGP - 用于topology发现和提供内层标签
当多层协议并存时,网络服务的脆弱性来自每台设备上的每个协议是否能正常工作。同时,不同协议之间的配合存在问题时,也可能导致问题,比如经典的LDP和IGP之间的同步问题。
另外VPLS自身也存在一些弱点,比如:
需要Full-Mesh在转发平面实现MAC地址 learning不支持CE的Multihoming
MPLS-TE
TE最希望解决的问题是IGP路由协议相同的最短路径视角造成的流量过于集中在少量路径上,需要提高整个网络的利用率。因此TE需要建立和维护大量的端到端tunnel。维护这些tunnel的代价可谓不菲。而在分布式的网络架构下,TE始终没有解决好tunnel计算/维护/排障的问题,TE也局限在部分运营商网络内使用。
当然我们经过了多年之后,我们也知道理想中的FEC不过是存在想象中的美好,现实中99.9%的报文仍然是按照目的地址进行转发。受限于芯片,设备,协议/标准化,设备,操作等诸多因素制约。
通过对MPLS服务的简单分析,我们很容易看出,MPLS用Label较好的解决了转发平面的抽象,但并没有解决控制平面抽象。正是其控制平面的复杂性给网络带来的影响削弱了其部署范围。 控制平面的复杂性究其本质,还是每个协议各管一段,各满足一种需求造成的。要做VPN,需要L3VPN 或VPLS,要做流量工程,需要TE,要做QoS,需要IP or MPLS Qos 等等。 如果这些都要,你的设备是否都同时支持?你是否敢都部署?你是否愿意运维这张网络?相信大多数网工无论是运营商,集成商还是厂商背景的面对这些问题都一脸苦笑。
所以很多技术很多年后,还是被称为Advanced Technology,而非普世应用。很多时候,泛泛的说,能否实现某个功能?能,但能的前提条件太多:网络设计考虑,大量配置的复杂度,设备硬件性能支持,多厂家互通时不同设备对相同feature的配置方法和缺省行为,互操作性和兼容性,排障的可操作性。
久而久之,能就成了个理论上的,理想化的说法。 而非实打实可以简单落地的能力。
Segment Routing 是否是白衣骑士?
这两年,SR横空出世,让人眼前一亮,很有些传统网络救世主的样子,SR有两个显著的优点超越了前一阶段的MPLS 相关协议。确实是非常精巧的运用了MPLS和IGP协议,大幅度省略了对标签分发协议的需求。简化了协议和网络设计。SR不负责路径的计算,只负责转发。中间node真正做到了仅基于Label转发,通过在头端设备的多层压栈把路径地图内嵌在数据包头。好似带着几个锦囊出发,每到一个关键节点,再打开一个锦囊,查看下一关键节点名字和路径。 SR因此超越了最短路径算法对报文的转发限制又无需维护繁琐的无数tunnel。SR更像一个航海大师,只要有明确的航线(路径)就能按照要求去航行。
但很明确的是,SR虽好,仍然需要有人去计算和设计路转发路径。谁更合适来做?显然是SDN。
SDN网络
控制平面和具体的网络设备解耦,是SDN最重要的特点。控制平面只有在解耦后才能形成强大的大脑,对千变万化的业务层需求进行适配和编排后,再用不同方式下发成设备的转发。毋庸置疑,控制平面是否集中,集中后又如何保持HA和对全网拓扑变化的快速收敛都是问题。
从这个层面看,控制平面集中与其说是SDN的特点,不如说是这个阶段SDN为了实现而付出的必然而且必要的代价。
从某个角度说:路由需要完成的内容主要是以下三项:
建立拓扑,相当于网络地图传递不同Node的路由信息,相当于不同村庄的居民根据不同需求,计算出的从甲地到乙地的路径
从这3点看,SDN天然比路由协议有优势。因为天然就有全网视图,因为天然就已知各Node的信息。因为对接业务编排,能够综合各种需求,进行全局的选路计算。但从落地情况看也不完全如此,主要是第1点,在拓扑变化时,SDN的收敛能力在现阶段不如传统路由协议快速有效。
网络服务 vs. 网络为你而服务
简单梳理完网络的三个发展阶段,我们可以比较清楚的看到网络的变化是从最初提供可达性的IP网络,到有基本网络分割服务的MPLS 网络,到以需求为中心,能够按需提供服务的SDN网络。
事实证明为每一种需求单独创造协议是行不通的,既增加控制平面的复杂性又不具有快速演进的能力。
网络一直被应用所诟病和抱怨的是,部署速度和同时满足多种需求的灵活性。网络越大就越趋近于简单,基础的可达服务,而非能为某个application,某个临时连接,或者某个重要用户提供的即时定制服务。提供这样服务的代价在设计层面是不可规模化的,在运维层面是全手工打造的,在排障层面是灾难性的。
如何让网络在更多维度,更细颗粒度上为上层工作,除了有统一的北向接口,能够用一个大脑理解拓扑,管理设备,设计路径是一切成为的可能的基础。
本文转自d1net(转载)