生成树协议 STP& RSTP& PVST& PVST+ 学习记录
记录大学时的生成树协议学习经过,当时参考了一些网络资料,出处已难寻,如有误,请不吝赐教
IEEE标准的生成树协议STP(Spanning Tree Protocol)是一种工作在OSI第二层的网络协议,通过链路冗余来提高局域网的健壮性和稳定性,被广泛应用与局域网组建技术中。STP通过阻塞某些端口来解决环路带来的广播风暴等问题。STP通过使用生成树算法,将原来存在环路的网络拓扑变成树形网络(不存在环)。当正常工作的链路出现故障时,原来被阻塞的端口会快速启用转发报文,实现冗余的功能。
思科公司拥有私有的生成树协议 PVSTP+: Per-VLAN Spanning Tree(每个VLAN生成树)。
协议 | 标准 |
---|---|
STP | IEEE |
RSTP | IEEE |
MSTP | IEEE |
PVST | CISCO |
PVST+ | CISCO |
Rapid-PVST | CISCO |
背景
网络设计通常采用冗余方法提高网络的健壮性、稳定性。常见的冗余方式有:链路冗余和设备冗余。如图所示。该三层结构的网络中,核心层、分布层和接入层均采用了链路冗余。
不过,对网络中冗余链路会造成网络中的环路,而第二层的网络环路则会带来以下问题:
(1)广播风暴。
(2)多帧复制。
(3)MAC地址表的不稳定。
为了解决第二层网络环路问题而又要保证网络的稳定和健壮性,引入了链路动态管理的策略。首先通过阻塞某些链路避免环路的产生,当正常工作的链路由于故障断开时,阻塞的链路立刻激活,迅速取代故障链路的位置,保证网络的正常运行。这就是生成树(STP)协议的主要思想。
STP的工作过程
STP通过协商阻断一些交换机端口,以确保网络中所有目的地之间只有一条逻辑路径,构建一棵没有环路的转发树。当一个端口阻止流量进入或离开时,该端口便视为处于阻塞状态。不过 STP 用来防止环路的网桥协议数据单元 (BPDU) 帧仍可继续通行。为了在网络中形成一个没有环路的拓扑,交换机要进行以下3个步骤:
(1)选举根桥。
(2)每个非根桥交换机计算到达根桥的最短路径。
(3)选择活动端口以及端口的角色类型。
端口类型
STP端口类型 | RSTP端口类型 |
---|---|
根端口(Root Port) | 根端口(Root Port) |
指定端口(Designated Port) | 指定端口(Designated) |
非指定端口(non-designated ) | 备份端口(Backup Port) |
禁用端口(Disabled Port) | 替代端口 (Alternative Port) |
端口功能
端口类型 | 定义 | 位置 |
---|---|---|
根端口 | 指到达根桥路径开销最小的端口,每个交换机只能有一个。 | 非根网桥上 |
指定端口 | 负责发送网段BPDU的端口,对于根网桥来说,所有端口都为指定端口;而非根网桥所在每个物理网段只能有一个。 | 非根网桥和根网桥上 |
非指定端口 | 被阻塞的端口,不能转发数据帧 | 非根网桥上 |
备份端口 | 充当指定交换机的那个网段提供一条备份链路,工作在稳定拓扑中为丢弃状态。 | 非根网桥上 |
替代端口 | 用来提供替代去往根网桥路径的端口,即替换当前根端口,工作在稳定拓扑中为丢弃状态。 | 非根网桥上 |
禁用端口 | 生成树中不起作用的端口 | 非根网桥和根网桥上 |
端口状态
STP有五种端口状态,而RSTP只有三种与之对应,故收敛速度有提升。(后面会谈)
STP | RSTP |
---|---|
禁用(Disable ) | 丢弃(Discarding) |
阻塞(Blocking) | 丢弃(Discarding) |
侦听(Listening) | 丢弃(Discarding) |
学习(Learning) | 学习(Learning) |
转发(Forwarding) | 转发(Forwarding) |
选举根桥及根端口
在STP的根桥和根端口选择过程中,哪个交换机能获胜将取决于以下因素(按顺序进行):
- 最低的根桥ID,也叫BID(Bridge Identity); 最低的根路径代价; 最低发送者桥ID; 最低发送者端口ID。
- 最低的根路径代价;
- 最低发送者桥ID;
- 最低发送者端口ID。
下面举例说明了生成树的工作过程:
- 选举根桥:每个交换机都具有一个唯一的桥ID(BID, Bridge ID),这个ID由两部分组成,如下图所示:
网桥优先级是一个2字节的数,交换机的默认优先级为32768 ;MAC地址就是交换机的MAC地址。具有最低桥ID的交换机就是根桥。
BID的信息被封装在BPDU中,每个交换机广播接收到的BPDU和发送自身的BPDU,通过BPDU泛洪,可以获知BID最小的交换机,该交换机即被选为根桥。例如在上图中,三台交换机的优先级(Priority)相同,SwitchA 的MAC地址最小,所以SwitchA的 BID最小(Priority+MAC),被选举为根网桥。 - 选取根端口:选举了根桥后,其他的交换就成为了非根桥。根桥上的接口都是指定端口,会转发数据包。每台非根桥要选举一条到根桥的根路径。STP使用路径代价Cost值来决定到达根桥的最佳路径(Cost是累加的,带宽大的链路Cost低),最低Cost值的路径就是根路径,该端口就是根端口;如果Cost一样,就根据选举顺序选举根口。根口转发数据包。生成树链路开销代价如表所示。
链路带宽 | cost |
---|---|
10Gb/s | 2 |
1Gb/s | 4 |
100Mb/s | 19 |
10Mb/s | 100 |
各个非根网桥中的端口中,到根网桥路径开销最小的端口被指定为根端口,在图中,Switch B和C 的两个端口F0/1、F0/2的开销分别为19和38,所以F0/1被选定为根端口。
3. 选举指定端口和非指定端口:当交换机确定了根端口后,还必须将剩余端口配置为指定端口 (DP) 或非指定端口(非 DP),以完成逻辑无环生成树。交换网络中的每个网段只能有一个指定端口。当两个非根端口的交换机端口连接到同一个 LAN 网段时,会发生竞争端口角色的情况。这两台交换机会交换 BPDU 帧,以确定哪个交换机端口是指定端口,哪一个是非指定端口。一般而言,交换机端口是否配置为指定端口由 BID 决定。所以在网段2所连接的2个端口,Switch B的BID值小于Switch C的BID值,所以 Switch B的F0/2为指定端口,处于转发状态。Switch C的F0/2为非指定端口,处于阻塞状态。
STP的收敛过程
当网络的拓扑发生变化时,网络会从一个状态向另一个状态过渡,重新打开或阻断某些端口口。交换机的端口状态状态变换和时间如下图:
从上图可以看出STP的最长收敛时间为50s。
当网络的拓扑发生变化时,网络会从一个状态向另一个状态过渡,重新打开或阻断某些端口。交换机的端口要经过几种状态:禁用(Disable)——>阻塞(Blocking)——>监听状态(Listenning)——>学习状态(Learning)——>转发状态(Forwarding)。每种端口状态对数据的处理如表所示。
过程 | 阻塞 | 侦听 | 学习 | 转发 | 禁用 |
---|---|---|---|---|---|
接收并处理BPDU | 能 | 能 | 能 | 能 | 不能 |
转发接口上收到的数据 | 不能 | 不能 | 不能 | 能 | 不能 |
转发其它接口发来的数据帧 | 不能 | 不能 | 不能 | 能 | 不能 |
学习MAC地址 | 不能 | 不能 | 能 | 能 | 不能 |
STP常用配置命令
如不人为配置,交换机只要有开启STP协议,就会自动配置完成(BPDU泛洪)。
相关命令 | 功能 |
---|---|
S1#show spanning-tree | 查看交换机生成树协议的配置情况 |
S1(config)# spanning-tree mode stp/rstp | 配置生成树的模式为STP或是RSTP |
S1(config)# spanning-tree vlan 1 priority <0-61440> | 人为配置交换机在VLAN 1中的优先级(优先级为4096倍数),范围为0-61440 |
S1(config)#spanning-tree vlan 1 root primary | 人为将交换机配置为VLAN1中的根桥 |
S1(config)#spanning-tree vlan 1 root secondary | 人为将交换机配置为VLAN1中的次根桥 |
S1(config-if) # interface fa0 | 选择端口fa0 |
S1(config-if) # spanning-tree vlan 1 cost 18 | 人为将fa0端口在VLAN1生成树的路径开销修改为18 |
S1(config-if) # interface fa0 | 选择端口fa0 |
S1(config-if) # spanning-tree vlan 1 port-priority 16 | 人为将fa0端口在VLAN1生成树的端口优先级修改为16,端口优先级为16的倍数,从0~240 |
S1#show spanning-tree interface fastethernet 0/1 | 查看端口状态 |
S1# show spanning-tree vlan vlan-id | 查看某个VLAN下的STP配置信息 |
STP配置实例
S1#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
//根桥的信息
Root ID Priority 32769 // 根桥的优先级
Address 0001.4240.48C4 // 根桥的MAC地址,可知S3为根桥
Cost 19 // 本交换机到根桥路径开销为19
Port 1(FastEthernet0/1) // 本交换机根端口为F0/1
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
//本交换机的信息
// 优先级 = 32768(默认优先级) + 1(VLAN 1的序号)
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 0001.43E9.8859