如上图所示,当客户端C1发送一个数据包时,SW1会在MAC地址表中记录C1的MAC地址与SW1的F0/0接口对应,如果C1发送的是一个广播、组播或未知的单播帧时,则SW1会将其从F0/1或F0/2接口发送出去,假设从F0/1发送出去,SW2收到该帧后会在自己的MAC地址表中记录F0/1与C1对应,并将其从F0/2接口发送出去,SW1从F0/2接口收到这个帧,这时SW1又会记录C1与SW1的F0/2接口对应,由此可以看到,当交换机间存在多条路径时,并不能够为我们提供冗余的目的,反而会导致一系列的问题,如导致交换机的MAC地址表不稳定、广播风暴、交换机收到重复的数据帧等,甚至会导致交换机DOWN机。
如果要在交换机之间多条冗余的链路中让交换机正常的工作,就需要将多余的冗余路径置为非活动状态,只保留一条活动的链路提供数据包的转发,当唯一的活动链路出现问题时,就启用冗余的链路,从而实现网络的冗余性,要实现这个功能,就需要依赖于生成树协议STP。STP将交换网络中任何两个点之间的多余链路置于Blocking(关闭)状态,而只留一条活动链路,当使用中的活动链路失效时,立即启用被Block的链路,以此来提供网络的冗余效果。
STP为IEEE标准协议,有多个版本,版本与协议号的对应关系如下:
CST(Common Spanning Tree):IEEE 802.1D,一般的生成树。
RSTP(Rapid Spanning Tree Protocol):快速生成树,IEEE 802.1W
PVST+(Per-VLAN Spanning-Tree plus):一个VLAN一个生成树,IEEE 802.1D
Rapid PVST+:快速的PVST+,IEEE 802.1W
MSTP (Multiple Spanning Tree Protocol):多生成树协议,IEEE 802.1S
转载于:https://blog.51cto.com/hezhang/1375256