了解 VMware ESXi 中的 SNMP 第 2 层网络连接
search cancel

了解 VMware ESXi 中的 SNMP 第 2 层网络连接

book

Article ID: 341579

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

本文介绍如何获取有关 VMware ESXi 物理网络接口卡与给定虚拟机的虚拟网卡之间的第 2 层网络配置的信息,以及如何获取端口状态和统计信息。

MIB 模块包括:

  • IETF IF-MIB 2863
  • IEEE OEEE 8-21-Q-BRIDGE-MIB REVISION 200810150000Z
VMware SNMP 代理根据 IETF 和 IEEE 标准进行报告,并且不提供除 MIB 模块之外的其他文档。 有关详细信息,请参见 Determining the MIB module listing, name, and type of an SNMP OID (2054359)


Symptoms:
免责声明: 本文为 Understanding the SNMP Layer 2 networking in the VMware ESXi (2118059) 的翻译版本。 尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。 有关最新内容,请参见英文版本。

Environment

VMware vSphere ESXi 5.5
VMware vSphere ESXi 5.0
VMware vSphere ESXi 5.1
VMware vSphere ESXi 6.0

Resolution

MIB 模块包括:
  1. IETF IF-MIB 2863
  2. IEEE IEEE8021-Q-BRIDGE-MIB Revision 200810150000Z
在 IfTable/ifXTable 表中,SNMP 针对作为 vSwitch 上行链路的 ESXi 物理网卡进行了报告。 ESXi 代理还报告了 vSwitch 汇总统计信息和 ESXi 主机使用的虚拟接口。 具有一个物理网卡的系统上的 stock ESXi 主机配置报告了以下内容:

ifIndex 1, ifType.1 6(ethernet), ifDecr.1 "vmnic0 at 0:0:.."
ifIndex 2, ifType.2 53(propVirtual), ifDescr.2 "vswitch vSwitch0 type: traditional"
ifIndex 3, ifType.3 258(vmwareVirtualNic), ifDescr.3 "virtual ethernet interface vmk0 at ..."

有关 ifType 的详细信息,请参见: https://www.iana.org/assignments/ianaiftype-mib/ianaiftype-mib

截至 2015 年 6 月 29 日,上述链接正确无误

ifStackTable 介绍了以下三个 ifTable 条目是如何相关联的:

IF-MIB::ifStackStatus.1.0 = INTEGER: active(1)
IF-MIB::ifStackStatus.5.1 = INTEGER: active(1)
IF-MIB::ifStackStatus.6.5 = INTEGER: active(1)
IF-MIB::ifStackStatus.0.6 = INTEGER: active(1)

注意:0 表示在该项下方或上方没有任何项。 例如,条目 .1.0 表示在物理以太网下方没有任何项,而5.1 表示物理以太网连接到虚拟交换机。

此外,如果将上行链路加入链路聚合中,则会根据 IEEE/IETF 标准在 ifTable/ifXTable 中进行报告。

对于其虚拟网卡连接到虚拟交换机端口的虚拟机,访问网桥 MIB 的实例以获取 l2 统计信息(传入/传出丢弃帧)。 IEEE 标准将针对每个端口和每个 VLAN 进行报告。

网桥端口 (IEEE) 标识符与 ifIndex (IETF) 不同。 任何给定端口的网桥 MIB 都会提供从网桥端口到 ifIndex 的映射(如果存在),否则将报告为 0。

例如,从 vswitch 1 端口 3 进行映射:

ifIndex 1 显示上行链路。 第一个索引是 vSwitch 的标识符,与较旧的 IETF BRIDGE-MIB (RFC 1493) 不同,IEEE8021-Q-BRIDGE-MIB 支持为每个 SNMP 代理设置多个虚拟网桥。 此外,ENTITY-MIB entLogicalTable 提供了用于跨多个分布式 ESXi SNMP 代理标识分布式虚拟交换机实例的条目。

例如,DVSID: 在各个 ESXi 系统之间是相同的:

ENTITY-MIB::entLogicalDescr.1 = STRING: ieee8021BridgeBaseComponentId: 3, DVSID: 64 76 73 77 69 74 63 68-00 00 00 00 00 00 00 00
ENTITY-MIB::entLogicalType.1 = OID: IEEE8021-BRIDGE-MIB::ieee8021BridgeMib
ENTITY-MIB::entLogicalTAddress.1 = ""
ENTITY-MIB::entLogicalTDomain.1 = OID: TRANSPORT-ADDRESS-MIB::transportDomainUdpIpv4

您可以以可能连接到虚拟交换机的物理 ESXi 网卡开头。 如果它们不是,ifStackTable 将报告以下内容:

snmpwalk -mall -v3 -u joe -l noAuthNoPriv 192.0.2.1 ieee8021BridgeBasePortIfIndex

IEEE8021-BRIDGE-MIB::ieee8021BridgeBasePortIfIndex.1.3 = INTEGER: 1
IEEE8021-BRIDGE-MIB::ieee8021BridgeBasePortIfIndex.1.5 = INTEGER: 7
IEEE8021-BRIDGE-MIB::ieee8021BridgeBasePortIfIndex.1.11 = INTEGER: 0
IEEE8021-BRIDGE-MIB::ieee8021BridgeBasePortIfIndex.2.3 = INTEGER: 2

如果 vSwitch 1 vswitch 端口 11 (ieee8021BridgeBasePortIfIndex.1.11) 不具有 ifTable 条目,则它可能连接到了虚拟机。

例如,要报告配置有传统虚拟交换机或分布式虚拟交换机的 VMware ESXi 上每个虚拟机网卡的统计信息,请执行以下操作:
  1. 获取虚拟机 MAC 地址。

    VMWARE-VMINFO-MIB::vmwVmMAC[2][14] = STRING: 0:c:29:38:90:29
    VMWARE-VMINFO-MIB::vmwVmDisplayName[2] = STRING: cloudvm build 2467266

  2. 通过对每个 vSwitch 转发表 (ieee8021QBridgeTpFdbPort) 进行查询,查找获知此 MAC 地址的端口,直到找到为止。

    IEEE8021-Q-BRIDGE-MIB::ieee8021QBridgeTpFdbPort[1][1][STRING: 0:c:29:38:90:29] = Gauge32: 13

获取交换机 1 端口“13”[1][13] 的每个 VLAN 发送的计数器,并按照计数器类型进行汇总,以生成每端口衡量指标。

注意: 4096 表示没有根据 IEEE8021-TC-MIB 分配 VLAN

IEEE8021-Q-BRIDGE-MIB::ieee8021QBridgeTpVlanPortInFrames[1][13][4096] = Counter64: 37801 frames
IEEE8021-Q-BRIDGE-MIB::ieee8021QBridgeTpVlanPortOutFrames[1][13][4096] = Counter64: 5368872 frames
IEEE8021-Q-BRIDGE-MIB::ieee8021QBridgeTpVlanPortInDiscards[1][13][4096] = Counter64: 4 frames

否则,仅对于端口级别统计信息来说,不需要汇总看到的 VLAN:

IEEE8021-BRIDGE-MIB::ieee8021BridgeTpPortInFrames[1][13] = Counter64: 37801 frames
IEEE8021-BRIDGE-MIB::ieee8021BridgeTpPortOutFrames[1][13] = Counter64: 5368872 frames
IEEE8021-BRIDGE-MIB::ieee8021BridgeTpPortInDiscards[1][13] = Counter64: 4 frames

要获取端口标识符,请执行以下查询:

IEEE8021-BRIDGE-MIB::ieee8021BridgeBasePortName[1][13] = STRING: 33554444

要获取此端口接受的 MTU 大小,请执行以下查询:

IEEE8021-BRIDGE-MIB::ieee8021BridgeTpPortMaxInfo[1][13] = INTEGER: 1500 bytes

IETF IF-MIB 不包含虚拟机端口的条目,只包含 vmk(ifType 258) 和物理网卡 (ifType 6) 的条目。 必须使用此 IEEE 网桥 mib 从虚拟交换机端口中的虚拟机虚拟网卡获取统计信息。

IEEE8021-BRIDGE-MIB::ieee8021BridgeBasePortIfIndex[1][3] = INTEGER: 1
IEEE8021-BRIDGE-MIB::ieee8021BridgeBasePortIfIndex[1][5] = INTEGER: 6
IEEE8021-BRIDGE-MIB::ieee8021BridgeBasePortIfIndex[1][13] = INTEGER: 0
where ifIndex 3 is the uplink
IF-MIB::ifDescr[3] = STRING: Device vmnic2 at 03:00.2 tg3
IF-MIB::ifType[3] = INTEGER: ethernetCsmacd(6)
and ifIndex 6 is the vmk0
IF-MIB::ifDescr[6] = STRING: Virtual interface: vmk0 on vswitch vSwitch0 portgroup: Management Network
IF-MIB::ifType[6] = INTEGER: vmwareVirtualNic(258)
问: 这一切为何如此复杂? 为什么不在从 VMware 企业 MIB 获取这些计数器的 ESXi 代理中提供企业对象?
过去二十年一直在物理环境中实施上述机制,操作员通过查询交换机来确定连接到给定交换机端口的对象。 如果没有 LLDP/CDP,他们将依赖于交换机来查明每端口/每 VLAN 获知的 MAC 地址,然后搜索其地址数据库以匹配 MAC 地址,或转到网络设备上的 arp/nd 表以匹配第 3 层 IP 地址。


Additional Information

有关 VMware ESXi SNMP 遵循的标准文档的详细信息,请参见:

注意: 截至 2015 年 6 月 19 日,上述链接正确无误。 如果您发现该链接已损坏,请提供反馈,VMware 员工会更新该链接。

Understanding the SNMP Layer 2 networking in the VMware ESXi