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의 멤버인지 확인합니다.
다음 네트워크 구성 예를 참조하십시오.
지원되는 본딩 구성은 다음과 같습니다.
- active-backup - mode=1
- active-active 또는 balance-xor - mode=2
- 802.3ad(LACP) - mode=4
다음 본딩 구성은 지원되지 않습니다.
- xmit_hash_policy=layer3+4
인터페이스 구성
다음 절차에 따라 인터페이스 구성을 확인합니다.
절차
-
배포하는 동안 호스트 네트워크 구성 툴
os-net-config를 사용하여hw-tc-offload를 활성화합니다. -
컴퓨팅 노드를 재부팅할 때마다
sriov_config서비스에서hw-tc-offload를 활성화합니다. 본딩에 연결된 NIC의
hw-tc-offload매개변수를on으로 설정합니다.예제
ethtool -k ens1f0 | grep tc-offload
$ ethtool -k ens1f0 | grep tc-offload hw-tc-offload: onCopy to Clipboard Copied! Toggle word wrap Toggle overflow
인터페이스 모드
다음 절차를 사용하여 인터페이스 모드를 확인합니다.
절차
-
HW 오프로드에 사용하는 인터페이스에 대해 eswitch 모드를
switchdev로 설정합니다. -
호스트 네트워크 구성 툴
os-net-config를 사용하여 배포 중에eswitch를 활성화합니다. 컴퓨팅 노드를 재부팅할 때마다
sriov_config서비스에서eswitch를 활성화합니다.예제
devlink dev eswitch show pci/$(ethtool -i ens1f0 | grep bus-info \ | cut -d ':' -f 2,3,4 | awk '{$1=$1};1')$ devlink dev eswitch show pci/$(ethtool -i ens1f0 | grep bus-info \ | cut -d ':' -f 2,3,4 | awk '{$1=$1};1')Copy to Clipboard Copied! Toggle word wrap Toggle overflow
PF 인터페이스의 드라이버는 "mlx5e_rep" 로 설정되어 있으며, 이는 e-switch uplink 포트의 대표자임을 나타냅니다. 이는 기능에 영향을 미치지 않습니다.
OVS 오프로드 상태
다음 절차를 사용하여 OVS 오프로드 상태를 확인합니다.
컴퓨팅 노드에서 OVS에서 하드웨어 오프로드를 활성화합니다.
ovs-vsctl get Open_vSwitch . other_config:hw-offload
$ ovs-vsctl get Open_vSwitch . other_config:hw-offload "true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
VF 대표자 포트 이름
VF 대표 포트의 일관된 이름을 유지하기 위해 os-net-config 는 udev 규칙을 사용하여 <PF-name>_<VF_id> 형식의 포트 이름을 변경합니다.
절차
배포 후 VF 대표 포트의 이름이 올바르게 지정되었는지 확인합니다.
예제
cat /etc/udev/rules.d/80-persistent-os-net-config.rules
$ cat /etc/udev/rules.d/80-persistent-os-net-config.rulesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플 출력
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
네트워크 트래픽 흐름
HW 오프로드 네트워크 흐름은 애플리케이션별 ASIC(Integrated circuit) 칩을 사용하는 물리적 스위치 또는 라우터와 유사한 방식으로 작동합니다.
스위치 또는 라우터의 Cryostat 쉘에 액세스하여 라우팅 테이블 및 기타 디버깅을 검사할 수 있습니다. 다음 절차에서는 Cumulus Linux 스위치의 Broadcom 칩셋을 예로 사용합니다. 환경에 적합한 값을 바꿉니다.
절차
Broadcom 칩 테이블 콘텐츠를 가져오려면
bcmcmd명령을 사용합니다.cl-bcmcmd l2 show
$ cl-bcmcmd l2 showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플 출력
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
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 HitCopy to Clipboard Copied! Toggle word wrap Toggle overflow TC(트래픽 제어) 계층을 검사합니다.
tc -s filter show dev p5p1_1 ingress
$ tc -s filter show dev p5p1_1 ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플 출력
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
이 출력에서
in_hw플래그 및 통계를 검사합니다.하드웨어라는 용어는 하드웨어가 네트워크 트래픽을 처리함을 나타냅니다.tc-policy=none을 사용하는 경우 이 출력 또는 tcpdump를 확인하여 하드웨어 또는 소프트웨어가 패킷을 처리할 때 조사할 수 있습니다. 드라이버가 패킷을 오프로드할 수 없는 경우dmesg또는ovs-vswitch.log에서 해당 로그 메시지를 볼 수 있습니다. 예: 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)
[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 Copied! Toggle word wrap Toggle overflow 이 예에서 오류 코드 (0x6b1266)는 다음 동작을 나타냅니다.
샘플 출력
0x6B1266 | set_flow_table_entry: pop vlan and forward to uplink is not allowed
0x6B1266 | set_flow_table_entry: pop vlan and forward to uplink is not allowedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
시스템
다음 절차에 따라 시스템을 검증합니다.
절차
- 시스템에서 SR-IOV 및 VT-d가 활성화되어 있는지 확인합니다.
-
GRUB을 사용하여 커널 매개 변수에
intel_iommu=on을 추가하여 Linux에서 IOMMU를 활성화합니다.