Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ContainerLabで入門Soft-RoCE

nanakano
January 20, 2025
39

 ContainerLabで入門Soft-RoCE

nanakano

January 20, 2025
Tweet

Transcript

  1. ホスト2台のシンプルな構成で動作確認する 構成: host1 - host2 必要なパッケージをインストールして動作確認 root@host1:/# rdma link add

    rxe0 type rxe netdev eth1 root@host1:/# rdma link show link rxe0/1 state ACTIVE physical_state LINK_UP netdev eth1 root@host1:/# rping -s No RDMA devices were detected ㅤ ContainerLabでSoft-RoCEやってみる ㅤ 5 / 16
  2. ホスト2台のシンプルな構成で動作確認する 構成: host1 - host2 必要なパッケージをインストールして動作確認 root@host1:/# rdma link add

    rxe0 type rxe netdev eth1 root@host1:/# rdma link show link rxe0/1 state ACTIVE physical_state LINK_UP netdev eth1 root@host1:/# rping -s No RDMA devices were detected 動かない ㅤ ContainerLabでSoft-RoCEやってみる ㅤ 6 / 16
  3. ホスト2台のシンプルな構成で動作確認する 構成: host1 - host2 必要なパッケージをインストールして動作確認 VM1@ubuntu:~$ rping -s -a

    10.0.1.2 -C 10 -v server ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr server ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs VM2@ubuntu:~$ rping -c -a 10.0.1.2 -C 2 -v ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs ㅤ KVMでSoft-RoCEやってみる ㅤ 8 / 16
  4. ホスト2台のシンプルな構成で動作確認する 構成: host1 - host2 必要なパッケージをインストールして動作確認 VM1@ubuntu:~$ rping -s -a

    10.0.1.2 -C 10 -v server ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr server ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs VM2@ubuntu:~$ rping -c -a 10.0.1.2 -C 2 -v ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs 動いた ㅤ KVMでSoft-RoCEやってみる ㅤ 9 / 16
  5. コンテナイメージをbuildする $ git clone [email protected]:nanakanok/vrnetlab.git $ cd vrnetlab/ubuntu-soft-roce/ $ make

    build コンテナをdeployする $ git clone https://github.com/nanakanok/soft-roce-lab.git $ cd soft-roce-lab $ sudo containerlab -t testlab.clab.yml deploy 参考: destroyする時のコマンド sudo containerlab -t testlab.clab.yml destroy ㅤ ContainerLabでSoft-RoCEやってみる(リベンジ) (1/) ㅤ 11 / 16
  6. 設定をする。SSHの初期パスはuser名 host1 $ docker exec -it clab-testlab-host1 /bin/bash root@host1:/# ssh

    sysadmin@localhost sysadmin@ubuntu:~$ sudo modprobe rdma_rxe sysadmin@ubuntu:~$ sudo rdma link add rxe0 type rxe netdev ens2 sysadmin@ubuntu:~$ sudo ip a a 10.0.1.1/24 dev ens2 sysadmin@ubuntu:~$ sudo ip link set ens2 up host2 docker exec -it clab-testlab-host2 /bin/bash root@host2:/# ssh sysadmin@localhost sysadmin@ubuntu:~$ sudo modprobe rdma_rxe sysadmin@ubuntu:~$ sudo rdma link add rxe0 type rxe netdev ens2 sysadmin@ubuntu:~$ sudo ip a a 10.0.1.2/24 dev ens2 sysadmin@ubuntu:~$ sudo ip link set ens2 up ㅤ ContainerLabでSoft-RoCEやってみる(リベンジ) (3/) ㅤ 12 / 16
  7. rpingでRDMA通信できるか動作確認をする host1 sysadmin@ubuntu:~$ rping -s -a 10.0.1.1 -C 10 -v

    server ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr server ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs host2 sysadmin@ubuntu:~$ rping -c -a 10.0.1.1 -C 2 -v ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs root@host1:/# tcpdump -ni eth1 -vvv tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes 23:49:00.400271 IP (tos 0x0, ttl 64, id 31179, offset 0, flags [DF], proto UDP (17), length 308) 10.0.1.2.55410 > 10.0.1.1.4791: [no cksum] UDP, length 280 23:49:00.400673 IP (tos 0x0, ttl 64, id 50183, offset 0, flags [DF], proto UDP (17), length 308) 10.0.1.1.55410 > 10.0.1.2.4791: [no cksum] UDP, length 280 ㅤ ContainerLabでSoft-RoCEやってみる(リベンジ) (4/) ㅤ 13 / 16
  8. qperfでRDMA通信の帯域測定をする host1 sysadmin@ubuntu:~$ qperf host2 (コマンド結果の抜粋) sysadmin@ubuntu:~$ qperf 10.0.1.1 -vv

    --use_bits_per_sec -cm1 -m 1M rc_rdma_read_bw rc_rdma_read_bw: bw = 2.57 Gb/sec ㅤ ContainerLabでSoft-RoCEやってみる(リベンジ) (5/) ㅤ 14 / 16
  9. sysadmin@ubuntu:~$ qperf 10.0.1.1 -vv --use_bits_per_sec -cm1 -m 1M rc_rdma_read_bw rc_rdma_read_bw:

    bw = 2.57 Gb/sec msg_rate = 306 /sec msg_size = 1 MiB (1,048,576) time = 2 sec timeout = 5 sec use_cm = 1 send_cost = 93.5 ms/GB recv_cost = 764 ms/GB send_cpus_used = 3 % cpus send_cpus_intr = 2.5 % cpus send_cpus_kernel = 0.5 % cpus send_real_time = 2 sec send_cpu_time = 60 ms send_bytes = 612 MiB (641,728,512) send_msgs = 612 recv_cpus_used = 24.5 % cpus recv_cpus_user = 0.5 % cpus recv_cpus_intr = 23.5 % cpus recv_cpus_kernel = 0.5 % cpus recv_real_time = 2 sec recv_cpu_time = 490 ms recv_bytes = 612 MiB (641,728,512) recv_msgs = 612 recv_max_cqe = 1 ㅤ 参考: qperfクライアントのコマンド結果 ㅤ 15 / 16