我一直在学习生成树协议(STP/RSTP/MSTP),并且想知道,一旦我打开它并且它可以防止例如网络环路,我怎么知道存在网络环路?
我想在大多数情况下这都是显而易见的,因为环路所在的房间会关闭,但如果没有投诉怎么办?
看来我还是想找到一种方法来了解是否存在这样的网络问题。也许是设备发送了某种警报,或者也许有人偶尔需要检查日志或其他东西?
答案1
您可以查看交换机日志中的生成树事件,或者配置交换机在 STP 关闭端口时发送 SNMP 陷阱。
答案2
测试。如果你想知道某件事是否有效,你就要测试它。
启用 STP 后,安排网络维护并将电缆插入环路。如果网络仍在运行,则 STP 检测到了环路。如果您的网络出现故障,则 STP 不起作用。
答案3
生成树并不认为循环是“错误”。它们是协议的一部分,它会找到导致循环的端口,然后禁用这些端口上的转发。我认为您正试图使用协议来查明是否存在某种情况,但这并不是它的主要目的。一个“设计良好”的网络很可能正常情况下存在循环(为了冗余)。除了打开日志事件生成树状态(或平台上的等效项)外,还要跳出思维定式。网络中的循环(如果未被生成树禁用)将导致广播风暴中的大量流量。因此,绘制这些级别的图表,如果您在监控平台上看到流量急剧上升,则可能是出现了循环。
答案4
除了前面的诊断建议之外,您还应该学会解读交换机“show spanning-tree”命令(或等效命令)的输出。它将向您显示根端口、指定端口和许多其他重要的诊断信息。
这是我刚刚设置的一个示例网络,其中包含 2 个 Cisco 2950 和 1 个 HP 3400cl。网络中的连接如下:
- hp3400cl [24] -> c2950 [g0/2](1000 Mbps)
- c2950 [f0/23] -> c2950b [f0/47](100 Mbps)
- c2950b [f0/45] -> hp3400cl [23](100 Mbps)
所有交换机都处于 MSTP 模式,只设置了公共生成树实例。hp3400cl 的优先级为 0,c2950 的优先级为 8192,其次是 c2950b,优先级为 12288。因此,hp3400cl 应该是根。以下是“show spanning-tree”的输出:
hp3400cl# show spanning-tree
Multiple Spanning Tree (MST) Information
STP Enabled : Yes
Force Version : MSTP-operation
IST Mapped VLANs : 1-4094
Switch MAC Address : 001871-8bd020
Switch Priority : 0
Max Age : 6
Max Hops : 20
Forward Delay : 4
Topology Change Count : 4
Time Since Last Change : 4 mins
CST Root MAC Address : 001871-8bd020
CST Root Priority : 0
CST Root Path Cost : 0
CST Root Port : This switch is root
IST Regional Root MAC Address : 001871-8bd020
IST Regional Root Priority : 0
IST Regional Root Path Cost : 0
IST Remaining Hops : 20
Root Guard Ports :
TCN Guard Ports :
BPDU Protected Ports :
BPDU Filtered Ports :
| Prio | Designated Hello
Port Type | Cost rity State | Bridge Time PtP Edge
----- --------- + --------- ----- ---------- + ------------- ----- --- ----
1 100/1000T | Auto 128 Disabled |
...
22 100/1000T | Auto 128 Disabled |
23 100/1000T | 200000 128 Forwarding | 001871-8bd020 1 Yes No
24 100/1000T | 20000 128 Forwarding | 001871-8bd020 1 Yes No
c2950#show spanning-tree
MST00
Spanning tree enabled protocol mstp
Root ID Priority 0
Address 0018.718b.d020
Cost 20000
Port 26 (GigabitEthernet0/2)
Hello Time 1 sec Max Age 6 sec Forward Delay 4 sec
Bridge ID Priority 8192 (priority 8192 sys-id-ext 0)
Address 000c.308f.7f80
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
...
Fa0/24 Desg FWD 200000 128.24 P2p
Gi0/2 Root FWD 20000 128.26 P2p Bound(RSTP)
c2950b#show spanning-tree
MST00
Spanning tree enabled protocol mstp
Root ID Priority 0
Address 0018.718b.d020
Cost 20000
Port 47 (FastEthernet0/47)
Hello Time 1 sec Max Age 6 sec Forward Delay 4 sec
Bridge ID Priority 12288 (priority 12288 sys-id-ext 0)
Address 000a.b7e3.30c0
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/45 Altn BLK 200000 128.45 P2p Bound(RSTP)
Fa0/47 Root FWD 200000 128.47 P2p
关于上述列表中的港口国家,需要注意的重要事项是:
- 根交换机到其他交换机的链接正在转发
- 在两种情况下,非根交换机到根的链接都是“Root FWD”
- 非根交换机之间的链路一端为“Altn BLK”,另一端为“Desg FWD”;这意味着 c2950b 知道 f0/45 是通向根的备用路由,并已将其阻塞以防止出现环路。如果根端口 (f0/47) 发生故障,c2950b 将把 f0/45 设置为根端口,而无需重新收敛。