13.2. RoCE를 사용하여 데이터 전송
RoCE(RDMA over Converged Ethernet)는 이더넷 네트워크를 통해 RDMA(Remote Direct Memory Access)를 활성화하는 네트워크 프로토콜입니다. RoCE 버전인 RoCE v1 및 RoCE v2에는 사용된 네트워크 어댑터에 따라 두 가지 RoCE 버전이 있습니다.
- RoCE v1
RoCE v1
프로토콜은 이더넷 브로드캐스트 도메인에 있는 두 호스트 간의 통신을 활성화하는 이더넷 링크 계층 프로토콜로, 이더넷0x8915
입니다. RoCE v1은 ConnectX-3 네트워크 어댑터를 사용할 때 RDMA Connection Manager(RDMA_CM)의 기본 버전입니다.- RoCE v2
RoCE v2
프로토콜은 IPv4를 통한 UDP 또는 IPv6 프로토콜을 통해 UDP에 있습니다. UDP 대상 포트 번호4791
은 RoCE v2용으로 예약되어 있습니다. Red Hat Enterprise Linux 7.5 이후 RoCE v2는 ConnectX-3 Pro, ConnectX-4, ConnectX-4 Lx 및 ConnectX-5 네트워크 어댑터를 사용할 때 RDMA_CM의 기본 버전입니다. 하드웨어는RoCE v1
및RoCE v2
를 모두 지원합니다.
RDMA 연결 관리자(RDMA_CM)는 데이터 전송을 위한 클라이언트와 서버 간에 안정적인 연결을 설정하는 데 사용됩니다. RDMA_CM은 연결을 설정하기 위한 RDMA 전송 중립 인터페이스를 제공합니다. 통신은 특정 RDMA 장치를 통해 이루어지며 데이터 전송은 메시지 기반입니다.
사전 요구 사항
RDMA_CM 세션에는 다음 중 하나가 필요합니다.
- 클라이언트와 서버 모두 동일한 RoCE 모드를 지원합니다.
- 클라이언트는 RoCE v1 및 서버 RoCE v2를 지원합니다.
클라이언트가 연결 모드를 결정하므로 다음 사례가 가능합니다.
- 성공적인 연결:
- 클라이언트가 RoCE v1 또는 RoCE v2 모드에 있는 경우 사용된 네트워크 카드와 드라이버에 따라 해당 서버에는 연결을 생성하기 위해 동일한 버전이 있어야 합니다. 또한 클라이언트가 RoCE v1 및 RoCE v2 모드에 있는 경우 연결이 성공합니다.
- 실패한 연결:
- 클라이언트가 RoCE v2에 있고 해당 서버가 RoCE v1인 경우 연결을 설정할 수 없습니다. 이 경우 해당 서버의 드라이버 또는 네트워크 어댑터를 업데이트합니다. 13.2절. “RoCE를 사용하여 데이터 전송”
클라이언트 | 서버 | 기본 설정 |
---|---|---|
RoCE v1 | RoCE v1 | 연결 |
RoCE v1 | RoCE v2 | 연결 |
RoCE v2 | RoCE v2 | 연결 |
RoCE v2 | RoCE v1 | 연결 없음 |
서버의 클라이언트 및 RoCE v1의 RoCE v2는 호환되지 않습니다. 이 문제를 해결하려면 서버 및 클라이언트 측 환경이 RoCE v1을 통해 통신하도록 강제 시행합니다. 즉, RoCE v2를 지원하는 하드웨어가 RoCE v1을 사용하도록 강제 시행됩니다.
절차 13.1. Roce v2에서 실행 중인 하드웨어가 이미 실행 중인 경우 기본 RoCE 모드 변경
- RoCE 모드를 et하도록
/sys/kernel/config/rdma_cm
디렉터리로 변경합니다.~]# cd /sys/kernel/config/rdma_cm
- 상태를 표시할 이더넷 네트워크 장치에 ibstat 명령을 입력합니다. 예를 들어 mlx5_0:
~]$ ibstat mlx5_0 CA 'mlx5_0' CA type: MT4115 Number of ports: 1 Firmware version: 12.17.1010 Hardware version: 0 Node GUID: 0x248a0703004bf0a4 System image GUID: 0x248a0703004bf0a4 Port 1: State: Active Physical state: LinkUp Rate: 40 Base lid: 0 LMC: 0 SM lid: 0 Capability mask: 0x04010000 Port GUID: 0x268a07fffe4bf0a4 Link layer: Ethernet
- mlx5_0 장치의 디렉터리를 생성합니다.
~]# mkdir mlx5_0
default_roce_mode
파일에 RoCE 모드를 트리 형식으로 표시합니다.~]# cd mlx5_0
~]$ tree └── ports └── 1 ├── default_roce_mode └── default_roce_tos
~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode RoCE v2
- 기본 RoCE 모드를 변경합니다.
~]# echo "RoCE v1" > /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
- 변경 사항을 확인합니다.
~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode RoCE v1