2. 叶脊拓扑设计基础
叶脊(Leaf-Spine)拓扑之所以成为现代数据中心的主流架构,核心在于它把"任意两台接入交换机之间的通信"压缩为固定跳数:Leaf 上行到 Spine,Spine 下行到对端 Leaf,最多两跳。要让这种"扁平化"真正成立,设计阶段必须先算清三件事——端口密度够不够、收敛比是否可接受、二层还是三层叶脊更合适。本节围绕这三个问题展开,并给出可直接套用的计算与选型方法。
一、端口密度:从"服务器接入需求"倒推交换机数量
端口密度计算不是先选交换机再数端口,而是从业务侧需求出发逐层倒推。假设一个 Pod 内需要接入 480 台服务器,每台服务器双上行(双网卡分别接入两台 Leaf,实现链路冗余),则 Leaf 侧需要的下行端口总数为 480 × 2 = 960 个。若选用 48 端口下行 + 8 端口上行的 Leaf 交换机,则 Leaf 数量至少为 960 ÷ 48 = 20 台。
接下来计算 Spine 侧。每台 Leaf 有 8 个上行端口,20 台 Leaf 共需 160 个 Spine 下行端口。若 Spine 选用 32 端口交换机,则 Spine 数量为 160 ÷ 32 = 5 台。但叶脊架构要求"每台 Leaf 与每台 Spine 全互联",即每台 Leaf 的 8 个上行端口必须分别连到 8 台不同的 Spine。这里出现矛盾:算出的 Spine 只有 5 台,而 Leaf 有 8 个上行口。解决办法是让每台 Leaf 只使用 5 个上行端口连接 5 台 Spine,剩余 3 个端口留作扩展或堆叠互联;或者增加 Spine 数量至 8 台,使每台 Leaf 的 8 个上行口全部用满,此时 Spine 下行端口需求变为 20 × 8 = 160,仍为 5 台 32 端口交换机的容量,但实际需要 8 台才能满足全互联——这意味着 Spine 端口利用率下降,但架构更规整。
实际设计中,通常先确定 Spine 数量(由 Leaf 上行端口数决定),再反推 Spine 端口是否够用。若 Spine 端口不足,则需增加 Spine 数量或减少 Leaf 上行链路数。端口密度计算的核心公式可归纳为:
Leaf数量 = ceil(服务器数 × 服务器上行链路数 / Leaf下行端口数)
Spine数量 = Leaf上行端口数(全互联要求)
Spine下行端口需求 = Leaf数量 × Leaf上行端口数
Spine端口是否足够 = Spine下行端口需求 ≤ Spine数量 × Spine下行端口数
二、收敛比与超订比:衡量"带宽是否够用"的两把尺子
收敛比(Convergence Ratio)和超订比(Oversubscription Ratio)常被混用,但严格来说,收敛比描述的是"下行总带宽与上行总带宽之比",超订比则是"接入带宽与核心带宽之比"的通俗说法。在叶脊架构中,我们更关注 Leaf 的收敛比:
Leaf收敛比 = (Leaf下行端口数 × 下行端口速率) / (Leaf上行端口数 × 上行端口速率)
以 48 口 10G 下行 + 8 口 40G 上行的 Leaf 为例:下行总带宽 = 48 × 10G = 480G;上行总带宽 = 8 × 40G = 320G;收敛比 = 480 ÷ 320 = 1.5:1。这意味着在极端情况下,所有服务器同时以线速发送,上行链路只能承载约 2/3 的流量,剩余部分会被丢弃或排队。对于大多数企业业务,1.5:1 到 3:1 是可接受的;对于存储、HPC 或 AI 训练等东西向流量密集的场景,通常要求 1:1 甚至更低(即上行带宽大于下行)。
超订比则更常用于描述"整个 Pod 的接入带宽与 Spine 上行带宽之比"。例如一个 Pod 有 20 台 Leaf,每台 Leaf 上行 8 × 40G,则 Pod 上行总带宽 = 20 × 320G = 6400G;若 Spine 上行到核心或 Super-Spine 的链路为 4 × 100G × 5 台 = 2000G,则超订比 = 6400 ÷ 2000 = 3.2:1。这个数值决定了 Pod 之间通信的瓶颈程度。
设计时建议先确定业务可接受的收敛比目标,再反推端口速率和数量。例如要求 2:1 收敛比、下行 48 × 10G,则上行总带宽需 ≥ 240G,若选用 40G 上行端口,则至少需要 6 个上行口;若选用 100G 上行端口,则 3 个即可。
三、二层叶脊与三层叶脊的选型依据
二层叶脊(Layer 2 Leaf-Spine)中,整个 Pod 或整个数据中心是一个大二层域,VLAN 可以跨 Leaf 延伸,虚拟机迁移不受子网限制。其实现依赖 Leaf 与 Spine 之间的全互联 Trunk 或 FabricPath/VXLAN 等 overlay 技术。二层叶脊的优点是迁移灵活、配置直观;缺点是广播域大、STP 收敛慢、故障域广,且 Spine 需要参与二层转发,端口密度和表项压力较大。
三层叶脊(Layer 3 Leaf-Spine)中,Leaf 与 Spine 之间运行路由协议(如 OSPF、BGP),每台 Leaf 是一个独立的网关或分布式网关(如 Cisco NX-OS 的 VXLAN EVPN 分布式网关)。服务器网关下沉到 Leaf,Spine 只负责 IP 转发。三层叶脊的优点是广播域小、收敛快、可扩展性强、故障域隔离好;缺点是配置相对复杂,需要规划 IP 地址和路由策略。
选型时主要看三个维度:
- 业务需求:若存在大量跨 Leaf 的二层迁移需求(如传统虚拟化集群),二层叶脊更直接;若业务以 IP 路由为主、东西向流量大,三层叶脊更合适。
- 规模:Pod 内 Leaf 数量超过 20 台或需要跨 Pod 通信时,三层叶脊的扩展性优势明显;小规模(10 台以内 Leaf)可先用二层叶脊简化设计。
- 运维能力:三层叶脊需要团队熟悉 BGP EVPN、VXLAN 等协议;若运维力量有限,二层叶脊的 Trunk + STP 更易上手。
四、把三个问题串起来:一个完整的设计推演示例
假设某企业需要部署一个 Pod,接入 240 台服务器,每台双上行 10G;要求收敛比不高于 2:1;业务以 IP 存储和虚拟化混合为主,允许跨 Leaf 二层迁移但规模可控。设计过程如下:
- Leaf 下行端口需求 = 240 × 2 = 480 个。选用 48 口 10G 下行 + 8 口 40G 上行的 Leaf,则 Leaf 数量 = 480 ÷ 48 = 10 台。
- Leaf 收敛比 = (48 × 10G) ÷ (8 × 40G) = 480 ÷ 320 = 1.5:1,满足 ≤ 2:1 要求。
- Spine 数量 = Leaf 上行端口数 = 8 台(全互联)。Spine 下行端口需求 = 10 × 8 = 80 个。选用 32 口 40G/100G 的 Spine,8 台共提供 256 个下行端口,余量充足。
- 选型:由于存在跨 Leaf 二层迁移需求,但规模仅 10 台 Leaf,可采用三层叶脊 + VXLAN EVPN 分布式网关,既保留二层迁移能力,又避免大二层广播域问题。
最终得到:10 台 Leaf、8 台 Spine、Leaf 收敛比 1.5:1、Spine 端口利用率约 31%(80/256),架构规整且留有扩展空间。
把端口密度、收敛比和选型依据放在同一张设计图上,就能在项目初期快速判断架构是否可行。端口密度决定"能不能连",收敛比决定"够不够快",二层/三层选型决定"好不好管"。三者相互制约,任何一项不满足,都需要回到参数层面重新调整,而不是在部署阶段临时打补丁。