图木舒克市网站建设_网站建设公司_前端工程师_seo优化
2026/1/16 9:02:42 网站建设 项目流程

InfiniBand通过链路层流控与QoS机制,确保了数据的“零丢包”可靠传输。

流量控制:平衡数据传输速率,避免多数据同时发送收端缓冲区溢出。

QoS机制:进一步保证了网络服务的整体质量,根据数据流的不同需求来分配和管理网络资源。

流量控制与信用机制

InfiniBand流量控制主要通过信用机制来实现。(Credit-based流控)

每个虚拟通道(VL)都配备了一定数量的信用(Credit),这些信用代表了目的地缓冲区中可用的缓冲单元数量。

在发送数据之前,发送方必须确保拥有足够的信用(代表接收方有足够的数据存储空间)。发送方和接收方通过不断的交换信用,来控制数据的发送速度。

接收方会处理接收到的数据包后释放缓冲区空间,将释放的空间以信用更新的形式发送回发送方。发送方在收到更新后,会更新其信用计数,从而继续发送更多数据。

端到端的信用管理

这种基于信用的流控机制具有端到端的特点,意味着发送方和接收方直接进行信用的交换和管理,无需经过交换机或路由器。这种方式不仅减少了延迟,还提高了流量控制的精确度。它确保了发送方不会发送超过接收方处理能力的数据量,从而有效防止了因缓冲区溢出导致的拥塞和数据丢失。


对比项

InfiniBand

RoCEv2

流控机制

基于Credit的流控机制

PFC/ECN,DCQCN等

转发模式

基于Local ID转发

基于IP转发

负载均衡模式

逐包的自适应路由

ECMP方式路由、基于包(Packet based)、基于流片(Flowlet)、基于遥测的路由

故障恢复

Self-Healing Interconnect Enhancement for Intelligent Datacenters

路由收敛

网络配置

通过UFM实现零配置(按端口收费)

手工配置、或基于开放网络技术实现的 EasyRoCE

QoS与队列机制

基于队列和标签机制。这些机制类似于现实生活中的景区或游乐场在游客众多时的排队管理。

例如,热门景点可能会设立不同的队伍来组织游客,这些队伍可以类比为网络中的队列。每支队伍都有其特定的优先级,如VIP通道的快速通行权,这就像网络中为某些数据包提供的高优先级服务。

InfiniBand(IB)中的QoS机制也利用了类似的原理。IB的流控依赖于两个核心概念:

服务级别(Service Level,SLs)和数据包的标签,以及虚拟通道(Virtual Lanes,VLs)和虚拟队列。

在IB中,物理链路被划分为多个虚拟通道,每个虚拟通道都享有独立的缓冲和流量控制。这些虚拟通道共享物理链路的带宽。

到VL14为止,这些VL被称为数据VL,每个端口都必须至少支持一个这样的数据VL。在实际操作中,端口所采用的具体数据VLs是由SM根据数据包中的服务级别(Service Level,即SL字段)进行配置的。在默认情况下,系统会采用VL进行配置。在实际进行流量控制时,为了确定端口所采用的具体数据VLs,需要预先配置一个SL到VL的映射表。这个映射表将服务级别(SL字段)与相应的数据VLs进行对应,从而指导SM根据数据包中的服务级别进行正确的配置。

▍ 实际应用与配置

当链路两端的端口所支持的数据VL数量不一致时,数量较多的端口会自动调整为与数量较少的端口相匹配。这意味着,如果某个端口仅支持单一的数据VL,那么所有经过该端口的数据流量都将被默认为该VL。

https://cloud.tencent.com/developer/article/2514486 《IB vs RoCE:梳理AI智算网络的负载均衡与流控方案》

查看 Infiniband 是否因为信用导致流控

ibqueryerrors -r 或 perfquery -x -C mlx5_2 -P 1 显示大量 PortXmitWait,说明确实在等信用

# ibqueryerrors -r …… Errors for "node015 mlx5_9" GUID 0x5c25730300a9a645 port 1: [PortXmitWait == 2923196624 (2.722G)] Link info: 948 1[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0xfc6a1c030065c1c0 43 15[ ] "SW400-TOR-8" ( ) Errors for "node009 mlx5_9" GUID 0x5c25730300a9a1d5 port 1: [PortXmitWait == 824543537 (786.346M)] Link info: 1030 1[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0xfc6a1c030065c1c0 43 9[ ] "SW400-TOR-8" ( ) Errors for "node038 mlx5_8" GUID 0x5c25730300a98e34 port 1: [PortXmitWait == 57 (57.000)] Link info: 251 1[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0xfc6a1c03007d2c80 36 38[ ] "SW400-TOR-7" ( ) Errors for "node037 mlx5_8" GUID 0x5c25730300ab58e4 port 1: [PortXmitWait == 20 (20.000)] Link info: 258 1[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0xfc6a1c03007d2c80 36 37[ ] "SW400-TOR-7" ( ) Errors for "node015 mlx5_8" GUID 0x5c25730300a9a644 port 1: [PortXmitWait == 2893218194 (2.695G)] Link info: 942 1[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0xfc6a1c03007d2c80 36 15[ ] "SW400-TOR-7" ( ) Errors for "node009 mlx5_8" GUID 0x5c25730300a9a1d4 port 1: [PortXmitWait == 820423440 (782.417M)] Link info: 1025 1[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0xfc6a1c03007d2c80 36 9[ ] "SW400-TOR-7" ( ) …… GUID 0x5c25730300a99ce5 port 1: [PortXmitWait == 11 (11.000)] Link info: 78 1[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0xfc6a1c030051fa40 34 37[ ] "SW400-TOR-4" ( ) Errors for "node015 mlx5_5" GUID 0x5c25730300ab2775 port 1: [PortXmitWait == 2893003857 (2.694G)] Link info: 982 1[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0xfc6a1c030051fa40 34 15[ ] "SW400-TOR-4" ( ) Errors for "node009 mlx5_5" GUID 0x5c25730300ab34e5 port 1: [PortXmitWait == 862826112 (822.855M)] Link info: 1038 1[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0xfc6a1c030051fa40 34 9[ ] "SW400-TOR-4" ( ) Errors for 0xfc6a1c030065c1c0 "SW400-TOR-8" GUID 0xfc6a1c030065c1c0 port ALL: [PortXmitWait == 4890406570 (4.555G)] GUID 0xfc6a1c030065c1c0 port 9: [PortXmitWait == 3685101813 (3.432G)] Link info: 43 9[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a9a1d5 1030 1[ ] "node009 mlx5_9" ( ) GUID 0xfc6a1c030065c1c0 port 15: [PortXmitWait == 1205116670 (1.122G)] Link info: 43 15[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a9a645 948 1[ ] "node015 mlx5_9" ( ) GUID 0xfc6a1c030065c1c0 port 38: [PortXmitWait == 188087 (183.679K)] Link info: 43 38[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a98e35 61 1[ ] "node038 mlx5_9" ( ) Errors for 0xfc6a1c03007d2c80 "SW400-TOR-7" GUID 0xfc6a1c03007d2c80 port ALL: [PortXmitWait == 4848892289 (4.516G)] GUID 0xfc6a1c03007d2c80 port 9: [PortXmitWait == 3650461351 (3.400G)] Link info: 36 9[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a9a1d4 1025 1[ ] "node009 mlx5_8" ( ) GUID 0xfc6a1c03007d2c80 port 15: [PortXmitWait == 1198430938 (1.116G)] Link info: 36 15[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a9a644 942 1[ ] "node015 mlx5_8" ( ) Errors for 0xfc6a1c030051df00 "SW400-TOR-6" GUID 0xfc6a1c030051df00 port ALL: [PortXmitWait == 4828572039 (4.497G)] GUID 0xfc6a1c030051df00 port 9: [PortXmitWait == 3540886084 (3.298G)] Link info: 5 9[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a9a625 927 1[ ] "node009 mlx5_7" ( ) GUID 0xfc6a1c030051df00 port 15: [PortXmitWait == 1287274902 (1.199G)] Link info: 5 15[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a99145 947 1[ ] "node015 mlx5_7" ( ) GUID 0xfc6a1c030051df00 port 38: [PortXmitWait == 411053 (401.419K)] Link info: 5 38[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a99d05 16 1[ ] "node038 mlx5_7" ( ) Errors for 0xfc6a1c03007d2b80 "SW400-TOR-5" GUID 0xfc6a1c03007d2b80 port ALL: [PortXmitWait == 4780017776 (4.452G)] GUID 0xfc6a1c03007d2b80 port 9: [PortXmitWait == 3501736848 (3.261G)] Link info: 35 9[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a9a624 923 1[ ] "node009 mlx5_6" ( ) GUID 0xfc6a1c03007d2b80 port 15: [PortXmitWait == 1277877612 (1.190G)] Link info: 35 15[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a99144 941 1[ ] "node015 mlx5_6" ( ) GUID 0xfc6a1c03007d2b80 port 38: [PortXmitWait == 403316 (393.863K)] Link info: 35 38[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a99d04 226 1[ ] "node038 mlx5_6" ( ) Errors for 0xfc6a1c030051f740 "SW400-TOR-2" GUID 0xfc6a1c030051f740 port ALL: [PortXmitWait == 4655067678 (4.335G)] GUID 0xfc6a1c030051f740 port 9: [PortXmitWait == 3320220329 (3.092G)] Link info: 33 9[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300ab4d25 926 1[ ] "node009 mlx5_3" ( ) GUID 0xfc6a1c030051f740 port 15: [PortXmitWait == 1334622416 (1.243G)] Link info: 33 15[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a90de1 1034 1[ ] "node015 mlx5_3" ( ) GUID 0xfc6a1c030051f740 port 38: [PortXmitWait == 224933 (219.661K)] Link info: 33 38[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300ab5875 105 1[ ] "node038 mlx5_3" ( ) Errors for 0xfc6a1c0300673ac0 "SW400-TOR-3" GUID 0xfc6a1c0300673ac0 port ALL: [PortXmitWait == 4583142690 (4.268G)] GUID 0xfc6a1c0300673ac0 port 9: [PortXmitWait == 3283514755 (3.058G)] Link info: 41 9[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300ab4d24 922 1[ ] "node009 mlx5_2" ( ) GUID 0xfc6a1c0300673ac0 port 15: [PortXmitWait == 1299415413 (1.210G)] Link info: 41 15[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300a90de0 1032 1[ ] "node015 mlx5_2" ( ) GUID 0xfc6a1c0300673ac0 port 38: [PortXmitWait == 212522 (207.541K)] Link info: 41 38[ ] ==( 2X 106.25 Gbps Active/ LinkUp)==> 0x5c25730300ab5874 102 1[ ] "node038 mlx5_2" ( ) …… ## Summary: 1000 nodes checked, 39 bad nodes found ## 4072 ports checked, 54 ports have errors beyond threshold ## Thresholds: ## Suppressed:
perfquery -x -C mlx5_2 -P 1 PortXmitWait:....................1486935593 for i in {2..9}; do echo "---------------mlx5_${i}";perfquery -x -C mlx5_${i} -P 1 | egrep 'PortXmitWait|PortXmitData|PortRcvData'; done ---------------mlx5_2 PortXmitData:....................90137131488 PortRcvData:.....................89888808929 PortXmitWait:....................1486935593 ---------------mlx5_3 PortXmitData:....................89893437918 PortRcvData:.....................90096544197 PortXmitWait:....................1512259612 ---------------mlx5_4 PortXmitData:....................89955631371 PortRcvData:.....................90098107749 PortXmitWait:....................1706952948 ---------------mlx5_5 PortXmitData:....................89885104074 PortRcvData:.....................89939491989 PortXmitWait:....................1696893484 ---------------mlx5_6 PortXmitData:....................90056184567 PortRcvData:.....................90132109425 PortXmitWait:....................1656484913 ---------------mlx5_7 PortXmitData:....................90122008279 PortRcvData:.....................90069523945 PortXmitWait:....................1679978773 ---------------mlx5_8 PortXmitData:....................90182735281 PortRcvData:.....................89936912915 PortXmitWait:....................1670730632 ---------------mlx5_9 PortXmitData:....................90113134427 PortRcvData:.....................89952679362 PortXmitWait:....................1694130753 用 ibqueryerrors 做“窗口计数”: 第一步清零数据计数(需要容器 root,注意会清全网该类计数): ibqueryerrors --clear-counts 等待 10–30 秒,期间跑你的业务/压力,随后: ibqueryerrors --counters -r(显示端口链路信息+数据计数) 如果还是只出 Summary,说明窗口内仍未超阈值;可换 perfquery 直接看数值或自定义阈值文件 --threshold-file。 连续采样定位波动: for i in {1..10}; do perfquery -x -C mlx5_2 -P 1 | egrep 'PortXmitWait|PortXmitData|PortRcvData'; sleep 1; done

InfiniBand是信用/背压驱动的,无论在链路层还是端到端的RC协议层,一旦“信用”不足,发送方就会停下来等。

  • 链路层信用(LLFC)
    • 交换机出端口缓冲接近满时,会向上游回流背压,上一跳端口“PortXmitWait”累加,发送暂停;拥塞在多跳上游传播后,会形成周期性“赶上/阻塞”,吞吐呈锯齿。
  • RC 端到端信用(RNR)
    • 对端接收队列(RQ/SRQ)没有可用WQE时,接收端会回RNR NAK,发送端按RNR定时器退避重试。这会造成明显的停顿抖动。
  • 拥塞控制(IB CC)
    • 若启用CC,链路/交换机打标后HCA按表降速-恢复,吞吐自然呈“涨落”。

怎么确认是信用/突发导致的波动

  • 查看端口计数器是否因背压而等待
    • perfquery -x -C mlx5_2 -P 1 关注 PortXmitWait/PortRcvData/PortXmitData;PortXmitWait爬升且与吞吐低谷同周期,基本就是信用不足。
    • ibqueryerrors -r 看是否有 Congestion/FECN/BECN/Wait 指标(不同代际计数名略有差异)。
  • 路由路径是否容易产生汇聚
    • ibtracert <src_lid> <dst_lid> 确认多源是否在某 TOR/AGG 上汇聚到同一出端口。

能做的缓解(不改网内配置的前提下)

  • 保证接收端“端到端信用”充足
    • 调大库管理的接收队列和WQ深度。你在 dushmem 里已设 NVSHMEM_QP_DEPTH=1024,继续确保 SRQ/RQ 深度足够(库侧/配置项)。
  • 降低发送“突发度”,平滑注入
    • 在 DeepEP 里调小 rdma_chunk_size 或增大 num_max_rdma_chunked_recv_tokens(对应更大的 RDMA 缓冲),让发送更“细水长流”。测试脚本自带tuner,可以对比波动。
    • 适当减少 NVSHMEM_IBGDA_NUM_RC_PER_PE(你现在 30),在多PE并发写同一目标时过多RC会放大incast。
  • 避免热点路径/端口
    • 如可行,使用 DEEP_EP_DEVICE_TO_HCA_MAPPING 做更均匀的NIC绑定,减少单交换机单出端口的汇聚。
  • 与网管侧配合(需要管理员)
    • 启用/调优IB拥塞控制(标记阈值/速率表)、合理VL映射与缓冲;这是抑制全网“波峰波谷”的根治手段。

总之:信用不足会直接触发发送暂停,突发负载在交换机上形成背压树,典型表现就是 PortXmitWait 拉高、吞吐抖动。先用上面的 perfquery/ibqueryerrors 做一次事件窗口内的对比抓取,如果需要我可以在 node013/node015 上按你的目标端口跑一轮并把计数器前后差值贴出来。

IB 流控: 拥塞控制+基于信用的流控(Credit-Based Flow Control)

二、IB 拥塞控制的核心逻辑:一套 “感知 - 反馈 - 调节” 的闭环系统

IB 的拥塞控制并非单一技术,而是一套覆盖 “交换机 - 终端 - 传输链路” 的端到端闭环系统。其核心思想是:在数据包即将引发拥塞时,通过交换机主动标记并反馈给发送端,由发送端动态降低发送速率,从 “源头减少流量”,而非等到丢包后再被动补救。这套系统的工作流程可拆解为五个关键步骤,环环相扣形成完整调控链路。

2.1 拥塞检测:交换机的 “流量水位监控”

IB 交换机是拥塞控制的 “前端哨兵”,其核心任务是实时监控每个端口的 “流量水位”,在拥塞发生前发出预警。具体而言,每个 IB 交换机端口都配置了 “拥塞阈值”(Congestion Threshold)—— “流量水位”,这一阈值通常设置为端口缓冲区容量的 70%-80%。当某一出口端口的缓冲区已用容量超过预设阈值时,交换机判定该端口 “即将发生拥塞”;若已用容量持续上升至 “溢出阈值”(如 95%),则判定 “已发生轻度拥塞”。

若链路利用率仅为 60%,但缓冲区水位已达 85%,则表明存在 “局部流量集中”,需立即启动调控。

2.2 拥塞标记:不丢包的 “流量警示灯”

当交换机检测到拥塞风险时“拥塞标记”:交换机在向前转发数据包时,会在 IB 传输层头部(Transport Header)的 “拥塞通知位”(Congestion Notification Bit, CN Bit)设置为 “1”,为数据包打上 “拥塞警示” 的标签;同时,交换机会基于该数据包的源地址、目标地址、服务级别(SL)等信息,生成一个 “拥塞通知包”(Congestion Notification Packet, CNP)。

CNP 是拥塞控制的 “反馈信使”,其内容包含 “引发拥塞的数据流标识”(如源 GID、目标 GID、QP 号)、“拥塞端口信息” 等关键数据。与普通数据包不同,CNP 会被交换机优先转发,通过 “最短路径” 快速回传至引发拥塞的发送端 HCA。

2.3 拥塞反应:HCA 的 “信号接收与解析”

发送端的 IB HCA 是拥塞控制的 “执行中枢”。当 HCA 收到 CNP 后,会立即解析包中包含的 “数据流标识”,定位到引发拥塞的具体通信流 —— 例如,某一 QP(队列对)正在向目标节点的 QP 发送数据,该数据流触发了拥塞。

HCA 拥塞控制引擎会查询本地 “数据流 - 速率映射表”,找到对应数据流当前的发送速率,并标记该数据流为 “需降速状态”。(全程由硬件完成,速度比软件快很多)

2.4 速率调节:发送端的 “精准降速与试探恢复”

HCA 会根据预设的拥塞控制算法,对被标记降速的数据流的发送速率进行动态调节 —— 这一步是拥塞控制的核心,既要快速缓解拥塞,又要避免过度降速导致带宽浪费。

IB 支持多种拥塞控制算法,其中最常用的是 “基于速率的比例降速算法”(Rate-Based Proportional Decrease),其调节逻辑分为 “降速” 与 “恢复” 两个阶段。

在 “降速阶段”,HCA 会将该数据流的当前发送速率降低一个固定比例(通常为 20%-30%)。同时,HCA 会暂停该数据流的 “速率增长机制”(如 TCP 的慢启动),确保速率稳定在降速后的水平,给交换机缓冲区留出 “排空时间”。

在 “恢复阶段”,若 HCA 在预设时间内(如 10 微秒)未收到针对该数据流的新 CNP,说明拥塞已缓解,此时会启动 “试探性提速”:每次将速率提高 5%-10%,并持续监听 CNP。若提速后收到新 CNP,则立即停止提速并再次降速;若未收到,则继续缓慢提速,直至恢复到降速前的速率或达到链路带宽上限。这种 “试探性恢复” 避免了 “速率骤升导致拥塞反复” 的问题,实现 “平稳恢复带宽利用率” 的目标。

2.5 全局协同:多数据流的 “差异化调控”

在实际场景中,一个 HCA 可能同时管理数十个数据流,其中仅有部分数据流引发拥塞。IB 的拥塞控制机制支持 “差异化调控”:仅对引发拥塞的数据流降速,其他正常数据流保持原速率不变。这种设计的优势在于避免 “一刀切” 的粗放调控 —— 例如,某 HCA 同时传输 “AI 梯度流”(引发拥塞)与 “HPC 计算流”(正常传输),仅对梯度流降速至 160Gbps,计算流仍保持 200Gbps,确保未拥塞的业务不受影响。

为实现这种差异化,HCA 会为每个数据流维护独立的 “速率控制上下文”,记录该数据流的当前速率、拥塞标记、恢复时间等信息。拥塞控制引擎通过 “上下文索引” 快速定位目标数据流,确保调控仅作用于特定流,不干扰其他业务。这种精细化管理,让 IB 在多业务混合负载场景下仍能保持高效性能 —— 例如,在同时运行 AI 训练与科学计算的混合集群中,IB 的拥塞控制可确保两类业务的吞吐量损失均控制在 5% 以内。

三、关键组件:拥塞控制的 “技术基石”

IB 的拥塞控制机制能高效运行,离不开两个关键技术组件的支撑:显式拥塞通知(ECN)与基于信用的流控(Credit-Based Flow Control)。这两个组件分别在 “传输层” 与 “链路层” 发挥作用,相辅相成构建起 IB 的 “无丢包” 网络基础。

3.1 显式拥塞通知(ECN):拥塞控制的 “语言桥梁”

ECN 并非 IB 专属技术,但在 IB 中被赋予了更精准的定义与实现。在 IB 的传输层协议中,ECN 通过 “CN Bit” 与 “CNP” 共同构成 “拥塞通知语言”:CN Bit 是数据包上的 “警示标签”,告知接收端 “该数据包经过拥塞链路”;CNP 则是交换机向发送端发送的 “正式通知”,明确指出 “哪条数据流引发了拥塞”。

与传统以太网的 ECN 相比,IB 的 ECN 有两个关键优势:

一是 “双向通知”—— 既向接收端标记数据包(帮助接收端了解网络状态),又向发送端发送 CNP(触发速率调节),形成更完整的反馈链路;

二是 “精准定位”——CNP 中包含详细的数据流标识,确保发送端能精准定位到引发拥塞的流,而非对所有流 “盲目降速”。这种精准性,是 IB 能在多流场景下实现差异化调控的核心前提。

3.2 基于信用的流控:链路层的 “预防性保护”

拥塞控制是 “传输层的反应式调控”, IB 链路层的 “基于信用的流控”(Credit-Based Flow Control)就是 “预防性保护”,两者共同确保 IB 网络的 “无丢包” 特性。

其核心逻辑是:接收端向发送端实时反馈 “当前空闲缓冲区容量(信用值,Credit)”,发送端仅在 “信用值 > 0” 时才发送数据包,从源头避免链路层的数据包丢失。

具体而言,在 IB 链路初始化时,接收端会向发送端发送 “初始信用值”(如 100,代表可接收 100 个数据包);发送端每发送一个数据包,就将本地记录的 “可用信用值” 减 1;当接收端处理完一个数据包、释放缓冲区后,会向发送端发送 “信用更新包”,将可用信用值加 1。通过这种 “实时信用同步”,发送端始终知道接收端的缓冲区状态,不会发送超出接收能力的数据包。

这种流控机制与拥塞控制形成互补:

基于信用的流控解决 “链路层点对点的数据包堆积”,避免局部链路丢包;

拥塞控制解决 “子网级多流汇聚的拥塞”,避免全局性能崩溃。

例如,在 “多对一” 通信场景中,基于信用的流控确保每个发送端不会向目标端口发送超出其单链路处理能力的数据包,而拥塞控制则进一步调节多发送端的总流量,避免目标端口的缓冲区溢出 —— 两者结合,构建起 IB 网络 “无丢包、低延迟” 的双重保障。

四、总结:从 “被动应对” 到 “主动驾驭” 的性能飞跃

IB 的拥塞控制机制,本质是一场从 “被动丢包补救” 到 “主动流量驾驭” 的技术革新。它通过交换机的 “早期检测”、“精准标记”,HCA 的 “快速反应”、“动态调节”,以及 ECN 与信用流控的协同支撑,构建起一套覆盖 “端 - 网 - 端” 的精细化闭环系统。这套系统的价值,在高性能场景中体现得淋漓尽致:

在 AI 训练集群中,它能让 All-Reduce 操作的吞吐量保持在理论带宽的 90% 以上,延迟波动控制在 1 微秒以内,确保数千块 GPU 的协同训练高效稳定;在 HPC 场景中,它能支撑数万节点的大规模并行计算,即使在 “多对一” 聚合通信时,也不会出现传统网络的 “拥塞崩溃”,让气象模拟、分子动力学等计算任务的效率提升 30% 以上。

对比传统以太网:以太网需依赖 DCQCN(数据中心量化拥塞通知)等附加技术才能实现类似的拥塞控制,且受限于 “尽力而为” 的底层设计,难以达到 IB 的精准度与响应速度;而 IB 的拥塞控制是 “原生设计”,从协议栈底层就融入了 “无丢包、低延迟” 的基因,无需额外技术补丁即可满足高性能场景的需求。

原文链接:https://blog.csdn.net/apple_53311083/article/details/152377863

https://blog.csdn.net/apple_53311083/article/details/152372997?sharetype=blogdetail&sharerId=152372997&sharerefer=PC&sharesource=apple_53311083&spm=1011.2480.3001.8118

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询