生成树协议(STP)是什么?防止网络环路的基础知识

冗余布线本该提升可靠性,但如果没有STP,反而可能让整个网络瘫痪。

  1. 为什么需要STP

    为了增加可靠性,用两根网线把两台交换机连接起来,反而可能无意中造成信号在同一条路径上不停打转的"环路"。生成树协议(STP)存在的目的,正是在逻辑上封锁这类冗余路径中的一条,以防止环路产生。

  2. 环路带来的问题:广播风暴

    一旦出现环路,广播信号进入后就会被交换机之间反复复制、无限转发,瞬间耗尽整个网络的可用带宽。这种失控现象被称为广播风暴,严重时可能导致整个网络瘫痪。

  3. STP的工作原理

    多台交换机会先选出一台作为基准点,称为根网桥,然后为每台交换机的端口分配角色。通往根网桥最优路径上的端口保持开放,称为指定端口;而可能形成环路的其余端口则被置于阻塞状态,只留下一个树状的可用路径结构。

  4. 收敛时间与RSTP

    传统STP在拓扑发生变化后,可能需要长达约50秒才能稳定(收敛)为新的结构,期间通信可能会中断。改进版的RSTP(快速生成树协议)沿用相同的基本原理,却把收敛时间大幅缩短到几秒以内。

  5. 家庭网络也会受影响吗

    大多数家庭网络只用一台交换机或路由器,很少会用到STP。但如果把多台廉价交换机或路由器用重复的网线连接起来,就可能无意中形成环路,而不少低价设备根本不支持STP,一旦出现环路就会直接导致网络故障,而不会被自动检测和阻止。

  6. 一句话总结

    可以把STP概括为:当交换机网络存在冗余连接时,它在逻辑上封锁其中一条环路路径,只保留一条实际使用的路径、维持树状结构的一种安全机制。

STP是网管型交换机的功能,并非所有交换机都具备

只有网管型交换机才会运行STP,家庭中常用的廉价非网管型交换机往往根本没有这个功能。这正是为什么在小型网络中,不小心用一根冗余网线把两台非网管型交换机连接起来,是造成环路的常见原因——因为根本没有相应的协议在运行来发现这个问题。

当前使用的链路故障时,被阻塞的端口会怎样

被阻塞的端口并不是被浪费,而是一条待命的备用路径。如果STP检测到当前使用中的链路发生故障,它会重新打开此前被阻塞的端口,恢复网络连通,通常会在协议的收敛时间内完成。这正是在正确运行STP的前提下,预先布置冗余链路真正的意义所在。

常见问题

被STP阻塞的端口会一直不能用吗?

不会。正常情况下它处于阻塞状态待命,但如果当前使用的路径发生故障,STP会检测到并重新打开被阻塞的端口以保持网络连通。也就是说,冗余连接平时是作为闲置的备用路径存在的。

出现环路后,重启路由器能解决问题吗?

可能会暂时缓解症状,但如果导致问题的根本原因——错误的冗余布线——没有解决,同样的问题很快就会再次出现。真正的解决办法是检查线缆连接,排查并去掉不必要的冗余连接,或者换用支持STP的网管型交换机。