【路由交换实验】生成树STP(stp,rstp,mstp)

2023-11-19

理论

冗余的重要性

 

 

 叫做MAC地址表的震荡

为了增加网络的可靠性,有必要引入双链路的备份,但是引入冗余链路以后,网络里面又产生了环路,产生一系列广播风暴的问题,可以使用STP生成树协议来解决这个问题。生成树协议可以在提高可靠性的同时,又能避免环路带来的各种问题,它是怎么办到的?

 STP的基本思想就是阻断一些接口,把环路打破,形成一个树的结构
生成树协议通过在交换机之间交换BPDU来实现生成树协议,核心就是大家协商好到底要阻塞哪些端口来打破环路

STP工作原理:

 

 上图中有ABC三个交换机,明显存在环路,我们在三个交换机上都运行STP协议
第一步:选举根桥
在最早的时候,每个交换机都认为自己是根桥,但是在交换了BPDU以后,大家一致选举唯一的交换机作为根桥,那怎么选举呢?PK的是他们的桥ID

 桥ID由两个部分组成,前面两个字节桥优先级,默认是32768,优先级是可以通过命令来配置改变的,后面四个字节是这个交换机的MAC地址,MAC地址是固化在交换机上面不可更改的。

上图中SWA的桥ID是4096 AA,SWB的桥ID是32768 BB,SWC的桥ID是32768 CC
显然SWA的桥ID更小,所以SWA成功当选为根桥

第二步:为那些非根桥的交换机选举唯一的一个根端口

 在这个例子里SWB和SWC都没有选举为根桥,所以SWB和SWC都需要选举根端口,我们以SWB为例来看它怎么选举根端口:
SWB有两个接口G0/0/1和G0/0/2,那么这两个接口要PK的是根路径代价(开销)

 SWB上的G0/0/1,计算根路径开销。我们从根交换机要到达SWB的G0/0/1,它只要走左上这条路就可以,路径开销代价是0
G0/0/2,从根交换机到2号端口要走右边这条路先经过SWC,这时候根路径开销是0,再从SWC的一号端口进,一号端口是2000再到SWB,整个路径开销代价是20000

现在SWB一号路径开销代价是0,二号端口的根路径开销代价是20000,1号路径的开销小,所以G0/0/1成功选举为SWB这个交换机的根端口
同理SWC也会选举它的1号端口作为它的根端口。

第三步:给每一个网段选举一个唯一的指定端口

 每一条链路就是一个网段,我们这个例子有三个网段,先来看左边这个网段的两个端口:SWB上的G0/0/1和SWA上的G0/0/1,那个端口的根路径开销越小呢?A交换机的1号端口直接就在根交换机上,当然离根交换机最近,所以选举A交换机的1号口作为左边这个网段的指定端口。
对于下面的网段SWB的2号端口它的根路径开销是20000,SWC的二号端口也是2000,在根路径开销相同的情况下,比较桥ID,swb的桥id比swc小,所以swb的二号端口成功当选为下面这个网段的指定端口

第四步:

 G0/0/2会成为预备端口,这样stp工作完成,最后决定阻塞SWC的2号端口,成功将这个环路打破

 

 

一个端口从阻塞状态首先会进入listening状态,然后过了15s进入learning状态,再过15s进入转发状态

刚才我们为了打破这个环路,把SWC的2号端口阻塞,但是这个网络某个链路突然断掉,网络不同,那我们备用的SWC的2号端口应该顶上去使用,这个端口会经过20s时间察觉到拓扑变化,需要启用,然后进入listening状态,过15s进入learning,再过15s进入转发状态。一个阻塞端口在需要启用的时候,从阻塞到转发状态要50s。这个时间叫STP收敛时间

 50s对于紧急的业务,关键的网络来讲实在是太长了,所以RSTP出现了,RSTP是快速生成树协议,rapid spanning tree protocol,实际上它是在STP里面增加了一些让收敛时间能够变小的措施,然后形成了一个改进版的新的协议。

 小结:为了提高网络的可靠性我们经常需要一些冗余的链路,冗余的链路会造成整个网络里面出现环路,出现环路会导致广播风暴等一系列问题,为了避免这些问题,我们用stp来打破环路,stp收敛速度比较慢要50s,所以我们有了改进的rstp来减少收敛时间。


实验

实验1 生成树协议

 这个拓扑用了两台交换机实现了双链路的备份,中间的双链路就构成了环路,环路会造成广播风暴的问题,我们运行stp打破环路

实验步骤:

 1、配置PC的IP地址

2、查看默认开启的生成树协议。在默认情况下,我们什么也没有配置过,这个时候,交换机已经默认跑了某一个版本的生成树协议,那它跑的是什么版本呢?我们可以用用dis stp查看,这条命令显示的东西非常多,我们先找mode,mode显示swa和swb的stp版本都是mstp,我们知道stp有stp,rstp和mstp三个版本,华为交换机默认启用的生成树协议是mstp。然后我们再看一下time信息,这里显示mstp默认的时间设置,swa和swb一样,hello是2s,maxage是20s,fwdly是15s(forward delay),maxhop是20s。接下来找cist bridge信息,这个信息是桥ID的信息,可以判断出根交换机是A。

3、观察接口状态0/0/2是alte discarding被阻塞,swa是根交换机,swb的1号口是根端口,swb的2号口被阻塞。环路被打破

4、1号端口的编号更小,1号端口当选为swb的根端口

我不想跑smtp想换成stp:

 现在SWB设置为了根交换机。(把swb的优先级改了)

 收敛时间30~50s

2号口顶上来用了,因为swa的端口被shutdown了。

实验2 快速生成树协议的配置

和实验1一样,主要是体会时间是不是更快


实验演示

实验1 生成树协议

1、配置PC的IP地址、子网掩码

2、查看默认开启的生成树协议

现在交换机默认跑起来,已经察觉到了双链路备份,有环路,马上就跑生成树协议了

在swb上用dis stp查看stp信息

 

所以A当选为了根交换机

 我们可以用dis stp bri

 

 现在SMTP工作的结果是A当选为根交换机两个接口都工作,B的一号口当选为根端口,在工作,二号口处于阻塞状态,环路被打破!

B交换机为什么选择1号口作为根端口,而不选择2号口?
这要看根路径开销,但是这两个口到根交换机距离一样啊,在距离一样的情况下就要看他们的端口号id,他们的端口号id是由他们端口的优先级+端口号码组成的,因为G0/0/1的编号比G0/0/2的编号小一点,所以胜出,所以一号口作为根端口。

4、现在我们的生成树协议是mstp,我想换成stp模式

stp mode stp

[SWB]stp mode stp

[SWA]stp mode stp

现在是A是根交换机,但是我觉得B的性能更好,我希望B为根交换机。我们知道谁当选根交换机是PK他们的优先级+他们的MAC地址的,但是他们的MAC地址是不能换的,所以我们改变优先级让B当选为根交换机

我们知道默认优先级是32768,现在把B的优先级设置为4096

[SWB]stp priority 4096

现在dis stp

 

 

 

 5、测试STP收敛时间

用ping,在pc1上去pingPC2

先PC1上ping 192.168.0.137 -t

现在B是根交换机,A是非根交换机,A的0/0/2阻塞,所以ping包走的路线是用上面那根线,现在人为破坏上面这根链路,下面的那条链路就会顶上去

我们在SWA上进入1号口

 

 

 收敛太慢了,所以我们有了rstp。


MSTP理论

mstp全称多生成树协议,它是通过802.1s来进行定义的

 

 这个拓扑图是个环,肯定要用到生成树协议,华为交换机默认采用的就是MSTP

假设在上面这个图中有四个vlan,SW1为根交换机,SW2为次根交换机(备份根),那么他会阻塞谁?
SW2上的G0/0/2和SW3上的G0/0/6为根端口,很显然SW2上的e0/0/3为指定端口,阻塞SW3上的e0/0/5
那么也就是说在这个拓扑图最终形成了下面这个拓扑:

 那么右边那条线路就是浪费的,怎么办呢?用mstp

假设,这四个vlan,我给他划分两个组,比如10,20在一组,30,40在一组。
那么对于【10,20】这个组,我让他生成一棵树


对于【30,40】,也生成一棵树

 

 两个VLAN走左边,两个走右边,达到了负载均衡,不会有空余的线路浪费

这个“组”在MSTP里面叫“实例”通过instance来定义,一个实例一颗生成树,互不影响。

上面拓扑图中交换机上都是trunk链路:

 

【实验步骤】

1、创建vlan

SW1,SW2,SW3上都使用vlan batch 10 20批量创建vlan

2、端口加入vlan(SW1-3的配置省略)

3、开始配置MSTP

stp mode mstp #这条命令可以不敲,敲更好
[SW1]stp region-configuration   #进入mstp配置模式
[SW1-mst-region]region-name huawei  #配置域名为huawei
[SW1-mst-region]revision-level 1   #设置版本等级为1
[SW1-mst-region]instance 1 vlan 10  #实例1当中,只包含vlan10(将vlan10加入实例1中)
[SW1-mst-region]instance 2 vlan 20  #将vlan20加入实例2中
[SW1-mst-region]active region-configuration #一定要激活(激活配置)
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW1-mst-region]

 

[SW2]stp region-configuration
[SW2-mst-region]reg    
[SW2-mst-region]region-name huawei
[SW2-mst-region]revis    
[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
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW2-mst-region]

[SW3]stp region-configuration
[SW3-mst-region]region-name huawei 
[SW3-mst-region]revision-level 1
[SW3-mst-region]instance 1 vlan 10  #映射10
[SW3-mst-region]ins 2 vlan 20
[SW3-mst-region]active region-configuration

4、查看一下stp

dis stp bri

 

 

现在要看谁是根的话,我们现在还没有控制根,这个配置肯定是错误的。
配置:
对于实例1来讲,SW1为主根,SW2为备根
对于实例2来讲,SW2为主根,SW1为备根

[SW1]stp instance 1 root primary
[SW1]stp instance 2 root secondary

[SW2]stp instance 1 root secondary
[SW2]stp instance 2 root primary

然后通过SW3,
可以使用dis stp instance 2 bri 查看具体实例阻塞了哪个端口

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【路由交换实验】生成树STP(stp,rstp,mstp) 的相关文章

随机推荐