如何通过 SNMP 读取每个接口/端口的 STP 状态(FORWARD/BLOCKING)

网络工程 思科 snmp 生成树
2021-07-26 23:47:50

如何读取每个接口的 STP 端口状态(在我的软件/程序中)?有一个名为 BRIDGE-MIB 的 MIB,其 OID 为“dot1dStpPortState=1.3.6.1.2.1.17.2.15.1.3”,它返回转发或阻塞状态。但我的问题是我无法将返回值与端口/接口相关联。似乎 OID 的索引是“show spanning-tree”命令的输出中显示的“nbr”,但我又不知道这与接口编号有什么关系(似乎有一个固定偏移量添加到接口编号,但它是如何计算的?)显示了典型 show spanning-tree cmd 的输出:

Switch2#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
 Root ID    Priority    32769
         Address     0006.d6ab.a040
         Cost        19
         Port        11 (FastEthernet0/11)
         Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
         Address     0006.d6ac.46c0
         Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
         Aging Time 15
Interface        Role Sts Cost      Prio.**Nbr** Type
---------------- ---- --- --------- --------        -------------------------------
Fa0/2            Desg FWD 19        128.4    P2p
Fa0/11           Root FWD 19        128.13   P2p
Fa0/12           Altn BLK 19        128.14   P2p

最后三行显示每个接口/端口的状态和相关的优先级。Nbr(有谁知道每个接口的nbr是如何计算的?)

是否有任何 OID 可以简单地显示每个端口的 STP 状态?

我在这里先向您的帮助表示感谢。

1个回答

您在提到的 OID 中得到的是一张表:

BRIDGE-MIB::dot1dStpPortState.1025 = INTEGER: blocking(2)
BRIDGE-MIB::dot1dStpPortState.1026 = INTEGER: blocking(2)
BRIDGE-MIB::dot1dStpPortState.1027 = INTEGER: blocking(2)
BRIDGE-MIB::dot1dStpPortState.1028 = INTEGER: forwarding(5)
BRIDGE-MIB::dot1dStpPortState.1029 = INTEGER: blocking(2)
BRIDGE-MIB::dot1dStpPortState.1030 = INTEGER: blocking(2)
BRIDGE-MIB::dot1dStpPortState.1031 = INTEGER: forwarding(5)
BRIDGE-MIB::dot1dStpPortState.1032 = INTEGER: blocking(2)
BRIDGE-MIB::dot1dStpPortState.1033 = INTEGER: blocking(2)
BRIDGE-MIB::dot1dStpPortState.1034 = INTEGER: blocking(2)
BRIDGE-MIB::dot1dStpPortState.1035 = INTEGER: blocking(2)
BRIDGE-MIB::dot1dStpPortState.1036 = INTEGER: blocking(2)

然后通过查询 .1.3.6.1.2.1.17.1.4.1.2.1033 将网桥端口与接口索引匹配

BRIDGE-MIB::dot1dBasePortIfIndex.1033 = INTEGER: 62009

然后在接口表中查找

IF-MIB::ifName.62009 = STRING: ge.6.9