Skip to main content

3. VXLAN Problem Statement (VXLAN 问题陈述)

本节提供了 VXLAN 旨在解决的领域的更多详细信息。重点是数据中心内的网络基础设施以及与之相关的问题。

3.1. Limitations Imposed by Spanning Tree and VLAN Ranges (生成树和 VLAN 范围施加的限制)

当前的第 2 层网络使用 IEEE 802.1D 生成树协议 (Spanning Tree Protocol, STP) [802.1D] 来避免由于重复路径而在网络中出现环路。STP 阻止链路的使用以避免帧的复制和循环。一些数据中心运营商认为这是第 2 层网络的一个问题, 因为使用 STP 时, 他们实际上支付的端口和链路比实际能够使用的要多。此外, 使用 STP 模型无法获得由于多路径而带来的弹性。较新的举措, 如 TRILL [RFC6325] 和 SPB [802.1aq], 已被提出来帮助实现多路径并克服 STP 的一些问题。通过将机架内的服务器配置为位于同一第 3 层网络上, 并在机架内和机架之间进行第 3 层交换, 也可以避免 STP 限制。然而, 这与虚拟机间通信的第 2 层模型不兼容。

第 2 层数据中心网络的一个关键特性是使用虚拟 LAN (VLAN) 来提供广播隔离。以太网数据帧中使用 12 位 VLAN ID 将较大的第 2 层网络划分为多个广播域。这对许多需要少于 4094 个 VLAN 的数据中心来说效果很好。随着虚拟化的日益普及, 这个上限正面临压力。此外, 由于 STP, 一些数据中心限制了可以使用的 VLAN 数量。另外, 对多租户环境的要求加速了对更大 VLAN 限制的需求, 如第 3.2 节所讨论的。

3.2. Multi-tenant Environments (多租户环境)

云计算涉及为多租户环境按需弹性配置资源。云计算最常见的例子是公共云, 其中云服务提供商在同一物理基础设施上为多个客户/租户提供这些弹性服务。

租户的网络流量隔离可以通过第 2 层或第 3 层网络来完成。对于第 2 层网络, 通常使用 VLAN 来隔离流量——因此, 例如, 可以通过其自己的 VLAN 来识别租户。由于云提供商可能服务的租户数量众多, 4094 个 VLAN 的限制通常不够。此外, 通常需要每个租户有多个 VLAN, 这加剧了这个问题。

一个相关的用例是跨 pod 扩展。一个 pod 通常由一个或多个服务器机架以及相关的网络和存储连接组成。租户可能从一个 pod 开始, 由于扩展, 需要其他 pod 上的服务器/虚拟机, 特别是在其他 pod 上的租户没有充分利用其所有资源的情况下。此用例需要连接各个服务器/虚拟机的"拉伸"第 2 层环境。

第 3 层网络也不是多租户的全面解决方案。两个租户可能在其网络内使用同一组第 3 层地址, 这要求云提供商以其他形式提供隔离。此外, 要求所有租户使用 IP 会排除那些依赖直接第 2 层或非 IP 第 3 层协议进行虚拟机间通信的客户。

3.3. Inadequate Table Sizes at ToR Switch (ToR 交换机的表大小不足)

当今的虚拟化环境对连接到服务器的机架顶部 (Top-of-Rack, ToR) 交换机的 MAC 地址表提出了额外的要求。ToR 现在必须学习各个虚拟机的 MAC 地址 (每台服务器可能有数百个), 而不是每个服务器链路只有一个 MAC 地址。这是必需的, 因为从虚拟机到物理网络其余部分的流量将穿过服务器和交换机之间的链路。典型的 ToR 交换机可以根据其面向服务器的端口数量连接到 24 或 48 台服务器。一个数据中心可能由多个机架组成, 因此每个 ToR 交换机需要为各个物理服务器上通信的虚拟机维护一个地址表。与非虚拟化环境相比, 这对表容量提出了更大的要求。

如果表溢出, 交换机可能会停止学习新地址, 直到空闲条目老化, 从而导致随后的未知目的地帧大量泛洪。