18.6. SR-IOV 지원 워크로드에 대한 QinQ 지원 구성


공식적으로 802.1Q-in-802.1Q로 알려진 QinQ는 IEEE 802.1ad에 의해 정의된 네트워킹 기술입니다. IEEE 802.1ad는 IEEE 802.1Q-1998 표준을 확장하고 802.1Q로 이미 태그된 패킷에 802.1Q 태그를 추가로 도입하여 VLAN 기능을 강화합니다. 이 방법을 VLAN 스택 또는 이중 VLAN이라고도 합니다.

다음 문서에서 작업을 수행하기 전에 SR-IOV Network Operator를 설치 했는지 확인합니다.

18.6.1. 802.1Q-in-802.1Q 지원 정보

기존 VLAN 설정에서 프레임에는 일반적으로 VLAN-100과 같은 단일 VLAN 태그와 QoS(Quality of Service) 비트 및 프로토콜 정보와 같은 기타 메타데이터가 포함됩니다. QinQ에는 서비스 공급자가 사용할 외부 태그를 지정하여 유연성을 제공하고 내부 태그는 고객의 VLAN 전용 상태로 유지되는 두 번째 VLAN 태그가 도입되었습니다.

QinQ를 사용하면 이중 VLAN 태그를 사용하여 중첩된 VLAN을 쉽게 생성할 수 있으므로 네트워크 환경 내에서 트래픽을 세분화하고 격리할 수 있습니다. 이 접근 방식은 공통 인프라를 통해 VLAN 기반 서비스를 여러 고객에게 제공해야 하는 서비스 공급자 네트워크에서 특히 중요하며 트래픽 분리 및 격리를 보장합니다.

다음 다이어그램에서는 OpenShift Container Platform에서 SR-IOV 및 QinQ를 사용하여 컨테이너화된 워크로드의 고급 네트워크 분할 및 격리를 달성하는 방법을 보여줍니다.

다이어그램에서는 SR-IOV가 지원되는 작업자 노드에서 VLAN 태그 두 개(QinQ)가 작동하는 방법을 보여줍니다. Pod 네임스페이스에 있는 SR-IOV 가상 기능(VF)은 VLAN ID 및 VLAN 프로토콜을 사용하여 SR-IOV CNI(Container Network Interface)에 의해 구성됩니다. 이는 S-tag에 해당합니다. Pod 내부에서 VLAN CNI는 기본 인터페이스 ext0 을 사용하여 하위 인터페이스를 생성합니다. 이 하위 인터페이스는 C-tag에 해당하는 802.1Q 프로토콜을 사용하여 내부 VLAN ID를 추가합니다.

이는 QinQ를 사용하여 네트워크 내에서 트래픽 분할 및 격리를 활성화하는 방법을 보여줍니다. 이더넷 프레임 구조는 오른쪽에 자세히 설명되어 있으며 VLAN 태그, EtherType, IP, TCP 및 Payload 섹션의 포함을 강조 표시합니다. QinQ를 사용하면 트래픽 분리 및 격리를 보장하면서 공유 인프라를 통해 VLAN 기반 서비스를 여러 고객에게 제공할 수 있습니다.

OpenShift Container Platform SR-IOV 솔루션은 이미 SriovNetwork CR(사용자 정의 리소스)에서 VLAN 프로토콜 설정을 지원합니다. VF(가상 기능)는 이 프로토콜을 사용하여 외부 태그라고도 하는 VLAN 태그를 설정할 수 있습니다. 그러면 Pod에서 VLAN CNI 플러그인을 사용하여 내부 태그를 구성할 수 있습니다.

Expand
표 18.14. 지원되는 네트워크 인터페이스 카드
NIC802.1ad/802.1Q802.1Q/802.1Q

Intel X710

없음

지원됨

Intel E810

지원됨

지원됨

Mellanox

없음

지원됨

18.6.2. SR-IOV 지원 워크로드에 대한 QinQ 지원 구성

사전 요구 사항

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

프로세스

  1. 다음 콘텐츠를 사용하여 sriovnetpolicy-810-sriov-node-network.yaml 이라는 파일을 생성합니다.

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: sriovnetpolicy-810
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice
      nicSelector:
        pfNames:
          - ens5f0#0-9
      nodeSelector:
        node-role.kubernetes.io/worker-cnf: ""
      numVfs: 10
      priority: 99
      resourceName: resource810
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 SriovNetworkNodePolicy 오브젝트를 생성합니다.

    $ oc create -f sriovnetpolicy-810-sriov-node-network.yaml
    Copy to Clipboard Toggle word wrap
  3. 별도의 터미널 창을 열고 다음 명령을 실행하여 openshift-sriov-network-operator 네임스페이스에 지정된 노드에 대한 SR-IOV 네트워크 노드 상태의 동기화 상태를 모니터링합니다.

    $ watch -n 1 'oc get sriovnetworknodestates -n openshift-sriov-network-operator <node_name> -o jsonpath="{.status.syncStatus}"'
    Copy to Clipboard Toggle word wrap

    동기화 상태는 InProgress 에서 Succeeded 로 변경되었음을 나타냅니다.

  4. SriovNetwork 오브젝트를 생성하고 인프라에 속하므로 S-tag 또는 Service Tag 라는 외부 VLAN을 설정합니다.

    중요

    스위치의 트렁크 인터페이스에서 VLAN을 구성해야 합니다. 또한 QinQ 태그를 지원하도록 일부 스위치를 추가로 구성해야 할 수도 있습니다.

    1. 다음 콘텐츠를 사용하여 nad-sriovnetwork-1ad-810.yaml 이라는 파일을 생성합니다.

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetwork
      metadata:
        name: sriovnetwork-1ad-810
        namespace: openshift-sriov-network-operator
      spec:
        ipam: '{}'
        vlan: 171 
      1
      
        vlanProto: "802.1ad" 
      2
      
        networkNamespace: default
        resourceName: resource810
      Copy to Clipboard Toggle word wrap
      1
      S-tag VLAN 태그를 171 로 설정합니다.
      2
      VF(가상 기능)에 할당할 VLAN 프로토콜을 지정합니다. 지원되는 값은 802.1ad802.1q 입니다. 기본값은 802.1q 입니다.
    2. 다음 명령을 실행하여 오브젝트를 생성합니다.

      $ oc create -f nad-sriovnetwork-1ad-810.yaml
      Copy to Clipboard Toggle word wrap
  5. 내부 VLAN을 사용하여 NetworkAttachmentDefinition 오브젝트를 생성합니다. 내부 VLAN은 종종 네트워크 기능에 속하므로 C 태그 또는 고객 태그라고 합니다.

    1. 다음 콘텐츠를 사용하여 nad-cvlan100.yaml 이라는 파일을 생성합니다.

      apiVersion: k8s.cni.cncf.io/v1
      kind: NetworkAttachmentDefinition
      metadata:
        name: nad-cvlan100
        namespace: default
      spec:
        config: '{
          "name": "vlan-100",
          "cniVersion": "0.3.1",
          "type": "vlan",
          "linkInContainer": true,
          "master": "net1", 
      1
      
          "vlanId": 100,
          "ipam": {"type": "static"}
        }'
      Copy to Clipboard Toggle word wrap
      1
      Pod 내부의 VF 인터페이스를 지정합니다. 기본 이름은 net1 이며 이름은 Pod 주석에 설정되지 않습니다.
    2. 다음 명령을 실행하여 YAML 파일을 적용합니다.

      $ oc apply -f nad-cvlan100.yaml
      Copy to Clipboard Toggle word wrap

검증

  • 다음 절차에 따라 노드에서 QinQ가 활성화되어 있는지 확인합니다.

    1. 다음 콘텐츠를 사용하여 test-qinq-pod.yaml 이라는 파일을 생성합니다.

      apiVersion: v1
      kind: Pod
      metadata:
        name: test-pod
        annotations:
          k8s.v1.cni.cncf.io/networks: sriovnetwork-1ad-810, nad-cvlan100
      spec:
        containers:
          - name: test-container
            image: quay.io/ocp-edge-qe/cnf-gotests-client:v4.10
            imagePullPolicy: Always
            securityContext:
              privileged: true
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 테스트 Pod를 생성합니다.

      $ oc create -f test-qinq-pod.yaml
      Copy to Clipboard Toggle word wrap
    3. Pod가 있는 대상 노드에서 디버그 세션에 들어가 다음 명령을 실행하여 네트워크 인터페이스 ens5f0 에 대한 정보를 표시합니다.

      $ oc debug node/my-cluster-node -- bash -c "ip link show ens5f0"
      Copy to Clipboard Toggle word wrap

      출력 예

      6: ens5f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
      link/ether b4:96:91:a5:22:10 brd ff:ff:ff:ff:ff:ff
      vf 0 link/ether a2:81:ba:d0:6f:f3 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
      vf 1 link/ether 8a:bb:0a:36:f2:ed brd ff:ff:ff:ff:ff:ff, vlan 171, vlan protocol 802.1ad, spoof checking on, link-state auto, trust off
      vf 2 link/ether ca:0e:e1:5b:0c:d2 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
      vf 3 link/ether ee:6c:e2:f5:2c:70 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
      vf 4 link/ether 0a:d6:b7:66:5e:e8 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
      vf 5 link/ether da:d5:e7:14:4f:aa brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
      vf 6 link/ether d6:8e:85:75:12:5c brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
      vf 7 link/ether d6:eb:ce:9c:ea:78 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
      vf 8 link/ether 5e:c5:cc:05:93:3c brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust on
      vf 9 link/ether a6:5a:7c:1c:2a:16 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
      Copy to Clipboard Toggle word wrap

      출력의 vlan 프로토콜 802.1ad ID는 인터페이스가 프로토콜 802.1ad(QinQ)를 사용하여 VLAN 태그 지정을 지원함을 나타냅니다. VLAN ID는 171입니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동