STP(Spanning Tree Protocol)生成树协议
一种跨三四层封装的协议。
产生背景:
-
为了提高网络可靠性,交换网络中通常会使用链路冗余,链路冗余会为交换网络带来环路风险,并导致广播风暴及MAC表不稳定等问题,严重影响通信质量。生成树协议(STP)可以在提高可靠性的同时避免环路带来的各种问题。
-
广播风暴:广播帧在二层环路中形成逆时针和顺时针转动的两层环路,并且无限循环,最终导致设备宕机,网络瘫痪。
-
MAC地址表的翻摆:也被称为MAC地址表漂移。同一个数据帧,时针接收后将记录MAC地址及接口的对应关系,之后,逆时针还会在修改一遍,如此循环,导致MAC地址表内容一直在变动。
-
STP的作用:
-
STP通过阻塞端口来消除环路,并能够实现链路备份目的,在整个交换网络中计算出一棵无环路的“树”,根桥是一个 STP 交换网络的“树根”。
-
消除了广播风暴
-
物理链路冗余,网络变成了层次化结构的网络
STP工作流程:
-
选举一个根网桥
-
刚启动STP时,每台交换机都认为自己是根桥
-
根桥所有参与生成树选举的端口,都一定是指定端口
-
根桥交换机指定端口直连的交换机端口,都一定是指定端口
-
根桥:在参与生成树选举的网络里面 桥id肯定是最小的
-
备份根桥:在参与生成树选举的网络里面 桥id肯定是次优的,
-
存在影响根桥选举的因素:
-
优先级(交换机默认优先级是32768)越小越优先,0的优先级最高。
-
优先级一样,看MAC地址表,最小的就是根桥。
-
最优BPDU的比较原则
-
选择具有最小桥ID的BPDU
-
这一步,实际上是在选举根网桥。通过对比BID参数。
-
-
比较入向BPDU的RPC数值,选择最小的接口作为根端口或者指定接口。
-
如果交换机接收到的多个BPDU报文的RPC相同,则比较对端设备的BID,选择具有较小BID参数的设备对应的接口作为根端口。
-
如果存在对端设备的BD相同,则比较对端的PID值,选择较小的PID所在接口的对应接口作为最优BPDU报文。
-
若对端PID相同,则比较本端接收到BPDU报文的接口的PID值,选择较小的作为最优BPDU报文。
-
-
即选择最小BID-->先比较桥优先级,后比较桥MAC地址。
-
桥 ID 作用就是在生成树协议中表示不同的交换机的,桥 ID 并不是管理员手动配置上去的,而是交换机出厂的时候都会有一个 BID。
-
生成树选举都会产生桥 ID,桥 ID 由优先级和 MAC 地址组成,并且桥 ID 越小越优先。
-
BID 是由 16 位的桥优先级(Bride Priority)与桥 MAC 地址构成。每一台运行 STP 的交换机都拥有一个唯一的 BID。
-
BID 桥优先级占据高 16bit,其余的 48 位都是桥 MAC 地址。
-
-
-
-
-
在每一个非根网桥选举一个根端口
-
非根交换机在选举根端口时分别依据该端口的根路径开销、桥ID、对端PID和本端PID(接了hub的情况才会用到本端PID)
-
路径开销是一个接口参数,顾名思义。根路径开销即从某接口到根桥的路径开销之和。需要注意的是根桥上所有接口的路径开销以及相同交换机上不同接口之间的路径开销均为0。每一个激活了STP的接口都维护着一个cost值,接口的cost主要用于计算RPC,也就是计算到达根的开销默认情况下使用1EEE802.1T标准。
接口ID-PID
-
端口ID(参与选举根端口)
-
端口优先级是从0到255的数字,默认值是128 (0x80)
-
端口优先级数值越小,则优先级越高
-
如果端口优先级相同,则编号越小,优先级越高
-
-
-
选举范围---每一个非根网桥设备上,有且只有一个根接口。
-
所谓根接口---是非根网桥上所有接口中收到最优BPDU报文的接口。
-
-
-
在每一个网段上选一个指定端口
-
如果有一个设备A,对于A而言,向A转发配置消息的设备为指定桥,指定桥上向A转发配置信息的接口就是指定接口。
-
-
阻塞非根网桥、非指定端口
-
当根桥、根接口与指定接口选举成功后,由根接口与指定接口负责转发流量,其余非根、非指定接口处于Blocking状态,只接受STP的报文而不转发用户流量。
-
端口阻塞原则:
-
端口阻塞的选择与上层交换机的优先级有关联
-
优先比较的是上层优先级,优先级大的被阻塞
-
上层优先级等同时比较mac地址,mac大的被阻塞
-
端口阻塞的选择与根桥的接口有关系。
-
在优先级等同的时候才会用上层交换机端口号做选择。(不一定是根桥)
-
根桥接口号大的对应链路到下层交换机的端口会被阻塞。
-
-
STP的规则:
-
每一个网络只有一个根桥
-
每一个非根桥有且只有一个根端口
-
每天链路有且只有一个指定端口
-
根桥的所有端口均为指定端口
-
根端口和指定端口都是forwading
-
阻塞端口为blocking
STP术语:
-
根桥:根桥是桥ID最低的网桥
-
非根桥:除根桥外其他的网桥都是非根桥。
-
BPDU(桥协议数据单元):交换机之间用来交互的信息,使用BPDU里面的参数进行对比,然后再传给某个邻居,并且放入他们从另外邻居收到的BPDU。桥ID:桥ID是由优先级和MAC地址组合来决定的,STP利用桥ID来跟踪网络中所有的交换机。(桥ID用来选举根桥,,并决定根端口。桥ID为8个字节长,包括设备的优先级和MAC地址,默认所有的优先级都是32768 。若更改则要求为4096的倍数。)优先级最低的网桥将成为根网桥
-
网络中的交换机默认都是每2秒发送一次BPDU,被发送到网桥/交换机的所有活动的端口上。桥ID最小的网桥就被选举为根桥。一般我们会手动将要作为根桥的交换机的优先级降低,这样会比较有效率。
-
-
根端口:直接连到根桥的链路所在端口,或者到根桥路径最短的端口。
-
指定端口:有最低开销的端口就是指定端口,指定端口被标记为转发端口。在根交换机上的每个端口都是指定端口。
-
非指定端口:开销比指定端口高的端口,它被置为阻塞状态。
-
转发端口:能够转发帧的端口。
-
阻塞端口:不能转发帧,但始终监听帧。
-
端口开销:两台交换机之间有多条链路且都不是根端口时,就根据端口开销来决定最佳路径,链路的开销取决于链路的带宽。
端口状态
-
1disable(端口未启用状态或初始状态,端口不处理任何数据端口状态为down)
-
blocking(阻塞状态,维持20秒)
-
listening(监听状态,参与生成树计算,接受并发送BPDU报文维持15秒)
-
learning(学习状态,端口不转发用户流量,学习MAC表,参与生成树计算,接受并发送BPDU报文,防止环路维持15秒)
-
forwarding(转发状态)
定时器
-
Hello Time:指允许STP的设备发送BPDU的时间间隔。当网络拓扑稳定之后,若要修改该定时器,只有在根桥修改才能生效。
-
Forward Delay:指接口进行状态更换的延迟时间。也就是在处于Listening和Learning的持续时间,缺省值为15秒。
-
Max Age: 指接口的BPDU老化时间。BPDU从根桥被发出的时候,Message Age值为0,每经过一个桥设备,其值加1。当非根桥设备收到BPDU后,会比较Message Age和Max Age的大小。如果前者小于等于后者,该非根桥设备继续转发该BPDU;如果前者大于后者,该BPDU将被丢弃,此时可以认为网络直径过大,根桥连接失败。
-
在同一个拓扑中,Max Age是相同的,可在根桥上修改该值。
故障恢复时间
-
根桥故障恢复时间是max age+2forwading Delay=20+152=50s(发送TCPBDU)
-
直连链路故障回复时间是2forwading Delay=152=30s
-
间接链路故障恢复时间是max age+2forwading Delay=20+152=50s
配置命令
-
启用和禁用stp
-
stp disabled 手动关闭交换机的STP
-
stp enable 开启STP
-
-
修改交换机STP模式
-
stp mode stp
-
华为设备默认使用的是802.1S(MSTP)
-
-
.修改桥优先级以控制根桥选举
-
stp priority + 优先级数字(修改范围为0-61440,且必须是4096的倍数)
-
stp priority 0//修改桥优先级为0,使其具有最大可能性成为根交换机。
-
-
修改端口优先级以控制根端口和指定端口的选举
-
stp port priority + 优先级数字 (接口优先级默认为128,取值范围0-240,必须为16的倍数。)
-
-
修改端口开销、控制根端口和指定端口的选举
-
stp cost + 开销数字(取值范围1-200000000)
-
-
其他命令
-
display stp 查看STP的选举信息
-
display stp brief 可以查看STP接口的角色和状态
-
stp root primary 将改交换机设置为根网桥,其实质是将BID的优先级修改为0.
-
stp root secondary 将改交换机设置为备份根网桥,其实质是将BID的优先级修改为4096
-