AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1216943
Accepted
Pete
Pete
Asked: 2020-03-14 11:54:35 +0800 CST2020-03-14 11:54:35 +0800 CST 2020-03-14 11:54:35 +0800 CST

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

  • 772

嗨 OVS 网络专家,

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

在此处输入图像描述

我对 Ubuntu 和 OVS 有所了解,但我的同事在 Ubuntu 的物理接口(eno1和eno2)连接到 OVS 桥上的逻辑接口( dpdk1和dpdk2 )的地方做了一些事情,我记得他告诉我他会“在物理接口上安装 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,所以我认为eno1和eno2的 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 bridge”完全没有删节,因为我不知道这里有什么相关的。

然而......我相当肯定OVS桥不是瓶颈。当我启动两个虚拟机并使用 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:~#
drivers interface 16.04
  • 2 2 个回答
  • 1682 Views

2 个回答

  • Voted
  1. waltinator
    2020-03-14T14:53:51+08:002020-03-14T14:53:51+08:00

    首先,阅读man ip;man ip-link

    您可以通过以下方式查看您的 MTU 值:

    ip link | grep -E 'mtu [0-9]+'
    

    上面显示了系统知道的所有接口的 MTU。

    并且您可以使用 更改 MTU ip link set,如man页面中所述。

    如果您的界面未显示在ip link命令中,
    您可以通过sudo journalctl -b 0.

    翻阅此页面以了解您的系统如何(错误地)处理接口。

    • 1
  2. Best Answer
    heynnema
    2020-03-17T14:37:57+08:002020-03-17T14:37:57+08:00

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

    来源: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
    

    当启用巨型帧时,DPDK 端口的 mbuf 段的大小会增加,这样特定大小的完整巨型帧可以容纳在单个 mbuf 段中。

    巨型帧支持已针对 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
    
    • 1

相关问题

  • Ubuntu 中的科胜讯调制解调器

  • 如何解决联想笔记本电脑上恢复/电源问题时禁用的蓝牙?

  • 如何为 LG X130 上网本安装 relink 无线驱动程序

  • 类似于 Eyefinity 的东西?

  • 在哪里可以找到 Brother HL-2170W 64 位打印机驱动程序?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve