一、STP的概述
为了提高网络可靠性,交换网络中通常会使用一些冗余链路。然而,冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。生成树协议STP(Spanning Tree Protocol)可以在提高可靠性的同时又能避免环路带来的各种问题。
1.交换网络环产生的影响
广播风暴的形成:交换机之间两两互相广播,无限循环
多帧复制:计算机短时间内多次收到统一主机的广播,且来源不同
MAC地址表紊乱:交换机从不同接口收到来自同一交换机的信息,导致记录的MAC地址表记录混乱
- 根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧。
- 主机A向外发送了一个单播帧,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。SWB接收到此帧后,将其转发到SWA和SWC,SWA和SWC也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SWB,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断。
二、STP的工作原理
1.生成数算法
生成树算法分为3个步骤:
选择根网桥--------就是交换机
- 第一步:交换机优先级值最小的 -------优先级的取值范围是0~65535,缺省值(默认值)为32768
- 第二步:选择网桥ID最小的 --------网桥ID(BID,交换机MAC地址)是惟一的。
- 如果不配置优先级,那么选择交换机网络中网桥ID最小的交换机成为根网桥。
网桥是唯一的,网桥的设置是选择交换网络中网桥ID最小的交换机成为根网桥,是先看优先级在看MAC地址。优先级取值范围是:0~65535,缺省值(默认值):32768
选择根端口--------根网桥上的端口是指定端口,不是根端口。
- 第一步:选择到根网桥的根路径成本最低的
根路径成本:网桥到根网桥的路径上所有链路的成本之和
选择根端口的依据是:
到根网桥最低的根路径成本
直连的网段ID最小
端口ID最小
选择指定端口(Designated Ports)
- 根桥上的端口全是指定端口
- 在每个网段上,选择1个指定端口
- 非根桥上的指定端口,选择顺序-----根路径成本较低-------所在的交换机的网桥ID的值较小------端口ID的值较小
端口和指定端口选择后,剩下的端口就是阻塞端口
-
BPDU
Bridge Protocol Data Unit -桥协议数据单元
使用组播发送BPDU
BPDU有配置BPDU和拓扑变更通告(TCN)BPDU两种类型
BPDU报文字段:根网桥、根路径成本、发送网桥ID、端口ID -
STP利用BPDU选择根网桥
当交换机启动时,假定自己是根网桥,在向外发送的BPDU中网桥字段填写自己的网桥ID
当接收到其他交换机发出的BPDU后,比较网桥ID,选择较小的添加到网根ID中
交换机端口的STP状态
4. 生成树计时器
- STP的计时器
Hello时间
转发延迟
最大老化时间
5.交换机端口上的STP状态
STP状态表,这个表需要从下往上看
状态 | 用途 | 进入下一过程所需时间 |
---|---|---|
转发(Forwarding) | 发送/接收用户数据(进入稳定状态) | 无 |
学习(Learning) | 构建网桥表(学习MAC地址) | 15S后进入转发阶段 |
侦听(Listening) | 构建“活动”拓扑(互相发送网桥ID) | 15S进入学习阶段 |
阻塞(Blocking) | 只接收BPDU | 20S后进入侦听阶段 |
禁用(Disabled) | 强制关闭 | 无 |
三、STP配置命令
1.STP基础命令
- SMTP(多生成树协议):可为每个vlan或者多个vlan为一组,构造一个生成树,实现网络的负载分担(均衡)
配置完之后 执行 dis stp brief 命令,查看STP网络信息,端口是否阻塞。
将SW1、SW2分别做vlan10、vlan20的根网桥
[SW1]stp mode mstp #将交换机配置成MSTP模式,MSTP兼容STP/RSTP。
[SW1]stp region-configuration #进入MSTP域视图MSTP配置模式
[SW1-mst-region]region-name huawei1 #配置MSTP域的域名为huawei1,缺省为交换设备主控板上管理网口的MAC地址。
[SW1-mst-region]revision-level 1 #配置MST域的MSTP修订级别为1,缺省情况下MSTP域的MSTP修订级别为0,需要将各设备的MSTP修订级别修改为一致
##配置多生成树实例和VLAN的映射关系,同一vlan的数据只能对应一个实例,而一个实例可以对应多个vlan(instance 1 vlan 2 to 10)
[SW1-mst-region]instance 1 vlan 10 #将vlan 10加入实例1中
[SW1-mst-region]instance 2 vlan 20 #将vlan 20加入实例2中
[SW1-mst-region]check region-configuration #查看MSTP域配置参数
[SW1-mst-region]active region-configuration #激活MSTP域的配置(必须配置)
[SW1-mst-region]quit #退出配置模式
[SW1]stp instance 1 root primary #配置此交换机为实例1的主根桥
[SW1]stp instance 2 root secondary #配置此交换机为实例2的备份根桥
------------------------------
[SW2]stp mode mstp
[SW2]stp region-configuration
[SW2-mst-region]region-name huawei1
[SW2-mst-region]revision-level 1
[SW2-mst-region]instance 1 vlan 10
[SW2-mst-region]instance 2 vlan 20
[SW2-mst-region]active region-configuration
[SW2-mst-region]quit
[SW2]stp instance 1 root secondary #配置SW1交换机为实例1的备份根桥
[SW2]stp instance 2 root primary #配置SW2交换机为实例2的主根桥
-----------------------------------
[SW3]stp mode mstp
[SW3]stp region-configuration
[SW3-mst-region]region-name huawei1
[SW3-mst-region]revision-level 1
[SW3-mst-region]instance 1 vlan 10
[SW3-mst-region]instance 2 vlan 20
[SW3-mst-region]active region-configuration
[SW1]stp enable #在所有交换机上启用MSTP
[SW2]stp enable
[SW3]stp enable
[SW3]dis stp brief #查看STP接口角色及状态信息
2. STP实验
进行STP配置,使主机能够互相通信。
思路:因为vlan 10 和 vlan 20 走的路径不一样(阻塞的端口、备用链路不一样),所以可以配置两个实例,当走vlan 10 的时候走一个实例,确定哪个是根网桥;当走vlan 20 的时候,再走一个实例,确定哪个是根网桥。配置完成后系统会按优先级自动阻塞一个端口。
PC1配置:192.168.10.10 网关为:192.168.10.1
PC2配置:192.168.20.20 网关为:192.168.20.1
子网掩码都为255.255.255.0
PC1配置:192.168.10.10 网关为:192.168.10.1
PC2配置:192.168.20.20 网关为:192.168.20.1
子网掩码都为255.255.255.0
#将SW1做vlan20的根网桥
【SW1】
vlan batch 10 20
e0/0/1
p l t
p t a v a
int e0/0/2
p l t
p t a v a
int e0/0/3
p l a
p d v 20 #因为vlan 20是192.168.20网段,SW1到R1是20网段,所以vlan 20是走SW1到 R1的,因此这里脱 vlan20标签。
#进入stp配置
stp mode mstp
stp region-confgionation
region-name huawei1
revision-level 1
#配置多生成树实例和VLAN的映射关系,实例与VLAN一对多,vlan与实例一对一
instance 1 vlan 10
instance 2 vlan 20
active region-configation
#保存stp配置 退出stp配置
q
stp instance 1 root primary #配置词交换机为实例1的根网桥
stp instance 2 root secondary
dis stp brief
#将SW2做vlan10的根网桥
【SW2】
vlan batch 10 20
e0/0/1
un sh
p l t
p t a v a
int e0/0/2
p l t
p t a v a
int e0/0/3
p l a
p d v 10
stp mode mstp
stp region-confgionation
region-name huawei1
revision-level 1
instance 1 vlan 10
instance 2 vlan 20
active region-configation
q
stp instance 1 root secondary
stp instance 2 root primary
dis stp brief
【SW3】
vlan batch 10 20
e0/0/1
un sh
p l a
p d v 10
int e0/0/2
p l a
p d v 20
int e0/0/3
p l t
p t a v a
int e0/0/4
p l t
p t a v a
stp mode mstp
stp region-confgionation
region-name huawei1
revision-level 1
instance 1 vlan 10
instance 2 vlan 20
active region-configation
q
【R1】
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.10.1 24
[R1-GigabitEthernet0/0/0]un sh
[R1-GigabitEthernet0/0/0]q
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 192.168.20.1 24
[R1-GigabitEthernet0/0/1]un sh
[R1-GigabitEthernet0/0/1]q
[R1]int Loopback 0
[R1-LoopBack0]ip add 10.0.0.1 24
[R1-LoopBack0]q
[R1]dis ip int b