跳到主要内容

3. VXLAN 问题陈述

本节进一步说明 VXLAN 旨在解决的领域. 重点是数据中心内部的网络基础设施及其相关问题.

3.1. 生成树和 VLAN 范围带来的限制

当前二层网络使用 IEEE 802.1D 生成树协议 (Spanning Tree Protocol, STP) [802.1D] 来避免由于重复路径造成的网络环路. STP 会阻塞链路使用, 以避免帧被复制和循环转发. 一些数据中心运营者认为这是二层网络的普遍问题, 因为在使用 STP 时, 他们实际上为无法真正使用的端口和链路付费. 此外, STP 模型无法提供多路径带来的弹性. 较新的方案, 例如 TRILL [RFC6325] 和 SPB [802.1aq], 已被提出用于帮助实现多路径并克服 STP 的一些问题. 也可以通过把机架内服务器配置在同一个三层网络中来避免 STP 限制, 并在机架内和机架之间都通过三层进行交换. 但是, 这与 VM 间通信的二层模型不兼容.

二层数据中心网络的一个关键特征是使用虚拟局域网 (VLAN) 提供广播隔离. 以太网数据帧中使用 12 位 VLAN ID, 将较大的二层网络划分为多个广播域. 对于需要少于 4094 个 VLAN 的许多数据中心来说, 这种方式一直运行良好. 随着虚拟化的采用不断增长, 这个上限开始承受压力. 此外, 由于 STP 的存在, 一些数据中心会限制可使用的 VLAN 数量. 另外, 如第 3.3 节所述, 多租户环境的需求进一步加速了对更大 VLAN 上限的需求.

3.2. 多租户环境

云计算涉及面向多租户环境的按需弹性资源供应. 云计算最常见的例子是公有云, 云服务提供商在同一套物理基础设施上向多个客户/租户提供这些弹性服务.

按租户隔离网络流量可以通过二层或三层网络完成. 对于二层网络, 通常使用 VLAN 来隔离流量, 例如可以用租户自己的 VLAN 来标识该租户. 由于云提供商可能服务大量租户, 4094 个 VLAN 的限制往往不足. 此外, 每个租户通常还需要多个 VLAN, 这进一步加剧了问题.

一个相关用例是跨 pod 扩展. 一个 pod 通常由一个或多个服务器机架及其相关网络和存储连接组成. 租户可能最初位于某个 pod 上, 但随着扩展, 需要使用其他 pod 上的服务器/VM, 尤其是在其他 pod 上的租户未充分利用其所有资源时. 该用例需要一个连接各个服务器/VM 的 "拉伸" 二层环境.

三层网络也不是多租户的完整解决方案. 两个租户可能在各自网络中使用同一组三层地址, 这要求云提供商以其他形式提供隔离. 此外, 要求所有租户都使用 IP, 会排除那些依赖直接二层协议或非 IP 三层协议进行 VM 间通信的客户.

3.3. ToR 交换机表容量不足

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

如果表发生溢出, 交换机可能会停止学习新地址, 直到空闲条目老化删除, 这会导致后续未知目的帧出现大量泛洪.