逻辑交换机间不同主机上两个虚拟机之间的 Ping 操作失败
search cancel

逻辑交换机间不同主机上两个虚拟机之间的 Ping 操作失败

book

Article ID: 336604

calendar_today

Updated On:

Products

VMware NSX

Issue/Introduction

Symptoms:
免责声明:本文为 Pings fail between two VMs on different hosts across a logical switch (2145359) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。


 

  • 同一 ESXi 主机上的虚拟机可以可靠地相互执行 ping 操作
  • 不同 ESXi 主机上的虚拟机无法相互执行 ping 操作
  • 所有虚拟机都可以对其默认网关执行 ping 操作
  • 在多播和混合模式 NSX 部署中,某些管理程序 VTEP 无法加入多播组
  • 虚拟机无法响应 ARP 请求,出现无响应状态



Environment

VMware NSX for vSphere 6.2.x

Cause

发生此问题的原因是,NSX 环境中的绑定策略不匹配,在该环境中,准备 NSX 群集之后,通过 vCenter Server 修改了 vDS 设置,这不受支持。

Resolution

使用以下过程验证现有绑定策略设置是否一致:


  1. 运行下面的命令,通过 netcpa 日志确认分布式路由使用的已部署绑定策略:

    cat var/log/tdlog/netcpa.all | grep 'teamingPolicy'

    该命令输出仅适用于 DLR 端口的 DLR 日志:

    2016-04-04T17:13:54.243Z [4E758B70 info 'Default'] Updated vdr dvs entry 23 e8 3a 50 68 d3 25 d4-xx xx xx xx xx xx xx xx:(updated by VSM):vxlanOnly:teamingPolicy = LOADBALANCE_SRCID:numUplink = 2:numActiveUplink = 2:uplinkPortNames = Uplink 2,Uplink 1

    注意:上述输出仅在已启用或配置分布式路由的情况下才可用。在上述示例中,NSX 群集绑定策略即将在具有 2 个活动上行链路(Uplink1 和 Uplink2)的虚拟源 ID 上进行负载平衡。

  2. 运行下面的命令,为所有 VXLAN 通道端点 (VTEP) 接口确定 VXLAN 通道端点 (VTEP) vmknic 端口 ID 和端点 ID:

    net-vdl2 -l -svDS_NSX_Name

    其中,vDS_NSX_Name 是为 VXLAN 准备的虚拟分布式交换机的名称。

    该命令输出以下内容:

    vmknic count: 2
    VXLAN vmknic: vmk3
    VDS port ID: 45
    Switch port ID: 33554441
    Endpoint ID: 0
    VLAN ID: 602
    IP: x.x.x.x
    Netmask: 255.255.252.0
    ……
    VXLAN vmknic: vmk4
    VDS port ID: 52
    Switch port ID: 33554442
    Endpoint ID: 1
    VLAN ID: 602
    IP: x.x.x.x
    Netmask: 255.255.252.0
    Segment ID: x.x.x.x

    其中
    • Vmknic count: 2是此特定示例中的 VTEP 接口 vmk3 和 vmk4
    • VDS port ID: 45 VDS port ID: 52 是下面的步骤 3 中使用的引用端口。
    • Endpoint ID: 0 和 Endpoint ID: 1 是下面的步骤 4 中使用的引用 vmknic ID。此 ID 从 0 开始按顺序递增。

  3. 运行下面的命令,为所有 VTEP 端口确定 VTEP 接口绑定策略和活动链路:

    net-dvs -l

    该命令输出如下所示:

    port 45:
    com.vmware.common.port.alias = , propType = CONFIG
    com.vmware.common.port.connectid = 530521281 , propType = CONFIG
    com.vmware.common.port.portgroupid = dvportgroup-208 , propType = CONFIG
    com.vmware.common.port.block = false , propType = CONFIG
    com.vmware.common.port.dvfilter = filters (num = 0):
    propType = CONFIG
    com.vmware.common.port.ptAllowed = 0x 0.0.0.0
    propType = CONFIG
    com.vmware.etherswitch.port.security = deny promiscuous; deny mac change; deny forged frames
    propType = CONFIG
    com.vmware.etherswitch.port.txUplink = normal , propType = CONFIG
    com.vmware.net.vxlan.vmknic = 0x 1
    propType = CONFIG POLICY
    com.vmware.etherswitch.port.teaming:
    load balancing = source virtual port id
    link selection = link state up;
    link behavior = notify switch; best effort on failure; shotgun on failure;
    active = Uplink 2; Uplink 1;
    standby =
    propType = CONFIG

    port 52:
    com.vmware.common.port.alias = , propType = CONFIG
    com.vmware.common.port.connectid = 537062281 , propType = CONFIG
    com.vmware.common.port.portgroupid = dvportgroup-208 , propType = CONFIG
    com.vmware.common.port.block = false , propType = CONFIG
    com.vmware.common.port.dvfilter = filters (num = 0):
    propType = CONFIG
    com.vmware.common.port.ptAllowed = 0x 0.0.0.0
    propType = CONFIG
    com.vmware.etherswitch.port.security = deny promiscuous; deny mac change; deny forged frames
    propType = CONFIG
    com.vmware.etherswitch.port.txUplink = normal , propType = CONFIG
    com.vmware.net.vxlan.vmknic = 0x 1
    propType = CONFIG POLICY
    com.vmware.etherswitch.port.teaming:
    load balancing = source virtual port id
    link selection = link state up;
    link behavior = notify switch; best effort on failure; shotgun on failure;
    active = Uplink 2; Uplink 1;
    propType = CONFIG

    其中,
    • port 45: 和 port 52:是下述步骤 2 的引用端口输出。
    • com.vmware.net.vxlan.vmknic = 0x 1 是提到的端口连接到 VTEP 接口的健全性检查结果。
    • load balancing = source virtual port id 是系统中配置的引用绑定策略。
    • active = Uplink 2; Uplink 1 是步骤 1 中的活动链路。

  4. 运行下面的命令,确认虚拟机 VXLAN 通信在已知的 VTEP 接口上退出:

    net-vdl2 -l -svDS_NSX_Name-n6007

    其中,6007 虚拟机所在的 VNI ID。

    命令输出以下内容:

    VXLAN Global States:
    Control plane Out-Of-Sync: No
    UDP port: 8472
    VXLAN network: 6007
    Multicast IP: 0.0.0.0
    Control plane: Disabled
    MAC entry count: 0
    ARP entry count: 0
    Port count: 1
    VXLAN port: vdrPort
    Switch port ID: 33554443
    vmknic ID: 1

    其中,
    • vmknic ID: 1 解释在此虚拟线路上往来于虚拟机的通信已按照步骤 2 通过已知的端点 IT。此处的有效条目为 0 和 1。任何其他值意味着虚拟机无法在 ESXi 主机之间通信。

  5. 运行下面的命令,确认虚拟机 VXLAN 通信不包含任何错误:

    net-vdl2 -S -svDS_NSX_Name

    命令输出以下内容:

    tx.passThrough: 0
    tx.vxlanTotal: 0
    tx.clone: 0
    tx.tso: 0
    tx.csum: 0
    tx.drop.invalidFrame: 0
    tx.drop.guestTag: 0
    tx.drop.noResource: 0
    tx.drop.invalidState: 0
    rx.passThrough: 0
    rx.vxlanTotal: 0
    rx.clone: 0
    rx.drop.invalidFrame: 0
    rx.drop.notExist: 0
    rx.drop.noResource: 0
    forward.pass: 0
    forward.reject: 0
    forward.rpf: 0
    arpProxy.reply.total: 0
    arpProxy.reply.fail: 0
    arpProxy.request.total: 0
    arpProxy.request.fail: 0
    mcastProxy.tx.total: 0
    mcastProxy.tx.fail: 0
    mcastProxy.rx.total: 0
    mcastProxy.rx.fail: 0

    其中,
  • tx.drop.invalidState: 0 表明虚拟机位于具有正确端点 ID 的 VXLAN 上,如果虚拟机位于具有错误端点 ID 的 VXLAN 上,它将为非零。
net-vdl2 -S -svDS_NSX_Name -n 6007

tx.total: 0
tx.nonUnicast: 0
tx.crossRouter: 0
tx.drop.total: 0
rx.total: 0
rx.mcastEncap: 0
rx.crossRouter: 0
rx.drop.wrongDest: 0
rx.drop.invalidEncap: 0
rx.drop.total: 0
mac.lookup.found: 0
mac.lookup.flood: 0
mac.lookup.full: 0
mac.update.learn: 0
mac.update.extend: 0
mac.update.full: 0
mac.age: 0
mac.renew: 0
arp.lookup.found: 0
arp.lookup.unknown: 0
arp.lookup.full: 0
arp.lookup.wait: 0
arp.lookup.timeout: 0
arp.update.update: 0
arp.update.unkown: 0
arp.update.notFound: 0
arp.age: 0
arp.renew: 0

其中,
    • tx.drop.total: 0 表明虚拟机位于具有正确端点 ID 的 VXLAN 上,如果虚拟机位于具有错误端点 ID 的 VXLAN 上,它将为非零。

不能通过 GUI 修改 NSX 群集绑定策略来更正不一致性。

支持的更正绑定策略不一致性的方法是,创建和准备包含所需绑定策略的新 NSX 群集,然后将 ESXi 主机迁移到该群集。在进行数据库更改之后,通过其他方式更改管理员数据库中的绑定策略仅适用于新创建的虚拟线路。

有关受支持的配置的详细信息,请参见 NSX installation and Upgrade Guide 中的“Teaming Policy for Virtual Distributed Switches” 部分。



Additional Information