上篇博客给出了生成树协议STP(Spanning Tree Protocol)产生的目的以及与其相关的重要名词,但是详细的来说,交换机是如何通过发送桥接协议数据单元(BPDU)来选择阻塞端口的呢?
生成树端口状态:采用生成树协议的交换机上的每个第二层接口,它均会处于一下物种状态之一:
阻塞(blocking):在阻塞状态,第二层的接口不参与SPDU帧的转发,但是却能够监听流入的BPDU。此时端口不能学习接受帧的mac地址。
监听(listening):在监听状态中,交换机能够决定根,并且可以选择根端口(Root Port)、指定端口(Designated Port)和非指定端口(Nondesignated Port)。在监听状态的过程中端口不能学习任何接受帧的单播地址。
学习(learning):在学习状态中,第二层接口准备参与帧转发。端口能够在这个状态中学习流入帧的mac地址,但却不能转发帧。
转发(forwarding):在转发状态中,第二层接口能够转发帧。端口学习到接受帧的源mac地址,并且可以根据目标mac地址而将他们进行恰当转发。
禁用(disable):在禁用状态中,第二层接口不参与生成树,并且不能转发数据帧。
对于BPDU帧所承载的三种计时器,他们能够影响到STP性能和状态变更:
Hello时间:由根网桥端口发出,其他网桥转发的BPDU,每相邻的BPDU之间的时间就是hello时间。默认为2s,修改范围1~10s。
转发延迟:在监听状态和学习状态停留的时间。默认为15s,修改范围4~30s。
最大寿命:网桥端口保存配置BPDU信息的最大时间长度。默认为20s,修改范围6~40s。
应该注意的是,网络的生成树拓扑依附于根网桥的计时器。根网桥将BPDU中的计时器传递给第二层拓扑中的所有交换机。
当交换机接终端用户时,那么在这条链路上的转发便不会产生STP环路,该接口不用监听和学习,所以可以直接将其划为PortFast,以跳过监听和学习的状态,直接进入转发状态。强烈建议将所有的接终端用户的接口设置上PortFast属性,以节省了接口有down到forwarding的时间。
配置命令为:
Switch(config-if)#spanning-tree portfast %Warning: portfast should only be enabled on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc... to this interface when portfast is enabled, can cause temporary bridging loops. Use with CAUTION %Portfast has been configured on FastEthernet2/1 but will only have effect when the interface is in a non-trunking mode.
STP操作:
在创建无环路生成树的过程中,要经过以下几个步骤的操作。
1、选举一个根网桥(RootBridge)
由前文可知,网桥IP就是在优先级(2个字节)的后面接上mac地址(6个字节)每个交换机接口的这个8字节的网桥ID,通过与其他交换机交换的BPDU信息,来判断最小的网桥ID,此ID就被选举为根ID,该接口所在的交换机就是根网桥RB。
注意:在给定的网络中,每个vlan中只能有一个网桥担当根网桥RB。
注意:Cisco的交换机的mac地址就是vlan1的mac地址,并且Cisco交换机的每个接口都有mac地址。其他厂商的设备的vlan1的mac地址不一定是交换机的mac地址,接口也不一定有mac地址。
2、选择所有非根网桥的根端口
STP协议规定在每一个非根网桥上建立1个根端口,该根端口必须是非根网桥到根网桥的最低开销路径(与链路带宽决定)。当有多条等价最低开销路径时,那么非根网桥选择具有最低端口ID(仅仅对该交换机有效)的端口。
3、选择各个网段的指定端口
在每个网段中,选择到达根网桥的路径开销最低的端口为指定端口(根网桥上的端口均为指定端口)。当路径开销相等的情况下,则比较网桥ID,选择较小的网桥上的端口作为指定端口。
交换机制定决策过程中依次使用如下5种标准:
1、 最低的根网桥ID;
2、 最低的到达根网桥的路径开销;
3、 最低的发送方网桥ID;
4、 最低的端口优先级;
5、 最低的端口ID;
___________________________________________________________________
欢迎各种转载、引用,但请保留以下文字:
转载自光光_IT(贾耀光)的DiscoveryWorld (http://sunsun.cnblogs.com)