SoftRoCE Environment Setup

簡介

記錄一下如何在VM上配置SoftRoCE,希望能在沒有RDMA實體網卡的情況下,也能編譯與運行測試RDMA相關程式

步驟

1 Install VM

  • 直接安裝kernel version >= 4.9的distro, 推薦使用Ubuntu Desktop 20.04
  • 如果使用kernel version < 4.9的distro,則需要自己打開與RDMA相關的選項並重新編譯kernel

2 SSH and git Environment Setup (optional, 已設定過的可跳過)

  • 先裝git
    sudo apt install git
    
  • 產生ssh金鑰
    mkdir .ssh
    ssh-keygen # generate ssh key pair, 一路按enter
    ssh-add ~/.ssh/id_rsa # key pair is generated at ~/.ssh
    
  • 上傳ssh金鑰到你的GitHub帳戶
    # copy the output and paste it to your GitHub ssh key settings
    cat ~/.ssh/ubuntu_id_rsa.pub 
    
  • git環境設定
    git config --global user.name "YOUR NAME"
    git config --global user.email "YOUR EMAIL"
    

3 Install User Library

  • 先裝這些庫
    sudo apt install libibverbs-dev librdmacm-dev
    
  • 安裝 rdma-core (librxe 過時了,不建議使用)
    # Download the libary and install prerequisites
    git clone https://github.com/linux-rdma/rdma-core.git
    sudo apt install build-essential cmake gcc libudev-dev libnl-3-dev libnl-route-3-dev 
    sudo apt install ninja-build pkg-config valgrind python3-dev cython3 python3-docutils pandoc
    
    # Complie the library
    cd rdma-core
    bash build.sh
    

4 Add Virtual RDMA NIC

  • 每次reboot後都要重新加一次
    rdma link add <RDMA_NIC_NAME> type <TYPE> netdev <DEVICE>
    
  • RDMA_NIC_NAME: 自己取
  • TYPE: rxe (for RoCE)
  • DEVICE: 實體網卡名稱

測試

簡單測試兩台VM之間能不能透過RDMA傳輸訊息

rping

sudo apt install rdmacm-utils

## server side
rping -s -v

## client side
rping -c -v -a <SERVER_IP>

ib_rc_pingpong

sudo apt install ibverbs-utils

## server side
ibv_rc_pingpong -d <RDMA_NIC_NAME> -g <GID>

## client side
ibv_rc_pingpong -d <RDMA_NIC_NAME> -g <GID> <SERVER_IP>

perftest

sudo apt install perftest

## server side
ib_send_bw -a

## client side
ib_send_bw -a <SERVER_IP>

編譯並運行RDMA程式

  • 推薦使用此Repo
    • 包含基本client/server收發訊息、讀寫檔案等

Ref.