使用 DPDK 驱动程序在 Ubuntu 接口上设置 MTU?

皮特

嗨,OVS 网络专家,

我是一名开发人员,正在测试一个新的客户端/服务器应用程序,该应用程序有一天必须通过 OVS 网络运行。一位同事从备用 Ubuntu 主机(版本 16.04.2 LTS)为我构建了一个工作测试平台。我的测试客户端和服务器机器连接到 Ubuntu,并且在主机内,它们的流量通过 OVS 桥运行。(OVS ver 2.12.1,DPDK ver 18.11.2)你可以这样想:

在此处输入图片说明

我对 Ubuntu 和 OVS 有一点了解,但我的同事做了一点,将 Ubuntu 的物理接口(eno1eno2)连接到 OVS 桥上的逻辑接口(dpdk1dpdk2)当时,我记得他告诉我他会“在物理接口上安装 DPDK 驱动程序。” 我的笔记告诉我他使用了这些命令:

/usr/local/share/dpdk/tools/dpdk_nic_bind.py -u 01:00.0
/usr/local/share/dpdk/tools/dpdk_nic_bind.py -u 01:00.1
/usr/local/share/dpdk/tools/dpdk_nic_bind.py -b igb_uio 01:00.1
/usr/local/share/dpdk/tools/dpdk_nic_bind.py -b igb_uio 01:00.0
ovs-vsctl add-port OVS_Bridge dpdk1 -- set Interface dpdk1 type=dpdk options:dpdk-devargs=0000:01:00.0
ovs-vsctl add-port OVS_Bridge dpdk2 -- set Interface dpdk2 type=dpdk options:dpdk-devargs=0000:01:00.1

一切都很好。我的客户端和服务器主机能够很好地相互交谈。

但后来,我的同事离开了公司。

在那之后,我得到了一个新的测试要求,我的客户端和服务器必须通过发送巨型数据包进行通信,即大于 1518 字节的数据包。我可以在我的测试主机上设置数据包大小,没问题。但是当他们通过 Ubuntu 发送流量时,流量碎片为 1518 字节。通过在 Ubuntu 中使用虚拟主机,我知道问题不在于 OVS 桥接器。我猜瓶颈是两个物理接口。

默认情况下,Ubuntu 接口的 MTU 为 1500 字节。同事给我搭建这个环境的时候,我们从来没有玩过MTU,所以我想eno1eno2的MTU还是1500。但很遗憾,接口不再出现在ifconfig输出中。

如果这些接口正在运行 DPDK 驱动程序,有谁知道如何检查当前的 MTU?如果是这样,我可以将该 MTU 设置为 9000 吗?谢谢!

@heynnema 的更新...

me@linux:~# tracepath 168.161.114.120
 1?: [LOCALHOST]                                         pmtu 1500
 1:  168.161.114.100                                     2999.544ms !H
     Resume: pmtu 1500
root@upce-superl1:~#

@heynnema 的第二次更新:

“ovs-vsctl list-ports PDH_bridge2”被删节以显示我关心的两个端口。“sudo lshw -C 桥”完全没有删节,因为我不知道这里有什么相关。

但是......我相当确定OVS桥不是瓶颈。当我启动两个 VM 并使用 iPerf 在它们之间运行流量时,大于 1500 字节的数据包没有问题。但是,当我通过连接到 OVS 网桥端口 dpdk1 和 dpdk2 的两个物理接口运行流量时,我的大数据包会分段。我希望找到一种方法,在物理接口绑定到 DPDK 驱动程序后,在物理接口上设置 MTU。谢谢你。

met@linux:~# ovs-vsctl list-ports PDH_bridge2
dpdk1
dpdk2
met@linux:~#
met@linux:~#
met@linux:~#
met@linux:~# sudo lshw -C bridge
  *-pci:0
       description: Host bridge
       product: Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2
       vendor: Intel Corporation
       physical id: 100
       bus info: pci@0000:00:00.0
       version: 01
       width: 32 bits
       clock: 33MHz
     *-pci:0
          description: PCI bridge
          product: Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1
          vendor: Intel Corporation
          physical id: 1
          bus info: pci@0000:00:01.0
          version: 01
          width: 32 bits
          clock: 33MHz
          capabilities: pci msi pciexpress pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:25 ioport:6000(size=4096) memory:90000000-903fffff ioport:c7a00000(size=5242880)
     *-pci:1
          description: PCI bridge
          product: Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2
          vendor: Intel Corporation
          physical id: 2
          bus info: pci@0000:00:02.0
          version: 01
          width: 32 bits
          clock: 33MHz
          capabilities: pci msi pciexpress pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:27 ioport:5000(size=4096) memory:90400000-90afffff
     *-pci:2
          description: PCI bridge
          product: Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3
          vendor: Intel Corporation
          physical id: 3
          bus info: pci@0000:00:03.0
          version: 01
          width: 32 bits
          clock: 33MHz
          capabilities: pci msi pciexpress pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:29
     *-pci:3
          description: PCI bridge
          product: C610/X99 series chipset PCI Express Root Port #1
          vendor: Intel Corporation
          physical id: 1c
          bus info: pci@0000:00:1c.0
          version: d5
          width: 32 bits
          clock: 33MHz
          capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:30
     *-pci:4
          description: PCI bridge
          product: C610/X99 series chipset PCI Express Root Port #5
          vendor: Intel Corporation
          physical id: 1c.4
          bus info: pci@0000:00:1c.4
          version: d5
          width: 32 bits
          clock: 33MHz
          capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:31 ioport:4000(size=4096) memory:c6000000-c70fffff
        *-pci
             description: PCI bridge
             product: AST1150 PCI-to-PCI Bridge
             vendor: ASPEED Technology, Inc.
             physical id: 0
             bus info: pci@0000:05:00.0
             version: 03
             width: 32 bits
             clock: 33MHz
             capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
             resources: ioport:4000(size=4096) memory:c6000000-c70fffff
     *-isa
          description: ISA bridge
          product: C610/X99 series chipset LPC Controller
          vendor: Intel Corporation
          physical id: 1f
          bus info: pci@0000:00:1f.0
          version: 05
          width: 32 bits
          clock: 33MHz
          capabilities: isa bus_master cap_list
          configuration: driver=lpc_ich latency=0
          resources: irq:0
  *-pci:1
       description: PCI bridge
       product: Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3
       vendor: Intel Corporation
       physical id: 3
       bus info: pci@0000:80:03.0
       version: 01
       width: 32 bits
       clock: 33MHz
       capabilities: pci msi pciexpress pm normal_decode bus_master cap_list
       configuration: driver=pcieport
       resources: irq:33 memory:fba00000-fbefffff ioport:c8000000(size=1048576)
met@linux:~#
met@linux:~#
海尼玛

这不是一个简洁的答案,但您可能需要的所有信息都在这里......

来源:http : //docs.openvswitch.org/en/latest/topics/dpdk/jumbo-frames/

另请阅读:https : //software.intel.com/en-us/articles/jumbo-frames-in-open-vswitch-with-dpdk

备忘单:https : //therandomsecurityguy.com/openvswitch-cheat-sheet/

巨型帧

2.6.0 版中的新功能。

默认情况下,DPDK 端口配置为标准以太网 MTU (1500B)。要为 DPDK 端口启用巨型帧支持,请将接口的 mtu_request 属性更改为足够大的值。例如,要添加 MTU 为 9000 的 DPDK 物理端口,请运行:

$ ovs-vsctl add-port br0 dpdk-p0 -- set Interface dpdk-p0 type=dpdk \
  options:dpdk-devargs=0000:01:00.0 mtu_request=9000

同样,要将现有端口的 MTU 更改为 6200,请运行:

$ ovs-vsctl set Interface dpdk-p0 mtu_request=6200

需要一些额外的配置来利用具有 vHost 用户端口的巨型帧:

必须为 vHost 用户端口启用可合并缓冲区,如下面的 QEMU 命令行片段所示:

-netdev type=vhost-user,id=mynet1,chardev=char0,vhostforce \
-device virtio-net-pci,mac=00:00:00:00:00:01,netdev=mynet1,mrg_rxbuf=on

如果 virtio 设备在来宾环境中绑定到 Linux 内核驱动程序(即接口未绑定到来宾中的 DPDK 驱动程序),则这些逻辑网络接口的 MTU 也必须增加到足够大的值。这避免了在来宾中接收的巨型帧的分段。请注意,“MTU”仅指 IP 数据包的长度,而不是整个帧的长度。

要计算标准 IPv4 帧的准确 MTU,请从支持的最大帧大小中减去 L2 标头和 CRC 长度(即 18B)。因此,要为 9018B 巨型帧设置 MTU:

$ ip link set eth1 mtu 9000

当启用 Jumbo Frames 时,DPDK 端口的 mbuf 段的大小会增加,以便特定大小的完整 Jumbo Frame 可以容纳在单个 mbuf 段中。

Jumbo 帧支持已针对 9728B 帧进行了验证,这是 Fortville NIC 使用 DPDK i40e 驱动程序支持的最大帧大小,但可能支持更大的帧和其他 DPDK NIC 驱动程序。这些情况对于仅涉及东西向流量的用例很常见。

更新 #1:

可能需要类似的东西......不过不能保证,因为我不是任何类型的OVS专家......

sudo ovs-vsctl set Interface dpdk1 mtu_request=9000
sudo ovs-vsctl set Interface dpdk2 mtu_request=9000
sudo ip link set en01 mtu 9000
sudo ip link set en02 mtu 9000

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尽管在 ubuntu 中安装了驱动程序,但我无法使用无线设置!

使用共享库时如何使用EAL选项指定DPDK驱动程序?

Ubuntu 16.04“ Nvidia GPU驱动程序”不能使用专有驱动程序

Ubuntu 16.04-是否正在使用nouveau驱动程序或NVIDIA驱动程序?

在 Ubuntu 16 中使用 Nvidia 驱动程序的问题

Ubuntu 15.10停止使用WiFi驱动程序

Ubuntu 18.04停止使用NVIDIA驱动程序

Ubuntu未正确使用AMD或Nvidia驱动程序

ubuntu的驱动程序

在iMac 21.5(Ubuntu 13.10)上设置nvidia驱动程序

如何在Debian / Ubuntu上使用专有驱动程序设置另一个桌面环境?

使用Docker驱动程序设置Openstack Havana

节点-使用node-postgres的Postgres驱动程序设置

DPDK MLX5 驱动程序 - QP 创建失败

驱动程序igb_uio.ko丢失,并且是openvswitch --dpdk所需的驱动程序

使用适用于Ubuntu 16.04的本地NVIDIA驱动程序将Liquorix设置为默认内核,以增强游戏和实时功能

Ubuntu 16.04.3使用Nouveau驱动程序闪烁,异常的“损坏的”屏幕,并使用专有驱动程序冻结。Nvidia Geforce 8200M康柏CQ60

如何在Ubuntu中安装和使用mongodb c ++驱动程序?

使用 cuda 10.0、ubuntu 18.04 和 tensorflow gpu 1.13 安装 Nvidia 驱动程序

使用 CUDA 驱动程序 Ubuntu 20.04 时 Steam 无法打开

Ubuntu为什么不使用开源AMD / ATI驱动程序?

如何使用ubuntu-drivers更改图形卡驱动程序?

在Ubuntu 18.04上使用Nvidia驱动程序创建的重复xorg会话

我可以在VM上的Ubuntu上使用WiFi驱动程序吗?

DELL XPS 13 9360上的Ubuntu 16.10-(如何)使用Intel图形驱动程序?

在 64 位 Ubuntu 上使用专有 Nvidia 驱动程序的 Wine

如何在Ubuntu 14.04上使用Bumblebee安装nVidia驱动程序

如何在Ubuntu 16.04上安装Intel图形驱动程序以使用vulkan

如何在Ubuntu 16.04上使用4.15.0-xx内核修复Broadcom驱动程序Wifi