减少单点故障,增加网络可靠性
产生交换环路,会导致:
-广播风暴
-多帧复制
-MAC地址表抖动
广播信息在网络中不停地转发,直至导致交换机出现超负荷运转,最终耗尽所有带宽资源,阻塞全网通信。
工程现场:如果发现交换机的灯疯狂闪烁,肯定存在环路
如何解决广播风暴:无解,重启设备
二层的广播报文,没有TTL的限制,会一直存在,并且再二层环路,越来越多
单播的数据帧被多次复制传送到目的站点
在链路上会消耗带宽,消耗计算机的计算资源
由于相同帧的拷贝在交换机的不同端口上被接收而引起的 MAC地址表不稳定
交换机的一个接口能对应多个MAC地址,但是一个MAC地址,只能对应一个接口。MAC地址被反复的记录在交换机的不同接口上,引起CAM表的抖动,影响交换机的正常通信。
1.通过协议:STP IEEE=802.1d
阻塞网络中的某一个接口,(从逻辑上),实现物理链路正常链接,逻辑上关闭(down),避免环路的危害
2.具体要阻塞哪一个端口?交换机之间的协商出来的—BDPU报文,交换机通过BDPU中关键的参数,进行选举,选举出来的结果,就是要阻塞的端口。
1.每个广播域选择一个根桥
2.每个非根桥上选择一个根端口
3.每个段选择一个指定端口
4.选择一个非指定端口
桥=交换机
比较BDPU中的关键参数 BID==bridge id 桥优先级+MAC地址(优先级的范围0-65535)
根桥是从所有的交换机中选举出来的,BID优先级越小越优先,如果优先级相同,比较MAC地址,越小越优先
修改桥优先级方法1:stp root primary/secondary ———— 将优先级直接改成0
修改桥优先级方法2:stp priority <0-61440> ———— 将优先级改成比默认值小的,4096的倍数。
cost of path => 端口到达根桥的路径开销,越小越优先
sender bid => 这个接口对端交换机的BID,越小越优先
sender pid => 由优先级+端口编号组成 优先级的范围(0-255,默认128), 优先级和端口编号都是越小越优先
local pid =>本地端口id越小越优先
修改根端口的cost值
[Huawei-GigabitEthernet0/0/1]stp cost ? INTEGER<1-200000000> Port path cost
端口的PID修改方法
[Huawei-GigabitEthernet0/0/1]stp port priority ? INTEGER<0-240> Port priority, in steps of 16
所有的非根桥交换机空余链路中选出来的指定端口(在两台交换机之间的链路上选举出来的)
选举方式 : COST值(越小越好)
此处的cost值是当前接口所在交换机的根端口 到达根桥的开销
如果开销值一样:
local BID:所在根桥的BID(越小越好)
local PID:所在根桥的PID(越小越好)
根桥上所有的端口都是指定端口
根端口对端交换机的接口也是指定端口
阻塞 — 20S—和计时器有关
在选举之前,所有的端口从disable过度到的第一个状态
在选举结束之后,被阻塞的端口,就是阻塞状态
监听—选举 forwarding delay =15S
在监听的状态下,交换机完成STP的角色的选举,选出根桥、根端口、指定端口、非指定端口
选举结束之后,网络拓扑无环,处于一种比较稳定的状态
学习 forwarding delay = 15S: 交换机学习MAC地址,完善CAM表
交换机转发数据,依靠CAM表,交换机的接口开始学习MAC地址来形成CAM表
如果交换机接口从监听直接跳跃到转发状态,
在最开始的时候,交换机的CAM表是空的,在网络中的一段时间内,会有大量的泛洪的数据
转发
交换机的端口能够正常的转发 数据流量
不能接收或者传输数据,不能把MAC地址加入地址表,只能接收BPDU
不能接收或者传输数据,也不能把MAC地址加入地址表,但可以接收和发送BPDU
不能传输数据,但可以发送和接收BPDU,也可以学习MAC地址
能够发送和接收数据、学习MAC地址、发送和接收BPDU
阻塞到转发状态通常要30-50s(默认50s,即20+15+15),这个时间也可以通过配置来生成树计时器来调整
-Hello时间 根网桥发送配置BPDU的时间间隔 , 缺省为2s
-转发延迟时间 侦听到学习状态,或者学习状态转换为转发状态所需的时间,缺省为15s
-最大存活期 在丢弃BPDU之前,网桥用来储存BPDU的时间,缺省为20s,如果连续收不到10个BDPU(20s的时间),开始进入listening状态
当网络中某些链路、交换机设备出现的故障的时候,与该交换机有关的MAC地址信息就会变成无用的信息
拓扑变更机制的目的:让其他交换机快速刷新CAM表,将这些无用的信息快速的刷新掉,节省计算和带宽资源
TCN: top change notice —最先感知到top变化的交换机发送到报文,这个报文最终将要被传递到根桥
TCN ACK:当交换机收到一个TCN报文的时候,向发送TCN的交换机发出的回复报文
TC: 根桥发出的,用于通知全网交换机,网络拓扑发生了变化:35s
当交换机收到TC的时候,会将自己的CAM表老化时间由原来的 300s秒调整到15s,快速的将CAM表进行刷新,刷新之后,就不再由关于发生故障交换机的MAC地址信息了
1.SWB 感知到SWA的链路故障
2.SWB 通过自己的根端口向上发送TCN BPDU,通知上面的交换机拓扑变更的情况,TCN BPDU最终要通知到根桥
3.SWC 的指定端口收到SWB 发送的BPDU,会给SWB 一个TCN ACK报文的回复,同时会将接收到的TCN BPDU 再通过自己的根端口向上转发
4.SWC 发送的BPDU TCN 最终被根桥接收,根桥向SWC发送TCN ACK的回复信息
5.根桥向全网通知拓扑变更
6.全网交换机将自己的CAM表时间由300s 变成15s,重新刷新自己的CAM表。
链接终端的接口,不会连接其他的交换机,所以也不会出现环路,
但是这些接口依然受控与STP,当接口在启用的时候,依然要经历30-50漫长的时间
所以,要把连接终端的端口的选举机制去掉,让这些端口在启用后,迅速的进入到转发状态
[Switch]interface interface-ID
[Switch-GigabitEthernet0/0/1]stp edged-port enable //配置边缘端口
只配置portfast的缺陷:当边缘端口/配置了portfast的端口接入交换机的时候,交换机会发送bpdu,则portfast接口会重新参与stp计算,造成环路或者二层的网络动荡
当交换机的portfast 接口收到 BPDU报文的时候,接口会切换到
down(hauwei)/err-disbale(cisco)的状态
[Switch] stp bpdu-protection //收到bpdu报文会自动 shutdown
背景:
1.全局配置BPDU filter
希望这个接口处于 边缘接口的角色,但是也可以接入交换机设备,一旦收到BPDU的时候,就会消失掉portfast的特性,成为一个普通的stp的端口
全局配置 [Switch]stp bpdu-filter default
a)启用了portfast的接口将激活bpdufilter特性
b)上述接口在link up后瞬间会发送BPDU(a few),此后不在发送任何BPDU
c)上述接口在收到BPDU后立即丢失portfast及bpdufilter特性,成为一个普通的spanning-tree接口
2.在接口情况下配置bpdu filter
相当于关闭了 STP的功能,当收到BPDU的时候,可能会导致二层环路
接口配置 [Switch-GigabitEthernet0/0/1]stp bpdu-filter enable
d)该接口将不会发送BPDU,也忽略接收到的BPDU
e) Enabling BPDU filtering on an interface is the same as disabling spanning tree on it and can result in spanning-tree loops.
f)在接口上配置,不一定必须portfast特性,可独立实施。当然,建议搭配portfast特性使用。
主要作用:主动向其他交换机发送自己下联PC的MAC地址信息,让其他交换机快速更新CAM表。
BackboneFast是对UplinkFast的一种补充,
UplinkFast能够检测直连链路的失效,
BackboneFast是用来检测间接链路的失效。
当启用了BackboneFast的交换机检测到间接链路失效之后,会马上使阻塞的端口进入监听状态,少了20S的老化时间。
如果新接入的交换机优先级更低,将抢占原有的根网桥。
Root Guard是一种强制的根保护措施,它的作用是防止意外(或者非法)加入的交换机成为网络中的根桥。