22.9. 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이라고도 합니다.

22.9.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 기반 서비스를 여러 고객에게 제공할 수 있습니다.

QinQ를 보여주는 다이어그램 (VLAN 태깅 두 개)

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

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

Intel X710

없음

지원됨

Intel E810

지원됨

지원됨

Mellanox

없음

지원됨

22.9.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
  2. 다음 명령을 실행하여 SriovNetworkNodePolicy 오브젝트를 생성합니다.

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

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

    동기화 상태는 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
      1
      S-tag VLAN 태그를 171 로 설정합니다.
      2
      VF(가상 기능)에 할당할 VLAN 프로토콜을 지정합니다. 지원되는 값은 802.1ad802.1q 입니다. 기본값은 802.1q 입니다.
    2. 다음 명령을 실행하여 오브젝트를 생성합니다.

      $ oc create -f nad-sriovnetwork-1ad-810.yaml
  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"}
        }'
      1
      Pod 내부의 VF 인터페이스를 지정합니다. 기본 이름은 net1 이며 이름은 Pod 주석에 설정되지 않습니다.
    2. 다음 명령을 실행하여 YAML 파일을 적용합니다.

      $ oc apply -f nad-cvlan100.yaml

검증

  • 다음 절차에 따라 노드에서 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
    2. 다음 명령을 실행하여 테스트 Pod를 생성합니다.

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

      $ oc debug node/my-cluster-node -- bash -c "ip link show ens5f0"

      출력 예

      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

      출력의 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은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.