AI算力集群的规模一旦跨过千卡这个门槛,网络就从“基础设施”变成了“第一瓶颈”。我这两年参与过不少智算中心网络的规划,几乎每次评审都会被问到同一个问题:VxLAN不是挺好的吗?有EVPN控制面,支持大二层,能跑RoCE无损网络,为什么大家开始谈SRv6?说实话,这个问题背后藏着的不是某个协议的好坏,而是AI训练流量给传统数据中心网络架构带来的根本性冲击。
这篇文章不打算做纯理论科普,而是从实际项目里踩过的坑出发,分析AI算力集群对网络的真实需求,拆解VxLAN方案在万卡规模下的压力点,再讲清楚SRv6的核心能力到底补在了哪里。最后给出一套基于H3C设备的SRv6 TE Policy实验配置流程,以及我在选型时的一些务实建议。无论你是做网络运维、数据中心架构设计,还是负责AI Infra的规划,这篇都值得花十分钟读完。
1. AI算力集群的网络需求,和你想的不一样
1.1 超大带宽与多轨组网带来的新问题
传统数据中心里,服务器之间的流量模型是“南北为主、东西为辅”,东西向流量虽然增长快,但大多是Web服务、微服务调用这类短小流。AI训练完全不同,GPU之间要做梯度同步、参数分发,跑的是集合通信(AllReduce、AllGather等),流量模型是典型的大象流——单条流带宽就可能跑到几十个Gbps,而且是全网同时瞬发。
这种场景下,网络设计首先要解决的是带宽密度问题。业内现在普遍采用多轨(Multi-Rail)组网:每张GPU卡把多个网口分别接到不同的Leaf交换机上,逻辑上形成多条并行通道。NCCL、RCCL这类通信库会自动把数据按照rail进行拆分和聚合。我举个例子,一台8卡GPU服务器如果每卡配一个400G网口,那8个网口分别上联到8台Leaf,形成8条独立的“轨道”,训练流量在这8条轨道上并行传输。
在这样的组网下,网络设备要面对的不只是流量的突发性,还有路径的多样性。传统CLOS架构下,Leaf和Spine之间有多条等价路径,但流量是否均匀散步全靠转发的哈希算法。AI训练里每一条流都是大流量,如果哈希不灵,两条大流撞在同一个Spine端口上,立刻就会出现拥塞,训练性能秒掉一个量级。这个问题的根源是ECMP的“尽力而为”性,VxLAN时代没有给出很好的解法。
1.2 无损网络和拥塞控制,直接决定算力效率
AI训练对丢包几乎是零容忍的。在AllReduce过程中,任何一个GPU的梯度数据丢失,整个集合通信就要重传,所有参与的GPU都要停下来等待,一个慢节点拖慢整个训练作业。为了把丢包率压到几乎为零,数据中心普遍采用RoCEv2无损网络,核心机制是PFC(基于优先级的流控)和ECN(显式拥塞通知)。
PFC的坑在于它的“连锁反应”。当某个入口端口发生拥塞时,PFC会向上游设备发送暂停帧,上游设备的缓冲区被打满后又继续向上游发送暂停帧,拥塞像多米诺骨牌一样逐级扩散,严重时会造成整个网络的死锁。我在一个项目中见过一次PFC风暴,所有Leaf的缓存瞬间被打满,全网有效吞吐掉到30%以下,排查了半天才发现是某条链路上的一段光纤老化,触发频繁的链路震荡,PFC的暂停帧在整网蔓延。
所以AI算力集群的网络方案不能只看“能不能支持RoCE”,还要看拥塞控制做得好不好、故障隔离能力强不强、路径是否可控可调度。这几点恰恰是后文要展开的核心。
2. VxLAN方案的优势与瓶颈:能用到哪一步?
2.1 VxLAN与EVPN解决了什么问题
先给VxLAN一个公正的评价。VxLAN把二层报文封装在UDP/IP里,理论上支持1600万个VNI(类似VLAN ID的扩展),解决了传统VLAN只能支持4094个隔离网段的问题。配合EVPN作为控制平面,通过BGP分发MAC地址和IP路由信息,实现了大二层的自动化收敛,不再依赖STP,链路利用率大幅提升。
这套方案在云数据中心的成熟度非常高,几乎所有主流厂商都支持VxLAN+EVPN,运维团队普遍会用BGP,排障手段也比较成熟。现在的交换机芯片也都原生支持VxLAN封装解封装,性能和硬件转发已经不是问题。所以在很长一段时间里,VxLAN+EVPN都是数据中心网络的事实标准,也是很多智算中心初期的默认选型。
在千卡级别的规模下,VxLAN+EVPN完全够用。我做过的一个300卡集群,全部采用VxLAN+EVPN架构,配合RoCEv2无损配置,训练效率能达到理论值的90%以上。问题在于规模继续往上走,当集群从千卡扩展到万卡甚至十万卡时,这套方案开始显露疲态。
2.2 万卡规模下VxLAN方案的三重压力
第一重压力是控制平面的规模压力。EVPN本质上是BGP的扩展,每个Leaf都要和Spine建立BGP邻居,Spine上要维护所有的EVPN路由。万卡集群意味着数万个GPU服务器,对应网卡数量和虚拟网络端点数量都得按倍数增长。Spine设备的路由表项、BGP会话数量会急剧膨胀,BGP的收敛速度会随着会话数量增加而变慢。一旦某个Leaf出现故障,全网路由收敛时间可能从毫秒级劣化到秒级,这对训练任务来说是致命的。
第二重压力是数据平面的路径控制问题。VxLAN封装之后,转发面看到的是外层IP,底层设备做等价路径负载分担依赖于五元组哈希。AI训练的大象流很容易在哈希上“碰撞”,多条大流挤在同一条物理链路上,导致链路利用率严重不均。网上很多讨论黑VxLAN,其实黑的就是这一点——VxLAN本身只管封装,不管路径怎么选,路径的选择权仍然落在ECMP的哈希上。对于AI训练这种超大流,ECMP的随机性太不可控了。
第三重压力是故障定位的困难。VxLAN隧道把内层业务流封装起来,网络设备只能看到外层隧道信息,内层报文是什么业务、从哪个虚拟网络来、要到哪里去,中间的设备都不感知。当训练性能出现劣化,你要判断是哪个节点、哪条链路上的问题,需要在全网设备上翻PFC计数器、查丢包统计、跟踪拥塞点,整个过程非常痛苦。有时候等我定位到问题,训练任务早就超时下线了。
当然,这三个压力点不全是VxLAN本身的“罪过”,而是传统数据中心网络架构在大规模AI集群场景下的共性问题。但不可否认,当你需要更细粒度的路径控制、更快的故障收敛、更强的可观测性时,VxLAN这套方案确实给不了太多选择空间。
3. SRv6凭什么“接棒”:核心能力和解题思路
3.1 从SID到SRH,SRv6的可编程路径思路
SRv6(Segment Routing over IPv6)和VxLAN最大的不同在于,它在IPv6数据平面上直接实现了路径编程。核心概念是SID(Segment Identifier),本质是一个IPv6地址,用来标识某个网络指令或转发行为。一个完整的SID由三部分组成:Locator、Function和Arguments。Locator在组网内唯一标识一个节点或链路,类似传统网络里的“节点ID”;Function定义该节点要执行的具体操作,比如End(终点)、End.X(指定出接口转发)、End.DT4(IPv4隧道终结);Arguments则是可选的附加参数。
要让报文按照预定路径转发,SRv6在IPv6扩展头中加入了SRH(Segment Routing Header),里面装着一串SID列表。源节点把整条转发路径“写”进报文的SRH里,中间节点根据SID列表依次执行转发动作,不需要维护每条业务流的转发表项。这和MPLS时代的标签栈思路很像,但好处是不需要LDP/RSVP-TE这类额外的信令协议,直接基于IGP(OSPFv3或IS-IS)扩散SID,天然适配IPv6。
对比VxLAN,你就发现本质区别:VxLAN把流量收进隧道里,路径选择权交给了网络自己;SRv6则直接把一个AI训练任务要走的路径以SID列表的形式“钉”在报文里,网络变成了一个可编程的执行器。对于AI训练这种需要精确控制路径的应用场景,这种“网络自描述”的能力价值很大。
3.2 SRv6 TE Policy:给AI训练流画一条专属车道
SRv6最有实用价值的特性我认为是SRv6 TE Policy。它的机制是通过控制器或头端设备计算出一条端到端的流量路径,用SID列表形式下发到设备上,流量进入这个Policy后严格按指定路径转发。
为什么这对AI集群很关键?回到前面提到的多轨组网场景。在多轨模式下,理想状态是8条轨道上的流量完全均匀,但ECMP哈希做不到这一点。SRv6 TE Policy则可以做到逐流甚至逐包的路径指定:你可以给每个rail的流分别建立不同的TE Policy,让它们走上不同的Spine,彻底避开哈希碰撞问题。配合随流检测,每条流的时延、丢包情况全部可见,哪里拥塞一目了然。
TE Policy的另一大价值是快速重路由。传统网络里的链路故障恢复依赖IGP收敛,时间相对长;SRv6 TE Policy支持在头端预置备胎路径(Hot Standby)或绑定SID切换,故障后可以在几十毫秒内完成流量切换。对于正在训练中的任务来说,这可能意味着少损失几十上百个GPU时的算力。
3.3 网络切片和随流检测,解决大集群运维难题
AI算力集群里跑的不只是训练流量,还有存储流量、管理流量、甚至推理流量。它们混在同一张物理网络上,如果某段链路被训练流量占满,存储同步就可能延迟,影响整个集群的数据加载效率。SRv6网络切片通过Slice ID在同一个物理网络上划分出多个逻辑资源分区,每个切片独占一部分链路带宽和队列资源。训练流量、存储流量、管理流量各走各的“快车道”,互不干扰。
随流检测(iFIT/IOAM)同样是我特别看重的能力。SRv6报文里的SID列表本身就携带了路径信息,不需要额外建立流表,就能对每条关键流的逐跳时延、逐跳丢包做测量。我在一个跨3个机房、距离超过100公里的推理集群项目中,就是用SRv6 iFIT在几分钟内找到了一个间歇性拥塞的中间节点——换在VxLAN环境里,这种问题往往要折腾大半天。
4. 实操:基于H3C设备的SRv6 TE Policy实验验证
4.1 实验组网与目标
理论讲再多,不如跑一个实验。下面这套实验我在H3C设备环境里验证过,命令行以较新的Comware版本为准,不同版本命名可能稍有差异,但总体思路一致。实验拓扑建议用一个简化Spine-Leaf结构:两台Spine、一台Leaf(接入GPU服务器),再加一台CE终端模拟业务源端,组成一个最小闭环。
实验要达到三个目标:第一,验证SRv6基础SID通告机制,让全网设备通过IS-IS学到彼此的Locator;第二,配置一条SRv6 TE Policy,显式指定流量从Leaf-A经Spine-1到达远端,并在Spine-1故障后切换到Spine-2备用路径;第三,用ping或业务报文的traceroute结果验证流量确实按SID列表指定的路径转发。
4.2 关键配置流程与代码
第一步先给所有设备配置IPv6地址,并在相关接口上启用IPv6转发。SRv6必须在IPv6基础之上运行,因此每个设备的Loopback推荐使用独立的IPv6地址段。
第二步开启SRv6能力并配置Locator。以Leaf-A为例:
segment-routing ipv6 locator AI-LOCATOR ipv6-prefix 2001:db8:1:1::/64 static 32 opcode end 1这个配置的含义是:创建一个名为AI-LOCATOR的SRv6 Locator,IPv6前缀为2001:db8:1:1::/64,其中静态分配32位作为Function和Args空间。opcode end 1定义了一个End SID:该节点的End SID值为2001:db8:1:1:1::,用于报文终结。不同设备使用不同Locator前缀(比如Spine-1用2001:db8:2:1::/64,Spine-2用2001:db8:3:1::/64),全网形成唯一SID空间。
第三步配置IS-IS for SRv6,让SID信息自动扩散:
isis 1 is-level level-2 cost-style wide address-family ipv6 segment-routing ipv6 locator AI-LOCATOR在IS-IS地址族下关联Locator后,每台设备都会把本机Locator作为IPv6前缀路由通告到全网,其他设备就知道去往某个Locator应该怎么走。
第四步配置SRv6 TE Policy。在头端Leaf-A上创建一条从本机到远端CE2所在Leaf-B的TE Policy,SID列表指定为“Spine-1的End.X SID + Leaf-B的End.DT4 SID”,同时在Policy下配置候选路径:
segment-routing ipv6 traffic-policy policy TE-POLICY-1 default color 10 binding-sid 100 explicit segment-list list1 index 10 sid 2001:db8:2:1:1:ff:: // Spine-1的End.X SID index 20 sid 2001:db8:5:1:1:: // Leaf-B的End.DT4 SID path-sid-list index 10 sid 2001:db8:2:1:1:ff:: index 20 sid 2001:db8:5:1:1::第五步做流量引流。把需要走TE Policy的流引入到该Policy上,常用的方式是通过静态路由或BGP Color community控制。比如用一张静态路由指向TE Policy的Binding SID,让目标网段的流量自动进入SRv6隧道。
4.3 验证方法与结果分析
配置完成后,先用display命令确认SRv6 SID的通告和TE Policy建立状态:
display segment-routing ipv6 locator display segment-routing ipv6 te policy detailed然后在一台CE上ping对端业务IP,再traceroute。如果路径符合预期,你会看到每一跳显示的都是SID列表中对应的设备地址,而不是像传统网络那样只显示一个出口IP。当手工关闭Spine-1的关键接口、模拟故障后,再次traceroute,路径应自动切换到Spine-2,业务只有极短暂的丢包。
这个实验跑下来的感受是:SRv6 TE Policy的关键不在于配置多复杂,而在于设计SID列表时要想清楚路径意图。SID顺序稍微写错,流量就会绕路甚至不通。我第一次实验时把End.X SID放到倒数第二位,结果报文倒数第二跳就终止了,查了半天回头才发现是路径语义理解的问题。
5. 常见问题与选型建议:别急着“二选一”
5.1 关键问题速查表
下面这张表我是在多个项目里总结出来的,帮助在不同规模、不同需求下做技术选型对比。
| 对比维度 | VxLAN+EVPN | SRv6 |
|---|---|---|
| 控制平面 | BGP EVPN,学习MAC/路由 | IS-IS/OSPFv3扩散SID,无额外信令 |
| 路径控制 | 依赖ECMP哈希,不可精确编程 | SRv6 TE Policy,可显式指定路径 |
| 网络切片 | 不支持孤立切片,依赖外部QoS | 原生支持网络切片,资源隔离强 |
| 随流检测 | 隧道封装后较难逐跳跟踪 | 天然携带路径信息,配合iFIT友好 |
| 设备生态 | 几乎所有厂商成熟支持 | 需确认设备型号和版本支持度 |
| 运维门槛 | BGP/大二层运维经验丰富 | 需要理解SRv6 SID、Policy和IPv6 |
| 适用规模 | 千卡级及以下的稳妥之选 | 万卡级、多租户云化、精细化运维场景 |
实际排查中我遇到过并把常见问题整理成速查表,按优先级排查:
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 流量未进入SRv6 TE Policy | 引流路由未匹配或Color不匹配 | 查看Policy命中计数,检查路由/Color配置 |
| SID不通 | Locator前缀没有全网通告 | display sr ipv6 locator,检查IS-IS邻居和LSDB |
| PFC风暴导致网络拥塞 | 链路质量问题触发暂停帧扩散 | 查看各口PFC计数,优先排查光模块和链路误码 |
| TE Policy切换慢 | 备用路径未预置,依赖重新计算 | 配置Hot-Standby候选路径,缩短故障切换时间 |
5.2 我的选型建议与落地心得
先把结论放在这里:SRv6不是用来“取代”VxLAN的,而是在更极致的场景下提供一个更合适的工具。千卡级以下的AI集群,VxLAN+EVPN依然是稳定成熟的选择,没必要为新技术增加复杂度。但当集群规模进入万卡、多租户混合部署、运维团队对路径可控性和可观测性有强需求时,SRv6的价值会越来越明显。
我特别建议走渐进式演进的路子,而不是一步到位推翻重来。在现有VxLAN网络中,underlay开启SRv6能力,利用SRv6做underlay的路径调度;业务访问层面继续用VxLAN的overlay,保持业务逻辑不变。这样既能借力SRv6的路径控制能力,又不需要把整个控制器和业务编排推倒重来。等团队积累了足够的SRv6运维经验,再逐步把关键AI业务流切换到SRv6承载。
再分享一个落地时的细节:SRv6对IPv6地址规划的要求比传统IPv4网络高得多,SID空间要预留充足,建议按区域、按设备角色规划Locator段,留出足够余量。我见过一个项目因为Locator规划太节省,后期扩展时不得不全网改地址,教训深刻。另外,SRv6会引入额外的SRH头开销,虽然现代芯片都能处理,但小包多流场景下还是要关注转发性能是否满足预期,不能只看线卡标称的吞吐。
结尾
做了这么多年网络,我的体会是技术没有绝对的优劣,只有适不适合。VxLAN解决了大二层的扩展问题,SRv6则把路径选择权重新交还给业务。AI算力集群的崛起把网络的竞争从“能不能通”推向“能不能快、能不能稳、能不能被看见”,这正是SRv6真正发力的地方。如果你正在规划新的智算中心网络,或者为一个已经出现性能瓶颈的集群做优化,建议先把集群规模、流量模型、运维能力这三个变量想清楚,再决定用哪套方案。跑通一个SRv6 TE Policy实验花不了多少时间,但它带给你的思考可能远超这次实验本身。