CodingBox 문서

IB 프로토콜과 트랜스포트: 계층, QP, RDMA, 서브넷 매니저

InfiniBand는 처음부터 낯선 상대 간의 패킷 교환이 아니라 컴퓨터들이 서로의 메모리에 접근하는 패브릭으로 설계되었습니다. 계층 구조, 주소 지정, 관리 방식은 이더넷 엔지니어에게 낯설어 보이지만 용어만 익히면 단순하며 — 물리 계층이 왜 그렇게 엄격한 표준을 따르는지도 이를 통해 설명됩니다. 이 페이지는 프로토콜 관점을 다루며, 광학계는 InfiniBand 광학계에서 다룹니다.

계층

계층내용비고
물리레인(1x, 4x, 8x, 12x), 레인당 시그널링(NRZ에서 HDR의 PAM4까지… 속도 참고), 인코딩(QDR까지 8B/10B, FDR부터 64B/66B), FEC(FDR부터 선택 사항, HDR/NDR에서는 RS-FEC)트랜시버의 영역
링크LID를 포함하는 로컬 라우팅 헤더(LRH), 가상 레인(VL0–VL14는 데이터, VL15는 관리), VL별 크레딧 기반 흐름 제어, 링크 계층 CRC(ICRC/VCRC)설계상 무손실
네트워크다중 서브넷 라우팅을 위한 128비트 GID를 포함하는 글로벌 라우팅 헤더(GRH)클러스터 하나 안에서는 거의 쓰이지 않음
트랜스포트송신/수신 큐로 이루어진 큐 페어(QP), 서비스 유형 RC/UC/UD/XRC, MTU 단위 분할, 신뢰성 있는 서비스를 위한 ACK/NAKRDMA가 위치하는 계층
상위verbs API, MPI, NCCL(UCX/SHARP 경유), 스토리지(SRP, iSER, NVMe/IB), IPoIB애플리케이션이 사용하는 계층

주소 지정과 식별 정보

식별자크기할당 주체의미
GUID64비트제조사포트, 노드, 시스템의 영구 식별 정보(MAC과 유사)
LID(로컬 식별자)16비트서브넷 매니저서브넷 내부 주소; 포워딩 테이블은 LID를 사용
GID128비트SM(프리픽스) + GUID서브넷 프리픽스 + GUID; 서브넷 간 통신과 RoCE에 사용
PKey(파티션 키)16비트SM파티션 소속(VLAN과 유사); 정회원/제한 회원
QPN24비트HCA큐 페어 번호 — 포트 내부의 엔드포인트

큐 페어와 트랜스포트 서비스

큐 페어는 HCA 안에서 애플리케이션이 소유하는 송신 큐 하나와 수신 큐 하나로 이루어집니다. 큐에 게시된 작업 요청은 하드웨어가 실행하며, 완료 결과는 컴플리션 큐에 쌓입니다. 서비스 유형은 다음과 같습니다.

유형신뢰성연결형 여부용도
RC — 신뢰성 있는 연결형예(ACK/NAK, 재전송)예, 피어당 QP 1개대부분의 RDMA 트래픽; MPI, NCCL, 스토리지
UC — 비신뢰성 연결형아니요드묾
UD — 비신뢰성 데이터그램아니요아니요, 모든 피어에 QP 1개관리, IPoIB, 멀티캐스트
XRC — 확장 신뢰성 연결형프로세스 간 수신 큐 공유QP 수를 줄이는 대규모 MPI 작업
RD — 신뢰성 데이터그램아니요사실상 쓰이지 않음

RDMA 연산(READ, WRITE, atomic)은 두 호스트의 애플리케이션 버퍼 사이에서 어느 쪽 CPU도 복사하지 않고 데이터를 직접 이동시키며, SEND/RECEIVE는 메시지를 전달합니다. HCA가 메모리에 접근하려면 먼저 그 메모리가 등록(고정되고 키가 부여됨)되어야 합니다. GPUDirect RDMA는 이를 GPU 메모리까지 확장합니다(GPU 패브릭).

흐름 제어와 MTU

모든 링크는 가상 레인별 크레딧 기반 흐름 제어로 동작합니다: 수신 측이 버퍼 공간을 알리면 송신 측은 그 공간을 넘어서는 양을 절대 보내지 않습니다. 혼잡으로 인해 프레임이 버려지는 일은 없으며, 대신 배압이 전파됩니다 — Fibre Channel의 크레딧과 같은 트레이드오프이며, 느리거나 오류가 있는 링크 하나가 작업 전체의 성능을 떨어뜨리는 이유이기도 합니다. 링크 MTU는 256–4096바이트(보통 4096)이며, 경로 MTU는 종단 간에 협상됩니다. 서비스 레벨(SL)은 VL에 매핑되어 트래픽 클래스를 구분하며, 적응형 라우팅은 혼잡한 링크를 피하도록 흐름을 유도할 수 있습니다.

서브넷 매니저

서브넷마다 서브넷 매니저(SM)가 정확히 하나만 활성 상태입니다(나머지는 대기). 서브넷 매니저는 다음을 수행합니다.

  1. 방향성 경로 관리 패킷(VL15/QP0의 SMP)으로 패브릭을 순회하며 모든 스위치와 HCA 포트를 탐색합니다.
  2. LID를 할당하고 포트(속도, 폭, MTU, VL 중재, PKey)를 구성합니다.
  3. min-hop, up-down, fat-tree, dragonfly+, 적응형 라우팅 등 경로를 계산하고 각 스위치의 선형 포워딩 테이블을 설정합니다.
  4. 주기적으로, 그리고 트랩(포트 업/다운) 발생 시 다시 스캔하여 장애 구간을 우회하도록 재라우팅합니다.
  5. 호스트의 경로 조회에 응답하는 서브넷 관리자(SA)를 실행합니다.

OpenSM(오픈소스)과 벤더의 패브릭 매니저(UFM)가 이를 구현하며, 포트 오류, 링크 속도/폭 협상 결과, 광학계 DDM을 전체 장비 단위로 수집하는 곳도 이 패브릭 매니저입니다(링크 신뢰성과 모니터링).

링크 협상

링크가 업될 때 양쪽 끝은 (1x/2x/4x)과 속도(레인당 레이트)를 공통으로 가능한 가장 높은 값으로 협상합니다. 링크가 2x로 올라오거나 예상보다 한 세대 느리게 올라오는 것은 이더넷의 “10G에서 링크업, 25G 아님”에 해당하는 InfiniBand 버전이며, 원인은 레인 하나의 광섬유나 레이저, 한계에 가까운 케이블, 또는 트랜시버 세대 불일치입니다(속도와 레이트). 패브릭 매니저는 협상된 상태를 보고하며, 호스트에서는 ibstat / ibportstate로 확인할 수 있습니다.

관리 및 진단 도구

도구목적
ibstat, ibstatus로컬 포트 상태, 레이트, 폭, LID
ibnetdiscover토폴로지 덤프
ibdiagnet패브릭 전체 점검: 오류, 속도/폭 불일치, GUID 중복, 케이블 정보
perfquery, ibqueryerrors포트별 카운터: 심볼 오류, 링크 다운, 링크 복구, 포트 수신 오류, 과도한 버퍼 오버런, VL15 드롭, FEC 카운터
mlxlink, mlxcables포트별 PHY 세부 정보와 케이블/트랜시버 EEPROM, DDM, FEC 히스토그램
ibportstate속도/폭 강제 설정, 포트 리셋

심볼 오류와 링크 복구는 물리 계층 카운터로 — 이더넷의 CRC/FEC에 대응하며, Rx 파워와 청결도에 좌우됩니다(패브릭).

한 문단으로 보는 InfiniBand 대 RoCE

RoCE v2는 동일한 verbs/RDMA 트랜스포트를 UDP/IP/이더넷 위에서 전달합니다. 서브넷 매니저는 IP 라우팅으로, PKey는 VLAN으로 대체되며, 크레딧 흐름 제어는 PFC/ECN(DCQCN)으로 대체됩니다 — 이는 무손실이 되려면 올바르게 구성되어야 합니다(무손실 이더넷, 인터커넥트). 트랜시버는 물리적으로 동일하며, 식별 정보 코딩과 호스트 정책만 다릅니다.

CodingBox에서

InfiniBand 모듈은 다른 QSFP/OSFP와 마찬가지로 읽습니다: 식별 정보(SFF-8636 byte 164의 InfiniBand 레이트 비트 또는 CMIS 애플리케이션 포함), 레인별 DDM과 체크섬은 Check transceiverDDM에서 확인합니다. 정격 속도보다 낮게 협상된 포트는 양쪽 끝을 벤치에서 읽어볼 가치가 있습니다.


이 문서에서 부정확한 내용이나 오류를 발견하면 해당 부분을 선택하고 Ctrl+Enter를 눌러 해 주세요.