嘘~ 正在从服务器偷取页面 . . .

华为交换机生成树配置


本篇我们来介绍一下华为交换机的生成树配置。之前我们曾详细介绍过思科设备的STP配置,并对各
种类型生成树做过详细介绍,详细可以参考:Spanning Tree Protocol(STP)。为了提高网络可靠
性,交换网络中通常会使用冗余链路。然而,冗余链路会给交换机网络带来环路风验,并导致广播
风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。生成树协议STP可以在提高可靠
性的同时又能避免环路带来的各种问题。如下图示例的网络中,接入层交换机SW3、SW4、SW5分别与
汇聚层交换SW1与SW2机进行连接,虽然提升了网络的可靠性,但如休不做适当的处理,这个拓扑中
存在多个环路,网络将变的不可用,导致通信质量下降和通信中断等问题。环路会引起广播风暴,
网络中的主机会收到重复的数据帧,环路还会引起MAC地址表震荡。STP通过阻塞端口来消除环路,
并能够实现链路备份的目的。

STP的主要作用:

● 消除环路:通过阻断冗余链路来消除网络中可能存在的环路。
● 链路备份:当活动路径发生故障时,激活备份链路,及时回复网络连通性。

STP工作机制

● 每个STP组(STG)或所谓实例(Instance)中要选出一个根桥(root)
● 每个非根桥要选出一个根端口(root port)
● 每条链路(segment)上要有一个指派端口(designated port)
● 阻塞非根、非指定端口

配置STP

1、如下图拓扑,我们使用3台交换机来组成一个环,华为交换机默认就已经开启了STP,模式为MST。
我们先将每个交换机的STP模式改成STP,命令如下。
stp mode stp

2、分别在每台交换机上查看STP状态,使用如下命令:
display stp brief

3、可以看到SW1中有一个指定端口和一个根端口,SW2中有一个预备端口和一个根端口,SW3中两个
端口都是指定端口。 其中,预备端口的状态为:discarding,其它都是:forwarding。

3、我们在SW3上查看端口的STP状态:
display stp int g0/0/1

4、如下图的输出结果可以看到,CIST Bridge是指本交换机的桥ID,CIST Root是指根桥的桥ID,
这里两个ID是相同的,说明SW3就是根桥。同样可以查看到桥的优先级、端口的优先级以及端口的开
销值(Cost)。

● 桥ID由16位桥优先级和48位MAC地址构成。
● 华为交换机桥优先级默认为32768,取值0~65535,值越小越优先。
● 如果优先级相同,比较MAC地址,MAC地址也是越小越优先。

4、选出根桥后,非根桥交换机要选出根端口,分别依据该端口的根路径开销,对端BID、对端PID和
本端PID来进行选举。
● 路径开销是指非根桥到达根桥所经过的路径上所有接收BPDU端口的端口开销总和,也就是BPDU入方
向端口的所有端口开销总和。
● 端口ID由端口优先级和端口号组成。
● 华为交换机默认端口优先级是16,取值0~240,步长为16。端口ID可以用来确定端口角色。
● 通常根端口是距离根桥最近的端口,这个最近的衡量标准就是靠根路径开销RPC来决定的。
● 如果两个或两个以上的端口连接到同一台交换机,则选择发送者PID最小的那个端口作为根端口。

5、根端口选出来以后,还在选出指定端口,这个选举是在非根桥之间的网段上进行的。分别依据
RPC、BID、PID。未被选举为根端口的端口就成为预备端口并补阻塞。

6、经过上面的各个过程后,现在我们就可以确定出STP拓扑如下图,根桥上的端口均为指定端口
(Designated port),与根桥指定端口相连接的端口就是根端口(Root port),两个非根桥之间最
后选出的预备端口(Alternate port)将会被阻塞掉。

7、下面我们通过配置优先级来选出新的根桥,在SW1上执行以下命令将其优先级修改为8192。
stp priority 8192

8、修改完成后,可以看到SW1成为了根桥,桥ID为8192+MAC地址。

9、修改后,SW1变为了根桥,SW2与SW3相连的端口被选为预备端口并被阻塞掉。

10、现在我们关闭SW1上连接SW2的端口,来模拟SW1故障,然后在SW2上查看STP状态,可以看到预备
端口立即变为ROOT接口并开始转发数据。因为此时的根桥还是SW1,SW3还会收到SW1的BPDU,所以根
桥维持不变,SW3也不会有变化。

11、现在我们再次在SW1上开启前面关闭的端口,STP拓扑恢复原样,但在下图中可以看到端口g0/0/1
经历了discarding、Learning后才变为Forwarding状态。这里就涉及到了端口的状态。
● Blocking(阻塞状态): 端口不会参与数据帧的转发。 但是会接收BPDU来检测网络的变化,判断
根交换机的位置和根ID,以及在 STP 拓扑收敛结束之后,各交换机端口应该处于什么状态,在默认情
况下,端口会在这种状态下停留20秒钟时间。
● Listening(侦听状态): 生成树此时已经根据交换机所接收到的BPDU而判断出了这个端口应该参
与数据帧的转发。于是交换机端口就将不再满足于接收BPDU,而同时也开始发送自己的BPDU,并以此
通告邻接的交换机该端口会在活动拓扑中参与转发数据帧的工作。在默认情况下,该端口会在这种状
态下停留 15 秒钟的时间。
● Learning(学习状态): 端口准备参与数据帧的转发,并开始填写MAC表。在默认情况下,端口会在
这种状态下停留 15 秒钟时间。
● Forwarding(转发状态): 端口已经成为了活动拓扑的一个组成部分,它会转发数据帧,并同时
收发BPDU。
● Disabled(禁用状态): 端口不会参与生成树,也不会转发数据帧。

12、下面我们来看一下如何控制根端口的选举。现在SW2上的g0/0/1是根端口,g0/0/2是预备端口。
通过修改端口开销使g0/0/2成为根端口,g0/0/1成为预备端口。进入端口g0/0/1,使用下面的命令修
改其端口cost为2000000。
int g0/0/1
stp cost 2000000

13、再次查看,现在在SW2上的g0/0/1变为预备端口,g0/0/2变为根端口。因为g0/0/1的端口到根桥的
开销现在是二百万,远远大于g0/0/2到根桥的开销。

配置RSTP

1、RSTP与较于STP,主要的改进就是加快收敛速度,STP慢收敛需要20秒的Max Age以及两个15秒的
forward delay。RSTP将Max Age缩短为6秒,也就是3个Hello Time的时间。使用RSTP,交换机并非
被动的等待接收根桥发出来的BPDU来判断拓扑变化,而是主动与邻居进行沟通,以最快的速度把拓扑
信息传递出去。

2、RSTP将STP的5种端口状态简化为三种:
● Discarding:端口既不转发用户流量也不学习MAC地址。端口角色可以是:Disable、预备端口、
备份端口、根端口、指定端口。
● Learning:端口不转发用户流量但是学习MAC地址。端口角色可以是根端口和指定端口。
● Forwarding:端口即转发用户流量又学习MAC地址。端口角色可以是根端口和指定端口。

3、我们还是以上面的拓扑为例,将STP模式改为RSTP。
stp mode rstp

4、如下图可以看到现在STP的模式为RSTP,并且SW1仍然是根桥,生成树拓扑没有发生变化。

5、设置边缘端口,RSTP里有边缘端口的概念,边缘端口一般与用户终端直接连接,不与任何交换设
备连接。边缘端口不接收配置BPDU报文,不参与RSTP运算,所以可由discarding状态直接变成
forwarding状态,可以使端口快速进入转发状态。边缘端口一但接收到BPDU报文,就失去了边缘端口
的属性,而成为普通的STP端口,并参与生成树计算,从而引起网络震荡。如下图,我们将连接服务器
的端口配置为边缘端口,
int g0/0/9
stp edged-port enable

6、配置BPDU保护,边缘端口正常情况下不会收到BPDU报文,但如果收到BPDU报文后,就会转为STP
端口并重新计算生成树,攻击者可以利用这个特性破坏网络的稳定性甚至导致网络瘫痪。配置BPDU
保护功能,可以防止此类事件发生。
stp bpdu-protection

7、可以看到g0/0/9已经开启了BPDU保护。

8、配置环路保护,在RSTP中,交换机依靠不断接收来自上游设备的BPDU报文来维持根端口和预备端
口,如果由于链路拥塞或者单向链路故障导致交换机收不到来自上游设备的BPDU报文,交换机会重新
选择根端口,原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而引发网络
环路,可以在交换机上配置环路保护功能,避免发生此种情况。
int g0/0/1
stp loop-protection
int g0/0/2
stp loop-protection

9、可以看到两个端口已经开始环路保护。

10、同样,我们还可以为根桥开启根保护功能,防止新接入的设备争抢根桥的位置。这个配置是在根
桥的对指定端口进行配置。
int g0/0/1
stp root-protection
int g0/0/2
stp root-protection

11、可以看到根桥SW1的两个指定端口已经开始了root保护。如果新接入的设备有争抢根桥的行为,
交换机会关闭其连接的端口,并只能由管理员手动开启。

配置MSTP

1、MSTP由RSTP扩展而来,MSTP是对硬件资源和层级式管理的进化,MSTP继承了RSTP的高效率收敛,
同时MSTP将多个Spanning Tree分配给不同的Instance来减少整个生成树系统的拓扑数量。MSTP以
Instance的方式将VLAN进行分组,同一组instance的VLAN共用一组Spanning Tree拓扑,所以可以
将多个VLAN放在一个instance进行统一管理。

2、我们还是以前面的拓扑为例,将STP模式改为MSTP:
stp mode mstp

3、在这个拓扑中,我们创建三个VLAN,并将VLAN放到不同的Instance中。

4、首先配置三台交换机之间为trunk链路,并允许所有VLAN通过。连接主机的端口设置为access模式
并分别设置相应的default vlan id。

5、上一步操作配置完成以后,在三台交换机上执行以下命令:
stp region-configuration
region-name huawei
revision-level 1
instance 1 vlan 10
instance 2 vlan 20
instance 3 vlan 30
active region-configuration

6、在SW1上进行如下配置
stp instance 1 root primary
stp instance 2 root secondary

7、在SW2上进行如下配置
stp instance 1 root secondary
stp instance 2 root primary

8、配置完成后,在SW3上查看MSTP状态,可以看到有4个MSTID,0~3。MST0是CIST的Instance。其余
三个对应三个VLAN。对于VLAN10,SW3的g0/0/1口是root端口,而对于VLAN20,g0/0/1端口为预备端
口,对于VLAN30,g0/0/1是指定端口。

9、同样在SW1和SW2上我们也可以看到同一个端口对于不同的VLAN所扮演的角色是不同的。这也就是
说,不同的VLAN会选择不同的路径来转发流量,这样对于交换机而言,所有端口都可以被利用,而不
是一直处于阻塞状态,这里的阻塞是相对VLAN的。这样可以有效利用链路的带宽。同时也起到一定程
度的流量平衡。

10、同样可以通过如下命令查看instance详细情况,比如查看instance 1。
display stp instance 1


文章作者: kclouder
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kclouder !
  目录