服务器双网卡NCCL通过交换机通信

1、NCCL变量设置

export CUDA_DEVICE_MAX_CONNECTIONS=1
export NCCL_SOCKET_IFNAME=eno2
export NCCL_IB_DISABLE=0
#export NCCL_NET=IB
export NCCL_IB_HCA=mlx5_0,mlx5_1
export NCCL_IB_GID_INDEX=3
export NCCL_DEBUG=INFO

GPUS_PER_NODE=4

MASTER_ADDR=192.168.1.2
MASTER_PORT=6000
NNODES=2
NODE_RANK=0
WORLD_SIZE=$(($GPUS_PER_NODE*$NNODES))

2、路由设置

ps:通过nvlink或者pcie通信不需要

2.1 静态路由

如果两个RDMA网卡不在同一网段,需要互相配置路由:

sudo ip route add 192.168.1.2/32 via 192.168.2.1 dev ens21np0
sudo ip route add 192.168.2.2/32 via 192.168.1.1 dev ens16np0

其中192.168.1.1和192.168.2.1是交换机的地址。
ens21np0的地址是192.168.2.2,ens16np0的地址是192.168.1.2

2.2 策略路由

或者通过策略路由配置整个网段

sudo nano /etc/iproute2/rt_tables添加:
100 table1
200 table2

sudo ip route add 192.168.1.0/24 via 192.168.2.1 dev ens21np0 table table1
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev ens16np0 table table2
 sudo ip rule add oif ens21np0 lookup table1
 sudo ip rule add oif ens16np0 lookup table2

2.3 通过00-installer-config.yaml设置

vi /etc/netplan/00-installer-config.yaml
    ens21np0:    
      routes:
        - to: 192.168.1.0/24
          via: 192.168.2.1
    ens16np0:  
      routes:
        - to: 192.168.2.0/24
          via: 192.168.1.1

说明

RDMA网卡并不会存路由和MAC,(根据源码)MAC和出接口都是驱动下发的,
驱动在查找内核路由时,会根据源地址查找出接口,得到该网卡的接口索引
后面查找路由时(nl_socket_modify_cb和其回调get_route_cb)会先设置过滤条件,条件包含了出接口和目的地址(源码见下图)
在这里插入图片描述
可以用ip route get 192.168.2.2 oif ens16np0来模拟查看,可以看到是可以查到路由的:

192.168.2.2 dev ens16np0 src 192.168.1.2 uid 0 
    cache 

但是如果根据这个路由信息,arp无法发送,非直连必须有gw才行,配置gw后查询:

192.168.2.2 via 192.168.1.1 dev ens16np0 src 192.168.1.2 uid 0 
    cache 

ping -I ens16np0 192.168.2.2, ip neigh show确认下

多网卡多vlan方案

如果每个网卡一个网段,交换机上为每个网段(对应服务器一个接口)配置一个vlan,vlan的地址就是网关IP。
那就需要配置网段间互通路由,路由需具体到接口名,如以上 /etc/netplan/00-installer-config.yaml所示

多网卡单vlan方案

当多个网卡在一个vlan下时,arp会从多个网卡学到,Mellanox转发会出问题
这时需要配置arp_filter
每个网段的网关IP可以作为辅地址配置在vlan上面
网段间互通仍然需要配路由,但路由不能是跟直连路由一样的,否则收到同网段的arp,过滤的时候会选错路由,认为不应该回复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值