STP–生成树协议
由于冗余备份的需要,在一个复杂的网络结构中,难免会出现环路。
生成树协议STP可以将一个环形网络修剪为一个无环的树形网络,可以避免形成环路,导致广播风暴。
原理
在网络刚开始运行阶段,所有交换机都会从所有端口发送BPDU报文,大家都认为自己是根桥,随着BPDU报文的泛洪和收集,根据BPDU中包含的信息,选举唯一根桥。在此之后,根桥以默认2s为周期广播BPDU报文,所有非根桥从自己的根端口收到BPDU报文,再从自己的指定端口产生BPDU报文发出去。被阻塞的非指定端口会源源不断的收到链路上的BPDU报文并一直侦听,当在一定时间内没有收到BPDU报文时,则认为链路出现了故障,开始进入新的收敛阶段。
原理解释
相关概念
根桥
树形网络结构必须有树根,根桥就是树根,根桥有且只有一个。
-
选举规则:
- 比较桥ID,先比较优先级,再比较MAC地址,小的优先。
桥ID–Bridge ID
一个交换机设备在STP协议中的编号ID。
桥ID = 桥优先级(2个字节) + 桥MAC地址(6个字节)
桥ID最小的被选举为根桥。默认32768
RID–Root ID
根桥的桥ID
COST OF PAHT
路径开销。选择链路时的参考值,优先选择开销较小的路径。
PID–port ID
PID = 端口优先级(4bit) + 端口号(12bit)
在选择指定端口时,当路径开销与BID都相同时比较PID,优先选择PID小的。
端口
根端口–RP
非根桥上离根桥开销最小的端口。一个非根桥上只有一个根端口。
指定端口–DP
每条链路上去往根桥开销最小的端口称为指定端口。
- 选举规则
- 开销小优先
- BPDU报文发送者的桥ID小的优先
- BPDU报文发送者的PID小的优先
- BPDU报文接收者的PID小的优先
BPDU报文
选举规则
- 选根桥
- 每个非根桥上选举一个根端口
- 每条链路上选举一个指定端口。根桥的所有端口都是指定端口
- 既不是根端口,也不是指定端口的其他端口被阻塞。
端口状态
BPDU报文的两种类型
- Configuratoin BPDU:健康网络中的配置BPDU(主要)
- TCN BPDU:下游向上游发送的拓扑变化通知BPDU。
- TCN BPDU报文只能由非根桥发出,通告给根桥。
- TCA BPDU报文是用于确认接收到TCN BPDU报文,
- TC BPDU报文由根桥发送,连续发送35s,非根桥收到TC BPDU报文后会将MAC地址的老化时间设为15s,加速老化。
拓扑变化:
- 如果非根桥上发生拓扑变化,向根桥发送TCN BPDU包,通告根桥拓扑已改变。
- 上联的非根桥从指定端口收到TCN BPDU包后,会向发送者回复TCA flag位置位的配置BPDU包,同时继续向根桥发送TCN BPDU包。
- 根桥收到TCN BPDU包后,向发送者回复TCA Flag位置位的配置BPDU包,同时向所有指定端口发送TC Flag位置位的配置BPDU包。TC置位的配置BPDU包会连续发送35s,同时将自己的MAC aging 设置为15s。
- 其他非根桥收到TC置位的配置BPDU包后,将自己的MAC地址的老化时间设置为15s,加速老化。
触发拓扑变化条件:
- 一个端口从forwarding状态过渡到disable或blocking状态。
- 一个非根桥如果从指定端口接收到TCN BPDU包,需要向根桥发TCN BPDU包。
- 一个端口进入转发状态,并且本地已存在一个指定端口。
生成树协议的比较
RSTP能够在大约1分钟内恢复连接,并进行快速收敛。
原理:为交换机上的不同端口分配端口角色,在出现故障后,交换机之间实施明确的握手协议,完成快速收敛。
端口角色:
root port,
designated port,
alternative port,
backupport.
配置
portfast一般用在接入终端设备上,使其立即进入转发状态。
bpdu guard用在防止交换机接入到portfast端口。影响原来的树结构。
root guard防止新接入的交换机抢占根桥,改变树结构。stp都是具有抢占性的。