NNetpath
规划预计 35 分钟

以太网规划:Spine-Leaf 端口账与收敛比

给定节点数和网卡规格,算出需要几台 leaf、几台 spine、多少线缆、收敛比多少。

学完这节你能做到

  • 独立算出一套 Spine-Leaf 的交换机数量与线缆数量
  • 解释收敛比的含义并判断某个取值是否可接受
  • 看出配置里真正的瓶颈资源在哪一层

建议先学跳过这几节会看不懂本节的部分推导

规划就是把三笔账算清

一套 Spine-Leaf 网络的采购清单,本质上由三笔账推出来:

接入账:节点端口总数 ÷ 每台 leaf 的可用下行口  →  leaf 台数
上行账:leaf 下行总带宽 ÷ leaf 上行总带宽      →  收敛比
汇聚账:leaf 上行口总数 ÷ 每台 spine 端口数    →  spine 台数

三笔账都是除法,难的从来不是算,而是每个数字的取值依据。这节就讲每个数字该怎么定。

第一笔:接入账

一台交换机的端口不能全给服务器用,必须留一部分做上行:

可用下行口 = leaf 总端口数 − 上行口数
leaf 台数  = ⌈节点端口总数 ÷ 可用下行口⌉

举个例子:48 台服务器,每台 2 个 25G 口(双上行冗余),leaf 用 48×25G + 6×100G 机型。

节点端口总数 = 48 × 2 = 96
可用下行口   = 54 − 6 = 48
leaf 台数    = ⌈96 ÷ 48⌉ = 2 台
!双上行的服务器必须接到两台不同的 leaf

冗余的意义是"任何一台 leaf 挂掉业务不断"。所以同一台服务器的两个口要落在不同的 leaf 上, leaf 因此必须成对配置。

这还会带来额外的端口开销:成对的 leaf 之间通常要建 MLAG 域,需要 peer-link, 一般再占掉 2 个端口。规划时把这笔留出来,别等上架时才发现端口不够。

第二笔:上行账(收敛比)

收敛比 = 下行总带宽 : 上行总带宽。它回答一个问题:如果接在这台 leaf 上的服务器同时满速对外通信, 上行口够不够?

单台 leaf 下行带宽 = 48 × 25 Gbps = 1200 Gbps
单台 leaf 上行带宽 =  6 × 100 Gbps = 600 Gbps
收敛比 = 1200 : 600 = 2:1

含义是:最坏情况下每个节点只能拿到一半的带宽。这好不好,取决于业务的流量形态。

场景建议收敛比理由
分布式存储 / AI 数据加载1:1(无阻塞)东西向流量巨大且持续,副本与恢复流量会打满上行
通用业务、微服务2:1 ~ 3:1大部分流量是南北向小请求,不会同时满速
办公 / 管理接入8:1 甚至更高平时几乎空闲
×收敛比不足的症状:加机器反而更慢

收敛比 3:1 的集群里加节点,跨 leaf 的东西向流量按比例增长,上行口先饱和。 表现是加了机器但总吞吐没涨,延迟还变差了

这时候的正解不是继续加节点,而是:加上行口、换更高速率的上行光模块,或者 把强东西向通信的节点尽量放在同一台 leaf 下(局部性优化)。

第三笔:汇聚账

每台 leaf 的上行口要分别连到不同的 spine 上——这样任何一台 spine 挂掉都只损失一部分上行带宽。 所以:

spine 台数 ≥ ⌈leaf 上行口总数 ÷ 每台 spine 端口数⌉

同时还有一个上限约束:leaf 台数不能超过单台 spine 的端口数。 超了两层就接不下,得上三层(super-spine),跨 leaf 的跳数从 3 跳变 5 跳。

线缆与光模块:最常被漏掉的一项

接入线缆      = 节点端口总数
spine-leaf 线缆 = leaf 台数 × 每台上行口数

每根线两端都要光模块(DAC 铜缆除外)。一套几十台机器的集群,光模块的钱经常和交换机同一个量级, 报价单里漏了它,预算就会当场爆掉。同时要确认:

  • 距离:机柜内用 DAC(便宜、但只能几米),跨机柜用 AOC 或光模块 + 光纤
  • 类型匹配:两端的光模块类型、波长、速率必须一致
  • 备件:光模块是易损件,按 5% 左右备货

别忘了另外两张网

业务网算完了,还有两套必须单独规划:

网络接什么典型规格
带内管理网节点管理口、集群管理服务、存储访问10G / 25G 以太网
带外管理网(OOB)BMC / IPMI、交换机管理口、PDU1G 以太网,独立交换机

带外网的价值在故障时才体现:业务网挂了你还能进去。这套网必须物理隔离, 连一台服务器的用户都不需要访问它。参考架构里带外网用的是独立机型(如 SN2201), 不与业务网共用任何设备。

自己算一遍

改参数看结果。默认值就是上面那个 48 节点的例子,可以试试这几个练习:

  1. 把节点数改到 100,看 leaf 台数怎么跳
  2. 把上行口从 6 改成 12,看收敛比怎么变(同时下行口会减少)
  3. 选"32×100G(存储接入)"预设,看无阻塞需要什么配置
  4. 把节点数改到 2000,看两层架构什么时候接不下
计算器以太网 Spine-Leaf 端口账
leaf 交换机
2
每台可下行 48
spine 交换机
1
端口用掉 38%
收敛比(下行 : 上行)可接受
2.00:1
单台 leaf 下行 1.20 Tbps / 上行 600 Gbps
接入端口总数
96 个
接入线缆
96 根
spine-leaf 线缆
12 根
下行口余量
0 个
东西向对分带宽
1.20 Tbps
  • ·双上行下每台服务器的两个端口要落在不同 leaf 上,同一对 leaf 之间还需要 peer-link 或 MLAG 域,端口预算里要再留 2 个口。
  • ·以上只算业务网。管理网(1G/10G 接入)与带外网(BMC)需要另外单独一套交换机和线缆。

一个完整例子:存储集群要无阻塞

需求:24 台存储节点,每台 2 × 100G 双上行,副本流量大,要求无阻塞。leaf 用 32×100G 机型。

先试一个常见配法——留 8 口上行:

可用下行 = 32 − 8 = 24
leaf 台数 = ⌈48 ÷ 24⌉ = 2
下行带宽 = 24 × 100G = 2400 Gbps
上行带宽 =  8 × 100G =  800 Gbps
收敛比 = 3:1                      ← 存储集群不能接受

同速率端口要做到无阻塞,只有一个办法:上下行对半分

接入账:
  节点端口总数 = 24 × 2 = 48
  可用下行 = 32 − 16 = 16
  leaf 台数 = ⌈48 ÷ 16⌉ = 3 → 双上行要成对,取偶数 = 4 台

上行账:
  下行带宽 = 16 × 100G = 1600 Gbps
  上行带宽 = 16 × 100G = 1600 Gbps
  收敛比 = 1:1 ✓ 无阻塞

汇聚账:
  leaf 上行口总数 = 4 × 16 = 64
  spine 32 口 → spine 台数 = ⌈64 ÷ 32⌉ = 2 台

线缆:
  接入 48 根 + spine-leaf 64 根 = 112 根(每根两端各一个光模块)
  下行口余量 4 × 16 − 48 = 16 个,够再加 8 台节点

对比一下代价:为了从 3:1 做到 1:1,leaf 从 2 台变成 4 台,spine-leaf 线缆从 16 根变成 64 根。 无阻塞不便宜——所以它只该出现在真正需要的网络上(存储、AI 计算), 业务网和管理网继续用收敛配置。

!凡是算出「只需要 1 台」的地方都要停一下

上面如果 spine 算出 1 台,就必须手工提到 2 台 —— 单台 spine 意味着它一挂全网瘫。 计算器只算容量,不会替你决定冗余。同样的检查也适用于 leaf: 只有 1 台 leaf 时,接在它下面的所有节点都是同一个故障域。

检查点

检查点单选

一台 leaf 有 48 个 25G 下行口和 4 个 100G 上行口。收敛比是多少?

检查点单选

分布式存储集群为什么要求接近 1:1 的收敛比?

检查点多选

规划时下面哪些项最容易在报价单里被漏掉?(多选)

这节课的落点

  • 三笔账:接入(leaf 台数)、上行(收敛比)、汇聚(spine 台数)
  • 双上行必须落在不同 leaf 上,leaf 成对,还要为 peer-link 留端口
  • 收敛比按带宽算,不按端口数算
  • 存储与 AI 数据面要 1:1,通用业务 2:1~3:1 可接受
  • 收敛比不足的症状是"加机器不涨吞吐",解法是加上行而不是加节点
  • 线缆和光模块必须单列,按 5% 备件
  • 带内管理网与带外管理网要单独规划,带外网必须物理隔离
  • 凡是算出"只要 1 台"的地方,都要手工提到 2 台

延伸资料