目录
1.STP概念
1.1 STP选举过程
1.1.1 根桥和根端口的选举
1.1.2 端口角色的选举
2.STP端口状态解释及转换
2.1 STP的五种端口状态
2.2 STP过程中的两种常见问题
3.STP的拓扑改变条件及流程
3.1 STP的拓扑改变流程
3.2 STP拓扑改变的条件
3. STP华为eNSP实验
为了提高网络可靠性,交换网络中通常会使用冗余链路。然而。冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的 通信质量。生成树协议STP(Spanning Tree Protocol)可以在提高可靠性的同时又能避免环路带来的各种问题。
STP协议的原理:找到交换网络中的冗余链路,然后阻塞一端,避免环路。
STP协议的版本:IEEE 802.1D(STP)、IEEE 802.1W(RSTP-Rapid)、IEEE 802.1S(MSTP-Multiply 华为私有协议)
HUB网络就算存在冗余链路引也不会出现环路,因为HUB工作在物理层,工作模式为半双工。
STP的选举过程:
1. 选举一个根桥 在一个交换网络中选举一个根桥,根桥是设备的概念。默认情况下所有设备都是根桥,通过交互BPDU包优选BID小的设备作为根桥,在STP根桥选举后只会由根桥每隔2秒发送一次BPDU包,其它的非根桥接收后转发。
2.每个非根交换机选举一个根端口 根桥选举后,交换网络中的其它设备都是非根桥,每个非根桥还需要选举一个到达根桥最短路径的端口成为根端口。注:非根桥只能由一个根端口
3.每个网段选举一个指定端口 每条链路上还需要选举一个指定端口,默认情况下根桥的所有端口都是指定端口
4.阻塞非根,非指定端口 既不是根端口也不是指定端口的其它端口需要被阻塞。不能转发数据帧。
所有配置了STP协议的交换机都会发送BPDU(桥协议数据单元)报文,通过交互BPDU报文选举设备角色和端口角色。
BPDU包是通过组播的方式发送的。目的MAC地址:01-80-C2-00-00-00
STP BPDU包结构:
Protocol id=00(生成树协议)
Protocol Version= 00(STP)02(RSTP)03(MSTP)
BPDU Type = 00(Config BPDU)80(TCN BPDU)
BPDU Flags = TC(拓扑改变)TCA(拓扑改变确认)这些Flags只有在配置BPDU包中被置位
STP协议中包含一些重要的时间参数,这里举例说明如下:
Hello Time是指运行STP协议的设备发送配置BPDU的时间间隔,用于检测链路是否存在故障。交换机每隔Hello Time时间会向周围的交换机发送配置BPDU报文,以确认链路是否存在故障。当网络拓扑稳定后,该值只有在根桥行修改才有效。
Message Age:如果配置BPDU是根桥发出的,则Message Age为0.否则,Message Age是从根桥发送带当前桥接接收到BPDU的总时间,包括传输时延等。实际实现中,配置BPDU报文每经过一个交换机,Message Age增加1.
Max Age是指BPDU报文的老化时间,可在根桥上通过命令人为改动这个值。Max Age通过配置BPDU报文的传递,可以保证Max Age在整网中一直。非根桥设备收到配置BPDU报文后,会将报文中的Message Age和Max Age进行比较;如果Message Age小于Max Age,则该非根桥设备会继续转发配置BPDU报文。如果Message Age大于Max Age,则该设置BPDU报文会被老化掉。该非根桥设备将直接丢弃该配置BPDU,并认为Hi好网络直接过大,导致了根桥连接失败。
设备角色:根桥、非根桥
端口角色:根端口、指定端口、替代端口
根桥的选举:
通过比较BID(桥ID)选举,优选BID小的。BID参数由两部分组成:优先级(默认值为32768)+MAC地址(交换机的背板MAC地址)
1.比较优先级,优先级越小越优
2.如果优先级一样,比较MAC地址,MAC地址越小越优
根端口的选举:
RPC(root path cost)RPC是BPDU包中的一个参数,用于标识发送BPDU包的交换机自己到达根桥的距离
本地端口的RPC(通过端口到根桥的距离)=本端口的PC+收到的BPDU报文中通告的RPC
PC(port cost)PC的计算是需要依据端口的带宽来计算的,目前计算PC的标准有三种:1.IEEE 802.1d
2.IEEE 802.1t 3.华为私有标准
STP端口角色的选举过程:
1.比较RID(根桥ID),优选小的
2.比较到达根桥的RPC(root path cost),越小越优
3.比较BPDU包发送者的BID,越小越优
4.比较BPDU包发送者的PID(Port ID(端口ID)),端口ID由两部分组成=端口优先级(默认为128,可以配置,配置时必须为16的整数倍)+端口ID 越小越优
5.比较BPDU包接收者的PID,越小越优
STP有几种端口角色:根端口(RP--Root Port),指定端口(DP --Define Port),替代端口(AP---Alternative Port)
STP中有几种端口状态:Disable(禁用)、Listening(监听)、学习(Learning)、转发(Forwarding)、阻塞(Blocking)
Disable(禁用):端口shutdown,端口Up后会从Disable转为Listening状态
Listening(监听):在该状态下可以发送和接收BPDU包,但是不能转发数据帧,用于选举设备角色和端口角色,该状态会维持一个,该状态会维持一个Forward Delay(15秒)的时间,超过该时间后会过渡到Learning状态
Learning(学习):在该状态下可以发送和接收BPDU包,可以接收但是不能转发数据帧,会学习源MAC地址用来构建MAC地址表,该状态会维持一个Forward Delay(15秒)的时间,超过该时间后会过渡到Forwarding状态
Forwarding(转发):在该状态下可以发送和接收BPDU包,同时也可以接收和转发数据帧。
Blocking(阻塞):在该状态下可以接收BPDU包,但是不能转发BPDU包和数据帧。
STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID)。桥ID由16位的的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768.优先级最高的设备(桥ID最小)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
交换机启动后就自动开始进行生成树收敛计算啊。默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样的BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID,如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给相邻交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID地段,宣告新的根桥。
Disable->Listening->Blocking(AP)
Disable->Listening->Learning->Forwarding(RP/DP)
直接链路故障进入到转发状态需要的时间是30秒(两次转发延时)
间接链路故障进入到转发状态需要的时间是50秒(MAX AGE+Forward delay×2)
什么场景下STP的收敛时间是30秒?
1.直连故障
2.AP切换到RP
什么场景下STP收敛的时间是50秒?
1.非直连故障和单向链路故障
2.次优BPDU
TCN BPDU包:拓扑改变通告
TCN BPDU包只能由非根桥发起,沿着根端口通告给根桥
TCA BPDU包:用于确认接收到的TCN BPDU包
TC BPDU包:只能由根桥发起,连续发送35秒(max age+forwarding delay)
接收到TC BPDU包后会将自己的MAC地址表老化时间设置为15秒,加速老化
STP的拓扑改变流程
1.如果非根桥上发生拓扑改变,向根端口发送TCN BPDU包,通告根桥拓扑已经变化
2.上联的非根桥从指定端口收到了TCN BPDU包后,会向发送者恢复TCA flag位置位的配置BPDU包,同时继续向根桥发送TCN BPDU包
3.根桥收到TCN BPDU包后,向发送者回复TCA flag位置位的配置BPDU包,同时向所有的指定端口发送TC flag置位的配置BPDU包,TC置位的配置BPDU包会持续发送35S(max age+forward delay),同时将自己的MAC地址表的老化时间设置为15S
4,其它非根桥收到TC置位的配置BPDU包后,将自己MAC地址表的老化时间设置为15S
STP中触发拓扑改变的条件:
1、一个端口从forwarding状态过渡到blocking或者disable状态
2、一个非根桥如果从指定端口接收到TCN BPDU,需要向根桥转发TCN BPDU
3、一个端口进入到forwarding状态,并且本地(交换机)已经存在一个指定端口
华为X7系列交换机支持三种生成树协议模式。
stp mode { mstp(多路生成树协议) | stp | rstp(快速生成树协议) }命令用来配置交换机的生成树协议模式。缺省情况下,华为X7系列交换机工作在MSTP模式。在使用STP前,STP模式必须重新配置。
STP ,RSTP(Rapid Spanning Tree Protocol),华为私有协议
STP实验:
拓扑图;
一:宣布根桥
二:查看根桥
三:修改STP模式为STP
通过display stp brief 命令查看各端口的角色,发现SW3与拓扑图不符
查看端口的PRC发现是默认的20000,所以需要修改g0/0/1口的PRC来实现角色的转换
五:查看修改效果