28-STP,选举过程、端口状态、计时器、拓扑变化

1.STP选举过程:
STP有三个选举过程:选根桥、选根端口、选指定端口;
选举完成后,剩下的端口会被阻塞;
        
1)选根桥
根桥只有唯一的一个;(树形结构的有唯一的根节点)
 
根桥的选举规则:
    BID(桥id)最小的成为根桥
    BID是STP数据包BPDU中的一个字段;格式为:优先级.mac
    先比较优先级在比较MAC
 
如图:根桥选举过程
    有三个交换机;
    刚开始三个交换机都认为自己是根桥(也就是发送的BPDU中的根桥id=自己的bid),然后给其它交换机发BPDU;
    如SWA和SWB比较:
        SWA收到SWB的BPDU后,得到了SWB的PID,用SWB的pid和自己的pid比较
        先比优先级SWA的优先级=4096,小于SWB的优先级32768,于是SWA认为自己比SWB优先,不改变根桥id;
     如果SWC收到SWB的BPDU,则是先比优先级 ,都是32760,然后比mac地址,SWB的mac地址较小,因此SWC认为SWB是根桥,改变自己的根桥id;
    交换机之间经过一次交互之后,最终选举出了唯一的根桥;          
 
2)选根端口
根端口是非根桥上的端口;
根端口是交换机到达根桥交换机最近的端口,也就是Root Path Cost最小的端口;
 
根端口选举规则:
   1】 先比较端口的根路径开销Root Path Cost(RPC = 端口收到的BPDU中的RPC + 端口所属链路的Path Cost)
    2】如果交换机有多个端口的RPC相等,则比较对端BID;
            对端BID是指交换机接口收到的BPDU中的BID;
            例如下图中SWB的g0/0/2端口连交换机SWC,会收到SWC的BPDU,SWB的对端BID,就是交换机SWC的BID = 32768.00-01-02-04-cc     
    3】如果对端BID也相等,则比较对端PID(端口id);
            对端bid相等的情况:交换机的两个端口都接在同一个对端交换机上;
            例如,SWB的g0/0/2端口 收到SWC的g0/0/2端口发过来的BPDU,对端PID就是g0/0/2(SWC的2号端口) 
    4】如果对端PID也相等则比较本端PID大小;
            对端pid相等的情况:从对端交换机拉一根线接集线器,然后交换机的两个接口连在集线器上;
0
(先看RPC在看对端BID,最后比较对端PID和本地PID)
 
验证根端口选举结果命令:
dis stp brief
可以看到:交换机的g0/0/2端口是根端口,g0/0/1端口是预备端口;
 
3)选举指定端口
指定端口决定了数据的转发方向;
对交换机而言:根端口接收来自根桥的数据,然后从指定端口转发出去;(也就是说根端口用来接收数据,指定端口用来发送数据)
正常情况下根桥交换机的所有端口都是指定端口(除了自环端口,也就是用一根线连交换机的两个端口);
因为根桥的端口的根路径开销为0,是最小的;
 
指定端口选举规则:(越小越优先)
    1】首先比较根路径开销
    2】如果RPC相同则比较BID
    3】RPC和BID都一样,比较PID  
 
如下图:
    SWA-SWB链路的指定端口选举:
        这条链路中有两个端口:SWA的g0/0/1端口、SWB的g0/0/1端口;要从这两个端口中选出指定端口;
        首先比较根路径开销,因为SWA是根桥,SWA的g0/0/1端口根路径开销是0,SWB的g0/0/1端口小;
        SWA的g0/0/1端口被选为这条链路的指定端口;
    SWB-SWC链路的指定端口选举:
        这条链路中有两个端口:SWB的g0/0/2端口、SWC的g0/0/2端口;
        首先比根路径开销,RPC都是2000;
        然后比较BID,BID包括优先级和mac地址,的优先级都是32768,于是比较mac地址,SWB的BID中的mac地址较小;
        因此SWB的SWB的g0/0/2端口被选为了这条链路的指定端口;
        SWC的g0/0/2端口既不是指定端口,也不是根端口,因此成为预备端口,将被阻塞;
        导致的结果是,数据包在转发时将不会从SWB转发到SWC;
0
没有被选为根端口和指定端口的就是预备端口,将会被阻塞;
例如上图中SWC的g0/0/2口就是预备端口;
 
 
2.STP的端口状态
 
STP端口状态
接收BPDU
转发BPDU
学习MAC
转发数据
过渡状态
稳定状态
Disabled禁用
 ×
×
×
×
×
Blocking阻塞
×
×
×
×
Listening监听
×
×
×
Learning学习
×
×
Forwarding转发
华为设备STP和RSTP端口状态的显示有所不同:(RSTP将端口状态缩减成三个)
 
STP端口的状态解释:
    1】禁用 disable        未开启STP协议
    2】阻塞 blocking      接收BPDU(端口处于阻塞状态时,可以收数据,但不能转发)
    3】侦听 listening       接收BPDU 转发BPDU
    4】学习 learning       接收BPDU 转发BPDU 学习MAC地址
    5】转发 forwarding   接收BPDU 转发BPDU 学习MAC地址 转发用户流量
 
查看端口状态的命令:
dis stp brief
 
 
3.STP的计时器:
STP数据包BPDU中的最后4个字段用做计时器;
计时器
备注
Hello
默认2S,根桥发送BPDU的间隔
Forwarding Delay
默认15S,stp端口listening和learning状态的持续实际(监听到学习需要15S,学习到转发需要15S)
MSG Age
当前的年龄,每经过一个设备就加1(从根桥开始为0往下算),最大为20,超过20则丢弃BPDU.(不建议接太多设备影响交换机性能)
Max Age
20S,保持阻塞的最大时间(每2秒收到一次BPDU,若20秒没收到就不再阻塞,开始侦听、学习、转发)
 
一个预备端口从阻塞状态到转发状态的时间:50S
0
 
STP的端口状态转换:
0
 
0
 
 
4.STP拓扑变化的恢复时间
STP稳定后,根桥会周期性发送BPDU(2s一次);
如果发生一些故障或更改了配置,STP需要时间重新恢复到稳定状态;
 
1)根桥故障
如图,SWA为根桥,当SWA挂掉后:
    SWB和SWC的根端口将收不到根桥的BPDU;
    等待20s(Max Age 默认20s)之后,BPDU老化,开始重新选举根桥;
    选出新根桥后,交换机端口还要listening和learning状态各15s(Forwarding Delay默认15s)
    也就是说至少要等 20s + 15s + 15s = 50s 之后才能恢复到stp稳定状态;
0
根桥故障需要等待50S,网络才会恢复正常(20S老化时间和30S变成转发状态)
 
2)直连故障 
如图,SWB的根端口挂掉时:
    SWB需要重新选根端口,也就是备用端口会选举成根端口;
    备用端口的状态变化:阻塞-帧听-学习;
    侦听和学习状态各保持15s,至少需要30s才恢复稳定状态;    
直连链路故障可能需要等待30S(检测到自己的链路与根桥断了,立马将预备端口从阻塞状态变成转发状态需要经过2个forwarding delay)
 
3)非直连故障
如图,SWB的接口发生故障,对SWC而言:
    SWC感觉不到SWB的故障;
    SWB没收到根桥SWA的BPDU,于是认为自己是根桥,给SWC发送BPDU;
    同时,SWA也给SWC发送BPDU;
    SWC经过比较,SWA和SWB 的BID,还是得出根桥为SWA;
    SWC的左接口由于收不到根桥SWA的BPDU,将在等20s之后不再阻塞;
    从阻塞状态变成转发状态,中间会经过帧听、学习两个阶段,各保持15s;
    最终耗时 = 20s + 15s + 15s = 50s;
0
(当非直连设备故障后,收到对端发来的BPDU并不是最优的,接收但不会改变该角色,等到老化时间在会改变角色状态)
 
5.拓扑变化对MAC地址表的影响
如图:
    正常情况下,链路走的是:SWB-SWA-SWC;SWC的g0/0/2端口被阻塞;
    此时SWB的mac地址表中记录:mac地址aa对应3口,bb对应1口;
    如果SWC的1口挂掉,stp需要恢复到稳定状态,swc的2口作为备用口不再阻塞 ;
    对于SWB而言,这是非直连故障,恢复耗时50s;
    但mac地址表的老化时间为300s,导致了链路已经变化的情况下,SWB的mac地址表没能及时更新;
    导致的结果是主机A发给主机B的数据依然从SWB的1口转发出去给SWA,但此链路不通数据发不过去;
    解决办法只有:等待300s让mac表老化,或者清空主机A的arp缓存让SWB的mac地址表更新;
    但300s对于业务来说太久了;
0
(MAC地址表老化太长,链路角色变换,但是MAC地址还是原来(要么等待300S或ARP老化))
 
解决方法:
0
为了让链路中交换机的mac地址表和链路变化保持同步:
    1】SWC检测到1口的故障,发送一个TCN包给SWB,告诉上游交换机,这边出现拓扑变化;
        BPDU包的第三个字段为BPDU Type,用来表示BPDU类型,这里指定为TCN;
    2】上游交换机SWB收到后会给SWC发送一个TCA表示收到了SWC的TCN(SWC会周期性发送TCN,直到收到确认的TCA)
 
    3】SWB同样给上游交换机SWA发送TCN,直到收到SWA的TCA;
    4】SWA是根桥,收到下游的TAN后会向下游交换机发送TC;
            TC的作用是,通知下游交换机,将其mac地址表的老化时间从300s改为15s; 
 
6.总结
总之STP可以在保证可靠性的同时避免环路,但有个缺点就是慢;
因为链路变化,反应时间至少30s,对于业务来说太慢了;
为了提高STP的速度,产生了RSTP技术; 
 
7.STP的配置
 
命令
备注
Stp mode stp
调整STP的模式,默认MSTP
Stp priority 4096
调整BID优先级值,0~61440,选值4096的倍数
Stp root primary / secondary
自动修改优先级,指定主/备根桥
Stp pathcost-standard
( dot1q-1998 | dot1q | legacy )
配置计算路径开销值得标准
开销标准
Legacy标准:cost=1~200000,华为私有
802.1d标准:cost=1~65535
802.1t标准:cost=1~200000000,默认选则
Stp cost 10
修改STP开销
Stp port priority 144
修改PID优先级,0~240,选值16的倍数
Display stp brief
显示STP配置信息和参数
 
 
 
 
posted @ 2021-05-14 15:58  L丶银甲闪闪  阅读(912)  评论(0编辑  收藏  举报