1.STP交换机通过交换STP协议帧来建立和维护STP树,并在网络的物理拓扑发生变化时重新建立STP树。
2.STP协议帧由STP交换机产生,发送、接收和处理。STP协议帧是一种组播帧,组播地址是01-80-c2-00-00-00。
3.STP协议帧采用IEEE 802.3封装格式,其载荷数据被称为BPDU。BPDU由两种类型:(1)Configuration BPDU(2)TCN BPDU
初始形成STP树的过程中,各STP交换机都会周期性的主动产生和发送Configuration BPDU。在STP树形成后,只有根桥才会周期性的主动产生和发送Configuration BPDU;相应的,非根交换机会从自己的根端口周期性的接收到Configuration BPDU,并被立即触发而产生自己的Configuration BPDU,同时从自己的指定端口发送出去。
字段 | 字节数 | 说明 |
Protocol Identifier | 2 | 0x0000 |
Protocol Version Identifier | 1 | 0x00 |
BPDU Type | 1 | BPDU类型:(1)0x00:Configuration BPDU; (2)0x80:TCN BPDU |
Flags | 1 | 网络拓扑变化标志:仅使用最低位和最高位 最低位为TC(Topology Change)标志; 最高位为TCA(TC Acknoeledement)标志。 |
Root Identifier | 8 | 当前根桥的BID |
Root Path Cost | 4 | 发送该BPDU的端口的RPC |
Bridge Identifier | 8 | 发送该BPDU的交换机的BID |
Port Identifier | 2 | 发送该BPDU的端口的PID |
Message Age | 2 | 该BPDU消息的年龄: 如果Configuration BPDU是根桥发出的,则Message Age为0.否则,Message Age是从根桥发送到当前根桥接收到BPDU的总时间,包括传输延时等。在实际的实现中Configuration BPDU每“经过”一个桥,Message Age增加1。 |
Max Age | 2 | BPDU的最大生命周期,缺省值是20s. |
Hello Time | 2 | 根桥发送Configuration BPDU的周期,也相应地成为其他交换机发送的Configuration BPDU周期,缺省值为2s。 |
Forword Delay | 2 | 控制端口Listening和Learning状态的持续时间,缺省为15s。 |
Configuration BPDU中携带的参数类型有三种:
(1)BPDU对自身的标识,包括协议标识、版本号、BPDU类型和Flags;
(2)用于进行STP计算的参数,包括发送该BPDU的交换机的BID、当前根桥的BID、发送该BPDU的端口的PID、发送该BPDU的端口的RPC;
(3)时间参数,包括Hello Time、Forward Delay、Message Age、Max Age。
Hello Time:交换机发送Configuration BPDU的时间间隔。当网络拓扑和STP树稳定后,全局的网络使用根桥指定的Hello Time。要修改该时间参数的话,则需要在根桥上修改才有效。
Forward Delay:端口状态的延迟时间。Forward Delay机制:新选出的根端口和指定端口需要经过2倍的转发延时(Forward Delay)后才能进入到用户数据帧的转发状态,以保证此时的工作链路上没有环路。
Message Age:指从根桥发出某个Configuration BPDU,直到这个Configuration BPDU“传”到当前交换机所需要的总时间,包含传输延时等。Configuration BPDU每经过一个桥,Message Age便会增加1.从根桥发出的Configuration BPDU的Message Age为0。
Max Age:Configuration BPDU的最大生命周期。该值由根桥指定,缺省值为20s。STP交换机在收到Configuration BPDU后,会对其中的Message Age和Max Age进行比较。如果Message Age小于等于Max Age,那么Configuration BPDU会触发该交换机产生并发送新的Configuration BPDU,相反的Configuration BPDU会被丢弃。而且也不会触发交换机 产生和发送新的Configuration BPDU。
TCN BPDU的结构只包含:协议标识、版本号和类型。
当网络中国的某条链路发生了故障,导致工作拓扑发生了变化,那么位于故障点的交换机可以通过端口状态直接感知到这些变化,但是其他的交换机是不能直接感知到这样的变化的。在这样的环境下,位于故障点的交换机会以Hello Time为周期通过其根端口不断的向上游交换机发送TCN BPDU,直到接收到上游交换机发来的、TCA标志为1的Configuration BPDU。上游交换机在收到TCN BPDU后,一方面会通过其指定端口回复TCA标志为1的Configuration BPDU,另一方面会以Hello Time为周期通过其根端口不断的向它的上游交换机发送TCN BPDU。这个过程会一直重复,直到根桥接收到TCN BPDU。根桥接收到TCN BPDU后,会发送TC标志为1的Configuration BPDU,通告所有的交换机网络拓扑发生了变化。
当交换机接收到TC标志置为1 的Configuration BPDU,便意识到网络的拓扑发生了变化。那么自己的MAC地址表的表项内容可能不是正确的了,所以交换机会将自己的MAC地址表的老化周期(缺省值20s)缩短为Forward Delay(缺省值15s)的时间长度,以加速老化掉原来的地址表项。
STP定义了三种状态:根端口、指定端口、备用端口。
STP的5种端口状态:去能状态、阻塞状态、侦听状态、学习状态、转发状态。
端口状态 | 解释与说明 |
去能(Disabled) | 去能转台的端口是无法接受和发送任何帧的,端口处于关闭(Down)状态 |
阻塞(Blocking) | 阻塞状态的端口只能接收STP协议帧,但是不能发送STP协议帧,也不能转发用户数据帧 |
侦听(Listening) | 侦听状态的端口可以接收和发送STP协议帧,但是不能进行MAC地址的学习,也不能转发用户数据帧 |
学习(Learning) | 学习状态的端口可以接收和发送STP协议帧,也可以进行MAC地址的学习,但不能转发用户数据帧 |
转发(Forwarding) | 转发状态的端口可以接收和发送STP协议帧,亦可以进行MAC地址的学习和用户数据帧的转发 |
端口状态迁移过程图:
(1)STP交换机的端口在刚开始的时候,首先会从去能状态进入到阻塞状态。
(2)在阻塞状态中,端口只能接收和分析BPDU,但不能发送BPDU。
(3)如果端口被选为根端口或者的指定端口,则会进入到侦听状态。此时的端口只能接收和发送BPDU,该状态会持续一个转发时延(Forward Delay)的长度,缺省值为15s。
(4)如果没有其他的情况发生导致回到阻塞状态,那么该端口会进入到学习状态,该状态持续一个Forward Delay的时间长度。处于该状态下的端口可以接收和发送BPDU,同时开始构建MAC地址映射表,开始为用户数据帧的转发做准备。(但是该状态下,是不能转发用户数据帧的,因为网络中可能还存在因STP树的计算过程不同步而产生临时环路的情况)。
(5)端口由学习状态进入到转发状态,用户可以开始用户数据帧的转发工作。
(6)在整个状态的迁移过程中,端口一旦发生了链路故障,就会进入到去能状态;在端口的迁过程中,如果端口的角色被选定为非根端口或非指定端口时,那么该端口状态就会立即退回到阻塞状态。