Tuesday, January 13, 2015

网络技术正当革命时

计算机网络自诞生之后,面向的应用场景主要包括局域网、广域网两大类。在各种环境中,通过层级结构将局域网连接起来,形成一个网络的网络,即所谓的互联网。无论什么网络,唯一的事实标准就是 TCP/IP 协议栈以及围绕这个协议栈的各种管理和应用技术,即便后来推出的 IPv6、CCN、SDN 等网络技术,都没有完全超出这个范畴。所以,看起来基于 TCP/IP 的修修补补在相当长的一段时间里满足了各种场景下对于网络的需求
然而,到了现在云计算的时代,数据中心场景对于网络的需求,让这些传统的网络架构开始碰到了真正的难题。
在数据中心里有着其截然不同的网络需求和运营特点:
  • 资源都为某一方统一管理(或者说是存在统一查询的逻辑层)
  • 网络本身的动态性极高(各种迁移调度)
  • 网络的规模极大(几十万台主机,甚至几百万台主机)
  • 策略配置十分复杂(一个 vm 可能就要跟着十几条规则)
  • 性能需求十分苛刻(不光是正常传输性能,还有收敛性能)
这些特点对网络技术提出了很严峻的挑战,甚至可以说,其中某些问题在现有的网络架构下,是无解的。
就比如说可扩展性的问题,传统的二层汇聚,然后三层隔离广播域的做法,让网络对于核心层的压力骤增。而即便是昂贵的商用核心解决方案,也存在种种局限。
再比如说迁移的问题,这就从根本上对 TCP/IP 的模型的设计提出了挑战,虽然有种种 overlay 的技术来试图弥补这个缺陷,但又带来了传输的代价和额外的管理成本。
这些挑战使得网络虚拟化看起来很美,但到了落地阶段就会发现十分困难。
那么,为什么不重新考虑整个问题,看看数据中心中的网络需求到底是什么?
在当前的数据中心里,实际上运行的无论是否是虚拟机,提供给用户的都是各种通过互联网接入的服务(直接以虚机方式提供给用户的形式将越来越少)。用户访问这些服务,是基于 TCP/IP 服务进行的。这些服务之间,以及内部如何实现,其实并不一定是 TCP/IP。
一旦脱离开 TCP/IP 技术的限制,其实可以设计一套面向数据中心内部种种场景的特定协议。比如,在数据中心中,虚机(或主机)的发现,其实完全不需要依赖传统的二层广播形式。在启动虚机的同时(或在虚机启动后),控制层就已经明确知道这个虚机在哪里,它需要跟谁进行通信,那么很自然,相应的位置信息和通信信息其实可以进行提前的配置和优化,而无需非要先广播询问接口,通过一层甚至多层的响应,造成大量的无用数据包。
当广播域根本不需要隔离,甚至消灭了广播域的时候,对交换设备的压力就会减少很多。那个时候,设计成本可以接受、性能满足要求的交换层将成为可能。
当然,并不是要完全抛弃传统网络领域中种种优秀的技术和方法,不少精巧的思想都可以应用到数据中心场景,所谓万变不离其宗。但毫无疑问,非要绑定到 TCP/IP 的协议框架下,并不是一个合理的方案(或许也是个没办法下的方案),这必将带来更多的难题。
TCP/IP 在其发展过程中,已经经历过太多的风浪,不知道这次的挑战,它是否能再次安然度过。

No comments:

Post a Comment