为什么集群需要 Overlay 网络( 三 )


4096 个虚拟网络对于大规模的数据中心来说远远不够 , VxLAN 会使用 24 比特的 VNI 表示虚拟网络个数 , 总共可以表示 16,777,216 个虚拟网络 , 这也就能满足数据中心多租户网络隔离的需求了 。

为什么集群需要 Overlay 网络

文章插图
 
VxLAN-packet
图 8 - VxLAN 协议头
更多的虚拟网络其实是 VxLAN 顺手带来的好处 , 它不应该成为使用 VxLAN 的决定性因素 。VLAN 协议的扩展协议 IEEE 802.1ad 允许我们在以太网帧中加入两个 802.1Q 的协议头 , 两个 VLAN ID 组成的 24 比特也可以表示 16,777,216 个虚拟网络[^6] , 所以想要解决网络隔离不是使用 VxLAN 或者 Overlay 网络的充分条件 。
总结今天的数据中心包含多个集群以及海量的物理机 , Overlay 网络是虚拟机和底层网络设备之间的中间层 , 通过 Overlay 网络这一个中间层 , 我们可以解决虚拟机的迁移问题、降低二层核心网络设备的压力并提供更大规模的虚拟网络数量:
  • 在使用 VxLAN 构成二层网络中 , 虚拟机在不同集群、不同可用区和不同数据中心迁移后 , 仍然可以保证二层网络的可达性 , 这能够帮助我们保证线上业务的可用性、提升集群的资源利用率、容忍虚拟机和节点的故障;
  • 集群中虚拟机的规模可能是物理机是几十倍 , 与物理机构成的传统集群相比 , 虚拟机构成的集群包含的 MAC 地址数量可能多一两个数量级 , 网络设备很难承担如此大规模的二层网络请求 , Overlay 网络通过 IP 封包和控制平面可以减少集群中的 MAC 地址表项和 ARP 请求;
  • VxLAN 的协议头使用 24 位的 VNI 表示虚拟网络 , 总共可以表示 1600 万的虚拟网络 , 我们可以为不同的虚拟网络单独分配网络带宽 , 满足多租户的网络隔离需求;
需要注意的是 , Overlay 网络只是一种在物理网络上的虚拟网络 , 使用该技术并不能直接解决集群中的规模性等问题 , 而 VxLAN 也不是组建 Overlay 网络的唯一方法 , 在不同场景中我们可以考虑使用不同的技术 , 例如:NVGRE、GRE 等 。到最后 , 我们还是来看一些比较开放的相关问题 , 有兴趣的读者可以仔细思考一下下面的问题:
  • VxLAN 将原始数据包封装成 UDP 在网络上分发 , 那么 NVGRE 和 STT 分别使用哪些方法传输数据呢?
  • 在 Kubernetes 中部署 Overlay 网络应该使用什么技术或者软件?
如果对文章中的内容有疑问或者想要了解更多软件工程上一些设计决策背后的原因 , 可以在博客下面留言 , 作者会及时回复本文相关的疑问并选择其中合适的主题作为后续的内容 。




推荐阅读