3.2、STP原理与配置
- 前言
- 为了提高网络可靠性,交换网络中通常会使用冗余链路。然而,冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。生成树STP(Spanning Tree Protocol)可以在提高可靠性的同时又能避免环路带来的各种问题。
- 环路引起的问题
- 二层交换网络
- 交换机之间通过多条链路相连,虽然能够提升网络可靠性,但同时也会带来环路问题
- 广播风暴
- 环路会引起广播风暴
- 网络中的主机会受到重复数据帧
- MAC地址表震荡
- 环路会引起MAC地址表震荡
- 二层交换网络
- STP工作原理
- STP的作用
- STP通过阻塞端口来消除环路,并能够实现链路备份的目的
- STP操作
- 1、选举一个根桥
- 2、每个非交换机选举一个根端口
- 3、每个网段选举一个指定端口
- 4、阻塞非根、非指定端口
- 根桥选举
- 每一台交换机启动STP后,都认为自己是根桥
- 根桥的选举主要是依据桥ID来进行选举,每一个交换机都会有一个桥ID
- 桥ID
- 优先级
- 可以配置
- 取值范围
- 0~65535
- 默认值
- 32768
- 优先级的数值越低,优先级越高
- 如果优先级一致,就比对交换机的MAC地址
- 越小越优先
- 如果优先级一致,就比对交换机的MAC地址
- 48位MAC地址组成
- 优先级
- 桥ID
- 根端口选举
- 非根交换机在选举根端口时分别依据该端口的根路径开销,对端BID、对端PID和本端PID
- 根路径开销
- 越小越优先
- 交换机每一个端口都有端口开销,该参数表示该端口在STP中的开销值
- 根路径的开销是该端口到根所有路径的总和开销
- 如果根路径开销选举不出来?
- 对端BID
- BID
- 桥ID
- 越小越优先
- 如果对端BID还是选举不出来?
- BID
- 对端PID
- PID
- 由端口优先级和端口ID组成
- 端口优先级
- 默认128
- 端口ID
- 端口号
- 端口优先级
- 由端口优先级和端口ID组成
- 如果对端PID选举不出来?
- PID
- 本端PID
- 根路径开销
- 非根交换机在选举根端口时分别依据该端口的根路径开销,对端BID、对端PID和本端PID
- 指定端口选举
- 非根交换机在选举指定端口时分别依据根路径开销、BID、PID
- 根路径开销
- 根交换机上端口开销为0
- 根桥上的所有端口都是指定端口
- BID
- 桥ID
- 如果BID选举不出指定端口
- PID
- 自环现象
-
- 由于1端口PID较小
- 1为指定端口
- 2位非指定端口
- 由于1端口PID较小
- 根路径开销
- 未被选举为根端口或指定端口的端口为预备端口,将会被阻塞
- 注意
- 根端口是在交换机上进行选举的
- 指定端口是在网段上进行选举的
- 非根交换机在选举指定端口时分别依据根路径开销、BID、PID
- 端口状态转换
- STP端口状态迁移机制
- 1、Forwarding
- 转发状态
- 只有根端口和指定端口才能处于转发状态
- 端口处于转发状态,既能转发用户流量,也能转发BPDU报文
- BPDU报文
- 选举过程中,选举根桥、选举根端口、选举指定端口都会通过BPDU报文含有的信息来进行选举
- BPDU报文
- 转发状态
- 2、Learning
- 学习状态
- 端口可以收到用户的流量和构建MAC地址表,但是不能转发用户流量
- 学习状态
- 3、Listening
- 侦听状态
- 端口可以转发BPDU报文,但是不能转发用户流量
- 侦听状态
- 4、Blocking
- 阻塞状态
- 端口只能接收并处理BPDU,但是不能转发BPDU,也不能转发用户流量
- 这个端口状态就是预备端口(阻塞端口)的最终状态
- 阻塞状态
- 5、Disabled
- 禁用状态
- 端口既不处理也不转发BPDU报文,也不转发用户的流量
- 禁用状态
- 1、Forwarding
- 端口状态转换顺序
- 选举过程中需要的参数都是通过BPDU报文进行传递
- 1、端口初始化或使能
- 刚开始所有端口状态都是Disabled状态
- 初始化使能之后变为Blocking状态
- 2、端口被选为根端口或指定端口
- 3、端口不再是根端口或指定端口
- 端口开始选举成为根端口或指定端口进入Listening状态
- 4、Forward delay计时器超时
- Listening状态过渡到Learning状态时,有一个定时器
- 定时器为15s
- 15s后状态才能切换为Listening状态
- 定时器为15s
- Learning状态转换为Forward也有一个定时器
- 定时器为15s
- 定时器超时后才能进入Forwarding状态
- 定时器为15s
- 即当端口从Disabled到Forwarding状态需要30s的等待时间
- Listening状态过渡到Learning状态时,有一个定时器
- 5、端口禁用或链路失效
- STP端口状态迁移机制
- BPDU
- BPDU包含桥ID、路径开销、端口ID、计时器等参数
- Root ID
- 桥ID
- 根桥优先级
- MAC地址
- 桥ID
- Bridge ID
- 指定桥ID
- 优先级
- MAC地址
- 指定桥ID
- Port ID
- 指定帧端口ID
- 优先级
- 端口ID
- 指定帧端口ID
- Message Age
- BPUD在网络中生存最大生存周期
- Max Age
- 配置BPDU在设备中能够保存的最大的生存周期
- Hello Time
- 发送BPDU的周期
- Fwd Delay
- 端口状态迁移的延迟
- Root ID
- BPDU类型
- 配置BPDU
- 平常使用的都是配置BPDU
- TCN BPDU
- 用于当拓扑发生变化的时候,发送的拓扑变化通知使用的是TCN BPDU
- 配置BPDU
- BPDU包含桥ID、路径开销、端口ID、计时器等参数
- 计时器
- Hello Time
- BPDU间隔(2s)
- Message Age
- 根桥发送到当前交换机接收到BPDU的总时间
- 配置BPDU报文每经过一个交换机,Message Age都加1
- 限制拓扑网络中交换机的个数
- 最大个数不能超过Max Age,否则该BPDU会被丢弃
- Max Age
- BPDU报文老化时间
- 可改动
- 如果Message Age大于Max Age,非根桥会丢弃该配置BPDU
- BPDU报文老化时间
- Hello Time
- STP的作用
- STP拓扑变化
- 根桥故障
- 非根桥会在BPDU老化之后开始根桥重新选举
- 在稳定的STP拓扑里,非根桥会定期收到来自根桥的BPDU报文,如果根桥发生了故障,它就会停止发送BPDU报文
- 下游交换机如果无法收到来自根桥的BPDU,会等待一个MAX Age的定时器,如果定时器超时后,就会认为已经收到的BPDU的报文会失效,也就是20s
- 非根交换机会互相发送配置BPDU来选举新的根桥,端口状态就会从Disabled转换成Forwarding状态,即等待30s的时间
- 所以根桥故障会导致50s的恢复时间
- 恢复时间=Max Age+2倍Froward delayy收敛时间
- 非根桥会在BPDU老化之后开始根桥重新选举
- 直连链路故障
- SWB检测到直连链路物理故障后,会将预备端口转换为根端口
- SWB新的端口会在30s后恢复到转发状态
- Blocking→Forwarding
- 非直连链路故障
- 非直连链路故障后,SWC的预备端口恢复到转发状态大约需要50s
- 交换机B如果无法检测到出现故障,需要等待20s的老化时间
- Eg
- SWA和SWB中接入一台Hub
- Eg
- 20s后检测出现故障,SWB就开始重新进行选举,首先认为自己是根桥,然后向其他端口发送BPDU
- 交换机SWC收到BPDU后,交换机SWC同时也收到了交换机SWA的BPDU
- 而且交换机SWA的BPDU比交换机SWB优先,所以交换机SWC不理会交换机SWB的BPDU
- 但是既然收到了BPDU,代表交换机SWC知道了交换机SWB出现了故障,然后将交换机SWB端的阻塞端口从Blocking→Forwarding,需要30s
- 交换机B如果无法检测到出现故障,需要等待20s的老化时间
- 非直连链路故障后,SWC的预备端口恢复到转发状态大约需要50s
- 拓扑改变导致MAC地址表错误
- MAC地址表项的默认老化时间是300秒。在这段时间里,SWB无法将数据从G0/0/2端口转发给主机B
- 拓扑改变除了会引发延迟的时间,还会导致MAC地址表的错误
- 平常SWB学习到主机B的MAC地址对应的端口是G0/0/1
- 但是链路出现故障,恢复后主机B走的时候是下面的链路,即从G0/0/2的端口学习到主机B的MAC
- 但是MAC地址表的有效时间是300s,此时还没有进行更新,所以主机A想要访问主机B走的依然是G0/0/1的端口,但是G0/0/1的端口到达不了,这时就导致了MAC地址表出现错误了
- 拓扑改变代做MAC地址表变化
- 当拓扑出现变化时,该变化的交换机会向上游发送一个TCN报文
- 即让根桥知道出现问题了
- 但是根桥一直到达不了,所以根据非根交换机进行传达
- 当交换机B收到交换机C的TCN以后,向交换机C回应一个确认报文
- TCA报文,告知以及收到了拓扑变化报文
- 然后向根桥继续发送TCN报文
- 当交换机B收到交换机C的TCN以后,向交换机C回应一个确认报文
- 当根桥收到TCN报文以后,会向下游发送一个TC报文,当交换机收到TC报文以后,它的MAC地址表的老化时间就从300s变为15s
- 然后再15s后即可完成更改
- 当拓扑出现变化时,该变化的交换机会向上游发送一个TCN报文
- 根桥故障
- STP配置
- STP模式
- 大多数交换机是默认开启MSTP
- 配置交换机优先级
- 通过修改交换机的优先级,可以配置交换机为根交换机
- STP优先级的取值范围必须是4096的倍数
- 通过修改交换机的优先级,可以配置交换机为根交换机
- 配置路径开销
- 配置路径开销
- 根据改变路径开销来改变选取的根端口
- 可以改变带宽取值
- 路径开销根据公式进行计算
- 配置路径开销标准
- Dot1d-1998
- Dot1t
- legacy
- 默认情况下是Dot1t(IEEE 802.1T)
- 直接配置路径开销大小
- Stp cost
- 可以改变带宽取值
- 根据改变路径开销来改变选取的根端口
- 配置路径开销
- 配置验证
- 总结
- 根桥产生故障后,其他交换机会被选举为根桥。那么原来的根桥恢复正常之后,网络又会发生什么变化呢?
- 原来的根桥回复正常后,会重新进行选举
- 谁优先,谁就是根桥
- 原来的根桥回复正常后,会重新进行选举
- 端口开销和根路径开销的区别是什么?
- 根路径开销
- 到根桥路径的总开销
- 端口开销
- 交换机某个端口的开销
- 根路径开销
- 根桥产生故障后,其他交换机会被选举为根桥。那么原来的根桥恢复正常之后,网络又会发生什么变化呢?
- STP模式