Cloud

3 min read

不管云平台的架构如何变化,有一点是始终不变的:虚拟主机通过网卡来发送和接收数据。这些网卡可能是用软件模拟的,或者半虚拟的。对于虚机来讲,网卡是一个很简单的设备,但它的实现方式实现思路却有很大不同。

大部分企业级解决方案(vSphere,NSX,ACI)大多采用模拟点对点网络的方式(一个网络中只有两台主机)来避免二层中的很多复杂问题。Hypervisor厂家通常只实现一个最简单的二层交换机用来给流量打VLAN标签和转发功能,然后把所有问题一脚踢给网络。Overlay虚拟网络解决方案使用Ethernet-over-IP的方式来替代二层,根据厂商的理性,“最佳”的实现方式是:

  • Hypervisor厂家会推荐使用资深的虚拟交换方案来和其他交换机互通(比如把钱花在NSX的license上,而不要自己去做物理的fabric)
  • 数据中心交换机厂家当然会推荐你使用他们的fabric方案,同时让hypervisor越简单越好(比如花钱买ACI而不是NSX)

工程学的核心在于tradeoff,即一个系统问题不会有一个完美的解决方案,有利则有弊。上面两种实现方式都有自身的限制:

  • 基于Hypervisor的解决方案需要虚拟到物理设备的网关, 在与bare metal服务器集成的时候会有很大的难度
  • 硬件厂商的解决方案在拓展性上有一定的问题,同时stateful microsegmentation和深度包检测有很大的实现难度

当然,厂家都会宣称他们的方案都有相应的技术来突破本身的限制:比如ACI Virtual Edge和NSX agent。但真到了实施和使用中,技术本身的限制会暴露无遗。

而公有云平台通常采用了完全不同的实现方式实现虚拟网络,以微软和亚马逊为例,Azure使用纯IP网络(忽略MAC地址),AWS则使用同一子网内MAC地址单播转发和子网间IP转发。两个平台都使用智能网卡(比如AWS Nitro)来支持bare metal服务器。

这并不是说同样的技术会马上使用在企业云平台上。从技术上讲,智能网卡必须要和云平台中的其他部分紧密结合,而企业网络厂商在这点上离AWS和Azure都有很大的距离。而在商务上,集成如此多的技术不仅需要大量的时间和资金,而且客户也会为了避免lock in而不会将全部托付给一个厂商。

Ken lai

Read more posts by this author.