1 STP介绍
避免形成广播风暴,需要一种方法来阻断冗余链路,消除这种路径环路。而当主链路中断之后,又能使得冗余链路能自动处切换到转发状态,恢复网络的连通性,STP就能实现这种功能 。
STP消除链路层环路的基本思想是:将网络环境修剪成树形拓扑,树形拓扑是没有环路的。
运行STP的设备之间会交互相关信息,然后通过计算实现网络拓扑的收敛,具体内容如下:
1. 运行STP的设备会依据一定的准则选举一个树根节点作为网络中的根桥,其他节点为非树根节点。
2.每一个非树根节点,都会选择一条最优路径与根桥连接,非树根节点上位于最优路径的端口,为该节点的根端口。
3.如果网络中存在冗余链路,就会阻断冗余链路
每个非树根节点都会这么计算,最终网络中任意两台设备之间都有一条路径可达,从而行成一棵无环的树 。
2 STP基本概念
2.1 桥和端口的角色
1. 网桥
Ø 根桥:是整个生成树中根节点,由整个生成树中的优先级最高的网桥担任。
Ø 指定桥:是负责一个Physical Segment(物理段)上数据转发任务的桥,由这个Physical Segment上优先级最高的桥担任。
2. 端口
Ø 根端口:指网桥上距离根桥最近的端口,根桥没有根端口,非根桥有且仅有一个根端口。
Ø 指定端口:指Physical Segment上指定桥的端口。
Ø 候补端口:非根端口和非指定端口,它用来做根端口和指定端口的备份端口,也就需要阻断的端口。
2.2 桥ID
STP中每一个网桥都具有一个桥ID,用于网络中唯一标识一个桥。根桥的选举的依据就是桥ID,桥ID越小优先级越高。
桥ID包含桥优先级和MAC地址,长度为8B,其中桥优先级位于桥ID的高16位,而桥MAC地址位于桥ID的低48位,由于MAC地址在网络中时唯一的,因此桥ID在网络中也是唯一的。
如果没有配置桥优先级时,桥默认优先级为32768。
2.3 路径开销
路径开销是用来衡量桥与桥之间路径的优劣。
默认链路开销值取决于所遵循的路径开销标准以及链路的带宽。
路径开销等于整个路径上路径开销的总和。
2.4 BPDU
BPDU:桥协议数据单元,用来交互协议信息,分为两类:
1.配置BPDU:用来进行生成树计算和维护生成树拓扑的报文
2.TCN BPDU:当拓扑发生变化时用来告诉某些设备拓扑发生改变的报文
配置BPDU是通过二层组播发送的,目的MAC地址为01-80-C2-00-00.
配置BPDU由根桥产生并通过指定端口周期性的发送出去,发送周期为Hello Time非根桥交换机通过根端口收到配置BPDU,进行更新并从指定端口发送出去。网络只有根桥会产生配置BPDU,非根桥只会相互交互BPDU报文,没有配置STP协议的交换机会把配置BPDU作为普通数据帧处理。
网桥上的每个端口都会保存本地端口接收到的最优配置BPDU,老化时间为Max Age,当在Max Age时间内没收到配置BPDU更新时,端口会自动删除其保存的配置BPDU信息。
配置BPDU报文包含目的MAC地址、源MAC地址、帧长、逻辑链路头以及载荷等,载荷包括以下部分:
1.协议ID:用来表示STP协议,固定为0x0000
2.协议版本ID:STP为0x00 RSTP为0x02
3.BPDU类型:配置BPDU为0x00,TCN BPDU为0x80
4.Flag标志位:由8为组成,最低位(0)为TC(Topology Change)标志位,最高位(7)为TCA(Topology Change Ack)标志位,其他6位保留。
5.根桥ID:用来标识网络中的根桥
6.根路径开销:指从收到该配置BPDU的网桥到根桥的最小路径开销,即最短路径上所有链路路径开销代数和。
7.发送桥ID:指发送配置BPDU网桥的ID,即Physical Segment上指定桥ID。
8.发送端口ID:指发送配置BPDU网桥端口ID,由优先级和端口索引号组成,即Physical Segment上的指定端口。
9.Massage Age:配置BPDU到当前时间的存活时间。
10.Max Age:配置BPDU的最大存活时间。
11.Hello time:配置BPDU的生成周期,默认为2秒
12.Forward Delay:配置BPDU传播到全网的最大延迟,默认为15秒
3 STP计算过程
3.1 STP计算步骤
STP计算主要包含两个任务:选举根桥和确定端口角色。
STP计算离不开配置BPDU,比较配置BPDU的依据优先级向量最小者优先的原则,遵循步骤如下:
1.根桥ID,根桥ID包含桥优先级和MAC地址,桥ID最小者优先。
2.根路径开销:依据遵循的路径开销标准和链路带宽,开销最小者优先
3.指定桥ID:该ID包括桥优先级和MAC地址,桥ID最小者优先。
4.指定桥端口ID:该ID包括端口优先级和端口索引号,最小者优先。
5.接受桥端口ID:该ID包括端口优先级和端口索引号,最小者优先。
3.2 根桥选举
网络中桥ID最小者会被选举为根桥,桥ID由桥优先级和MAC地址组成。
选举过程:
1.在初始状态,网络中的网桥都没收到对方的配置BPDU,此时每个网桥都认为自己是根桥,向网络中以二层组播的形式发送配置BPDU。
2.网桥把自己的配置BPDU跟收到的配置BPDU进行比较,更新为优先级高的配置BPDU保存在接收端口,并从指定端口继续与设备交互更新之后的配置BPDU。
3.当全网络中网桥根桥保持一致之后,根桥选举结束。
3.3 确定端口角色
端口角色的确定分为根端口的确认、指定端口的确认和Alternate端口的确认。
1.根端口:当网桥从一个端口收到配置BPDU后,首先获取其中的RPC(根路径开销)和接收端口链路路径开销相加,得到此端口的RPC。再比较该网桥上其他端口的RPC,RPC值最小者为该网桥的根端口。
2.指定端口:发送的配置BPDU优于接收到的配置BPDU,表明该端口在本Physical Segment最优配置BPDU,则此端口为指定端口。
3.Alternate端口:端口的配置BPDU在本Physical Segment不是最优配置BPDU,则此端口为Alternate端口。
注:在时间计算过程中,端口确认是同步完成的。
在网络稳定运行时,根桥以Hello Time为周期发送配置BPDU,其他网桥接受到配置BPDU之后,更新本地的配置BPDU,并从指定接口发出更新后的配置BPDU。
3.4 等路径开销计算
在根桥选举和端口确认的步骤中,只用到了优先级向量里的桥ID和根路径开销。剩下的三个向量指定桥ID用于等路径开销的情况下来确认端口角色、指定桥端口ID则用于等路径开销和同一台指定桥的情况下来确认端口角色,接收端口ID则是在优先级向量中前四个都相同的情况下来确认端口角色。
3.5 收到低优先级配置BPDU时的处理
通常情况下,非根桥不会主动发送配置BPDU。而当网络中添加一台新的网桥,并其网桥优先级比较低,并在原有网桥的指定端口上收到新添加网桥的配置BPDU时,该网桥会回立即回应一个配置BPDU,这样可以保证新加入的网桥尽快的确认根桥和端口角色,使得网络实现快速收敛。
3.6 STP端口状态
STP端口状态 | 是否发送BPDU | 是否发送数据 | 是否学习MAC地址 |
Disabled | 否 | 否 | 否 |
Blocking | 否 | 否 | 否 |
Listening | 是 | 否 | 否 |
Learning | 是 | 否 | 是 |
Forwarding | 是 | 是 | 是 |
其中Listening和Learning为中间状态,为了避免临时环路,处于中间状态的端口不能发送数据。端口在中间状态的停留的时长为Forware Delay,默认为15s 。
Forward Delay根据hello Time以及网络的直径综合计算出来的,它确保了BPDU有足够的时间传播的网络中的每个角落,使得网络实现收敛。
在listening状态,经过Forward Delay时间来交互配置BPDU报文,从而使得各网桥有足够长的时间来确定其端口角色,通过阻塞Alternate端口避免临时环路的产生。在learning状态,经过Forward Delay时间来交互配置BPDU报文,以确保各网桥有足够长的时间来学习MAC地址,尽量减小由未知单播造成的广播。
3.7 STP拓扑改变处理过程
当网络拓扑发生改变之后,由于配置BPDU的Max Age时间(默认20s)小于MAC地址老化时间(默认300s),网络中会出现短暂的中断,为了解决网络中断这种现象,STP使用TCN BPDU使网络中断到恢复的最长等待时间还时间为Max Age + 2Forward Delay (20+2*15=50s)。
处理过程如下:
1.网桥感知拓扑发生变化,产生TCN BPDU从根端口发出,通知根桥。
2.如果上游不是根桥,此网桥会将下一个要发送的配置BPDU中的TCA位置位发送给下游网桥,作为收到TCN BPDU的确认。并该上游网桥继续从根端口发送TCN BPDU。
3.重复2步骤,直到根桥收到TCN BPDU。当网桥收到TCN BPDU之后,会把将下一个要发送的配置BPDU中的TCA位置位发送给下游网桥,作为收到TCN BPDU的确认,同时还会将该配置BPDU的TC位置位,用来通告网络中所有网桥拓扑发生了变化。
4.根桥在其后的Max Age+Forward Delay时间内,将发送的配置BPDU中的TC位置位,当网桥收到根桥TC位置位的配置BPDU时,会把自身MAC老化时间由300 s缩短为Forward Delay 。
TCN BPDU有如下两个产生条件
1. 网桥上有个端口转变为Forwarding状态,并该网桥上至少有一个端口为指定端口。
2.网桥上有端口从Forwarding状态或liearning状态转变为bloacking状态。
3.8 STP的不足
1. STP为了避免临时环路的产生,每个端口在确认为根端口或指定端口后仍然需要等待30s的时间才能进入转发状态,对于一些对是时延敏感的应用是不可接受的。
2.对于网络拓扑不稳定的网络,经常需要重新进行STP计算,某些端口可能会长期处于阻塞状态而导致网络长时间的中断。
文章原地址:http://blog.51cto.com/2785903/1104274