合理使用光互联产品减少万卡集群高性能网络中TOR交换机上行网络的ECMP哈希冲突

简介: 本文通过分析万卡集群高性能网络TOR层的ECMP哈希冲突,介绍如何通过使用有源光缆AOC和无源铜缆DAC分支线缆产品来减少ECMP哈希冲突的方法。

合理使用光互联产品减少万卡集群高性能网络中TOR交换机上行网络的ECMP哈希冲突

 

众所周知,万卡集群需要高性能网络进行数据的大容量快速的交换数据。但是,数据流从服务器A传输到服务器B往往可以有多个网络路径可以选择,一旦所有数据流选择同一条网络路径进行传输时,就会造成该路径网络的拥堵。于是业界使用一种ECMP的方法,通过哈希运算(这里不做深究,简单点理解就是一种网络路径选择策略)进行数据流的网络路径选择,从而均衡所有网络路径的数据流。但是在大容量的高速数据流量的情况下,哈希算法还是有可能将多条数据流安排在同一网络路径中传输,这种现象称之为哈希冲突。

本文通过分析万卡集群高性能网络TOR层的ECMP哈希冲突,介绍如何通过使用有源光缆AOC和无源铜缆DAC分支线缆产品来减少ECMP哈希冲突的方法。

1.ECMPEqual-Cost Multi-Path Routing)等价多路径路由

未开启ECMP时,无法充分利用路径资源。如图1所示,假设有数据流从服务器A到服务器C,有数据流从服务器B到服务器D。交换机每次都会选择TOR1-LEAF1-TOR2转发数据流。除非此条路径发生拥塞,才会重新选择路径。

image.png

1

开启ECMP,便可同时利用多条路径,通过哈希运算进行负载均衡,服务器A到服务器C数据流选择橘色路径,服务器B到服务器D的数据流选择红色路径,如图2所示。

image.png

2

2.哈希冲突

本文开头已经介绍了什么是哈希冲突,下面我们一起来分析TOR层在什么情况下会出现哈希冲突。假设我们TOR层使用64口交换机,端口带宽400G,上下行11进行互联。服务器使用8400G网卡与TOR交换机互联。此时,服务器网卡端口带宽和TOR交换机端口带宽比11

TOR层的哈希冲突,主要是TOR交换机的上行传输数据流时概率性冲突。

如果服务器A需要发送400G数量流给服务器C,首先发送给TOR1TOR1将流量转发给 LEAF 层时,会根据哈希运算去随机选择LEAF1LEAF2。与此同时,服务器 B如果也需要服务器D进行通信,它也会把400G数量流发送给TOR1。此时,TOR1也会根据哈希运算来选择把流量转发给LEAF1或者 LEAF 2。如果双方都哈希到了TOR1LEAF 1这条链路,TOR1LEAF2这条链路相对空闲,如图3所示。此时,由于TOR端口最大带宽只有400G,不可能同时将服务器A和服务器 B共计2*400G=800G的数量流上行传输到LEAR1交换机上,导致实际上AB只有200G的网络带宽,如图4所示。所以,如果2个数据流都哈希到了TOR1LEAF 1这条链路,就会在TOR1的上行传输方向就会产生哈希冲突。

image.png

3

image.png

4

由于这种现象是由于哈希运算导致的,因此不论是IB还是以太网RoCE都面临着这种概率可能性。

image.png

5 英伟达在2023云网智联大会上介绍IB的负载均衡问题

3.如何避免哈希冲突

如果我们对假设的案例进行修改,服务器网卡端口带宽和TOR交换机端口带宽比修改为12,即TOR交换机端口带宽为400G,服务器网卡带宽为200G,让2张网卡端口和1个交换机端口连接,同一的传输方案中,服务器AB上行到TOR交换机共计2*200G=400G的数据流,如果通过TOR交换机哈希运算选择同一网络路径上行,使用400G的端口进行上行传输,此时也可以正常传输。如图6所示。

image.png

6

基于修改后的案例,TOR交换机单个端口可以连接2张网卡,下行总共32个端口,意味着单个TOR交换机可以连接的服务器数量最多为32*2=64个。在大模型训练过程中将训练任务安排在同一TOR网络架构内的服务器,也可以减少哈希冲突的概率。

4.合理选择大成鹏通信有源光缆AOC和无源铜缆DAC产品

在未修改的案例中,服务器网卡端口带宽和TOR交换机端口带宽比11,皆为400G。此时使用的互联产品可以选择传统的光模块,或者有源光缆AOC和无源铜缆DAC线缆产品。在以太网中,两端均使用400G QSFP-DD400G QSFP112或者400G OSFP的封装模式,需要根据两端设备端口类型决定;在IB网络中,两端均使用400G OSFP的封装模式,OSFPIB指定封装。

产品形态

交换机端口

连接线

网卡端口

光模块

400G QSFP-DD 光模块

MPO跳线

400G QSFP-DD 光模块

光模块

400G QSFP112 光模块

MPO跳线

400G QSFP112 光模块

光模块

400G OSFP 光模块

MPO跳线

400G OSFP 光模块

有源光缆AOC

400G QSFP-DD 封装

固定长度光缆

400G QSFP-DD封装

有源光缆AOC

400G QSFP112封装

固定长度光缆

400G QSFP112封装

有源光缆AOC

400G OSFP封装

固定长度光缆

400G OSFP封装

无源铜缆DAC

400G QSFP-DD 封装

固定长度铜缆

400G QSFP-DD封装

无源铜缆DAC

400G QSFP112封装

固定长度铜缆

400G QSFP112封装

无源铜缆DAC

400G OSFP封装

固定长度铜缆

400G OSFP封装

在修改后的案例中,需要将2张网卡端口和1个交换机端口连接,使用的互联产品有源光缆AOC和无源铜缆DAC分支线缆产品。此时,在以太网中,交换机端使用400G QSFP-DD400G QSFP112或者400G OSFP的封装模式,网卡端使用200G QSFP56封装或者200G QSFP-DD封装,需要根据两端设备端口类型决定;在IB网络中,交换机端使用400G OSFP的封装模式,网卡端使用200G QSFP56封装模式,OSFPQSFP56IB指定封装。

产品形态

交换机端口

连接线

网卡端口

有源光缆AOC

400G QSFP-DD 封装

固定长度光缆

端口1200G QSFP-DD封装

端口2200G QSFP-DD封装

有源光缆AOC

400G QSFP112封装

固定长度光缆

端口1200G QSFP56封装

端口2200G QSFP56封装

有源光缆AOC

400G OSFP封装

固定长度光缆

端口1200G QSFP56封装

端口2200G QSFP56封装

无源铜缆DAC

400G QSFP-DD 封装

固定长度铜缆

端口1200G QSFP-DD封装

端口2200G QSFP-DD封装

无源铜缆DAC

400G QSFP112封装

固定长度铜缆

端口1200G QSFP56封装

端口2200G QSFP56封装

无源铜缆DAC

400G OSFP封装

固定长度铜缆

端口1200G QSFP56封装

端口2200G QSFP56封装

5.结语

以上分析的是通过选择大成鹏通信有源光缆AOC和无源铜缆DAC分支线缆产品,来减少万卡集群高性能网络中TOR交换机上行网络的ECMP哈希冲突。在此基础之上,可以提出两个减少哈希冲突的优化方向。一是使用分支线缆进行互联:如图6所示,LEAF层在下行网络中也存在哈希冲突的可能,此时使用分支线缆连接LEAFTOR交换机,比如使用800G分支2*400G的光模块连接方式或者AOC分支线缆(DAC长度不够)进行LEAF-TOR的互联,就可以减少LEAF层下行方向哈希冲突的可能性;二是增加分支数量:比如单个的TOR交换机下,使用400G分支4*100GAOC或者DAC进行互联,这样单个TOR交换机最多可以连接32*4=128个服务器,数量是400G分支2*200G方案可连接服务器数量的2倍,这种方法在LEAF层也同样适用。


 

相关文章
|
3月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
76 2
|
3月前
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
96 1
|
3月前
|
负载均衡 算法 安全
基于Reactor模式的高性能网络库之线程池组件设计篇
EventLoopThreadPool 是 Reactor 模式中实现“一个主线程 + 多个工作线程”的关键组件,用于高效管理多个 EventLoop 并在多核 CPU 上分担高并发 I/O 压力。通过封装 Thread 类和 EventLoopThread,实现线程创建、管理和事件循环的调度,形成线程池结构。每个 EventLoopThread 管理一个子线程与对应的 EventLoop(subloop),主线程(base loop)通过负载均衡算法将任务派发至各 subloop,从而提升系统性能与并发处理能力。
168 3
|
3月前
基于Reactor模式的高性能网络库github地址
https://github.com/zyi30/reactor-net.git
60 0
|
3月前
基于Reactor模型的高性能网络库之Poller(EpollPoller)组件
封装底层 I/O 多路复用机制(如 epoll)的抽象类 Poller,提供统一接口支持多种实现。Poller 是一个抽象基类,定义了 Channel 管理、事件收集等核心功能,并与 EventLoop 绑定。其子类 EPollPoller 实现了基于 epoll 的具体操作,包括事件等待、Channel 更新和删除等。通过工厂方法可创建默认的 Poller 实例,实现多态调用。
218 60
|
1月前
|
安全 网络性能优化 网络虚拟化
网络交换机分类与功能解析
接入交换机(ASW)连接终端设备,提供高密度端口与基础安全策略;二层交换机(LSW)基于MAC地址转发数据,构成局域网基础;汇聚交换机(DSW)聚合流量并实施VLAN路由、QoS等高级策略;核心交换机(CSW)作为网络骨干,具备高性能、高可靠性的高速转发能力;中间交换机(ISW)可指汇聚层设备或刀片服务器内交换模块。典型流量路径为:终端→ASW→DSW/ISW→CSW,分层架构提升网络扩展性与管理效率。(238字)
438 0
|
1月前
|
监控 前端开发 安全
Netty 高性能网络编程框架技术详解与实践指南
本文档全面介绍 Netty 高性能网络编程框架的核心概念、架构设计和实践应用。作为 Java 领域最优秀的 NIO 框架之一,Netty 提供了异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文将深入探讨其 Reactor 模型、ChannelPipeline、编解码器、内存管理等核心机制,帮助开发者构建高性能的网络应用系统。
176 0
|
3月前
|
缓存 索引
基于Reactor模式的高性能网络库之缓冲区Buffer组件
Buffer 类用于处理 Socket I/O 缓存,负责数据读取、写入及内存管理。通过预分配空间和索引优化,减少内存拷贝与系统调用,提高网络通信效率,适用于 Reactor 模型中的异步非阻塞 IO 处理。
130 3
|
2月前
|
网络虚拟化
管理型交换机通过VLAN划分实现不同IP跨网段通信配置方法
管理型交换机应用场景丰富,如果要实现不同IP跨网段通信(比如172.22.106.X和192.168.100.X实现通信),通过VLAN划分是可以满足,下面分享基于弱三层交换机RTL9301方案核心模块SW-24G4F-301EM配置方法!
|
11月前
|
网络协议 安全 网络虚拟化
思科交换机配置命令归纳
【11月更文挑战第8天】本文总结了思科交换机的常见配置命令,包括模式转换、基本配置、查看命令、VLAN 配置、Trunk 配置、以太网通道配置、VTP 配置、三层交换机配置、生成树配置以及其他常用命令,适用于网络管理和维护。
998 2
下一篇
oss教程