STP生成树协议原理与算法简析简介 在实际的网络环境中,物理环路可以提高网络的可靠性,当一条线路断掉的时候,另一条链路仍然可以传输数据。但是,在交换网络中,当交换机接收到一个未知目的地址的数据帧时,交换机的操作是将这个数据帧广播出去,这样,在存在物理的交换网络中,就会产生一个双向的广播环,甚至产生广播风暴,导致交换机死机。这就产生一个矛盾,需要物理环路来提高网络可靠性,而环路又可能产生广播风暴,如何才能两全其美呢? 本章将要讲述的STP,就是用来解决这个矛盾的。STP(SpanningTreeProtocol,生成树协议),用于在局域网中消除数据链路层物理环路的协议。运行该协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某些端口进行阻塞,最终将环路网络结构修剪成无环路的树型网络结构,从而防止报文在环路网络中不断增生和无限循环,避免设备由于重复接收相同的报文所造成的报文处理能力下降的问题发生。STP采用的协议报文是BPDU(BridgeProtocolDataUnit,桥协议数据单元),也称为配置消息,BPDU中包含了足够的信息来保证设备完成生成树的计算过程。STP即是通过在设备之间传递BPDU来确定网络的拓扑结构。STP生成树协议STP的主要作用消除环路:通过阻断冗余链路来消除网络中可能存在的路径回环。链路备份:当前活动路径发生故障时,激活冗余备份链路,恢复网络连通性。STP的基本原理:通过在交换机之间传递一种特殊的协议报文——BPDU(“配置消息”)来确定网络的拓扑结构。配置消息中包含了足够的信息来保证交换机完成生成树计算。(注:此BPDU被称为配置BPDU,BPDU。)BPDU的报文格式注意看BPDU数据报文的最后8个字段,分别是:根桥ID:由树根的优先级(0-65535,默认32768)和MAC地址组合而成;到树根的最短路径开销(实际由PortPathCost叠加而成),有两个标准——dot1d-1998,默认值为100和dot1t,默认值为200000;指定桥的ID:由指定交换机的优先级和MAC地址组合而成;指定端口的ID:由指定端口的优先级(0-256,默认128)和端口编号组成;配置消息的生存期:MessageAge;配置消息的最大生存期:MaxAge;配置消息发送的周期:HelloTime;端口状态迁移的延时:ForwardDelay。启动了STP的交换机互相之间通过发送配置BPDU来完成根桥,指定桥的选举,各端口状态的选择和整个网络拓扑结构的确定。比较的关键部分在于这八个字段中的前四个字段,即:根桥ID、路径开销、指定桥ID和指定端口的ID。其实还有一个接收端口的ID,用于本地比较(当交换机的2个端口都收到相同的BPDU时——比如上连一个stpdisable的交换机或hub)。比较的原则:从上到下、从左到右数值小者优先。STP协议使用的所有BPDU都是组播报文,目的MAC是01-80-c2-00-00-00。STP端口的角色和状态STP拓扑结构的建立微观上说是一个全网交换机互相交互的过程,各台交换机相互之间不停的发送配置BPDU,发送和接受BPDU的是各switch的Ports,BPDU不单在不同交换机的端口之间比较,也在交换机的内部作比较,如果发现比自己“优”的BPDU,就进行报文的更新,如果发现对方传来的BPDU不如自己的,则丢弃报文,直到再收不到比自己更优的BPDU为止。当网络中所有的交换机都处于这种状态的时候我们可以认为拓扑结构已经建立,但根端口和指定端口还得经过2个ForwardDelayTime才能进入转发状态。所以STP拓扑结构的建立实际上可以理解为端口角色的建立,所有端口都为指定端口的交换机被选为根桥,其余的为指定桥。这里要提到5个概念:根桥,指定桥,根端口,指定端口,Block端口。根桥就是“网桥ID”最优的桥,当STP的拓扑结构稳定之后由根桥负责每2秒(HelloTime)向树中所有的网桥发送配置BPDU报文,其他网桥接收并转发。根端口即去往根桥路径最近的端口,这个最近的衡量是靠RootPathCost来判定的。有关PathCost的计算,是每当一个端口收到一个BPDU后,会在该BPDU所指示的PathCost上加上该端口的PortPathCost(这是可以人为配置的)。比较累计RootPathCost最小的端口就是根端口,如果有两条开销相同的路径,那么就选择桥BID较小的。指定桥就是对下游来说向它转发BPDU报文的桥,一个LAN上除了根桥以外的所有网桥都是指定桥。为什么这么说呢?根据定义而来,指定桥上必定有指定端口(即使是网络边缘的网桥也有——连接到主机的端口),而指定端口就是用来转发BPDU报文的。这里
STP生成树协议原理与算法简析 来自淘豆网m.daumloan.com转载请标明出处.