8.9. OVS TC-flower 하드웨어 오프로드 문제 해결


OVS TC-flower 하드웨어 오프로드를 사용하는 RHOSP(Red Hat OpenStack Platform) 환경의 문제를 해결하는 경우 네트워크 및 인터페이스에 대한 사전 요구 사항 및 구성을 검토하십시오.

사전 요구 사항

  • Linux Kernel 4.13 이상
  • OVS 2.8 이상
  • RHOSP 12 이상
  • iproute 4.12 또는 최신 버전
  • Mellanox NIC 펌웨어(예: FW ConnectX-5 16.21.0338 이상)

지원되는 사전 요구 사항에 대한 자세한 내용은 Red Hat Knowledgebase 솔루션 Network Adapter Fast Datapath Feature Support Matrix 를 참조하십시오.

네트워크 구성

HW 오프로드 배포에서 요구 사항에 따라 네트워크 구성에 대해 다음 시나리오 중 하나를 선택할 수 있습니다.

  • 본딩에 연결된 동일한 인터페이스 세트를 사용하거나 유형마다 다른 NIC 세트를 사용하여 VXLAN 및 VLAN의 기본 게스트 VM을 사용할 수 있습니다.
  • Linux 본딩을 사용하여 Mellanox NIC의 두 포트를 결합할 수 있습니다.
  • Mellanox Linux 본딩의 VLAN 인터페이스에서 테넌트 VXLAN 네트워크를 호스팅할 수 있습니다.

개별 NIC 및 본딩이 ovs-bridge의 멤버인지 확인합니다.

다음 네트워크 구성 예를 참조하십시오.

...
- type: ovs_bridge
   name: br-offload
   mtu: 9000
   use_dhcp: false
   members:
   - type: linux_bond
     name: bond-pf
     bonding_options: "mode=active-backup miimon=100"
     members:
     - type: sriov_pf
       name: p5p1
       numvfs: 3
       primary: true
       promisc: true
       use_dhcp: false
       defroute: false
       link_mode: switchdev
     - type: sriov_pf
       name: p5p2
       numvfs: 3
       promisc: true
       use_dhcp: false
       defroute: false
       link_mode: switchdev
...
 - type: vlan
   vlan_id:
     get_param: TenantNetworkVlanID
   device: bond-pf
   addresses:
   - ip_netmask:
       get_param: TenantIpSubnet
...
Copy to Clipboard Toggle word wrap

지원되는 본딩 구성은 다음과 같습니다.

  • active-backup - mode=1
  • active-active 또는 balance-xor - mode=2
  • 802.3ad(LACP) - mode=4

다음 본딩 구성은 지원되지 않습니다.

  • xmit_hash_policy=layer3+4

인터페이스 구성

다음 절차에 따라 인터페이스 구성을 확인합니다.

절차

  1. 배포하는 동안 호스트 네트워크 구성 툴 os-net-config 를 사용하여 hw-tc-offload 를 활성화합니다.
  2. 컴퓨팅 노드를 재부팅할 때마다 sriov_config 서비스에서 hw-tc-offload 를 활성화합니다.
  3. 본딩에 연결된 NIC의 hw-tc-offload 매개변수를 on 으로 설정합니다.

    예제

    $ ethtool -k ens1f0 | grep tc-offload
    
    hw-tc-offload: on
    Copy to Clipboard Toggle word wrap

인터페이스 모드

다음 절차를 사용하여 인터페이스 모드를 확인합니다.

절차

  1. HW 오프로드에 사용하는 인터페이스에 대해 eswitch 모드를 switchdev 로 설정합니다.
  2. 호스트 네트워크 구성 툴 os-net-config 를 사용하여 배포 중에 eswitch 를 활성화합니다.
  3. 컴퓨팅 노드를 재부팅할 때마다 sriov_config 서비스에서 eswitch 를 활성화합니다.

    예제

    $ devlink dev eswitch show pci/$(ethtool -i ens1f0 | grep bus-info \
    | cut -d ':' -f 2,3,4 | awk '{$1=$1};1')
    Copy to Clipboard Toggle word wrap

참고

PF 인터페이스의 드라이버는 "mlx5e_rep" 로 설정되어 있으며, 이는 e-switch uplink 포트의 대표자임을 나타냅니다. 이는 기능에 영향을 미치지 않습니다.

OVS 오프로드 상태

다음 절차를 사용하여 OVS 오프로드 상태를 확인합니다.

  • 컴퓨팅 노드에서 OVS에서 하드웨어 오프로드를 활성화합니다.

    $ ovs-vsctl get Open_vSwitch . other_config:hw-offload
    
    "true"
    Copy to Clipboard Toggle word wrap

VF 대표자 포트 이름

VF 대표 포트의 일관된 이름을 유지하기 위해 os-net-config 는 udev 규칙을 사용하여 <PF-name>_<VF_id> 형식의 포트 이름을 변경합니다.

절차

  • 배포 후 VF 대표 포트의 이름이 올바르게 지정되었는지 확인합니다.

    예제

    $ cat /etc/udev/rules.d/80-persistent-os-net-config.rules
    Copy to Clipboard Toggle word wrap

    샘플 출력

    # This file is autogenerated by os-net-config
    
    SUBSYSTEM=="net", ACTION=="add", ATTR{phys_switch_id}!="", ATTR{phys_port_name}=="pf*vf*", ENV{NM_UNMANAGED}="1"
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="0000:65:00.0", NAME="ens1f0"
    SUBSYSTEM=="net", ACTION=="add", ATTR{phys_switch_id}=="98039b7f9e48", ATTR{phys_port_name}=="pf0vf*", IMPORT{program}="/etc/udev/rep-link-name.sh $attr{phys_port_name}", NAME="ens1f0_$env{NUMBER}"
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="0000:65:00.1", NAME="ens1f1"
    SUBSYSTEM=="net", ACTION=="add", ATTR{phys_switch_id}=="98039b7f9e49", ATTR{phys_port_name}=="pf1vf*", IMPORT{program}="/etc/udev/rep-link-name.sh $attr{phys_port_name}", NAME="ens1f1_$env{NUMBER}"
    Copy to Clipboard Toggle word wrap

네트워크 트래픽 흐름

HW 오프로드 네트워크 흐름은 애플리케이션별 ASIC(Integrated circuit) 칩을 사용하는 물리적 스위치 또는 라우터와 유사한 방식으로 작동합니다.

스위치 또는 라우터의 Cryostat 쉘에 액세스하여 라우팅 테이블 및 기타 디버깅을 검사할 수 있습니다. 다음 절차에서는 Cumulus Linux 스위치의 Broadcom 칩셋을 예로 사용합니다. 환경에 적합한 값을 바꿉니다.

절차

  1. Broadcom 칩 테이블 콘텐츠를 가져오려면 bcmcmd 명령을 사용합니다.

    $ cl-bcmcmd l2 show
    Copy to Clipboard Toggle word wrap

    샘플 출력

    mac=00:02:00:00:00:08 vlan=2000 GPORT=0x2 modid=0 port=2/xe1
    mac=00:02:00:00:00:09 vlan=2000 GPORT=0x2 modid=0 port=2/xe1 Hit
    Copy to Clipboard Toggle word wrap

  2. TC(트래픽 제어) 계층을 검사합니다.

    $ tc -s filter show dev p5p1_1 ingress
    Copy to Clipboard Toggle word wrap

    샘플 출력

    …
    filter block 94 protocol ip pref 3 flower chain 5
    filter block 94 protocol ip pref 3 flower chain 5 handle 0x2
      eth_type ipv4
      src_ip 172.0.0.1
      ip_flags nofrag
      in_hw in_hw_count 1
            action order 1: mirred (Egress Redirect to device eth4) stolen
            index 3 ref 1 bind 1 installed 364 sec used 0 sec
            Action statistics:
            Sent 253991716224 bytes 169534118 pkt (dropped 0, overlimits 0 requeues 0)
            Sent software 43711874200 bytes 30161170 pkt
            Sent hardware 210279842024 bytes 139372948 pkt
            backlog 0b 0p requeues 0
            cookie 8beddad9a0430f0457e7e78db6e0af48
            no_percpu
    Copy to Clipboard Toggle word wrap

  3. 이 출력에서 in_hw 플래그 및 통계를 검사합니다. 하드웨어라는 용어는 하드웨어 가 네트워크 트래픽을 처리함을 나타냅니다. tc-policy=none 을 사용하는 경우 이 출력 또는 tcpdump를 확인하여 하드웨어 또는 소프트웨어가 패킷을 처리할 때 조사할 수 있습니다. 드라이버가 패킷을 오프로드할 수 없는 경우 dmesg 또는 ovs-vswitch.log 에서 해당 로그 메시지를 볼 수 있습니다.
  4. 예: Mellanox의 경우 로그 항목은 dmesg 의 syndrome 메시지와 유사합니다.

    샘플 출력

    [13232.860484] mlx5_core 0000:3b:00.0: mlx5_cmd_check:756:(pid 131368): SET_FLOW_TABLE_ENTRY(0x936) op_mod(0x0) failed, status bad parameter(0x3), syndrome (0x6b1266)
    Copy to Clipboard Toggle word wrap

    이 예에서 오류 코드 (0x6b1266)는 다음 동작을 나타냅니다.

    샘플 출력

    0x6B1266 |  set_flow_table_entry: pop vlan and forward to uplink is not allowed
    Copy to Clipboard Toggle word wrap

시스템

다음 절차에 따라 시스템을 검증합니다.

절차

  1. 시스템에서 SR-IOV 및 VT-d가 활성화되어 있는지 확인합니다.
  2. GRUB을 사용하여 커널 매개 변수에 intel_iommu=on 을 추가하여 Linux에서 IOMMU를 활성화합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat