尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

VxLAN为何撑不起AI算力集群?SRv6确定性网络如何破局

VxLAN为何撑不起AI算力集群?SRv6确定性网络如何破局 去年有个客户问我智算中心直接用VxLAN不是挺好以太网生态成熟、团队也熟干嘛非要折腾SRv6我当时的回答是如果你用千卡以下规模跑推理业务VxLAN完全没毛病一旦上到万卡级AI训练集群反复遇到网络故障恢复慢、负载不均衡、训着训着算力利用率掉下去的问题之后你会自己想换方案。这篇文章就把“为什么VxLAN撑不起AI算力集群、SRv6为什么能给出答案”这件事彻底说透。我会从AI集群网络的真实流量特征讲起接着拆VxLAN的先天性短板再讲SRv6从哪几个维度补上了这些短板最后给一份可以落到实处的迁移与部署经验。适合正在做智算中心网络规划、AI基础设施架构选型的工程师阅读也适合被“明明链路带宽很多、训练速度却起不来”折磨的运维同学参考。1. AI算力集群的流量真相这不是传统云网络1.1 分布式训练的通勤高峰所有GPU在同一时刻涌向网络要理解VxLAN为什么不够用先得理解AI计算给网络出的题是什么。传统云数据中心里流量模型是“长尾效应”——大量小流、一部分中等流、极少数大象流互相之间没有强同步节奏。网络调度上的目标只是让总体吞吐尽量高个别流慢一点没关系。AI分布式训练完全不同。以最常见的AllReduce集合通信为例成百上千块GPU并行算完一批数据后必须在同一个时间点把各自的梯度汇总、同步、再分发出去才能进入下一轮迭代。这个梯度同步过程是严格周期性的而且量非常大。拿一个千卡集群粗算一下假设单卡训练batch size为32模型为1750亿参数级别半精度梯度约350GB一轮同步中每卡平均要吐几百MB到GB级别的数据。这意味着每几十秒就会有一波凶猛流量同时从所有GPU涌向网络持续几秒到十几秒速率跑满线速。这种流量在时空上是高度聚集的——网络上所有叶子节点、所有Spine链路会在同一瞬间同时满负荷。打个比方普通云网络像是城市全天候的车流高峰虽然堵但总有错峰的可能AI训练网络像是早高峰所有公司同时下班所有人都冲向同一个地铁站——这个“同时性”就是最大的麻烦。1.2 无损队列与确定性RoCEv2对网络的“苛刻”要求更麻烦的是大规模AI训练普遍用RoCEv2跑RDMA这直接颠覆了传统IP网络的“尽力而为”逻辑。RoCEv2要求无损传输依赖PFC优先级流控和ECN显式拥塞通知两个机制维持一个“不丢包”的通道。PFC的本质是“怕丢包所以让上游先憋住”——当一台交换机端口拥塞时它会向上游发暂停帧让对方别发了。这本身没问题麻烦在于PFC的暂停会像多米诺骨牌一样向源头反向扩散如果扩散到网卡GPU的通信就会直接停滞。所以RoCE网络里最害怕的事情不是带宽不够而是拥塞点出现得不合时宜、不可预测导致PFC风暴。ECN的本意是在交换机队列深度超过阈值时给报文打标记让接收方通知发送方降速从而避免队列堆积。但RoCEv2的流量是封装在VXLAN的UDP隧道里的交换机如果只看外层报文很难准确感知内层RDMA流量实际的拥塞状态。要把外层IP头的ECN信息与内层报文的拥塞反馈关联起来需要一堆额外配置Congestion Avoidance at Outer Tunnel、VXLAN to IP ECN Mapping等各家厂商还不尽相同。这种配置复杂度在几十台设备的小网络里可以忍到了上百台、上千台设备的算力集群里就是巨大的运维隐患。1.3 规模与故障域大二层越扩越大的“隐形成本”AI集群的网络规模也和传统云网络不在一个量级。千卡集群通常是两层胖树Leaf-Spine万卡要三层甚至正交架构接入的GPU节点成百上千网络端口的数量轻轻松松到数千个。每张GPU都有独立的IP和MAC意味着网络里有数以万计的终端端点。这种规模下大二层网络引以为傲的“全网互通”反而成了包袱。二层广播域越大ARP/ND泛洪、未知单播泛洪、组播泛洪的范围就越大任何一次广播风暴都可能波及整个集群。很多团队的实际做法是“美其名曰大二层实则用VLAN/VNI划分隔离域把广播范围控制在叶子交换机以下”——但这又回到了三层网络的复杂性上VxLAN的大二层优势大打折扣。一句话总结AI算力集群需要的网络是“高并发、极低延迟、无损传输、故障快速收敛、流量精确可控”的确定性网络而不是“能通就行、尽力而为、故障靠重启”的传统数据中心网络。拿VxLAN这张老地图去导航AI网络这片新地形自然会出问题。2. VxLAN病在哪三条先天短板逐一拆解2.1 历史定位决定基因VxLAN生来不是为算力集群VxLAN是2014年发布的RFC 7348标准那时的核心诉求非常明确解决云计算时代虚拟机跨物理服务器迁移时二层网络范围不够用的问题。它要把二层域跨越三层网络拉通让虚拟机搬家后IP和MAC都不用变。后来的BGP EVPNRFC 7432、RFC 8365补齐了控制面让VxLAN从“手工配置隧道”进化成“协议自动建隧道的网络”。这套机制的基因决定了它的设计目标提高虚拟化环境的灵活性和部署效率。它从来没想过有一天要承载“几千张GPU同步做AllReduce”这种流量。就像城市为了通勤方便修了一条全封闭快速路设计时速80公里结果现在要拿它跑重载卡车编队你当然可以说“都是路”但承重、坡度、车道宽度完全不是一个标准。具体到技术上VxLAN本身只定义了数据平面的封装格式——UDP头部加VxLAN头部外层UDP端口4789内层是以太网帧。至于怎么知道对端VTEP在哪、走哪条路径、隧道状态是否健康它根本不管。这些活儿全部落在EVPN控制面和底层IGP路由协议上。问题恰恰出在这里隧道封装只是“形式上的网络连通”真正决定流量怎么走、故障怎么恢复的是底层路由协议和哈希算法而这些恰恰不是为AI流量设计的。2.2 哈希负载分摊的瓶颈大象流的苦难VxLAN数据面的负载均衡绝大多数实现是基于外层报文五元组或三元组的ECMP哈希。交换机看到一条流算一个哈希值把整条流固定映射到某一条等价路径上。这在大量小流的场景下效果很好因为流的数量多统计上能摊匀。但AI训练里的流量特点是流的数量少每条流都巨大。一个AllReduce过程里可能只有几十条到几百条RoCE连接可每一条都跑满带宽。这时候哈希的均匀性完全靠脸。我算过一笔账4条100G上行链路同时来了5条各占40G的大象流。理想调度是4条链路分别承载约50G流量但ECMP哈希没有这个全局视野它只看每条流的五元组算出一个确定性的哈希值。结果完全可能3条流挤在链路A上链路B和C各一条链路D空转。最极端的情况下5条流全部哈希到同一条链路其余三条100G全闲着算力集群的有效通信带宽直接掉到25%。有人说那Flowlet负载分担不就能救吗Flowlet的思路是检测同一条流内部是否有足够的时间间隔如果间隔超过一定阈值就把后续报文当作“新的flowlet”重新哈希到其他路径。这个机制对TCP这种有突发间隙的流量效果不错但对持续同步发送的RDMA流量几乎无效——RDMA流在同步阶段是全速连续发送的根本没有足够长的间隙让交换机切分。实测下来Flowlet对AI训练大象流的改善非常有限。算力集群最值钱的就是GPU卡。算力利用率从90%掉到70%等于白白损失了20%的算力投资。这个账在万卡集群里是非常恐怖的——少说也是几千万元的设备在空转。2.3 控制面收敛速度秒级修复在万卡集群里太慢了VxLAN EVPN的故障恢复链路是这样的底层链路断了靠BFD或硬件检测发现检测到之后IGP/BGP重新收敛路由EVPN重新计算VNID对应的VTEP转发路径最后硬件转发表更新。整个过程涉及的协议栈非常长每一步都在消耗时间。BFD的检测速度可以调到3.3ms的发送间隔乘以3也就是大约10ms内能感知故障。但感知到故障只是第一步。BGP路由撤销需要在全网传播每台设备要重新计算最优路径、更新转发表。在几百台设备的大型EVPN环境里整个收敛过程通常在秒级网络抖动5到10秒都是常见的。10秒对普通网页访问来说用户刷新一下可能就过去了。但对AI训练集群来说网络中断10秒意味着所有GPU的集合通信全部挂起消息超时严重时整个训练任务直接报错终止。即便网络恢复了训练框架还要重新建立连接、重新同步状态前前后后可能折腾十几分钟。在万卡集群上一次小小的链路抖动就可能让几百万GPU时长的算力全部打水漂。3. SRv6的解题思路从“逐跳尽力而为”到“端到端可编程”3.1 源路由路径写进报文头不赌哈希运气SRv6Segment Routing over IPv6的核心理念是源路由——在报文发送端就把整条路径以Segment列表的形式写入IPv6扩展头SRH中间节点只需要按着SIDSegment Identifier列表往下转根本不需要针对每条流查复杂的转发表。我习惯把VxLAN的转发模式形容为“每个路口自己看路牌”交换机只能根据目的地址选一条本地最优路至于全局哪条链路空闲它不知道。而SRv6相当于出发前就把导航路线写在了信封上“先到A点再到B点最后到C点”中间设备看到信封上写着“下一站是A”就老老实实把信送到A再按信封上的下一站继续送。具体来说每个SRv6 SID是一个128位的IPv6地址格式是Locator Function。Locator部分相当于一个路由前缀可以在IGP里聚合通告中间节点一看Locator就知道该往哪个方向转Function部分编码了要执行的具体动作比如“转发到某个端口”“做一次SRv6压缩”“把报文解封装送到本机”。由于路径是由发送端或控制器指定的负载均衡不再依赖哈希撞运气。控制器可以精确看到“链路A上有5条大象流链路B还是空的”然后给新流量下发一个走链路B的SID列表流量调度从概率学变成了确定性的工程控制。3.2 SR Policy 控制器每条关键流都有专属“行车导航”光有源路由还不够如果每条流的SID列表都要手工配运维会疯掉。SRv6的杀手级应用是SR PolicyRFC 9256控制器、网管系统或头端设备可以把一组显式路径定义为SR Policy每条Policy对应一组候选路径Candidate Path每条候选路径可以绑定一个SID列表。举个例子控制器计算出一万卡训练集群中“叶子E1到叶子E2”的最优路径经过Spine S1但S1链路已经拥塞。控制器可以直接给这个SR Policy分配一条“避开S1、走S2和S3”的SID列表并把它设为激活候选路径。头端交换机收到流量后直接封装这个SID列表流量就绕过S1全程不需要每台设备做复杂决策。更关键的是SR Policy支持按流做精细化调控。你可以把GPU训练流映射到低时延Policy上把存储同步流映射到另一个高带宽Policy上甚至可以在训练流拥塞时控制器实时给特定流重新下发一条新路径。这种“每流级、每路径级”的可编程能力对VxLAN来说是质的飞跃——VxLAN里想做类似事情只能靠宿主机或网卡策略路由根本无法做到网络设备层面的全局调度。3.3 TI-LFA与Flex-Algo50ms级保护外加一张“低时延快线”SRv6在可靠性方面也有先天优势。基于Segment Routing的TI-LFA拓扑无关无环备份可以在IGP计算出主路径的同时预先算好备份路径并把备份路径以SID列表形式下发到转发面。当主链路故障时头端或故障点直接切换到备份SID列表整个过程不需要等待BGP收敛故障切换可以做到50ms以内。50ms是什么概念集线通信的报文超时重传阈值通常在毫秒到百毫秒级50ms内的切换对大多数RDMA应用来说是无感的。传统VxLAN EVPN环境的秒级恢复在50ms面前完全是两个时代。Flex-AlgoRFC 9350给SRv6网络多开了一扇窗。它允许在同一套物理拓扑上并行运行多个算法拓扑比如算法0按最小开销IGP metric选路算法128按最小时延选路算法129避开某些低带宽链路选路。每个算法可以算出不同的SID也就是不同的路径集合。这对AI集群特别实用训练流量需要极低时延就让它走算法128的拓扑这些路径的链路时延被控制器优化过备份/日志流量对时延不敏感就走普通算法0拓扑避免和训练流量争抢优质链路。本质上相当于在同一张物理网络上虚拟出了多张“专网”比VxLAN靠隔离VNI来实现东西要灵活得多。4. 故障与拥塞两个实战场VxLAN和SRv6的表现差距4.1 场景一Spine节点故障后的业务中断时间假设一套6000卡集群的Spine层有8台设备其中一台突然宕机。看看两类方案各自的表现。VxLAN EVPN环境的处理流程如下BFD在10ms内感知到邻居丢失本机标记相关链路down。IGP重新计算SPF向全网通告拓扑变化。SPF计算在每台设备上独立进行几百台设备各自算耗时不等。BGP开始撤销或重新通告受影响的路由EVPN路由随之变化。每台VTEP重新计算到对端VTEP的下一跳更新硬件转发表。全网转发路径达到一致状态。这个过程走下来5到15秒是常态。期间穿越故障点的RoCE流全部中断PFC风暴可能波及周边设备上层训练框架直接报错。我见过比较糟糕的情况一个小型链路抖动最后演变成整个集群需要重启训练任务半天时间没了。SRv6TI-LFA的处理流程则短得多故障点设备或感知到故障的头端设备直接查询预下发的备份SID列表把流量切到备份路径。整个过程由硬件转发表切换完成不依赖路由协议全网的同步收敛时间在50ms左右。训练流量几乎无感知顶多在监控面板上看到一次小幅的时延抖动。4.2 场景二训练流冲突后的流量调度能力再说拥塞。假设Spine层有4条100G上连当前有4条训练大象流刚好被ECMP哈希均匀分配到4条链路上看起来岁月静好。这时候又来了第5条训练流每个流40G。VxLAN环境下你几乎没有任何办法。哈希算法把第5条流映射到某条链路——很大概率它会和已有的一条流冲突那条链路变成80G负载其他链路跑到80G空闲。你说那我把ECMP权重调一下哈希基于五元组你调权重改变不了具体某条流的落点。你说那用Flowlet前面说过RDMA连续流没有足够间隔切分效果堪忧。SRv6环境下操作就优雅多了控制器实时监控发现链路1负载80%、链路4负载40%立即计算一条新的SID列表把第5条流导到链路4上。甚至在局部拥塞持续时直接把原来在链路1上的某条流也换到其他空闲链路。全程不需要改配置、不需要断流控制器下发新Policy头端设备切换SID列表几十毫秒完成。这就是“确定性网络”和“概率性网络”最大的区别。4.3 一张表看完差距控制面、数据面、可编程性与生态成本维度VxLAN EVPNSRv6设计目标云计算大二层扩展端到端流量工程与路径编程控制面BGP EVPN收敛秒级IS-IS/OSPF/BGP SR扩展收敛毫秒级数据面UDP隧道封装逐跳转发IPv6 SRH封装源路由显式选路负载均衡ECMP哈希概率均匀SR Policy显式路径确定性调度故障保护BFDBGP收敛秒级恢复TI-LFA备份路径50ms级网络切片依赖VNI隔离广播域大Flex-Algo虚拟拓扑灵活多变可观测性只见VTEP隧道难追溯内部路径SID路径可追踪天然适合网络遥测设备生态成熟几乎所有交换机支持需要新芯片平台新设备较适配看完这张表SRv6在技术指标上全面占优。但为什么很多人还在犹豫因为生态成本——现有设备是否支持、团队是否熟悉、控制器是否需要单独采购这些现实问题必须正视。下一章专门讲怎么落地。5. 落地SRv6的正确姿势过渡方案、设备选型与避坑经验5.1 渐进式演进SRv6与VxLAN如何先共存再切换SRv6虽好但直接“铲掉VxLAN重来”在大多数现网里并不现实。我见过比较稳妥的演进路径是分三步走第一步underlay跑SRv6overlay保留VxLAN。底层IGP升级为IS-IS SR核心设备启用SRv6能力建立SR Policy隧道上层业务仍然使用VxLAN作为Overlay隧道终结到租户/业务侧。这样底层路径可控、故障收敛能力提升Overlay对业务透明迁移风险最小。第二步在关键流量上试点SRv6直连。选择对网络质量最敏感的训练流量或高性能计算流量让头端设备直接把RSVP/LDP/VxLAN隧道切换为SR Policy验证SID路径调度和TI-LFA的可靠性。这一步不需要全网改造只是局部业务网关接入SRv6。第三步逐步淘汰VxLAN在新扩容区域全面启用SRv6。数据中心新建模块、扩容区域直接采用SRv6架构老区域用网关互联等老设备生命周期结束后自然完成平滑切换。这种渐进式的好处是每个阶段都有明确的验证目标和回退方案。我见过不少项目盲目追求“一步到位”结果控制器和网络设备联调出问题业务一停就是半天。渐进式虽然慢一点但每一步都稳。5.2 部署前必须考虑的四个坑MTU、芯片、控制器、RoCE联动这部分是我踩过坑、也看别人踩过坑之后总结出来的。第一是MTU问题。SRv6增加SRH头一个SID列表包含4个SID时就比普通IPv6报文多出72字节8字节基础SRH 4×16字节SID列表相比IPv4多出接近100字节。如果接口MTU还按传统1500字节配置封装后必然分片对RoCE无损网络来说分片等于丢包。务必把Spine-Leaf链路和服务器接入链路的MTU统一调整到9000字节巨型帧并且在测试阶段就验证整条路径的MTU可达性而不是只改个别端口。第二是芯片能力。现在的网络芯片并不都支持线速处理SRv6封装和多个SID列表。有些中低端设备虽然软件层面支持SRv6但多SID处理性能直接掉一半以上。选型时一定要拿真实的训练流量压测——不是跑个ping通就完事而是看跑满RoCE流量时CPU/转发芯片的负载和时延曲线。宁可多花预算买高端接入设备也不要在这里给未来埋雷。第三是控制器依赖。SR Policy的集中下发、路径计算、流量调度全都依赖控制器。控制器挂掉整个网络虽然转发层面还能跑但新增业务流的路径编程能力就没了灵活性和可观测性大幅下降。生产环境必须做控制器的集群高可用部署并且留好“无控制器可用的逃生预案”——比如让设备继续沿用最后下发的Policy而不是立刻清空所有SR配置。第四是RoCE和SRv6的联动。RoCEv2要求底层无损SRv6作为一种隧道封装并不会自动给你无损能力。PFC优先级队列、ECN门限、流量整形这些参数仍然需要联合调优。尤其是多个SR Policy的流量可能汇聚到同一物理端口要确保每个优先级队列的缓冲区规划和SR Policy的路径规划一致否则PFC风暴还是会找上门。我建议在测试阶段就做“控制器故障注入”“单条流大流量冲击”“多Policy拥塞碰撞”这三类测试确认RoCE联动配置稳定后再上线。5.3 给运维团队的学习路线与试点建议最后聊几句运维团队转型的事。VxLAN团队切到SRv6最大的障碍不是设备而是思维方式。VxLAN调试的思路是“查隧道up没有、EVPN路由通没有、BGP邻居有没有问题”到了SRv6时代要习惯“查SID列表有没有下发、SR Policy的候选路径是否active、Flex-Algo的约束条件是否满足”。这要求团队补齐三个知识模块IS-IS/OSPF的Segment Routing扩展、SR Policy与传统MPLS TE的关系与差异、控制器北向接口和编排逻辑。建议先用一个200卡以下的小集群做试点跑通“控制器下发SR Policy TI-LFA故障切换 Flex-Algo低时延拓扑”三个核心场景再扩展规模。不要一上来就挑战万卡——SRv6的核心价值在于大规模下的确定性但大规模也放大了配置复杂度团队还没上手时小规模验证能帮你把概念、流程、排障方法都固化下来。提示SRv6的路径可追踪特性对AI集群排障是一大隐藏福利。传统VxLAN只能看到VTEP之间的隧道报文到底走了哪条链路很难查SRv6的SID列表本身就携带了完整路径信息配合网络遥测可以精确还原每条流的实际经过路径。我在实际项目中的体会是网络方案的选型最终拼的不是“谁会背更多标准”而是“谁的方案能让GPU多跑几个百分点、让故障恢复少损失几个小时的算力”。VxLAN解决的是云化时代的连接问题SRv6解决的是算力时代的调度问题——两种技术没有谁“错”了只是面对AI算力集群这张考卷SRv6的解题路径明显更接近正确答案。如果你正站在新算力中心网络方案的选型关口建议把SRv6放入候选清单拿着真实的训练流量做一轮完整的POC验证结果会比任何PPT上的参数都有说服力。
返回列表