STP生成树:
STP将环形网络修剪成为一个无环的树形网络,避免报文在环形网络中的增生和无线循环,主要为二层环形网络。采用生成树(spanning-tree)协议,能够在网络中存在二层环路时,通过阻塞(block)特定端口从而打破环路,并且在网络出现拓扑更新时及时收敛,以保证网络的冗余性。
环路带来的问题
- 广播风暴
网络中如若存在二层环路,一旦出现广播数据帧,这些数据帧将被交换机不断进行洪泛,从而造成广播风暴。
- MAC表的紊乱
频繁更新MAC地址表
若出现故障时:
采用生成树协议,能够在网络中存在二层环路时,通过阻塞特定端口从而打破环路,并且在网络出现拓扑更新时及时收敛,以保证网络的冗余性。
基本概念和术语:
根桥:每个广播域选择一个根桥,桥ID最小的,整个网络的逻辑中心。
根端口(RP):去往根桥路径最近的端口。负责向根桥方向转发数据,同时负责接收上游设备的BPDU报文和用户流量转发。
指定端口(DP):指定端口是向下游交换设备转发BPDU报文的端口
非指定端口(AP):阻塞端口,当STP启用后非指定端口为阻塞状态。当链路发生变化时,该非指定端口转化为指定端口
桥ID:八个字节:两个字节的优先级和六个字节的MAC地址构成,默认32768(修改时以4096为倍数修改),桥ID最小的为根桥。
Path cost:路径开销,根设备的端口的路径开销都为0,在一个STP/RSTP网络中,某端口到根桥累计的路径开销就是所经过的各端口的开销。
带宽 | 802.1t | 802.1d |
10Mbps | 2000000 | 100 |
100Mbps | 200000 | 19 |
1000Mbps | 20000 | 4 |
10000Mbps | 2000 | 2 |
Port ID:端口ID=端口优先级(1字节)+端口编号(1字节),缺省优先级128,范围0-255,越小越优。
STP端口状态:
端口状态 |
端口能力 |
Disabled |
不收发任何报文 |
Blocking(阻塞) |
不接收或者转发数据,接受但不发送BPDU,不进行地址学习 |
Listening |
不接收或者转发数据,接受并发送BPDU,不进行地址学习 |
Learning |
不接收或者转发数据,接受并发送BPDU,开始进行地址学习 |
Forwarding |
接收或者转发数据,接受并发送BPDU,进行地址学习 |
端口状态的转化:
BPDU:网桥协议数据单元
从根桥发出,非根桥为从根端口收到从指定端口发出(中继)
BPDU报文:
占用字节 | 内容 | 意义 |
2 | Protocol ID | 协议ID |
1 | version | 协议版本标识符 STP为0,RSTP为2,MSTP为3 |
1 | message type | BPDU消息类型 |
1 | flags | 标签 |
8 | root ID | 根ID,网桥优先级+MAC地址 |
4 | cost of path | 路径开销,标识本交换机距离根的距离 |
8 | bridge ID | 发送者的BID |
2 | port ID | 发送端口PID |
2 | message age | 消息时间,最大300s,在启用portfast后变为15s |
2 | max age | 20s,最大生存时间 |
2 | hellotime | hello时间,默认为2s |
2 | forward delay | 转发延时,最大15s |
端口选举:
比较次序:root identifier>root path cost>bridge identifier>port identifier 值越小越优
根桥选举
- 比较BID即可,BID由两部分组成:两个字节的优先级和六个字节的MAC地址。
- 比较时,先比较优先级,优先级越小越优。若优先级一样,比较MAC地址,MAC地址越小越优。
指定端口选举
- 比较root ID,越小越优。
- 若相同比较cost of path,越小越优。
- 以上相同,比较BID。
- 以上相同,比较PID。
发生故障(拓扑变更):
发生故障处的交换机向上游交换机发送TCN BPDU报文,报告链路发生故障,上游路由器回复TCN ACK报文表示收到。
根桥收到TCN BPDU报文后,向下泛洪。
其他交换机收到TC标志位置为后,将CAM表老化时间降为15s。