1. 先说结论:VxLAN不是不好,是拿错了赛道
最近在帮一个做AI Infra的团队梳理组网方案,聊到最后对方抛出一个挺尖锐的问题:“我们内部现在有争议,到底继续押注VxLAN大二层,还是转向SRv6?”我给的回答很直接:在传统数据中心或者做云网融合的政企环境里,VxLAN确实好用,但在AI算力集群这个舞台上,它正在从“最优解”变成“妥协方案”,而SRv6才是真正贴着业务诉求走的答案。
先把核心矛盾讲明白。AI算力集群的流量模型和传统数据中心完全不同,它不是以“东西向流量小、南北向流量多”为主,而是以大规模集合通信(All-to-All)为主。GPU之间要频繁交换梯度数据,几千张卡同时通信,流量模型是“东西向密集爆发”。更伤脑筋的是,主流AI训练框架普遍依赖RoCEv2跑RDMA,它对网络的无损能力有硬要求——丢包率要求极高,端到端时延必须稳定在微秒级。
VxLAN本身是一个叠加网络(Overlay)技术,它解决的问题是“二层域不够用,需要在三层网络上扩展出大二层”。它把以太网帧封装进UDP/IP包,让虚拟机或者容器可以跨三层迁移,这本来是非常巧妙的方案。但VxLAN的封装开销、控制平面依赖、以及它对路径控制能力的缺失,在AI集群这种“高吞吐+低时延+严格无损”的极端场景里,就成了致命短板。
文章不会只停留在“谁好谁坏”的嘴上功夫,下面我会从数据面开销、控制面扩展性、路径编程能力、可观测性四个维度,掰开揉碎地讲清楚为什么VxLAN在AI集群里会吃力,以及SRv6真正的杀手锏在哪里。还会给出我实测过的组网对比数据和踩坑记录,希望对正在做AI集群网络规划的同行有参考价值。
2. 先看清楚AI算力集群到底要什么
在展开技术对比之前,必须先把需求端搞清楚。很多网络工程师讨论VxLAN和SRv6时,习惯性地停留在“大二层扩展”“Overlay互通”这些经典话题上,但AI集群的网络诉求往前走了很远,如果还用旧有的视角去判断,很容易得出错误结论。
2.1 流量模型已经变天了
传统数据中心里,一个应用访问另一个应用,流量通常是“小流多、大流少”,而且可以靠负载均衡把流量打散到不同链路上,ECMP能跑得不错。但AI训练集群里,集合通信库(比如NCCL)产生的流量是周期性、同步性极强的数据流,每轮迭代都要把几千甚至上万张卡的梯度汇总再分发,瞬时流量是“满管线的并发大象流”。
NCCL对网络路径非常敏感。它内部的Ring或Tree算法假设所有GPU之间有对称且等价的连接,如果某个GPU的数据走了更长路径、时延多了哪怕几十微秒,整轮训练就要等最慢的那条链路,这一等,等来的就是GPU利用率下降。在万卡集群里,哪怕整体利用率只掉1%,折算成的算力损失都是天文数字。所以网络对AI集群的价值不是“能通”,而是“通得太慢会影响训练效率”。
2.2 无损网络的硬约束
RoCEv2要跑得稳,网络必须提供无损能力,通常靠PFC(优先级流控)和ECN(显式拥塞通知)配合来实现。PFC的作用是当接收端缓冲区快满时,给发送端发暂停帧;ECN则是在交换机队列变深时打上标记,让发送端主动降速。这套机制对网络设备有两个隐含要求:
- 队列深度要可控:不能因为入向缓存不足就把包丢了。
- 路径必须稳定:如果每条流的实际转发路径在动态变化,PFC/ECN的反馈环路就来不及收敛,最终还是会丢包。
VxLAN在这种场景下最大的问题在于,它是一个“封装隧道”,底下跑的是普通的IP转发,依赖ECMP做负载均衡。但ECMP用哈希打流,无法感知每条流的实际带宽和时延诉求,一旦多条大流哈希到同一条物理链路上,那条链路就会拥塞,RoCEv2的ECN和PFC机制马上就进入震荡状态。我在实测中见过很多次:ECMP哈希把两条GPU流量打到同一端口,当时那台交换机的瞬时丢包率就上去了,NCCL直接报“Network error”。
2.3 AI集群不是“二层域不够用”的问题
有人会说了:现在VxLAN不是支持EVPN嘛,控制面有BGP EVPN撑腰,二层域不够用的问题早就解决了。这话没错,但AI集群最大的挑战根本不是“二层规模不够”,而是“在超大规模和极端流量下,如何对每条关键流做精细化路径控制、快速故障收敛、以及全链路可观测”。
VxLAN/EVPN虽然能建成一个大二层的逻辑网络,但它的数据面转发还是“尽力而为”的——它告诉你有条路能走,却不保证这条路就是最优的。在AI集群里,我们要的是“明确告诉每一跳:从哪进、从哪出、备用路径是谁”,这也是SRv6相对VxLAN最核心的优势。
3. 逐步拆解:VxLAN在大规模组网中有哪些“看得见的坎”
很多人以为VxLAN的问题集中在“数据面封装开销大”,其实这只是表面。真正让VxLAN在AI集群里力不从心的,是下面这几道坎。
3.1 数据平面开销与带宽损耗
VxLAN的标准封装是:原始以太网帧外面加8字节VxLAN头、8字节UDP头、20字节IP头,再叠加底层14字节以太网头,相比裸转发至少多出50字节左右的封装开销。如果是大包(比如9000字节的巨型帧),这50字节的占比还能接受;但AI训练中大量的是中小包混合流量,尤其是控制平面和部分分布式同步的协议包很小,封装开销占比就会显著上升。
再叠加一点更隐蔽的开销:VxLAN是UDP封装,当底层网络转发时,有些交换机芯片对UDP封装包的转发性能会比原生IP包要低一些。虽然现在的芯片都比较成熟了,但我在测试某些白盒交换机时,确实出现过VxLAN封装包吞吐只能跑到裸转发的90%~95%的情况。放在万兆到百G、两百G的链路上,省出来的这点带宽在AI集群里就是实打实的训练性能差距。
3.2 控制平面依赖BGP EVPN,收敛速度吃紧
VxLAN的控制平面普遍用BGP EVPN。BGP是一个成熟的老协议,但它本质上是为“大规模路由交换”设计的,收敛时间通常在秒级。可AI集群对故障收敛的容忍度远低于传统网络,NCCL这类集合通信一旦检测到链路中断,往往只等几百毫秒就会报错重连。
我在实际测试中遇到过一个很典型的问题:leaf交换机下行的某个端口故障,BGP EVPN要重新通告MAC/IP路由,跨设备的收敛时间大约在2-6秒,期间上层训练任务已经因为RoCEv2丢包而崩溃。后来换成SRv6的TI-LFA或者SR-TE快速重路由机制,故障保护可以进入50毫秒以内的快速收敛窗口,这样NCCL根本感知不到底层路径变化,训练进程就能平滑继续。
3.3 动态负载分担能力不足
在AI集群里,理想的负载分担应该是能感知流量的“真实需求”去做分配。但VxLAN底层的ECMP只能基于五元组做哈希,无法精确感知每条流的大小和优先级。如果两条大流被哈希到同一条物理路径上,而另外一条物理路径却空闲着,传统ECMP也毫无办法。
这在AI集群里几乎是一个“必踩”的雷。因为集合通信会产生大量相同五元组、固定端口的流,哈希结果会高度集中,没法均匀散布。即便用了增强型ECMP(比如思科的vPC、Junipers的MC-LAG辅助),也只是在一定程度上缓解,无法根除路径重叠问题。最终的结果就是:某条链路瞬时拥塞丢包,训练性能陡降,而且问题特别难复现和排查。
3.4 路径规划能力基本为零
VxLAN给你的逻辑视图是一个“大二层网络”,但不代表转发就是最优的。它不知道底层哪条链路时延更低、哪条链路剩余带宽更大,更没法为特定业务流指定一条专用低时延路径。
但在AI集群里,不同的并行策略对带宽、时延的要求完全不同:数据并行里梯度同步流量是“大带宽低时延敏感”;模型并行里部分节点间流量是“极低时延敏感”。如果所有流量都打进同一个逻辑隧道里,靠底层ECMP碰运气转发,根本满足不了差异化保障的诉求。
3.5 可观测性不够细
VxLAN本身提供了VNI、Inner MAC这些字段,但放到AI集群场景下,运维人员更想看到的是“某个GPU上跑的某个RDMA流,到底走了哪条路径、每一跳的时延和丢包情况如何”。传统的VxLAN网络里,要拿到这类信息非常困难,只能靠交换机侧的流采样或者NetFlow,颗粒度太粗,而且对性能有影响。
在规模超过1000张卡的集群里,故障根因分析基本等于“大海捞针”。我问过不少做AI Infra的人,他们说大部分时间不是在调模型,而是在“找丢包到底发生在哪跳”。
4. SRv6为什么能给出答案
如果你已经读到这里,应该也认同一个观点:AI集群的网络不是“二层不够大”的问题,而是“三元问题”——大流量、低时延、快速故障恢复。SRv6恰好在这三个维度上,都比VxLAN更贴合诉求。
4.1 先理解SRv6在做什么
SRv6的全称是Segment Routing over IPv6,核心思想是把一条端到端路径,拆成一组有序的“段”(Segment),每个Segment可以代表一个节点、一条链路,也可以代表一个特定的转发行为。每个Segment都有一个IPv6地址形式的SID(Segment ID)来表示,路径信息直接写进IPv6扩展头里,让每一跳路由器都能明确知道“下一步怎么走”。
相比MPLS的标签转发,SRv6最大的优势是原生IPv6:它不需要额外的标签协议,不需要额外的转发面,只需要网络设备支持IPv6转发,再在数据包里带上SRH头(Segment Routing Header)就可以了。这让SRv6在现网落地时,尤其适合“一张IPv6底层网络通吃所有业务”的架构。
4.2 路径编程能力:给关键流量开“专线”
如果说VxLAN是“给一堆车发一张公共地图,大家自由选路”,SRv6就是“给重要车辆提前规划好专属路线,并告诉沿途每一个路口该左拐还是右转”。
拿AI集群的场景来说,可以通过SRv6 TE Policy,为NCCL的梯度同步流量专门规划一条从GPU A所在leaf到GPU B所在spine的低时延、无拥塞路径;模型并行流量则走另一条带宽保障路径。因为路径是提前算好并下发给头节点的,整条流从进入网络那一刻起,就到每一步怎么走,完全不会受其他业务流量干扰。
我在一个200G组网环境里做过对照测试:一组打的是VxLAN + ECMP,另一组用SRv6 TE Policy绑定了独立的专用路径,在背景流量冲击下,SRv6组的流完成时间抖动控制在5%以内,而VxLAN组在背景流量上来后,流完成时间直接翻倍——差距非常明显。
4.3 快速重路由:把故障收敛压进毫秒级
SRv6天然支持TI-LFA(Topology Independent Loop-free Alternate),能做到故障后毫秒级的本地修复。简单理解:当一条主路径断了,头节点或者故障点旁边的节点不需要重新跑路由协议等全网收敛,而是直接用预先算好的备份路径继续转发。
还是用刚才的例子,leaf到spine之间某条物理链路故障,VxLAN+EVPN需要全网重新通告,收敛秒级;而SRv6环境下,前面节点直接切换到备份路径,NCCL流量几乎完全不受影响。我当时的测试结果是:在网络注入故障后,SRv6组的报文丢失为零(几乎无感),而VxLAN组出现了明显丢包和重传,训练速度临时掉了不少。
4.4 原生Telemetry与可观测性
SRv6的Segment列表本身就是路径信息,所以每条流的真实转发路径天然就是已知的。配合交换机的Telemetry能力,我们可以直接看到某个SID序列在这一跳的时延、队列深度、丢包统计,这比抓包分析高效太多了。
在快500台交换机的AI集群里做可观测性,SRv6的路径可视化比VxLAN域名可读性、路径可追踪性强得多。每次训练性能波动,我们能很快定位到是哪个SID段时延超标,直接对应到物理链路上;而不是一夜之间抓包、看ECMP哈希结果,到处猜是哪两条流撞了路。
4.5 网络切片,AI和普通业务“物理隔离”
SRv6的另一个杀手锏是网络切片(Network Slice)。一个物理网络可以切出多个逻辑网络,每个切片有独立的带宽、时延、队列资源。AI训练流量放进一个“高带宽低时延”切片,普通业务流量放进另一个“尽力而为”切片,彼此互不干扰。这在VxLAN体系里实现起来非常别扭,因为VxLAN只是封装技术,它没有端到端资源隔离的机制;而SRv6在头节点入切片、中间节点按切片转发,从机制上就支持了“业务级隔离”。
我之前接触过一些智算中心已经规划了“AI训练专网”和“存储同步专网”两套物理网络,成本确实很高。如果用了SRv6网络切片,完全可以在同一张物理网络上逻辑隔离多套“虚拟专网”,网络采购和运维成本都会明显降下来。
5. 实操经验:从VxLAN迁移到SRv6,我踩过的坑和建议
讲完对比,肯定会有人问:“道理都懂,那我到底该怎么做?直接切换吗?”这里我分享一些自己动手做迁移和测试时的经验,不希望你们再走我踩过的弯路。
5.1 不建议“一刀切”全切换
先说个谨慎的建议:如果你的现有业务是虚拟机跨机迁移、容器多租户隔离这类经典云场景,VxLAN依然是当下最成熟、生态最好的方案。直接用SRv6替代VxLAN,未必能在这些场景里获得明显收益,反而会引入不必要的复杂度。
但如果你正在建设一套专用的AI训练集群网络,而且是“白纸一张”的新建项目,那我的建议是:底层直接上IPv6+SRv6,控制面用SRv6 Policy或者SRv6 TE Policy,叠加你需要的网络切片。这样的架构天然为AI集群的大流量高可靠场景做了优化,后顾之忧更少。
5.2 网络设备选型提醒:不是所有“支持SRv6”都靠谱
这是我最想强调的坑。市面上很多交换机都宣称“支持SRv6”,但支持的程度天差地别:有的只是支持基础的SRv6 BE(Best Effort,尽力而为转发),不支持SR-TE Policy;有的支持SR-TE Policy,但高性能硬件转发的SID数量很少,几百条Policy就会打满芯片表项;还有的在SRv6的数据面封装上性能损耗非常大,跑满端口时CPU直接飙升。
所以选型时一定不要只看参数表,要把自己的业务模型拿出来做实测。重点测试三点:SRv6 Policy规格数、SRv6封装转发吞吐、故障切换时间。实测下来,不同厂商在同一芯片下的表现差异都很大,更别说跨芯片方案了。
5.3 配置示例与步骤
以一个简化过的测试环境为例,我给出SRv6 TE Policy的最简配置思路(不同厂商命令有差异,这里只讲通用逻辑)。
- 第一步:确保全网IPv6可达,核心设备开启SRv6能力,配置SID的发布(通常用IS-IS或OSPFv3,确保每一台设备都知道其他节点的SID)。
- 第二步:定义一条SRv6 TE Policy,路径从leaf-1(头节点)到leaf-2(尾节点),指定途经的spine节点和备份节点。核心点是把“显式路径”和“备份路径”都定义好。
- 第三步:把目标流量(比如NCCL产生的RoCEv2流)匹配进这个Policy。通常可以通过BGP FlowSpec、全局按目的地址引流、或者策略路由实现。
- 第四步:配置可观测性,在头节点和中间节点开启Telemetry,采集SID级的丢包和时延指标。
配置本身不复杂,难点在于“把AI业务流量正确地映射到SRv6 Policy上”。RoCEv2的流量如果做二层接入,要确保MAC和IP都能被正确识别并引导进Policy;如果不小心把流量漏到了普通IPv6转发,那SRv6 Policy的路径控制就形同虚设。
5.4 建议加点“冗余设计”
SRv6虽然提供了TI-LFA,但我觉得在AI集群里不要过度依赖同一层的保护。推荐在主备路径上做交叉设计:即便主路径断了切备份路径,备份路径也不要和主路径共用同一块板卡或同一个光模块。否则硬件损坏级别故障,主备一起失效,还是会直接打断训练。
在实际规划时,我习惯把AI集群的spine层做冗余组,leaf上联至少两条物理链路分别接不同的spine,并且保证SRv6 Policy的主路径和备份路径走不同的spine节点。这样在任何单个硬件故障下,都能保证业务连续。
5.5 别忘了RoCEv2和PFC的协同
如果集群里用了RoCEv2,即便上了SRv6,PFC和ECN的配置也绝不能省。SRv6只是解决了路径控制和故障收敛问题,它不负责无损网络的拥塞控制。上层的无损策略还是要配合交换机的优先级队列、ECN阈值做精细调优。
我见过一个案例:SRv6路径都通得很好,但RoCEv2还是有丢包,最后排查发现是PFC在所有队列上都开启了,导致一个队列暂停波及其他队列的流量。解决办法是把RoCEv2流量单独放一个高优先级队列,只在该队列里启用PFC,其他队列保持传统的丢包转发。调整之后,训练时的全局吞吐和稳定性明显改善。
6. 常见问题与排查技巧实录
这里把我在测试和落地过程中遇到的高频问题整理成速查表,帮大家少走弯路。
6.1 故障速查表
| 现象 | 可能原因 | 排查/解决方案 |
|---|---|---|
| RoCEv2训练频繁报错 | SRv6 Policy未匹配到流量,实际走了ECMP | 在头节点查看SRv6 Policy的命中计数,确认引流规则 |
| 训练时延抖动严重 | 底层链路拥塞,PFC队列配置不当 | 检查ECN阈值,确认RoCEv2流量只在高优先级队列启PFC |
| SRv6路径切换失败 | TI-LFA备份路径未正确配置 | 查看设备的备份SID和路径保护状态,做故障演练 |
| SRv6 Policy规格不足 | 设备芯片表项有限 | 规划Policy的数量,或用聚合Segment汇聚路径 |
| SRv6封装后吞吐下降 | 设备对SRH头处理性能瓶颈 | 实测不同封装模式下的端口吞吐,考虑升级芯片方案 |
| 与已有VxLAN网络互通困难 | 两种Overlay机制逻辑不同 | 边界引入双栈网关转换,或分段部署逐步迁移 |
6.2 几个容易忽略的坑
先说SRv6在IPv6地址规划上的坑。SRv6的SID本质上是IPv6地址的某种特定格式,一个SID通常包含Locator和Function两部分,Locator代表节点位置,Function代表行为。分配SID时如果Locator规划不合理,路由会非常难以维护。我建议一开始就按数据中心物理拓扑来规划Locator:比如每个leaf分配一个独有的大段,spine另起一段,这样查路由表时一眼就能知道目的位置在哪。
另一个坑是流量引导。很多人在SRv6 Policy配置完成后,没仔细检查“哪些流量进入了Policy”,结果RoCEv2流量根本没进SRv6隧道,还是走传统IPv6转发。后面排查时发现Policy计数器一直是0。这种问题特别隐蔽,因为从测试看网络是通的,只是性能和路径不符合预期。所以建议上线前先做流量引导验证,强制把某一小段测试流量打进Policy,观察路径。
再有就是SRv6和网络设备固件的兼容性。有些设备表面支持SRv6,但实际代码和芯片驱动配合不佳,会出现偶发丢包。无论如何,上线前一定要做“大流量长时间压测”,不要只跑几分钟的ping测试就宣布上线。
6.3 一个小技巧:用SRv6的Latency SID做时延感知
SRv6的SID不仅有节点和路径含义,还能承载性能测量信息。比如你可以定义一个专门用来测时延的SID,让流量经过它时,设备会打上当前时间戳,这样端到端时延就能被精确测量,而且不需要额外启用专门的探针协议。
我曾在一次故障排查里用这个方法快速定位到某一条跨机房间链路时延突增,只用了几分钟,而之前用传统IOAM或被动流量分析要好几个小时。
7. 写在最后的一点个人感受
做AI基础设施的这些年,我最深的一个体会是:网络绝对不能等业务“跑不动了”再升级。AI集群的性能是典型的长尾效应——当99%的网络指标都正常时,最后那1%的抖动就是决定GPU利用率天花板的关键。VxLAN在很多场景下依然是经典方案,但放到AI算力集群这里,SRv6给出的不只是“另一种Overlay”,而是一套更贴近业务模型的路径控制与可观测体系。
我自己从VxLAN转向SRv6之后,最大的感受是“排障终于变得清爽了”。以前打流测试出问题时,我们总得先猜ECMP哈希、猜是哪条物理路径被拥塞了;现在有了SRv6的路径可视化,直接看SID跳数、看每一跳的指标,问题定位速度提升了不少。当然,SRv6也不是银弹,它要求团队对IPv6和路径编程有足够的理解,也需要设备厂商的支持足够扎实。
如果你也在规划或优化AI训练集群的网络架构,我给的建议是:先拿一个小规模集群做SRv6的PoC测试,重点验证RoCEv2的转发性能、故障切换时间和可观测性是否符合预期;如果测试数据明显优于现有VxLAN方案,再逐步扩大范围。网络架构的演进不一定要一夜推翻,但至少要有意识地在新项目中给SRv6留一个位置,这样才能在下一波万卡集群到来时,不被网络卡住脖子。