2.2 BPDU(Bridge Protocol Data Unit)
4.1 MSTP(多生成树协议(Multiple Spaning Tree Protocol))
4.2 PVST(Per VLAN Spanning Tree)
1. STP产生背景
1.1 桥接网络:网桥
特点:不修改帧 + 不记录网桥个数;
问题:重复帧占用带宽;
1.2 交换机网络
网状拓扑,两个节点之间多条路径可达;
问题:① 环路;② 广播风暴;③ MAC地址表震荡;
1.3 解决方案
使用生成树协议(STP)
STP的基本原理:临时阻塞端口
2. STP生成树协议
2.1 概念
STP(Spanning Tree Protocol):用于在局域网中消除数据链路层物理环路的协议,即802.1D
1)基本流程:彼此交换信息 → 发现环路 → 进行端口堵塞
2)目的:有环的网络修剪为无环路的树形网络拓扑结构
3)阻塞对象:质量相对较差的接口
2.2 BPDU(Bridge Protocol Data Unit)
定义1:用于传递生成树协议的报文
定义2:是一种数据帧,通过BPDU用于传达自己的选举信息
例子:自荐信
1)配置BPDU(Configuration BPDU)(CFG BPDU)
生成树协议计算和维护生成树拓扑;
2)TCN BPDU(Topology Change Notification BPDU)
若网络中某个网络结构发生了变化,进行及时通告,重新选举阻塞口
2.3 选举机制(网桥:一进一出)
根网桥 → 根端口 → 指定端口 → 阻塞端口
1)在所有交换机中选举出一台作为根网桥(Root bridge)
规则:Bridge-id小的优先
Bridge-id-标识交换机身份:优先级+MAC地址(数值:优先级默认32768,必须是4096的倍数)
例子:在一个班里选一个班长
例1:
例2:
2)每台非根网桥(交换机)选举出一个根端口(Root port)
选举对象:非根网桥
根端口不是根网桥的端口,而是其他网桥达到根网桥的端口;
原则1:比较路径开销。比较本交换机到达根网桥的路径开销(Cost),选择开销最小的路径。STP以网桥的链路速率(端口速率)来定义路径开销。
原则2:比较发送CFG BPDU的网桥的BID。如果路径开销相同,则发送CFG BPDU的网桥的BID最小者所对应的端口当选,即比较对端网桥的BID,谁的对端BID小谁就当选。
原则3:比较发送CFG BPDU的网桥的PID(Port ID,端口ID)。如果发送CFG BPDU的网桥的BID也相同(如B1、B2之间有两条链路),那么发送CFG BPDU的端口的PID最小者所对应的端口当选,即比较对端端口的PID,谁的对端PID小谁就当选。
原则4:比较自身端口PID。如果发送CFG BPDU的网桥的PID也相同(对端只有一个网桥一个端口通过Hub接人本端的两个端口),那么就比较本网桥的多个端口的PID,谁的PID小谁就当选。
3)每个物理段上选举出一个指定端口(Designated port)
选举对象:在每根网线上选出一个指定端口;
① 根端口不能是指定端口,非根端口都是指定端口的候选者。
② 一个网段上必须有且只能有一个指定端口。如果出现多个候选指定端口,那么:
a. 谁到达根网桥的路径代价最小,谁就当选
b. 对于端口所在的网桥的 BID,谁小谁当选
c. 比较(对端)端口的 PID,谁小谁当选
4)剩下没有角色的端口就是闭塞端口(Blocked Port)
2.4 例题
2.5 端口状态
disable:禁用状态,被关闭的端口
1)blocking:阻塞状态
① 开机:所有接口会处于blocking阻塞状态
② 任务:接收BPDU(报文),但不发送BPDU(报文),不学习MAC地址,不转发数据
功能:其他口挂了,阻塞口会开启,起到备份的效果;
2)listening:监听状态
任务1:接收并发送BPDU(报文),不学习MAC地址,不转发数据
任务2:选根桥、选根端口、选指定端口
流程:选完后,如果是根端口或指定端口,则进入learing状态;如果是阻塞口,返回blocking状态
时间:持续15秒(可修改)
3)learning:学习状态
任务:接收并发送BPDU(报文),学习MAC地址,不转发数据
时间:15秒:防止listening状态15秒没选完
4)forwarding:转发状态
任务:接收并发送BPDU(报文),学习MAC地址,转发数据
5)总结:交换机开机后,要等30秒左右会进行转发数据,会算生成树
2.6 STP计时器
1)Hello time
任务1:配置BPDU的发送周期,传递消息
任务2:持续检测对方状态
时间:2秒
2)Max age
判断链路故障的时间,超过10个Hello time周期,认为挂掉
时间:20秒
3)Forwarding delay
记录状态切换的延迟;
时间:15秒
4)总结
接口挂了重连:
最长时间=20s(判断故障)+30s(重新计算)=50s
最短时间=30s(重新计算)
2.7 STP的问题
问题1:处理故障缺陷时间太长,收敛速度慢
问题2:生成树切换与MAC地表的时差
问题3:接口变动会频繁触发变更,导致网络崩溃;例如主机频繁上下线
2.8 STP拓扑变更机制
1)定义:解决STP的问题
2)流程:
① Max age超时/有接口变更为转发状态,判断为拓扑发送变更,向根网桥发起TCN BPDU;
TCN BPDU会进行报错处理;
② 收到TCN BPDU的交换机继续向根网桥转发TCN BPDU,到达根网桥为止;
只有根网桥才能产生BPDU,其他的交换机只是做转发;
③ 根网桥收到TCN BPDU后,向所有端口发起TC置位的配置BPDU;
处理问题;
④ 交换机收到TC置位的配置BPDU后,Mac地址表的老化时间缩短到15秒;
TC置位的配置BPDU:每2秒发的BPDU里面有TC位,把标志位标志位1;
3. RSTP
定义:快速生成树协议(Rapid Spanning Tree Protocol);
3.1 端口状态减少到3种
Discarding(丢弃)状态
Learning(学习)状态
Forwarding(转发)状态
3.2 端口角色增加到4种
根端口
指定端口
阻塞端口细分为2种:
替代端口(Alternata port):根端口的备份;
备份端口(Backuo port):指定端口的备份;
当端口挂了不重新计算,用备份的, STP要重新选举
3.3 边缘端口机制
针对于解决主机频繁上下线的问题;
运行机制:
① 当链路激活,边缘端口立即进入转发状态,不参与STP计算
② 边缘端口UP/DOWN不会触发拓扑变更
Tips:建议把连接PC的端口配置为边缘端口
4. 其他生成树
4.1 MSTP(多生成树协议(Multiple Spaning Tree Protocol))
目的:解决阻塞端口浪费资源的问题;
功能:
① 将多个VLAN捆绑到一个生成树实例,每个实例分别独立计算生成树;
② 基于STP计算结果不同,实现不同VLAN的流量负载均衡;
场景:定义多个生成树实例,每个实例对应多个VLAN;
4.2 PVST(Per VLAN Spanning Tree)
STP和RSTP:共享一棵生成树;
PVST:每个VLAN内都拥有一棵生成树;
比如:划分VLAN,划了5个;1、2、3、4、5;