应用背景
为了提高网络可靠性,交换网络中通常会使用冗余链路。然而冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。
MAC地址表震荡(飘移)
一个接口学习到的MAC地址被后学习到的表项覆盖。产生的原因:二层环路、伪造报文攻击、vrp主备切换等。
生成树协议STP(Spanning Tree Protocol)的作用
二层网络用于消除环路的协议,确保网络中所有的目的地之间只有一个逻辑路径。
在提高可靠性的同时避免环路带来的各种问题。
STP通过阻塞端口来消除环路,并能够实现链路备份的目的。
BPDU
网桥协议数据单元,运行STP功能的交换机之间交换的数据帧。BPDU报文封装在以太网数据帧中,包括TCNBPDU和配置BPDU。TCNBPDU是错误变化通知,配置BPDU就是STP进行选举的时候每个交换机互相交互BPDU信息,它会按照hello time规定的时间间隔从指定端口发出,主要用于生成树计算。
BPDU字段
协议id(protocol identify),协议版本id(stp的版本),BPDU type(BPDU的类型),flag(标志),根桥id,根路径开销RPC(root path cost),网桥id(发送BPDU的网桥id),端口id(发送BPDU的端口id),消息老化时间(Message Age),Max Age(交换机端口保存配置BPDU的最长时间),Hello Time(根桥连续发送BPDU的时间间隔)。
- Flags字段:用于标识BPDU的类型和发送端口的角色。
- Type字段:用于标识BPDU的类型,例如RSTP BPDU或MST BPDU。
- TCN BPDU:用于通知网络中的交换机有拓扑结构发生变化。
- TC字段:用于标识BPDU中是否包含TCN信息。
- TCA字段:用于标识BPDU中是否包含TCA信息。
- Root ID字段:用于标识生成树的根交换机。
- Bridge ID字段:用于标识发送BPDU的交换机。
- Port ID字段:用于标识发送BPDU的交换机的端口。
- Message Age字段:用于标识BPDU的年龄,即BPDU从发送端口发送出去的时间。
- Max Age字段:用于标识BPDU的最大年龄,即BPDU在网络中存在的最长时间。
配置BPDU:0x00 TCN BPDU:0x80
配置BPDU每经过一个交换机,Message Age都会+1,如果Message Age大于Max Age,非根桥就会丢弃该配置BPDU。
//什么情况下会产生配置BPDU?
STP操作--端口角色选举的过程
根桥选举:初始时每个交换机都认为自己是根桥,所以在每个端口中发送的BPDU中的根桥字段都是各自的网桥id,rpc是累计到达根桥的开销值为0,发送者网桥id是自己的网桥id,pid是发送该BPDU端口的端口id。通过交换配置BPDU信息,交换机之间比较根桥id,网络中根桥id最小的被选举为根桥。先比较优先级,如果优先级相同就比较MAC地址。交换机上的根桥id字段更新之后,交换机将在所有后续BPDU中包含新的根桥id,这样即可确保具有最小根桥id的BPDU能够传递给网路中所有的交换机,就是网络中所有的交换机都能收到嘴最优的BPDU。
根端口选举:根端口是非根桥设备接收最优配置消息的交换机端口。比较到达根桥的最下开销值、发送者最小网桥id、发送者最小的端口id、接收者最小的端口id。
指定端口选举:选举规则和根端口选举规则一样。
端口状态转换
STP简单配置