MIB 模块包括:
- IETF IF-MIB 2863
- 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 上每个虚拟机网卡的统计信息,请执行以下操作:
- 获取虚拟机 MAC 地址。
VMWARE-VMINFO-MIB::vmwVmMAC[2][14] = STRING: 0:c:29:38:90:29
VMWARE-VMINFO-MIB::vmwVmDisplayName[2] = STRING: cloudvm build 2467266
- 通过对每个 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 地址。