合理使用光互联产品减少万卡集群高性能网络中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层也同样适用。


 

相关文章
|
8月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
271 2
|
8月前
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
215 1
|
8月前
|
负载均衡 算法 安全
基于Reactor模式的高性能网络库之线程池组件设计篇
EventLoopThreadPool 是 Reactor 模式中实现“一个主线程 + 多个工作线程”的关键组件,用于高效管理多个 EventLoop 并在多核 CPU 上分担高并发 I/O 压力。通过封装 Thread 类和 EventLoopThread,实现线程创建、管理和事件循环的调度,形成线程池结构。每个 EventLoopThread 管理一个子线程与对应的 EventLoop(subloop),主线程(base loop)通过负载均衡算法将任务派发至各 subloop,从而提升系统性能与并发处理能力。
426 3
|
8月前
基于Reactor模式的高性能网络库github地址
https://github.com/zyi30/reactor-net.git
191 0
|
8月前
基于Reactor模型的高性能网络库之Poller(EpollPoller)组件
封装底层 I/O 多路复用机制(如 epoll)的抽象类 Poller,提供统一接口支持多种实现。Poller 是一个抽象基类,定义了 Channel 管理、事件收集等核心功能,并与 EventLoop 绑定。其子类 EPollPoller 实现了基于 epoll 的具体操作,包括事件等待、Channel 更新和删除等。通过工厂方法可创建默认的 Poller 实例,实现多态调用。
382 60
|
6月前
|
监控 前端开发 安全
Netty 高性能网络编程框架技术详解与实践指南
本文档全面介绍 Netty 高性能网络编程框架的核心概念、架构设计和实践应用。作为 Java 领域最优秀的 NIO 框架之一,Netty 提供了异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文将深入探讨其 Reactor 模型、ChannelPipeline、编解码器、内存管理等核心机制,帮助开发者构建高性能的网络应用系统。
421 0
|
8月前
|
缓存 索引
基于Reactor模式的高性能网络库之缓冲区Buffer组件
Buffer 类用于处理 Socket I/O 缓存,负责数据读取、写入及内存管理。通过预分配空间和索引优化,减少内存拷贝与系统调用,提高网络通信效率,适用于 Reactor 模型中的异步非阻塞 IO 处理。
266 3
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
370 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
285 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。