8.9. OVS TC-flower 硬件卸载故障排除


当对使用 OVS TC-flower 硬件卸载的 Red Hat OpenStack Platform (RHOSP)环境进行故障排除时,请查看网络和接口的先决条件和配置。

先决条件

  • Linux 内核 4.13 或更新版本
  • OVS 2.8 或更新版本
  • RHOSP 12 或更高版本
  • iproute 4.12 或更新版本
  • Mellanox NIC 固件,如 FW ConnectX-5 16.21.0338 或更新版本

有关支持的先决条件的更多信息,请参阅红帽知识库解决方案网络适配器 Fast Datapath 功能支持列表

网络配置

在 HW 卸载部署中,您可以根据您的要求为网络配置选择以下场景之一:

  • 您可以使用附加到绑定的相同接口集或每种类型的不同 NIC 集来在 VXLAN 和 VLAN 上基本客户虚拟机。
  • 您可以使用 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 or balance-xor - mode=2
  • 802.3ad (LACP) - mode=4

不支持以下绑定配置:

  • xmit_hash_policy=layer3+4

接口配置

使用以下步骤验证接口配置。

流程

  1. 在部署过程中,使用主机网络配置工具 os-net-config 启用 hw-tc-offload
  2. 每当您重启 Compute 节点时,在 sriov_config 服务上启用 hw-tc-offload
  3. 对于附加到绑定的 NIC,将 hw-tc-offload 参数设置为 on

    Example

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

接口模式

使用以下步骤验证接口模式。

流程

  1. 将 eswitch 模式设置为用于 HW 卸载的接口的 switchdev
  2. 使用主机网络配置工具 os-net-config 在部署期间启用 eswitch
  3. 每当重新引导 Compute 节点时,在 sriov_config 服务上启用 eswitch

    Example

    $ 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 卸载状态。

  • 在 Compute 节点中启用 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 代表器端口是否正确被命名。

    Example

    $ 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)芯片的物理交换机或路由器。

您可以访问交换机或路由器的 ASIC shell,以检查路由表和进行其他调试。以下流程使用 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 标志和统计信息。词语 hardware 表示硬件处理网络流量。如果使用 tc-policy=none,您可以检查此输出或 tcpdump 在硬件或软件处理数据包时进行调查。当驱动程序无法卸载数据包时,您可以在 dmesgovs-vswitch.log 中看到对应的日志消息。
  4. 对于 Mellanox,例如,在 dmesg 中类似复合消息的日志条目。

    输出示例

    [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. 通过在内核参数中添加 intel_iommu=on 在 Linux 中启用 IOMMU,例如使用 GRUB。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat