一、项目背景 生成树协议技术原理和基本配置
(一)交换机网络中的冗余链路
如今,网络对于人们的工作和生活越发重要,尤其是在办公网络中,如政府办公系统、银行或证券交易系统、医院医疗、交通管理系统等都需要网络的支撑才能使用,一旦网络发生故障就无法正常工作。在骨干网设备连接中,单一链路的连接很容易实现,但一个简单的故障就会造成网络的中断。因此,在实际网络组建的过程中,为了保持网络的稳定性,在多台交换机组成的网络环境中通常都使用一些冗余链路,以提高网络的健壮性、稳定性,如图2-17。所谓冗余链路,就是准备两条以上的通路,如果哪一条不通了,就从另外的路走。网络冗余链路的目的是消除由于单点故障而引起的网络中断,网络具有冗余路径和设备本来是一件很好的事情,但它引起的问题比它要解决的问题还要多。
(二)冗余链路的危害
环路问题是冗余链路所面临的最为严重的问题,环路问题将导致:广播风暴、多帧复用及MAC地址表的不稳定等问题。
交换机作为二层的交换设备,具有一个相当重要的功能,那就是能够记住在每一个端口上所收到的每个数据帧的源设备的硬件地址,也就是源设备的MAC地址,而且还会将该数据帧的MAC地址和端口号等信息写到MAC地址中。当交换机某个端口收到数据帧的时候,交换机就查看其目的硬件地址,并在MAC地址中查找其外出的端口,进行数据的转发,这就是交换机进行数据交换的原理。
1.广播风暴
在一些较大型的网络中,当大量广播流(如MAC地址查询信息等)同时在网络中传播时,便会发生数据包的碰撞。当网络试图缓解这些碰撞并重传更多的数据包,结果导致全网的可用带宽减少,并最终使得网络失去连接而瘫痪。这一过程被称为广播风暴,如图2-18所示。
2.多帧复制
多帧复制也叫重复帧传送,单播的数据帧可能被多次复制传送到目的站点。网络中如果存在环路,目的主机可能回收到某个数据帧的多个副本,此时会导致上层协议在处理这些数据帧时无从选择,浪费了目的主机的资源,严重时还可能导致网络连接的中断。
3.MAC地址表抖动
当交换机连接不同网段时,将会出现通过不同端口接收到同一个广播帧的多个副本的情况。这一过程也会同时导致MAC地址表的多次刷新。这种持续的更新、刷新过程会严重耗用内存资源,影响交换机的交换能力,同时降低整个网络的运行效率。严重时,将耗尽整个网络资源,并最终造成网络瘫痪。
(三)生成树协议概念及工作原理
1.生成树协议的概念
冗余链路的解决方法是生成树协议。生成树协议是由Sun微系统公司著名工程师拉迪亚•珀尔曼博士(Radia Perlman)发明的。网桥使用珀尔曼博士发明的这种方法能够达到两层路由的理想境界:冗余和无环路运行。可以把生成树协议设想为一个各网桥设备记在心里的用于进行优化和容错发送数据的过程的树型结构。
生成树协议拓扑结构的思路是:网桥能够自动发现一个没有环路的拓扑结构的子网,也就是一个生成树。生成树协议还能够确定有足够的连接通向这个网络的每一个部分。它将建立整个局域网的生成树。当首次连接网桥或者发生拓扑结构变化时,网桥都将进行生成树拓扑的重新计算。
IEEE 802.1d协议,即生成树协议。IEEE 802.1d协议通过在交换机上运行一套复杂的算法,使冗余端口置于“阻塞状态”,使网络中的计算机在通信时,只有一条链路生效,而当这个链路出现故障时,IEEE 802.1d协议将会重新计算出网络的最优链路,将处于“阻塞状态”的端口重新打开,从而确保网络连接稳定可靠。按照功能,可以把生成树协议的发展划分为三代。
第一代生成树协议:STP/RSTP;
第二代生成树协议:PVST/PVST+;
第三代生成树协议:MISTP/MSTP。
2.STP协议
STP(Spanning Tree Protocol)是生成树协议的英文缩写。STP的目的是通过协商一条到根交换机的无环路径来避免和消除网络中的环路。它通过一定的算法,判断网络中是否存在环路并阻塞冗余链路,将环型网络修剪成无环路的树型网络,从而避免了数据帧在环路网络中的增生和无穷循环。
STP在网络中选择一个被称为根交换机的参考点,然后确定到该参考点的可用路径。如果它发现存在冗余链路,它将选择最佳的链路来负责数据包的转发,同时阻塞所有其他的冗余链路。如果某条链路失效了,就会重新计算生成树拓扑结构,自动启用先前被阻塞的冗余链路,从而使网络恢复通信。
STP协议中定义了根桥(RootBridge)、根端口(RootPort)、指定端口(DesignatedPort)、路径开销 (PathCost)等概念,目的就在于通过构造一棵自然树的方法达到裁剪冗余环路的目的,同时实现链路备份和路径最优化。要实现这些功能,网桥之间必须要进行一些信息的交流,这些信息交流单元就称为配置消息BPDU(BridgeProtocol Data Unit)。STP BPDU是一种二层报文,所有支持STP协议的网桥都会接收并处理收到的BPDU报文。该报文的数据区里携带了用于生成树计算的所有有用信息。
3.生成树协议的工作过程
首先,进行根桥的选举。选举的依据是网桥优先级和网桥MAC地址组合成的桥ID(Bridge ID),桥ID最小的网桥将成为网络中的根桥。在网桥优先级都一样(默认优先级是32768)的情况下,MAC地址最小的网桥成为根桥。
接下来,确定根端口,根据与根桥连接路径开销最少的端口为根端口,路径开销等于“1000”除以“传输介质的速率”,假设SW1和跟桥之间的链路是千兆GE链路,根桥和SW3之间的链路是百兆FE链路,SW3从端口1到根桥的路径开销的默认值是19,而从端口2经过SW1到根桥的路径开销是4+4=8, 所以端口2成为根端口,进入转发状态。根桥和根端口都确定之后,裁剪冗余的环路。这个工作是通过阻塞非根桥上相应端口来实现的。
生成树经过一段时间(默认值是30秒左右)稳定之后,所有端口要么进入转发状态,要么进入阻塞状态。STPBPDU仍然会定时从各个网桥的指定端口发出,以维护链路的状态。如果网络拓扑发生变化,生成树就会重新计算,端口状态也会随之改变。当然,生成树协议还有很多内容,其他各种改进型的生成树协议都是以此为基础的,基本思想和概念都大同小异。
4.快速生成树协议RSTP(Rapid Spanning Tree Protocol)
STP协议给透明网桥带来了新生。但是它还是有缺点的,STP协议的缺陷主要表现在收敛速度上。
当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为Forward Delay,协议默认值是15秒。在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。为了解决临时环路的问题,生成树使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加上一个只学习MAC地址但不参与转发的中间状态,两次状态切换的时间长度都是Forward Delay,这样就可以保证在拓扑变化的时候不会产生临时环路。但是,这个看似良好的解决方案实际上带来的却是至少两倍Forward Delay的收敛时间。
为了解决STP协议的这个缺陷,在世纪之初IEEE推出了802.1w标准,作为对802.1D标准的补充。在IEEE 802.1w标准里定义了快速生成树协议RSTP(Rapid Spanning Tree Protocol)。RSTP协议在STP协议基础上做了三点重要改进,使得收敛速度快得多(最快1秒以内)。
第一点改进:为根端口和指定端口设置了快速切换用的替换端口(Alternate Port)和备份端口(Backup Port)两种角色,当根端口/指定端口失效的情况下,替换端口/备份端口就会无时延地进入转发状态。
第二点改进:在只连接了两个交换端口的点对点链路中,指定端口只需与下游网桥进行一次握手就可以无时延地进入转发状态。如果是连接了三个以上网桥的共享链路,下游网桥是不会响应上游指定端口发出的握手请求的,只能等待两倍Forward Delay时间进入转发状态。
第三点改进:直接与终端相连而不是把其他网桥相连的端口定义为边缘端口(Edge Port)。边缘端口可以直接进入转发状态,不需要任何延时。由于网桥无法知道端口是否是直接与终端相连,所以需要人工配置。
可见,RSTP协议相对于STP协议的确改进了很多。为了支持这些改进,BPDU的格式做了一些修改,但RSTP协议仍然向下兼容STP协议,可以混合组网。虽然如此,RSTP和STP一样同属于单生成树SST(SingleSpanning Tree),有它自身的诸多缺陷,主要表现在三个方面。
第一点缺陷:由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间,拓扑改变的影响面也较大。
第二点缺陷:在网络结构对称的情况下,单生成树也没什么大碍。但是,在网络结构不对称的时候,单生成树就会影响网络的连通性。
第三点缺陷:当链路被阻塞后将不承载任何流量,造成了带宽的极大浪费,这在环行城域网的情况下比较明显。
这些缺陷都是单生成树SST无法克服的,于是支持VLAN的多生成树协议出现了。
(四)生成树协议的配置
1.生成树协议配置过程
(1)开启生成树协议。
锐捷交换机的默认状态是关闭STP协议,可以使用下列命令开启STP协议。
Switch(config)#Spanning-tree
(2)关闭生成树协议。
如果要关闭STP协议,可以使用下列命令。
Switch(config)#no Spanning-tree
(3)配置生成树协议的类型。
锐捷交换机的默认生成树协议的类型是MSTP(Multiple Spanning Tree Protocol,多生成树协议),要配置STP协议或者RSTP协议时,需要使用下列的命令对生成树协议类型进行修改。
Switch(config)#Spanning-tree mode stp/rstp
2.生成树协议常用配置
(1)配置交换机优先级。
配置交换机的优先级关系到到底哪个交换机为整个网络的根交换机,同时也关系到整个网络的拓扑结构。通常情况下,应该把核心交换机的优先级设置得高些(数值小些),使核心交换机成为根网桥,这样有利于整个网络的稳定。
优先级的设置有16个,都是4096的倍数,分别是0、4096、8192、12288、16384、20480、24576、28672、32768、36864、40960、45056、49152、52248、57344和61440。缺省值为32768。
要配置端口的优先级,需要在接口配置模式下配置以下命令:
Switch(config)#spanning-tree priority <0-61440>
(2)恢复到缺省值。
要使交换机恢复到缺省值,需要在接口配置模式下配置以下命令:
Switch(config)# no spanning-tree priority
(3)配置交换机端口的优先级。
要配置端口的优先级,需要在接口配置模式下运行以下命令:
Switch(config)#interface interface-type interface-number
Switch(config-if)#spanning-tree port-priority number(0-240)
(4)Spanning Tree的缺省配置。
可通过spanning-tree reset 命令让spanning tree参数恢复到缺省配置。
关闭STP。
STP Priority 是32768。
STP port Priority 是128。
STP port cost 根据端口速率自动判断。
Hello Time 2秒。
Forward-delay Time 15秒。
Max-age Time 20秒。
(5)查看生成树协议配置。
A.显示生成树状态。
Switch#show spanning-tree
B.显示端口生成树协议的状态。
Switch#show spanning-tree interface fastethernet <0-2/1-24>
二、任务实施 快速生成树协议配置与管理
理解快速生成树协议RSTP的原理,具备快速生成树协议RSTP的配置能力。
某学校为了开展计算机教学和网络办公,建立一个计算机教室和一个校办公区,这两处的计算机网络通过两台交换机互连组成内部校园网,为了提高网络的可靠性,网络管理员用两条链路将交换机互连,现要在交换机上做适当的配置,使网络避免环路。
生成树协议的特点是收敛时间长,当主要链路出现故障后,切换到备份链路需要50秒的时间。
快速生成树RSTP在生成树协议的基础上增加了两种端口角色:替换端口和备份端口,分别作为根端口和指定端口的冗余端口。当根端口或指定端口出现故障时,冗余端口不需要经过50秒的收敛时间,可以直接切换到替换端口或备份端口。从而实现RSTP协议小于1秒的快速收敛。
使网络在有冗余链路的情况下避免环路的产生,避免广播风暴。
按照拓扑图连接网络时需注意,两台交换机都配置快速生成树协议后,再将两台交换机连接起来。如果先连线再配置会造成广播风暴,影响交换机的正常工作。
交换机转发原理、交换机基本配置、端口聚合的原理和配置。
1交换机A的基本配置。
Switch#configure terminal
Switch(config)#hostname switchA
switchA(cinfig)#vlan 10
switchA(config-vlan)#name slaes
switchA(config-vlan)#exit
switchA(config)#interface fastethernet 0/3
switchA(config-if)#switchport access vlan 10
switchA(config)#interface range fastethernet 0/1-2
switchA(config-if-rangd)#switchpoort mode trunk
2交换机B的基本配置。
Switch#configure terminal
Switch(config)#hostname switchB
switchB(cinfig)#vlan 10
switchB(config-vlan)#name slaes
switchB(config-vlan)#exit
switchB(config)#interface fastethernet 0/3
switchB(config-if)#switchport access vlan 10
switchB(config)#interface range fastethernet 0/1-2
switchB(config-if-rangd)#switchpoort mode trunk
3配置快速生成树协议。
switchA#configure terminal
switchA(config)#spanning-tree !开启生成树协议。
switchA(config)#spanning-tree mode rstp !指定生成树协议的类型为RSTP。
switchB#configure terminal
switchB(config)#spanning-tree
switchB(config)#spanning-tree mode rstp !指定生成树协议的类型为RSTP。
验证测试:验证快速生成树协议已经开启。
switchA#show spanning-tree
4设置交换机的优先级,指定SwitchA为根交换机。
switchA(config)#spanning-tree priority 4096 ! 指定交换机优先级为4096
switchA#show spanning-tree
switchB#show spanning-tree
验证测试:
A.验证交换机SwitchB的端口1和端口2的状态。
B.如果SwitchA与SwitchB的端口F0/1之间的链路断掉,验证交换机SwitchB的端口2的状态,并观察状态转换时间。
switchB#show spanning-tree interface fastetnernet 0/2
C.如果SwitchA与SwitchB之间的一条链路断掉,验证交换机PC1与PC2仍能互相ping通,并观察ping的丢包情况。
(1)使用show spanning-tree查看生成树配置信息时,相关状态信息含义如下。
StpVersion:生成树协议的版本。
SysStpStatus:生成树协议运行状态,disable为关闭状态。
Priority:交换机的优先级。
RootCost:交换机到达根交换机的开销,0代表该交换机为根交换。
RootPort:交换机上的根端口,0代表该交换机为根交换机。
(2)锐捷交换机默认是关闭spanning-tree的,如果网络在物理上存在环路,则必须手工开启spanning-tree。
锐捷全系列的交换机默认为MSTP协议,在配置时注意生成树协议的版本。