技术背景
对于任何一个商用网络来说,冗余性(Redundancy)都是一个必须考虑的问题。简单地说,网络的冗余性设计主要包含两个方面:关键设备冗余,以及关键链路冗余。
如图所示的网络为例,如果SW1与SW3之间的互联链路发生故障,或者SW1发生故障,那么PC也就无法到达外部网络了,因此该交换网络的冗余性较差。
解决方法
在典型的园区网络中,我们通常会部署冗余的设备或者冗余的链路,从而使业务流量在故障发生时能够通过冗余的设备及链路进行转发。
如下图所示,网络中增加了一台交换机SW2,然后SW3通过以太网链路分别上联SW1和SW2。如此一来,PC到达外部网络的路径就拥有了冗余性。
环路问题
在上述网络拓扑中,SW1、SW2、SW3及其互联链路就构成了一个二层环路(Layer 2 Loop )。
除了上面所描述的场景,在实际的网络中还有不少二层环路是由于人为的疏忽导致的,例如误接网络线缆等。
二层环路危害
二层环路的危害是非常大的,会引发包括广播风暴、MAC地址漂移、以致设备MAC地址表紊乱等在内的一系列问题,严重时由环路引发的广播风暴更有可能耗尽链路带宽,或者使设备的CPU利用率急剧攀升并导致其无法正常工作,最终造成网络瘫痪。
如何在保证网络的冗余性的情况下,消除二层环路?
解决以太网二层环路问题的最典型的解决方案之一,就是生成树协议,这是一个经典的、开放的技术,专门用于应对以太网二层环路问题。
生成树工作机制简介
-
当网络中部署生成树之后,交换机之间便会开始交互相关协议报文,并在网络中进行一系列计算,经计算得到一个无环的网络拓扑。
-
当网络中存在环路时,生成树会将网络中的一个或多个接口进行阻塞(Block),从而打破二层环路。
-
如下图所示,被生成树阻塞的接口不能再转发数据,这样一来网络中的二层环路问题便可迎刃而解。
-
在此之后,生成树依然会监视网络的拓扑状况,当网络拓扑发生变更时,它能够及时感知,并且动态地调整被阻塞接口,这个过程无需人工干预。
-
如下图所示,当SW1与SW3之间的互联链路发生故障时,生成树能感知到变化的发生,并且将原先被阻塞的接口切换到转发状态,这样一来,SW3的上行流量又可以从右侧的链路进行转发,因此生成树不仅可以在网络中解决二层环路问题,还可以保证网络的冗余性。
生成树版本
- 随着网络的发展,生成树协议也在不断地更新,STP ( Spanning Tree Protocol,生成树协议)是早期的生成树协议,它在IEEE 802.1D中定义。
- 在此之后,IEEE 802.1w中定义了RSTP ( Rapid Spanning Tree Protocol,快速生成树协议),RSTP在许多方面对STP进行了优化,它的收敛速度更快,而且能够兼容STP。
- 后来IEEE 802.1s中定义的MSTP( Multiple Spanning Tree Protocol,多生成树协议)逐渐成了传统园区网杜绝二层环路的主要手段之一,MSTP能够兼容STP及RSTP。