在 VMware ESXi 和 VMware ESX 上配置流控制
search cancel

在 VMware ESXi 和 VMware ESX 上配置流控制

book

Article ID: 342235

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

本文介绍在 ESXi/ESX 主机使用的物理网络接口上禁用流控制的方法。

暂停帧与以太网流控制相关,用于管理网络分段上的数据传输速度。有时,发送节点(ESXi/ESX 主机、交换机等)传输数据的速度可能会比其他节点可以接受数据的速度快。在这种情况下,负载过重的网络节点可以将暂停帧发送回发送方,从而在短时间内暂停传输流量。

如果不希望在环境中启用流控制,则可以对 ESX/ESXi 主机上的给定网络接口或驱动程序禁用流控制支持功能。方法因驱动程序不同而有所差别。

注意:默认情况下,流控制在 VMware ESXi 和 ESX 中的所有网络接口上处于启用状态。这是首选配置。如果环境中存在大量暂停帧,通常表示存在基础问题,应加以调查。


Symptoms:

免责声明:本文为 Configuring Flow Control on VMware ESXi and VMware ESX (1013413) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。


Environment

VMware ESXi 4.0.x Installable
VMware vSphere ESXi 5.5
VMware ESXi 3.5.x Installable
VMware vSphere ESXi 6.0
VMware ESX 4.1.x
VMware ESX 4.0.x
VMware ESX Server 3.5.x
VMware vSphere ESXi 5.0
VMware ESXi 4.1.x Embedded
VMware ESXi 4.0.x Embedded
VMware ESXi 3.5.x Embedded
VMware vSphere ESXi 5.1
VMware ESX Server 3.0.x
VMware ESXi 4.1.x Installable

Resolution

使用驱动程序模块选项配置流控制

某些网络驱动程序提供了模块选项,用于在驱动程序中配置流控制功能。模块选项在启动过程中生效,因此,需要重新引导 ESX/ESXi 主机。有关如何确定可用模块选项以及如何设置选项的详细信息,请参见 Configuring advanced driver module parameters in ESX/ESXi (1017588)

注意:最佳做法是,更改同一个参数设置时,请在更改前和更改后检查该参数设置的当前值。

例如,Intel e1000 网络接口驱动程序提供了 FlowControl 模块选项。选项值为每个网络接口的流控制设置列表(以逗号分隔)。此驱动程序可定义四项设置:

  • 0 – 不启用流控制。
  • 1 – 仅对接收的 (RX) 流量启用流控制。
  • 2 – 仅对传输的 (TX) 流量启用流控制。
  • 3 – 同时对接收的和传输的流量启用流控制。


ESX/ESXi 3.0 到 4.1:

  • 要对四端口 Intel e1000 网络接口的所有端口禁用流控制,请在 e1000 模块上设置选项 FlowControl=0,0,0,0:

    # esxcfg-module -s FlowControl=0,0,0,0 e1000

  • 在 Intel 适配器 1 上禁用流控制,在适配器 2 上仅启用传输流控制,请执行以下设置:

    # esxcfg-module -s FlowControl=0,2 e1000

  • 在 Intel 适配器 1 和适配器 4 上启用传输流控制,请执行以下设置:

    # esxcfg-module -s FlowControl=2,,,2 e1000

  • 将更改恢复为无流控制的原始设置,请执行以下设置:

    # esxcfg-module -s ModuleName ""

    通过运行以下命令确认上述命令是否清除了特定模块的选项:

    # esxcfg-module -g ModuleName

    您会看到类似以下内容的输出:

    该选项为空字符串 ModuleNameoptions = '' (The option is an empty string ModuleName options = '')

ESXi 5.x/6.0:

  • 要对四端口 Intel e1000 网络接口的所有端口禁用流控制,请执行以下设置:

    # esxcli system module parameters set --module e1000 --parameter-string "FlowControl=0"

    注意:0 表示禁用,1 表示启用。

  • 在四端口 Intel e1000 网络接口的所有端口上显示流控制参数的当前状态:

    # esxcli system module parameters list --module e1000 | grep "FlowControl"

  • 要将更改恢复为无流控制的原始设置:

    # esxcli system module parameters set --module e1000 --parameter-string "FlowControl="

使用 ethtool 配置流控制

某些网络驱动程序允许您在 ESXi/ESX 主机的控制台上使用 ethtool 命令行实用程序修改配置选项。

  1. 打开 ESXi/ESX 主机的控制台。有关详细信息,请参见 Unable to connect to an ESX host using Secure Shell (SSH) (1003807)Using Tech Support Mode in ESXi 4.1 and ESXi 5.x (1017910)

  2. 使用以下命令可以获取网络接口卡和名称列表:

    # esxcfg-nics -l

    例如:

    # esxcfg-nics -l
    Name PCI Driver Link Speed Duplex MAC Address
    vmnic0 00:02:04.00 ACME Up 1000Mbps Full 01:23:45:67:89:AB
    vmnic1 00:02:05.00 ACME Up 1000Mbps Full 01:23:45:67:78:AC

  3. 使用 ethtool --show-pause 命令可显示每个网络接口的暂停帧参数信息,其中,接口名称取步骤 2 获取的名称:

    # ethtool --show-pause <VMNic Name>

    例如:

    # ethtool --show-pause vmnic0
    Pause parameters for vmnic0:
    Autonegotiate:on
    RX:off
    TX:off

    注意:在 ESXi 4.0 中,完整文本开关不会解析为 ethtool 命令。此时可使用 -A-a 类型开关代替。

    ethtool 用法帮助命令 ethtool -h 可提供所需的开关:

    ethtool -a|--show-pause DEVNAME
    ethtool -A|--pause DEVNAME


    运行以下命令可在 ESXi 4.0 中显示暂停帧参数信息:

    # ethtool -a <VMNic Name>

    例如:

    # ethtool -avmnic0
    Pause parameters for vmnic0:
    Autonegotiate:on
    RX:off
    TX:off

  4. 使用 ethtool --pause 命令更改正在运行的网络接口配置,其中,接口名称取步骤 2 中获取的名称。

    • 要对发送和接收的流量禁用流控制,请使用以下命令:

      # ethtool --pause<VMNic Name>tx off rx off

    • 要对发送和接收的流量启用流控制,请使用以下命令:

      # ethtool --pause <VMNic Name> tx on rx on

    • 要启用流控制自动协商,请使用以下命令:

      # ethtool --pause<VMNic Name>autoneg on

    • 要禁用流控制自动协商,请使用以下命令:

      # ethtool --pause<VMNic Name>autoneg off

  5. 将步骤 4 中使用的相同命令附加到 rc.local local.sh 文件,以便在重新引导后可以保留这些设置。相应文件的名称和位置根据正在运行的 ESXi/ESX 版本而有所不同。
    有关确定和修改该文件的详细信息,请参见 Modifying the rc.local or sh.local file in ESX/ESXi to execute commands while booting (2043564)

  6. 保存此文件。

  7. 对于 ESXi 主机,请使用以下命令保存配置更改:

    # /sbin/auto-backup.sh

使用 ethtool 时,脚本中的命令应在一行中进行声明,而不是每行声明一个命令。

例如:

# ethtool --pause vmnic0 autoneg off tx off rx off

而不是使用:

# ethtool --pause vmnic0 autoneg off
# ethtool --pause vmnic0 tx off rx off
# ethtool --show-pause vmnic0
Pause parameters for vmnic0:
Autonegotiate:on
RX:off
TX:off

注意
  • 在步骤 5 中附加到 rc.locallocal.sh 文件的命令将在启动时执行,并且在重新引导后可以保留更改。
  • 在 ESXi 5.1 及更高版本中已弃用 /etc/rc.local。不过,它仍然存在,但修改 ethtool 引导参数时应在 /etc/rc.local.d/local.sh 文件中进行。


Additional Information

注意:并非所有网络驱动程序和网卡都允许修改或使用流控制。例如,e1000e 驱动程序就不支持流控制。使用以下命令查看特定驱动程序的参数:
esxcli system module parameters list --moduledriver_name
您可以使用 grep 命令筛选相关结果以获取特定参数的值:

esxcli system module parameters list --module e1000 | grep "FlowControl".

要在本文更新时收到提醒,请在“Actions”框中单击 Subscribe to Article。