5장. SR-IOV의 RDMA 하위 시스템 구성


RDMA(Remote Direct Memory Access)를 사용하면 두 시스템 간의 직접 메모리 액세스를 통해 두 시스템의 운영 체제 없이 직접 메모리에 액세스할 수 있습니다. SR-IOV(Single Root I/O Virtualization)에서 RDMA CNI(Container Network Interface)를 구성하여 컨테이너 간에 고성능 대기 시간이 짧은 통신을 활성화할 수 있습니다. RDMA를 SR-IOV와 결합할 때 DPDK(Data Plane Development Kit) 애플리케이션 내부에서 사용할 Mellanox 이더넷 장치의 하드웨어 카운터를 노출하는 메커니즘을 제공합니다.

5.1. SR-IOV RDMA CNI 구성

SR-IOV에서 RDMA CNI를 구성합니다.

참고

이 절차는 Mellanox 장치에만 적용됩니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • SR-IOV Network Operator가 설치되어 있습니다.

프로세스

  1. SriovNetworkPoolConfig CR을 생성하고 다음 예와 같이 sriov-nw-pool.yaml 로 저장합니다.

    SriovNetworkPoolConfig CR의 예

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkPoolConfig
    metadata:
      name: worker
      namespace: openshift-sriov-network-operator
    spec:
      maxUnavailable: 1
      nodeSelector:
        matchLabels:
          node-role.kubernetes.io/worker: ""
      rdmaMode: exclusive 
    1
    Copy to Clipboard Toggle word wrap

    1
    RDMA 네트워크 네임스페이스 모드를 배타적 으로 설정합니다.
  2. 다음 명령을 실행하여 SriovNetworkPoolConfig 리소스를 생성합니다.

    $ oc create -f sriov-nw-pool.yaml
    Copy to Clipboard Toggle word wrap
  3. SriovNetworkNodePolicy CR을 생성하고 다음 예와 같이 sriov-node-policy.yaml 로 저장합니다.

    SriovNetworkNodePolicy CR의 예

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: sriov-nic-pf1
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice
      isRdma: true 
    1
    
      nicSelector:
        pfNames: ["ens3f0np0"]
      nodeSelector:
        node-role.kubernetes.io/worker: ""
      numVfs: 4
      priority: 99
      resourceName: sriov_nic_pf1
    Copy to Clipboard Toggle word wrap

    1
    RDMA 모드를 활성화합니다.
  4. 다음 명령을 실행하여 SriovNetworkNodePolicy 리소스를 생성합니다.

    $ oc create -f sriov-node-policy.yaml
    Copy to Clipboard Toggle word wrap
  5. SriovNetwork CR을 생성하고 다음 예와 같이 sriov-network.yaml 로 저장합니다.

    SriovNetwork CR의 예

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetwork
    metadata:
      name: sriov-nic-pf1
      namespace: openshift-sriov-network-operator
    spec:
      networkNamespace: sriov-tests
      resourceName: sriov_nic_pf1
        ipam: |-
      metaPlugins: |
        {
          "type": "rdma" 
    1
    
        }
    Copy to Clipboard Toggle word wrap

    1
    RDMA 플러그인을 생성합니다.
  6. 다음 명령을 실행하여 SriovNetwork 리소스를 생성합니다.

    $ oc create -f sriov-network.yaml
    Copy to Clipboard Toggle word wrap

검증

  1. Pod CR을 생성하고 다음 예와 같이 sriov-test-pod.yaml 로 저장합니다.

    런타임 구성 예

    apiVersion: v1
    kind: Pod
    metadata:
      name: sample-pod
      annotations:
        k8s.v1.cni.cncf.io/networks: |-
          [
            {
              "name": "net1",
              "mac": "20:04:0f:f1:88:01",
              "ips": ["192.168.10.1/24", "2001::1/64"]
            }
          ]
    spec:
      containers:
      - name: sample-container
        image: <image>
        imagePullPolicy: IfNotPresent
        command: ["sleep", "infinity"]
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 실행하여 테스트 Pod를 생성합니다.

    $ oc create -f sriov-test-pod.yaml
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 테스트 Pod에 로그인합니다.

    $ oc rsh testpod1 -n sriov-tests
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 hw-counters 디렉터리의 경로가 있는지 확인합니다.

    $ ls /sys/bus/pci/devices/${PCIDEVICE_OPENSHIFT_IO_SRIOV_NIC_PF1}/infiniband/*/ports/1/hw_counters/
    Copy to Clipboard Toggle word wrap

    출력 예

    duplicate_request       out_of_buffer req_cqe_flush_error           resp_cqe_flush_error        roce_adp_retrans        roce_slow_restart_trans
    implied_nak_seq_err     out_of_sequence req_remote_access_errors    resp_local_length_error     roce_adp_retrans_to     rx_atomic_requests
    lifespan                packet_seq_err req_remote_invalid_request   resp_remote_access_errors   roce_slow_restart       rx_read_requests
    local_ack_timeout_err  req_cqe_error resp_cqe_error                 rnr_nak_retry_err           roce_slow_restart_cnps  rx_write_requests
    Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat