9.3 理解STP
STP(Spanning Tree Protocol,生成树协议)与上节介绍的VLAN的关系非常密切。STP对应IEEE802.1D标准,主要应用于存在环路(通俗一点说就是,构成了数据发送和接收的循环路径)的网络,通过一定的算法既能实现路径冗余,同时又可将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。
9.3.1 STP的由来
要正确使用STP,就必须先了解它存在的意义或者开发这种技术的目的,只有这样才能更好地理解它的工作原理。前面说了,STP的目的就是消除网络中冗余的链路(当然不是物理消除),下面就来介绍STP是如何实现这个目的的。
二层数据网的自愈(就是指在网络出现故障时的自动修复能力)需求由来已久,早期的以太网桥采用了基于 MAC地址在不同端口之间的转发,而每1个端口对应的是1个以太网的网段,也就是1个以太网的广播域,通过学习每个端口的 MAC地址表的方式,以太网桥只转发不同端口间的通信。但是由于网桥依赖的是运行网络中存在的MAC地址和端口的对应表,所以一旦收到目的地址未知的数据包,它仍将利用广播的形式来寻址,所以,这种方法使得它天生不能隔离广播包和组播包的通信,其后果就是在1个环形网络中造成数据流量以指数形式的增长,从而导致网络的瘫痪,这种现象也称为"广播风暴"。
"广播风暴"的现象只存在于两点之间存在冗余链路的网络之中,而冗余链路却是在现实网络设计中大量存在的。如图9-5中核心层、汇聚层的交换机间都是有冗余设计的。本来这样设计的目的就是想当某一条链路失效时,另一条冗余的链路能够马上接管所有的工作。但是,在实际工作中,这些冗余连接还会带来广播风暴隐患。
如图9-5中的Switch 6交换机发送的数据要到达Switch 1,即可有多条不同路径了,其中包括:Switch6→Switch 3→Switch 1,Switch 6→Switch 3→Switch 4→Switch 1,Switch6→Switch 3→Switch 4→Switch 5→Switch 2→Switch 1这三条。这样一来,当从Switch6发送1个请求数据包到Switch1时,就可能从以上三条路径中同时流出,显然这不是必要的,给网络带来了不必要的网络流量压力。本示例还只是1个很简单的结构,如果结构更复杂的话,冗余连接会更多,对应的冗余链路也就是更多,所带来的广播风暴将更大。
(点击查看大图)图9-5冗余连接设计示例除了广播风暴的影响外,这么多冗余链路还可能形成网络环路,造成数据发送和接收死循环。同样以图9-5为例。在以上三条路径中,如果不加修剪,从Switch1上发送到Switch 6的数据包,可能就不会到达Switch 6,而是直接在Switch 1→Switch 3→Switch4→Switch 1,或者Switch 1→Switch 4→Switch 3→Switch 1,或者Switch 1→Switch2→Switch 5→Switch 4→Switch 1等多个封闭的环路上循环。
为了解决"广播风暴"和网络死循环这2个在二层数据网络中存在的主要弊端,IEEE(电机和电子工程师学会)在基于思科的STP技术基础上颁发了IEEE802.1D协议标准。这种2种协议的本质其实是一样的,就是消除网络拓扑中任意两点之间可能存在的冗余路径,将两点之间存在的多条路经划分为"通信链路"和"备份链路"。并规定,数据的转发只在"通信链路"上进行,而"备份链路"只用于链路的侦听,只有在发现"通信链路径"失效时,才自动地将通信切换到"备份链路"上。
用于正常数据转发的"通信链路"往往是最短的路径,如上一示例中的"Switch 6→Switch 3→Switch1"这条路径。但是,STP并不是全部禁用这些冗余链路,而只是在正常工作中让它们处于侦听状态,当活跃链路失效时才接替活跃链路的工作。这样即可达到既不会因为冗余链路而形成广播风暴,也不会因为没有冗余链路而造成网络循环,降低网络的可用性。
现在的二层以太网交换机和三层以太网交换机采用了硬件电路的设计,保证了每个端口的独享带宽。这样一来,每个交换机都可以看成是1个多个拥有独立带宽端口的网桥,用户可以将它的每1个端口看作是1个独立的网桥端口,其二层的工作原理与网桥类似。为了实现在用户接入层、汇聚层甚至骨干层范围内的高可靠性,网络中关键的拓扑设计往往采用冗余链路的设计(参见图9-5),虽然也有其他的技术可以实现高效的网络收敛,但是大多数网络设计者还是采用了IEEE802.1D 的方法,原因是生成树协议是项简单而又成熟的网络自愈技术。
9.3.2 STP的基本功能和工作原理
在网桥或交换机上运行的STP是与IEEE 802.1D标准具有类似功能的,但是它们是2种不同的链路层协议。因为IEEE802.1D是以标准形式颁布的,所以应用更广,所有品牌的网络设备都可以支持,而STP是由思科开发的,所以仅在思科自身以及授权使用的品牌设备上使用。但就目前来看,两者几乎是1个统一体,没什么区分了,因为IEEE802.1D几乎是等同采用思科STP的。
在网桥和交换机上部署STP的目的就是在你既想要有冗余链路,又要阻止环路的情形下阻止在网络中出现环路,最终达到降低广播风暴产生的可能(只能是可能,因为广播风暴不仅只有网络环路才能发生,还可能是因为专门的广播包引起的),消除网络循环。有时,在网络设计中,特别是一些比较大型,同时可用性要求高的网络系统设计时,冗余的链路与网络中故障转移所需的备份同等重要。在主链路失效时,通过激活备份链路可以使得用户继续连接到网络。在网桥和交换机上不部署STP,这样的部署又可能造成网络环路出现。如果2个连接的交换机1个运行STP,另1个运行IEEE802.1D,则它们需要不同的收敛计时器。
在如图9-6所示的网络示例中,在Switch A和SwitchB之间存在一条冗余链路。但是这种部署可能会创建1个桥接环路。例如,从Station M(站点M)发出的1个到StationN(站点N)的广播或者多播包可能会在2个交换机之间循环。
爱华网 www.aIhUaU.com欢迎您转载