802.1s多生成树协议在模拟器中的仿真
2022-11-09廖伯勋
廖伯勋
(广州工商学院,广东 广州 510850)
在中大型企业园区网中,大量交换机彼此连接形成较大的交换区块。为了消除单点故障带来的问题,交换机之间的连接通常会增加冗余链路,以提高网络的可靠性。然而二层交换机对主机在网络中的位置认知有缺陷,使得冗余链路形成的环路会导致严重问题。为了解决冗余链路带来的问题,802.1d标准的生成树协议被推出[1]。经过多年改进,最新版为802.1s多生成树协议,并在实际企业园区网络中广泛应用。然而802.1s多生成树协议原理比较抽象复杂,网络学习者在缺少实验设备的情况下很难理解。为了加深网络学习者对其工作原理的理解,掌握其配置命令,本文使用华为模拟器eNSP搭建网络拓扑,设计了802.1s多生成树协议仿真实验,使网络学习者不受设备的限制,随时随地进行实验,提高了网络学习者分析问题和实践操作能力。
一、802.1s多生成树协议分析
(一)二层交换环路引起的问题
交换机S1和S2之间连接了两条链路,形成了环路。该环路将引起广播风暴、MAC地址漂移等问题[2],如图1所示。
图 1 交换机之间形成的环路
第一,MAC地址表项漂移。当PC1发送ARP请求时,交换机S1先根据ARP请求报文的二层源MAC地址建立MAC地址表项,随后对该报文进行转发。由于ARP请求报文为广播报文,交换机S1无法查询到与其匹配的表项,故S1会将该广播报文复制并发往除了接收接口(Ethernet0/0/1)以外的所有其他接口。假设交换机S2先从GE0/0/1接口接收到ARP请求报文,则建立PC1的MAC地址与GE0/0/1接口相关联的MAC地址表项,并从其他接口转发该数据帧。然后S2再从GE0/0/2接口接收到ARP请求报文,则建立PC1的MAC地址与GE0/0/2接口相关联的MAC地址表项。此时新的MAC地址表项立即覆盖了旧的MAC地址表项,从而产生“MAC地址表项漂移”的现象。而S2将GE0/0/1接收的ARP请求报文从GE0/0/2转回给S1,然后将GE0/0/2接收的ARP请求报文从GE0/0/1转回给S1,又会引起S1上的“MAC地址表项漂移”现象。
第二,广播风暴。网络层IP数据报中设置了TTL字段,TTL的值再经过三层设备转发后会递减。当TTL的值为0时,该IP数据报将被当前设备丢弃,从而防止网络层IP数据报因为环路而被无休止地转发。而二层交换机并无类似的机制,故前文提到的广播报文将在该网络中无休止地转发下去,形成“广播风暴”,消耗交换机S1和S2的CPU资源及网络带宽。
第三,MAC地址表项错误。由于“MAC地址表项漂移”现象的发生,交换机对PC1的认知频繁更新,并且都是错误的(交换机S1认为PC1连接在GE0/0/1或GE0/0/2两个接口中的其中一个,但实际上PC1只连接在S1的Ethernet0/0/1接口上)。这将导致其他设备将无法与PC1通信。
(二)生成树协议简介
二层环路引起的问题是由冗余链接产生的,解决这些问题的关键在于消除二层网络中的冗余链接。生成树协议正是通过在逻辑上阻塞冗余链接的方式,使交换机之间无法形成环路,从而生成一棵无环的“树”。此为“生成树”的由来。若只是为了形成无环的二层网络,则只需在网络建设之初舍弃冗余链接即可。但冗余链接是为了保证网络的可靠性,避免单点故障带来的网络中断。生成树协议并非只能静态地阻塞冗余链接,若当前激活的链路发生故障,生成树协议会将原来处于阻塞状态的链路激活,从而巧妙地修复了网络故障。
生成树协议(Spanning Tree Protocol,STP),是由IEEE(电气与电子工程师协会)发布的一种通用标准协议,是一种网桥嵌套协议,主要用于解决冗余网络中的广播风暴问题[2]。
(三)生成树协议工作原理
STP一共经历了3个版本,分别为最初的802.1d生成树协议、改进的802.1w快速生成树协议和最新的802.1s多生成树协议。多生成树协议允许对流量进行分流并将其分配给不同的虚拟局域网,使每个虚拟局域网都满足生成树协议[3]。
第一,选举根桥。只有根桥才能发送BPDU,非根桥只能接收和转发根桥始发的BPDU。在一个交换区块中,开启了生成树协议的交换机都通过接口发送BPDU数据报文。通过比较BPDU中Root ID字段的值来选举根桥,该值为发送该BPDU交换机的Bridge ID。先比较Root ID中的优先级,较小者为根桥,如相同,则继续比较Root ID中的MAC地址,较小者为根桥。由于MAC地址全球唯一,最终一定能选出根桥。选出根桥之后,只能由根桥发送BPDU,非根桥接收和转发BPDU。
第二,选举根端口。非根桥从所有接口中选出一个作为根端口,用于接收根桥发来的BPDU。最多经过4个步骤,即可选出根端口。第一步,先比较接收到的BPDU中的Root ID字段的值。若一个接口收到的BPDU中的Root ID值最小,则该接口的角色为根端口。第二步,若Root ID相同,则进一步比较接口接收到的BPDU中的CoP字段的值加上接口本身的度量值之和,该值最小的接口为根端口。第三步,若该值仍相等,进一步比较Bridge ID。若一个接口收到的BPDU中的Bridge ID值最小,则该接口的角色为根端口。第四步,若Bridge ID相同,最后比较Port ID字段。先比较端口优先级,较小者为优,若端口优先级相同,再比较端口编号,较小者为优。由于同一设备上端口编号必不相同,故此步骤必定能选出跟端口。
第三,选举指定端口。在一台交换机上可以有多个指定端口,用于根桥发送BPDU,或者非根桥用来转发根桥发来的BPDU。选举办法与根端口类似,最多经过4个步骤,即可选出指定端口。与根端口选举不同的地方是,在第二步中,仅比较CoP字段的值即可,无须加上接口本身的度量值。
第四,确定非指定端口。非指定端口为阻塞端口。非根桥上除了根端口和指定端口,其他端口都是非指定端口。
二、802.1s多生成树协议在模拟器中的仿真
(一)网络拓扑
eNSP是华为官方的网络仿真工具平台,可对路由器、交换机等网络设备进行软件仿真,让广大网络学习者可以在缺少网络设备的情况下进行模拟实验。在eNSP中使用2台S5700作为汇聚层交换机、2台S3700作为接入层交换机,接入层交换机AS1和AS2分别与汇聚层交换机连接,其拓扑结构如图2所示。
图 2 802.1s多生成树协议仿真实验拓扑图
在以上拓扑中,接入层交换机AS1与汇聚层交换机DS1和DS2都有连接,DS1和DS2也有直连链路。三台设备组成环形结构,若不开启生成树协议,将容易引起广播风暴、MAC地址漂移等问题。
(二)仿真规划
假设该网络中有VLAN110、VLAN120、VLAN130、VLAN140等4个VLAN。为 了 充 分 利 用 链 路 带宽,将DS1设置为VLAN110和VLAN130的主根网桥,VLAN120和VLAN140备份根网桥;将DS2设置为VLAN120和VLAN140的 主 根 网 桥,VLAN110和VLAN130备份根网桥。
(三)配置步骤
第一,配置汇聚层交换机链路模式。在DS1和DS2上将彼此连接的链路接口,以及连接接入层交换机的接口配置成trunk模式,并放行相关的VLAN。配置如下,GE0/0/2和GE0/0/24的配置与GE0/0/1相同。
以上配置完成后,可用命令display port vlan 查看端口的vlan配置情况。
第二,配接入层交换机链路模式。在接入层交换机AS1和AS2上将上行链路配置为trunk模式,并放行相关VLAN。配置与上一步骤类似。可用命令display port vlan检查trunk端口的状态。
第三,创建VLAN。在各交换机上创建VLAN110、VLAN120、VLAN130和VLAN140。命令如下,以DS1为例。
[DS1]vlan batch 110 120 130 140
以上命令配置完成后,可用命令display vlan或display vlan summary查看VLAN信息。
第四,配置多生成树协议。在各交换机上配置stp region-configuration。具体命令如下,只列出DS1的配置,DS2、AS1和AS2的配置与AS1类似。
[DS1]stp mode mstp
[DS1]stp region-configuration //进入MST域配置视图
[DS1-mst-region]region-name gzgs //配 置MST域的域名为gzgs
[DS1-mst-region]revision-level 1 //配置MST域的修订级别为1
[DS1-mst-region]instance 1 vlan 110 130 //配置实例1与VLAN的映射关系
[DS1-mst-region]instance 2 vlan 120 140 //配置实例2与VLAN的映射关系
[DS1-mst-region]active region-configuration //激活MST域配置
第五,配置根网桥。将DS1配置为多生成树实例1的主根网桥,实例2的备份根网桥;将DS2配置为多生成树实例2的主根网桥,实例1的备份根网桥。
(四)仿真调试
第一,正常情况下的多生成树协议运行情况。在DS1上使用display stp instance 1命令查看多生成树协议实例1的状态,如图3所示。
图 3 DS1上的多生成树协议实例1的状态
图中显示,DS1的MSTI 1的Bridge ID与RegRoot ID一致,同 MSTI Root Type也显示Primary root,说明DS1为instance 1的根网桥。DS1的MSTI 2的Bridge ID与RegRoot ID不一致,优先级为4096,同时MSTI Root Type显示Secondary root,说明DS1为instance 2的备份根网桥。
在AS1上使用display stp brief查看的多生成树协议接口状态。如图4所示。
图 4 AS1上的多生成树协议接口状态
图中显示AS1上与DS1相连的GE0/0/1接口为多生成树协议实例1的根端口,同时与DS2相连的GE0/0/2接口为阻塞端口,即与实例1关联的VLAN10和VLAN30的流量通过GE0/0/1转发,而不能通过GE0/0/2接口转发。表明此时物理上的环型链路,已被多生成树协议从逻辑上进行了修剪,变成了树型的网络拓扑。
第二,模拟链路故障时,多生成树协议的运行情况。在DS1上,进入GE0/0/1接口,并使用命令shutdown关闭接口。观察多生成树协议的运行情况,如图5所示。
图 5 关闭DS1的GE0/0/1接口后AS1上的生成树协议端口角色变化
图中显示,由于DS1的GE0/0/1已关闭,导致该链路状态变为down,故AS1的GE0/0/2接口角色从原来ALTE转变为ROOT,端口状态从原来的阻塞(DISGARDING)状态转变为转发(FORWARDING)。由此可见,生成树协议能根据链路状态的变化,自动调整端口角色,以适应网络拓扑的变更,提高网络的可用性。
三、结语
对802.1s多生成树协议进行了分析,在eNSP模拟器上搭建了网络拓扑,进行了多生成树协议模拟仿真。完整配置命令较长,限于篇幅,只列出关键命令。仿真结果表明,802.1s多生成树协议通过多个生成树实例既保证了主备切换的高可靠性,又实现负载分担的高利用率[4]。