4. 交换机与拓扑:低延迟交换机选型(Mellanox、Broadcom)、Spine-Leaf拓扑设计、无阻塞网络
聊到低延迟网络,交换机选型和拓扑设计是绕不开的核心。说白了,你服务器再快,网络堵住了也是白搭。我这些年经手过的项目,从几十台的小集群到上千节点的高性能计算,踩过的坑不少,今天把关键点掰开揉碎了讲给你听。
4.1 低延迟交换机选型:Mellanox vs Broadcom
选交换机,我个人的习惯是先看芯片方案。目前市场上主流的低延迟方案就两家:Mellanox(现在叫NVIDIA Networking)和Broadcom。嗯,这里要注意,别只看品牌,要看里面的“芯”。
核心观点:低延迟交换机的灵魂是交换芯片,而不是外壳上的Logo。
4.1.1 Mellanox(NVIDIA)方案
Mellanox的交换机,我最早接触是在2016年的一个金融交易系统项目。当时客户要求端到端延迟低于1微秒,我们试了一圈,最后选了Mellanox Spectrum系列。为什么?
- 芯片自研:Mellanox的Spectrum系列交换芯片是自己设计的,从底层到上层完全可控。这意味着固件优化空间大,延迟可以压到极致。
- RoCE v2原生支持:如果你要用RDMA over Converged Ethernet,Mellanox是亲儿子。我在项目中遇到过,用Broadcom芯片的交换机跑RoCE,需要额外调PFC和ECN,而Mellanox开箱即用,省心不少。
- SHARP技术:这个很关键。Mellanox的交换机支持In-Network Computing,比如AllReduce操作可以直接在交换机里完成,不用经过CPU。对于AI训练场景,这能省下30%-50%的通信时间。
不过Mellanox也有缺点——贵。而且生态相对封闭,如果你不是全套NVIDIA设备,有些高级特性可能用不上。
4.1.2 Broadcom方案
Broadcom的Tomahawk和Trident系列,是开放网络的主流选择。我个人习惯在成本敏感的项目里用Broadcom方案。
- 生态开放:你可以用白牌交换机,装SONiC或者OpenSwitch。这对于喜欢折腾的团队来说,灵活性极高。
- 端口密度高:Tomahawk 4已经能做到单芯片64个400G端口,或者128个200G端口。这在Spine-Leaf架构里非常实用。
- 成本优势:同样的端口速率,Broadcom方案通常比Mellanox便宜30%-40%。
但Broadcom的短板也很明显:延迟比Mellanox略高(大概高100-200纳秒),而且对RoCE的支持需要额外调优。我曾经在一个项目中,因为Broadcom交换机的ECN配置不当,导致RoCE流量出现大量重传,排查了两天才搞定。
| 对比项 | Mellanox (NVIDIA) | Broadcom |
|---|---|---|
| 典型延迟 | 200-300ns | 300-500ns |
| RoCE支持 | 原生最佳 | 需调优 |
| 生态开放性 | 封闭 | 开放 |
| 成本 | 高 | 中低 |
| 典型场景 | HPC、AI训练、金融交易 | 数据中心、云、通用计算 |
我的建议:如果延迟是第一位(比如量化交易),闭眼选Mellanox。如果追求性价比和灵活性,Broadcom方案更合适。
4.2 Spine-Leaf拓扑设计
传统的三层架构(接入-汇聚-核心)在低延迟场景下已经不够看了。为什么?因为流量路径不对称,而且带宽容易成为瓶颈。你想想看,一个服务器要访问另一个机架的服务器,得经过三层交换机,延迟叠加不说,万一汇聚层挂了,整个区域都瘫痪。
Spine-Leaf架构就是来解决这个问题的。说白了,就是让任何两台服务器之间的跳数固定,而且路径完全对称。
4.2.1 什么是Spine-Leaf?
Spine-Leaf由两层组成:
- Leaf层:连接服务器,相当于传统的接入层。每个Leaf交换机都连接到所有Spine交换机。
- Spine层:负责转发Leaf之间的流量,不直接连服务器。
这样做的好处是:任何两台服务器之间的通信,最多经过一台Leaf和一台Spine,也就是两跳。而且因为每个Leaf都连了所有Spine,流量可以均匀分布,不会出现某条链路被撑爆的情况。
关键点:Spine-Leaf的核心是“全连接”。每个Leaf必须连接到每一个Spine,否则就不是真正的Spine-Leaf。
4.2.2 设计要点
我在设计Spine-Leaf时,有几个习惯:
- Spine数量:至少4台。为什么?因为如果只有2台,一台挂了,剩下那台要承担所有流量,压力太大。4台以上可以保证冗余和负载均衡。
- Leaf数量:取决于Spine的端口数。比如Spine是64个100G端口,那最多可以连64台Leaf。但实际中我会留20%的余量,方便未来扩容。
- 带宽比例:Spine到Leaf的带宽总和,应该大于等于Leaf到服务器的带宽总和。这就是所谓的“无阻塞”设计。举个例子,如果Leaf有48个25G端口连服务器(总带宽1.2T),那它连Spine的端口总带宽至少也要1.2T。
避坑指南:我曾经在一个项目中,为了省钱,Spine只用了2台,结果Leaf到Spine的链路利用率长期超过80%,延迟飙升。后来加了2台Spine,问题才解决。所以,Spine数量别省。
4.3 无阻塞网络
无阻塞网络,听起来很玄乎,其实核心就一句话:任何端口在任何时刻都能以线速转发,不会因为内部带宽不足而丢包。
要做到无阻塞,需要满足两个条件:
- 交换芯片的背板带宽足够大。比如一台48口100G的交换机,背板带宽至少要有9.6T(48×100G×2,双向)。如果只有4.8T,那就是有阻塞的。
- Spine-Leaf的带宽比例要合理。前面说了,Leaf的上行带宽要大于等于下行带宽。
你可能会问:为什么一定要无阻塞?因为一旦出现阻塞,延迟就会变得不可预测。在低延迟场景下,延迟的抖动(Jitter)比延迟本身更可怕。比如金融交易,如果延迟稳定在1微秒,系统可以接受。但如果有时候1微秒,有时候10微秒,那交易策略就乱套了。
我的经验:测试交换机是否无阻塞,最简单的方法是用iperf打满所有端口,然后看有没有丢包。如果所有端口同时跑满流量,一个包都不丢,那就是真正的无阻塞。
4.4 知识体系图
下面这张图,是我自己总结的低延迟网络选型与拓扑设计的核心逻辑。你可以把它当作一个检查清单。
这张图的核心逻辑是:先明确目标(低延迟+无阻塞),然后从交换机选型和拓扑设计两个方向入手。选型时在Mellanox和Broadcom之间权衡,拓扑上坚持Spine-Leaf并确保无阻塞。最终才能得到一个延迟可预测、带宽不瓶颈的网络。
总结一句话:低延迟网络没有银弹。芯片选型决定了延迟的下限,拓扑设计决定了延迟的稳定性。两者缺一不可。