生成树协议(英语:Spanning Tree Protocol,STP),是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源。
生成树协议工作原理:任意一交换机中如果到达根网桥有两条或者两条以上的链路.生成树协议都根据算法仅仅保留一条,把其他切断,从而保证任意两个交换机之间只有一条单一的活动链路。因为这种生成的这种拓扑结构,很像是以根交换机为树干的树形结构.故为生成树协议。
-
广播风暴:广播帧在二层环路中形成逆时针和顺时针转动的两层环路,并且无限循环,最终导致设备宕机,网络瘫痪。
-
MAC地址表的翻摆:也被称为MAC地址表漂移。同一个数据帧,顺时针接收后将记录MAC地址及接口的对应关系,之后,逆时针还会在修改一边,如此循环,导致MAC地址表内容一直在变动。
-
多重复数据帧
802.1D生成树
802.1D----是由IEEE组成颁布的公有协议----标准的STP协议
RSTP----802.1W
MSTP---802.1S
基本概念:
1、桥ID(bridge identification)BID
每台运行STP的交换机都会拥有全网唯一的桥ID。BID共8byte,包含16bit的桥优先级和48bit的桥MAC地址。优先级缺省值32768,范围是0-655535,使用时数值必须为4096倍数。MAC地址为背板最小地址。
2、根桥(root bridgr)RB
根桥在全网中只会有一个。STP运行的第一件事就是选举根桥。选举规则为全网中拥有最小的桥ID为根桥。BID由优先级和MAC地址组成,选举规则为先比较优先级再比较MAC地址,两者皆是小优。缺省值为32768,可以进行修改从而干涉根桥选举。
3.开销(cost)
每个运行了STP的接口,都有一个cost值,接口的缺省cost值不但和接口速率和工作模式有关,还与所使用的计算方法有关。
4、根路径开销(root path cost)RPC
RPC值是主要计算某接口到达RB的沿途累加cost值。也就是从该接口到RB需要多少的开销。数值越小越优。
5、接口ID(port identification)PID
运行stp的交换机使用PID来标记每一个接口。PID的长度为16bit,由4bit的接口优先级和12bit的接口编号组成。缺省为128,范围为0-240,调整时必须是16的倍数。
STP的选举流程
1、选举根桥
比较BID,优者为根桥。首先比较优先级,若相同比较MAC,都是小优。
2、选举根端口
比较RPC值,小者胜出。若相同进行下一项比较。
在比较对端BID,小者优
比较对端PID,小者优
3、选举指定端口
一般情况下,根桥下所有的端口为指定端口
比较RPC值,小者胜出。若相同进行下一项比较
比较本端BID,小者优
比较本端PID,小者优
4、既不是根端口也不是指定端口的接口则为阻塞接口
STP报文----BPDU
网桥协议数据单元
-
配置BPDU
-
TCN BPDU
BPDU载荷被直接封装在以太网数据帧中,数据帧的目的MAC地址是组播MAC地址:0180-c200-0000
配置BPDU报文
-
在交换网络初始化过程中,每台交换机都从自己激活了STP的接口向外发送配置BPDU
-
当STP收敛完成后,只有根网桥才会周期性发送配置BPDU,缺省为2秒。非根网桥会在自己接收到根网桥发送的配置BPDU以后,使用触发更新方式,将自己的配置BPDU发送出去。
-
协议版本---PVI
-
stp--->0;rstp--->2;mstp---->3
-
-
标志字段--->STP仅仅使用了最高位(TCA---拓扑变更确认标记)和最低位(TC--->拓扑变更标记)
-
消息寿命
-
与TTL值相同,但是为设备数量,代表BPDU从发出到现在经过的时间
-
初始值为0,没经过一台交换机,数值加1。
-
Max Hop参数----最大消息寿命,默认值为20。
-
-
生存时间
-
缺省20秒。
-
TCN BPDU报文
该报文用于在网络拓扑发生变化时,向根桥通知变化的发生。该报文是为了修改全网交换机的MAC地址表信息而存在的,而非是为了改变STP的生成树结构。
-
本地交换链路发生故障后,STP将重新收敛,为了加快刷新全网交换机的MAC地址表,故障交换机会向本地其余运行了STP的接口发送TCN BPDU报文
-
邻居交换机收到TCN BPDU报文后,将回复一个TCA标记为1的配置BPDU报文,用于可靠性传输。
-
该过程会一直持续到根网桥接收到TCN BPDU报文
-
注意:非根网桥不能主动发送配置BPDU,故需要等待接收到根网桥的BPDU后,将TCA标记位置为1,转发给故障设备。
-
-
之后该TCN BPDU会一直转发到根网桥处,由根网桥下发TC标记位为1的配置BPDU(只有根可以设置该标记位),逐级下发给所有交换机。
-
所有交换机在收到TC标记位为1的配置BPDU后,会立即将MAC地址表的老化时间临时性修改为15秒(转发延迟),使得MAC地址表能够提前刷新。
工作过程:
STP的工作过程如下:首先进行根网桥的选举,其依据是网桥优先级(bridge priority)和MAC地址组合生成的桥ID,桥ID最小的网桥将成为网络中的根桥(bridge root)。在此基础上,计算每个节点到根桥的距离,并由这些路径得到各冗余链路的代价,选择最小的成为通信路径(相应的端口状态变为forwarding),其它的就成为备份路径(相应的端口状态变为blocking)。STP生成过程中的通信任务由BPDU完成,这种数据包又分为包含配置信息的配置BPDU(其大小不超过35B)和包含拓扑变化信息的通知BPDU(其长度不超过4B)。
端口状态:
Blocking(阻塞状态):此时,二层端口为非指定端口,也不会参与数据帧的转发。该端口通过接收BPDU来判断根交换机的位置和根ID,以及在STP拓扑收敛结束之后,各交换机端口应该处于什么状态,在默认情况下,端口会在这种状态下停留20秒钟时间。
Listening(侦听状态):生成树此时已经根据交换机所接收到的BPDU而判断出了这个端口应该参与数据帧的转发。于是交换机端口就将不再满足于接收BPDU,而同时也开始发送自己的BPDU,并以此通告邻接的交换机该端口会在活动拓扑中参与转发数据帧的工作。在默认情况下,该端口会在这种状态下停留15秒钟的时间。
Learning(学习状态):这个二层端口准备参与数据帧的转发,并开始填写MAC表。在默认情况下,端口会在这种状态下停留15秒钟时间。
Forwarding(转发状态):这个二层端口已经成为了活动拓扑的一个组成部分,它会转发数据帧,并同时收发BPDU。
Disabled(禁用状态):这个二层端口不会参与生成树,也不会转发数据帧。
STP的收敛时间
基于计时器进行收敛。
-
首次收敛----50S(阻塞20S+2*转发延迟)
-
根桥故障----50S(最大寿命+2*转发延迟)
-
直连链路故障----30S(2*转发延迟)
-
非直连链路故障---50S(最大寿命+2*转发延迟)
STP配置:
配置案例:
[sw1]stp enable ---启动STP协议,华为默认开启该协议
[sw1]stp mode stp ---修改STP的工作模式,默认工作模式为MSTP
[sw1]display stp ---查看STP协议运行状况
[sw1]display stp brief ---查看STP接口状态
查看接口状态:
DESI--->指定接口
ROOT--->根端口
ALTE--->备份端口
[sw1]stp root primary ---将交换机设定为根网桥,其本质是将优先级修改为0
[sw2]stp root secondary ---将交换机设定为备份根网桥,其本质是将优先级修改为4096
[sw3]stp priority 8192 ---将交换机优先级设定为8192
[sw6-GigabitEthernet0/0/1]stp port priority ? ---修改接口优先级,干涉PID数值
INTEGER<0-240> Port priority, in steps of 16
[sw6]stp pathcost-standard ? ----修改本地开销值计算方法类型,全网均需要修改
dot1d-1998 IEEE 802.1D-1998
dot1t IEEE 802.1T
legacy Legacy
[sw6-GigabitEthernet0/0/1]stp cost ? ----直接修改接口cost值
INTEGER<1-200000000> Port path cost ---该参数可以修改的范围是根据开销值计算类型而定