要使网络更加可靠,减少故障影响的一个重要方法就是“冗余”。当网络中出现单点故障时,冗余可以激活其他备份组件,以使网络链接不中断。
冗余在网络中是必需的,冗余的拓扑结构可以减少网络的中断时间。单条链路、单个端口或者单台网络设备都有可能发生故障和错误,进而影响整个网络的正常运行,此时,如果有备份的链路、端口或者设备就可以尽量减少丢失的连接,保障网络的不间断运行。生成树协议( SpanningTree Protocol, STP )能够有效解决冗余链路带来的环路问题,大大提高了网络的健壮性、稳定性、可靠性和容错性。
为了解决冗余链路引起的问题,IEEE通过了IEEE 802.1d协议,即STP。JEEE 802. 1d协议通过在交换机上运行一套复杂的算法,使冗余端口处于“阻塞状态”,使网络中的计算机在通信时只有一条链路生效,而当这条链路出现故障时,TEEE 802. 1d协议将会重新计算出网络的最优链路,将处于“阻塞状态” 的端口重新打开,从而确保网络连接稳定可靠。
在交换式网络中,使用STP可以将有环路的物理拓扑变成无环路的逻辑拓扑,为网络提供了安全机制,使冗余拓扑中不会产生交换环路问题。
STP中定义了根桥( Root Bridge)、根端口(Root Port, RP )、指定端口( Designated Port,DP)和路径开销(Path Cost)等概念,通过构造一棵自然树的方法达到阻塞冗余环路的目的,同时实现链路备份和路径最优化。用于构造这棵树的算法称为生成树算法(Spanning Tree Algorithm, STA)。STP不断检测网络,以检测链路故障。当网络拓扑发生变化时,运行STP的交换机会自动重新配置其端口,以避免环路产生或者链路断开。
(1)桥
因为性能方面的限制等因素,早期的交换机一般只有两个转发端口,所以那时的交换机常常被称为“网桥”或简称为“桥( Bridge )”。在IEEE的术语中,“桥)一直沿用至今,但现在已不再只是指只有两个转发端口的交换机,而是泛指具有任意多个端口的交换机。
(2)桥的MAC地址
一个桥有多个转发端口,每个端口都有一个MAC地址。通常,交换机会把端口编号最小的端口的MAC地址作为整个桥的MAC地址( Bridge MAC Address )。
(3)桥ID
一个桥 (交换机)的桥ID ( Bridge Identifier, BID) 由两部分组成,前面2字节是这个桥的桥优先级值,后面6字节是这个桥的MAC地址。桥优先级的值可以手动设置,其默认值为0x8000(相当于十进制数32768 )。
(4)端口ID
一个桥(交换机)端口ID( Port Identifier, PID)的定义方法有很多种,常见的有两种。
第一种:端口ID由2字节组成,字节1是该端口的端口优先级值,字节2是该端口的端口编号。
第二种:端口ID由2字节(16位)组成,前4位是该端口的端口优先级值,后12位是该端口的端口编号。
端口优先级的值可以手动设定,也可以由设备自动生成。由设备自动生成端口ID时,不同设备厂商所采用的PID的定义方法可能不同。
在一个具有物理环路的交换网络中,交换机通过运行STP,自动生成一个没有环路的逻辑拓扑。这个无环逻辑拓扑也称为STP树( STP Tree ),树节点为某些特定的交换机,树枝为某些特定的链路。一棵STP树中包含了一个唯一的根节点,任何一个节点到根节点的工作路径不仅是唯一的,还是最优的。当网络拓扑发生变化时,STP树也会自动地发生相应的改变。
简而言之,有环的物理拓扑提高了网络连接的可靠性,而无环的逻辑拓扑避免了广播风暴、MAC地址表翻摆、多帧复制等问题的发生,这就是STP的精髓。
生成树协议STP能够自动发现冗余网络拓扑中的环路,保留一条最佳链路作为转发链路,阻塞其他冗余链路,并且在网络拓扑发生变化的情况下重新计算,保证所有网段可达且无环路。
STP的基本工作原理为,通过桥接协议数据单元( Bridge Protocol Data Unit, BPDU)的交互来传递STP计算所需要的条件,随后根据特定的算法阻塞特定端口,从而得到无环的树形拓扑。
STP树的生成过程主要分为以下4步。
①选举根桥,作为整个网络的根。
②确定根端口,确定非根桥与根桥连接的最优端口。
③确定指定端口,确定每条链路与根桥连接的最优端口。
④阻塞备用端口( Alternate Port, AP ), 形成一个无环网络。
(1)选举根桥
根桥是STP树的根节点,要生成一棵STP树,首先要确定出一个根桥。根桥是整个交换网络的逻辑中心,但不一定是物理中心。当网络的拓扑发生变化时,根桥也可能会发生变化。
运行STP的交换机(简称STP交换机)会相互交换STP协议帧,这些协议帧的载荷数据被称为网桥协议数据单元( Bridge Protocol Data Unit, BPDU)。 BPDU中包含了与STP相关的所有信息,如BID。
交换机间选举根桥的主要步骤如下。
根桥的选举原则是比较网桥ID (Bridge lD),值小者优先。网桥ID可理解为交换机的身份标志,共8B,由16bit的网桥优先级与48bit的网桥MAC地址构成,如图所示。其中,优先级可配置,默认值为32768(取值范围是0~65535)。另外,由于网桥的MAC地址具备全局唯一性, 所以网桥ID也具备全局唯一性。
网桥优先级(2B) 默认值:32768 |
网桥的MAC地址(6B) |
①STP交换机初始启动之后,会认为自己是根桥,并在发送给其他交换机的BPDU中宣告自己是根桥。
②当交换机从网络中收到其他设备发送过来的BPDU的时候,会比较BPDU中的根桥BID和自己的BID,较小的BID将作为根桥BID。
③交换机间不断地交互BPDU,并对BID进行比较,直至最终选举出一台BID最小的交换机作为根桥。
(2)确定根端口
根桥确定后,其他没有成为根桥的交换机都被称为非根桥。一台非根桥可能通过多个端口与根桥通信,为了保证从非根桥到根桥的工作路径是最优且唯一的, 就必须从非根桥的端口中确定出一个被称为“根端口”的端口,由根端口实现非根桥与根桥设备之间的报文交互。根端口就是去往根桥路径最“短”的端口,根端口负责向根桥方向转发数据。
因此,一台非根桥设备上最多只能有一个根端口,根端口的确定过程如下。
①比较根路径开销,路径开销较小的为根端口。
在计算根路径成本时,仅计算收到BPDU的端口(去往根桥的出端口)的开销。
STP把根路径开销( Root Path Cost, RPC)作为确定根端口的一个重要依据。一个运行STP的网络中,某个交换机的端口到根桥的累计路径开销(即从该端口到根桥所经过的所有链路的路径开销总和)称为该端口的RPC。链路的路径开销与端口速率有关,端口转发速率越大,路径开销就越小。端口速率与路径开销的对应关系如表所示。
端口速率 | 路径开销 |
10Mbit/s | 2000000 |
100Mbit/s | 200000 |
1Gbit/s | 20000 |
10Gbit/s | 2000 |
②比较设备的BlD,BlD较小的端口为根端口。
③比较发送方端口(指定端口)lD,端口lD较小的为根端口。
端口lD为端口的身份标志,由两部分组成,共2B,高4bit是端口优先级(Port Priority),低12bit是端口编号,如图所示。端口优先级可以被配置,默认值是128。
端口优先级(4bit) 默认值:128 |
端口编号(12bit) |
(3)确定指定端口
当一个网段有两条及两条以上的路径通往根桥时,每个网段都必须确定一个端口为指定端口(每个网段中唯一 )。
指定端口也是通过比较RPC来确定的,RPC较小的端口将成为指定端口。如果RPC相同,则需要比较BID、PID 等。BlD、PlD小的端口作为指定端口,BlD、PlD大的端口作为备用端口。
根桥上不存在任何根端口,只存在指定端口。
(4)阻塞备用端口
在确定了根端口和指定端口之后,交换机上所有剩余交换机间互连的端口都被称为备用端口。STP树会对备用端口进行逻辑阻塞。
逻辑阻塞是指这些备用端口不能转发用户数据帧(由终端计算机产生并发送的帧),但可以接收并处理STP帧。
根端口和指定端口既可以发送和接收STP帧,又可以转发用户数据帧。
STP不仅定义了3种端口角色——根端口、 指定端口、备用端口,还将端口的状态分为5种,禁用状态、阻塞状态、侦听状态、学习状态、转发状态。这些状态的迁移用于防止网络STP收敛过程中可能存在的临时环路。
如表所示为这5种端口状态的简要说明。
端口状态 | 说明 |
禁用( Disabled ) | 禁用状态的端口无法接收和发出任何帧,端口处于关闭(Down)状态 |
阻寨( Blocking ) | 阻塞状态的端口只能接收STP帧,不能发送STP帧,也不能转发用户数据帧 |
侦听(Listening ) | 侦听状态的端口可以接收并发送STP帧,但不能进行MAC地址学习,也不能转发用户数据帧 |
学习(Learning ) | 学习状态的端口可以接收并发送STP帧,也可以进行MAC地址学习,但不能转发用户数据帧 |
转发( Forwarding) | 转发状态的端口可以接收并发送STP帧,也可以进行MAC地址学习,还能够转发用户数据帧 |
(1) STP交换机的端口在初始启动时,会从禁用状态进入阻塞状态。在阻塞状态下,端口只能接收和分析BPDU,但不能发送BPDU。
(2)如果端口被选为根端口或指定端口,则会进入侦听状态,此时端口接收并发送BPDU,这种状态会持续一个转发延迟(Forward Delay )的时间长度,默认为15s。
(3)如果没有因“意外情况”而回到阻塞状态,则该端口会进入学习状态,并在此状态持续一个转发延迟的时间长度。 处于学习状态的端口可以接收和发送BPDU,同时开始构建 MAC地址表,为转发用户数据帧做好准备。处于学习状态的端口仍然不能转发用户数据帧,因为此时网络中可能还存在因STP树的计算过程不同步而产生的临时环路。
(4)端口由学习状态进入转发状态,开始用户数据帧的转发工作。
(5)在整个状态的迁移过程中,端口一旦被关闭或发生了链路故障,就会进入禁用状态;在端口状态的迁移过程中,如果端口的角色被判定为非根端口或非指定端口,则其端口状态会立即退回到阻塞状态。
(6)拓扑稳定后,只有根桥才会每隔Hello Time时间发送一次配置BPDU。其他交换机收到BPDU后,启动老化计时器,并从指定端口发送更新参数后的最佳BPDU。如果超过Max Age(默认为20s)仍没有收到BPDU,则说明拓扑发生变化,STP 树将触发收敛过程。
1.案例背景与要求
根据图所示的网络拓扑,配置STP,解决网络环路问题。
2.索例配置思路
(1)配置STP模式。
(2)指定根桥。
(3)指定备份根桥(可选)。
3.案例配置过程
默认情况下,交换机是启用STP功能的。如果STP处于关闭状态,则需要先在系统视图中使用[stp enable]命令来启用 STP功能。
(1)配置交换机sw1上生成树的工作模式为STP。[ stp mode{ mstp|rstp|stp} ]命令是用来配置设备的生成树工作模式的。工作模式分别为MSTP、RSTP、 STP, 默认工作模式为MSTP。
Huawei]sysname SW1
[SW1]stp mode stp
(2)配置交换机SW2上生成树的工作模式为STP。
[Huawei]sysname SW2
[SW2]stp mode stp
(3)配置交换机SW3上生成树的工作模式为STP。
[Huaweilsysname SW3
[SW3]stp mode stp
(4)配置交换机SW4上生成树的工作模式为STP。
[Huawei]sysname SW4
[SW4]stp mode stp
(5)配置交换机SW1为根桥。
虽然STP会自动选举出根桥,但是通常情况下,会事先指定性能较好、距离网络中心较近的汇聚或核心交换机作为根桥。本案例中的网络结构非常简单,假设交换机SW1和SW2是核心交换机,交换机SW3和SW4是接入交换机,管理员将通过修改交换机SW1的桥优先级值来保证交换机SW1被选举成为根桥。[ stp priority priority ]命令用来设置设备的桥优先级值,其取值是0~65535,默认值是32768,该值要求设置为4096的倍数,如4096、8192 等。另外,还可以使用种便捷的方法来指定交换机SW1为根桥,即通过执行[ stp root primary ]命令直接指定交换机SW1为根桥。在设备上配置了此命令后,设蠡的桥优先级的值会被自动设为0,并且不能通过执行[ stp priority priority ] 命令来更改该设备的桥优先级的值。
[SW1 ]stp root primary //stp priority 0
(6)配置交换机SW2为备份根桥。
指定交换机SW2为备份根桥,可以在交换机SW1发生故障时接替交换机SW1成为新的根桥。在设备上执行[stp root sccondary) 命令后,设备的桥优先级的值会被自动设为4096,且不能通过[ stp priority priority ] 命令来进行修改。
[SW2jstp root secondary //stp priority 4096
4.案例验证
STP基本配置结束后,等待STP树收敛。收敛结束后可以执行[ display stp [ interface interface-type interface-number][ brier]命令来查看STP树的状态信息与计信息。
(1)在交换机sw1上执行[display stp brief]命令,查看STP的简要信息。
可以看到,由于交换机sw1是根桥,交换机sw1的端口GE0/0/2和GE0/0/1都是指定端口,并且均处于正常的转发状态。
(2)在交换机SW4上查看STP的简要信息。
可以看到,交换机SW4的端口GE0/0/2被确定为根端口,处于正常的转发状态,但它的GE0/0/1端口被阻塞,成为备用端口。
在STP网络中,STR 树的完全收敛需要依赖定时器的计时,端口状态从阻塞状态迁移到转发状态至少需要两倍转发延迟的时间长度,总的收敛时间太长,一般需要几十秒。 为了加快STP的收敛速度,可以手动修改STP的计时器参数。影响STP收敛的计时器参数主要有Forward Delay和BPDU Max Age。
在案例1的基础上,修改交换机的两个计时器的参数。
(1)配置交换机SW1的Max Age为6s, Forward Delay为4s。
[SW1]stp timer max-age 600
[SW1]stp timer forward-delay 400
(2)配置交换机SW2的Max Age为6s, Forward Delay为4s。
[SW2]stp timer max-age 600
[SW2]stp timer forward-delay 400
(3)配置交换机SW3的Max Age为6s, Forward Delay为4s。
[SW3]stp timer max-age 600
[SW3]stp timer forward-delay 400
(4)配置交换机SW4的Max Age为6s, Forward Delay为4s.
[SW4]stp timer max- age 600
[SW4]stp timer forward- delay 400
(5)修改定时器参数后,执行[ display stp]命令来查看生成树的状态信息。
在交换机SW1上执行[ dsplay stp ]命令,查看STP树的状态信息.
可以看到,交换机SW1的STP Max Age变成了6s,Forward Delay变成了4s.
STP虽然能够解决环路问题,但是收敛速度慢,当网络拓扑发生变化时,STP 重新收敛需要较长的时间。当前生产环境对网络的依赖度越来越高,等待时间过长会严重影响业务效率。快速生成树协议( Rapid Spanning Tree Protocol, RSTP )的提出弥补了STP的缺陷。
RSTP的标准为IEEE 802.1w, 它改进了STP,缩短了网络的收敛时间。RSTP的收敛速度最快可以缩短到1s之内,在拓扑发生变化时能快速恢复网络的连通性。RSTP 的算法和STP基本一致。
RSTP在STP的基础上,增加了两种端口角色:替代( Alternate )端口和备份( Backup)端口。因此,RSTP中共有4种端口角色:根端口、指定端口、替代端口、备份端口。替代端口和备份端口的定义如下。
端口角色 | 描述 |
Root Port | 根端口,是所在交换机上离根交换机最近的端口,稳定时处于转发状态 |
Designated Port | 指定端口,转发所连接的网段发往根交换机方向的数据和从交换机方向发往所连接的网段的数据,稳定时处于转发状态 |
Backup Port | 备份端口,不处于转发状态,所属交换机为端口所联网段的指定交换机 |
Alternate Port | 预备端口,不处于转发状态,所属交换机不是端口所联网段的指定交换机 |
(1)替代端口
替代端口可以简单地理解为根端口的备份, 它是非根桥收到了其他设备发送的BPDU后被阻塞的端口。如果设备的根端口发生故障,那么替代端口可以成为新的根端口,这加快了网络的收敛过程。
(2)备份端口
备份端口是指交换机由于收到了自己发送的BPDU从而被阻塞的端口。如果一台交换机上有多个端口接入同一个网段,并且在这些端口中有一个被选举为该网段的指定端口,那么这些端口中的其他端口将被选举为备份端口,备份端口将作为该网段到达根桥的冗余端口。通常情况下,备份端口处于丢弃状态。
如图所示为一种存在备份端口的场景,交换机SW2使用两个端口连接到同一台集线器(Hub)上,
集线器在一个端口上收到的数据会被复制到其他所有端口(且其不支持STP/RSTP)上,因此交换机SW2从G0/0/2端口发送出去的BPDU会被集线器接收并发往交换机SW2的GE0/0/3端口,反之亦然。
当交换机SW2的指定端口GE0/0/2发生故障时,备份端口GE0/0/3将变为指定端口,以确保通信不中断。
STP中定义了5种端口状态,而RSTP中简化了端口状态,将STP的禁用,阻塞及侦听状态简化为丢弃(Discarding) 状态,学习( Learning )状态和转发( Forwarding )状态则被保留了下来。如果端口不转发用户流量也不学习MAC地址,那么端口状态就是丢弃状态。如果端口不转发用户流量但是学习MAC地址,那么端口状态就是学习状态。如果端口既转发用户流量又学习MAC地址,那么端口状态就是转发状态。
RSTP的BPDU被称为RST BPDU,其格式与STP的BPDU大体相同,只是其中个别字段做了修改,以便适应新的工作机制和特性。对于RST BPDU来说,“协议版本ID”字段的值为0x02,“BPDU类型”字段的值也为0x02。最重要的变化体现在“标志”字段中,该字段一共8位,STP只使用了其中的最低位和最高位,而RSTP在STP的基础上使用了剩余的6位,并分别对这些比特位进行了定义,如图所示。
TCA (1位) |
Agreement (1位) |
Forwarding (1位) |
Learning (1位) |
Port Role (1位) |
Proposal (1位) |
TC (1位) |
STP只使用了“标志” 字段的最高及最低位,在RST BPDU中,这2位的定义及作用不变。另外,同意(Agreement)及提议( Proposal )位用于RSTP 的P/A ( Proposal/Agreement )机制,该机制大大地提升了RSTP的收敛速度。端口角色( Port Role)的长度为2位,它用于标识该RST BPDU发送端口的端口角色、01表示根端口,10表示替代端口,11表示指定端口,而00则被保留使用,即备份端口(以上的值都是二进制格式)。最后,转发( Forwarding)及学习(Learning )位用于表示该RST BPDU发送端口的端口状态。
RSTP与STP不同,在网络稳定后,无论是根桥还是非根桥,都将周期性地发送配置BPDU,也就是说,对于非根桥而言,它们不用在根端口上收到BPDU之后,再被触发而产生自己的配置BPDU,而是自发地、周期性地发送BPDU。
RSTP在BPDU的处理上的另一点改进是对于次优BPDU的外理。运行STP的交换机在每个端口上保存一份BPDU,对于根端口及非指定端口而言,交换机保存的是发送自上游交换机的BPDU,而对于指定端口而言,交换机保存的是自己根据根端口的BPDU所计算出的BPDU。如果端口收到一份BPDU,且该端口当前所保存的BPDU比接收的BPDU更优,那么后者对于前者而言就是次优BPDU。在STP中,当指定端口收到次优BPDU时,它将立即发送自己的BPDU,而对于非指定端口,当其收到次优BPDU时,它将等待端口所保存的BPDU老化之后,再重新计鼻新的BPDU,并将新的BPDU发送出去,这将导致非指定端口需要最长约20s的时间才能启动状态迁移。在RSTP中,无论端口的角色如何,只要端口收到次优BPDU,便立即发送自己的BPDU,这个变化使RSTP的收敛速度更快。
运行了STP的交换机,其端口在初始启动之后,会进入阻塞状态,如果该端口被选举为根端口或指定端口,那么它需经历侦听及学习状态,最后进入转发状态,也就是说,一个端口从初始启动之后到进入转发状态至少需要耗费30s 的时间,对于交换机上连接到交换网络的端口而言,经历上述过程是必要的,毕竟该端口存在产生环路的风险,然而, 有些端口引发环路的风险是非常低的,如交换机连接终端设备( PC或服务器等)的端口,如果这些端口启动之后依然要经历上述过程就太低效了,用户也希望PC接入交换机后能立即连接到网络,而不是再等待一段时间 。
在RSTP中,可以将交换机的端口配置为边缘端口( Edge Port) 来解决上述问题。边缘端口默认不参与生成树计算,当边缘端口被激活之后,它可以立即切换到转发状态并开始收发业务流量,而不用经历转发延迟时间,因此工作效率大大提高了。另外,边缘端口的关闭或激活开不会触发RSTP拓扑变更。在实际项目中,通常会把用于连接终端设备的端口配置为边缘端口。
如图所示,交换机sw2的GE0/0/1、GE0/0/2 及GE0/0/3均可被配置为边缘端口。
以图中的交换机SW2为例,将其GE0/0/1~ GE0/0/3端口都配置为边缘端口的命令如下。[SW2]interface GigabitEthernet 0/0/1
[SW2-GigabitEthernet 0/0/1]stp edged-port enable
[SW2]interface GigabitEthernet 0/0/2
[SW2-GigabitEthernet 0/0/2]stp edged-port enable
[SW2]interface GigabitEthernet 0/0/3
[SW2- GigabitEthernet 0/0/3]stp edged-port enable
P/A机制是交换机之间的一种握手机制。RSTP通过P/A机制来保证一个指定 端口能够从丢弃状态快速进入转发状态,从而加快生成树的收敛。
华为交换机支持多种保护功能,这些功能提升了RSTP的稳定性。
(1)BPDU保护
由于人为疏忽,边缘端口也可能会被误接交换设备,一旦交换设备连接到边缘端口,就会引入环路隐患。因此,如果边缘端口连接了交换设备,并收到了BPDU,则该端口立即变为一个普通的生成树端口,在此过程中可能会引发网络中的RSTP重计算,从而对网络造成影响。这种疏然同时引入了二层环路的隐患。另外,如果攻击者连接到了边缘端口,并针对该端口发起了BPDU攻击,则将对网络造成极大影响。在华为交换机上,可以通过激活BPDU保护( BPDU Protection )功能解决上述问题。当交换机激活该功能后,如果边缘端口收到BPDU,则交换机会立即把端口关闭(即置为Error-Down ),同时触发告警。在交换机的系统视图中执行[stp bpdu-protection ]命令,可以在所有边缘端口上激活BPDU保护功能,如图所示。
可以在交换机SW2上进行如下配置。
[SW2]interface GigabitEthernet 0/0/1
[SW2- GigabitEthernet 0/0/1]stp edged-port enable
[sW2]interface GigabitEthernet 0/0/2
[SW2-GigabitEthernet 0/0/2]stp edged-port enable
[SW2]interface GigabitEthernet 0/0/3
[SW2- GigabitEthernet 0/0/3]stp edged-port enable
[SW2]stp bpdu-protection
完成上述配置后查看交换机的RSTP端口状态。
从以上结果中可以看出,由于GE0/0/1、GE0/O12及GE0/0/3都被配置为边缘端口,这些端口都将激活BPDU保护功能( Protection列显示为BPDU),而GE0/0/24并非边缘端口,因此不会激活BPDU保护功能。
此时,如果交换机SW2的GE0/0/1端口收到了BPDU,则交换机将立即产生如下告警信息,并将GE0/0/1端口关闭。
Jan 4 202018:33:00-08:00 SW2 %%01MSTP/4/BPDU_ PROTECTION()[60]:This edged-port
GigabitEthernet0/0/1 that enabled BPDUProtection will be shutdown, becauseit receivedBPDU packet!
如果受保护的边缘端口由于收到了BPDU而被关闭,则默认是不会自动恢复的,网络管理员需在该端口的配置视图中先后执行[shutdown ]及[undo shutdown ]命令,或者直接执行[restart]命令来恢复端口。除了使用上述命令手动恢复端口之外,还可以使端口自动恢复。在系统视图中执行[error down auto-recovery cause bpdu-protection interval interval-value ]命令即可配置端口的自动恢复功能。执行上述命令,端口在被关闭后,将在延迟interval 关键字所指定的时间(30-86400s)后自动恢复。
(2)根保护
对于一个 部署了RSTP的交换网络来说,根桥的地位是至关重要的,因为RSTP所计算出的无环拓扑与根桥是息息相关的。在一个RSTP已经完成收敛的网络中,如果根桥发生变化,那么势必导致RSTP重新计算,此时该网络所承载的业务流量必将受到影响。一般来说,RSTP会选择网络中性能最优、位置最关键的设备作为根桥,将其优先级值设置为最小值0,然而,这个措施未必能绝对保证该设备永远是网络中的根桥,因为根桥的角色是可抢占的。如图所示,交换机SW1的优先级值被设置为0,它将成为生产网络中的根桥,此时,第三方网络为了实现与生产网络的通信,将该网络中的交换机SW4连接到了交换机SW1上。 对接之前交换机SW4的优先级值已经被配置为0,且恰巧其MAC地址较交换机SW1更小,因此,一旦交换机SW4与SW1完成对接,前者将抢占交换机Sw1的地位而成为网络中新的根桥,而这个改变将会导致生产网络的RSTP重新进行计算,从而对生产网络造成影响。
在交换机SW1的相关端口上部署根保护( Root Protection) 功能,可以规避以上问题,当根桥的指定端口激活根保护功能后,如果该端口收到更优的BPDU,则会忽略这些BPDU,并将端口切换到丢弃状态,这样,根桥的地位得以保持。对于上图中的交换机SW1,根保护功能的配置如下。
[SW1]interface GigabitEthernet 0/0/20
[SW1-GigabitEthernet0/0/20jstp root-protection
完成上述配置后,可以查看交换机SW1端口的RSTP状态。
当交换机SW4发送的BPDU到达交换机SW1的GE0/0/20端口后,交换机SW1将立即把端口切换到丢弃状态。
值得注意的是,根保护功能只有在指定端口上激活才会有效。当激活了根保护功能的指定端门收到更优的BPDU时,它将忽略这些BPDU,并立即将端口切换到丢弃状态。如果激活了根保护功能的端口不再收到更优的BPDU,则一段时间后(通常为转发延迟时间的两倍),它将会自动恢复到转发状态。
(3)环路保护
如图所示,交换机SW1是网络中的根桥,交换机SW3的GE0/0/22是根端口,GE0/0/23是替代端口并处于丢弃状态。以交换机SW3的GE0/0/23端口为例,该端口虽然处于丢弃状态,但是会持续侦听BPDU,当网络正常时,交换机SW3会在该端口上周期性地收到BPDU。假设交换机SW2及SW3之间通过光纤互连,现在该光纤出现了单向故障,例如,从SW2到SW3的通路发生了故障,但是从交换机SW3到SW2的通路是正常的。此时,交换机SW2发送的BPDU将无法正常到达交换机SW3的GE0/0/23端口,这将导致交换机SW3认为GE0/0/23端口的上游设备发生了故障,一段时间后 ,该端口将会成为指定端口并切换到转发状态,并开始发送业务流量。值得注意的是,此时交换机SW2并未发生故障,一 旦交换机 SW3 的GE0/0/23端口切换到转发状态,网络中就出现了环路。
交换机的根端口及处于丢弃状态的替代端口都可能出现上述问题。在网络正常时,这些端口将持续收到BPDU,而当网络中出现链路单向故障或者网络拥塞等问题时,这些端口将无法正常地接收BPDU,这会导致交换机进行RSTP重计算,此时端口的角色及状态便会发生改变,这就有可能在网络中引入环路。使用环路保护( Loop Protection )功能可以规避上述问题。环路保护功能主要有以下两种。
①在根端口上激活环路保护功能。如果该端口长时间没有收到BPDU,那么交换机将会重新选举根端口,并将该端口的角色调整为指定端口,此时,交换机会将该端口的状态切换到丢弃状态,从而避免环路的发生。
以上图所示的拓扑为例,当网络完成收敛后,交换机SW3的GE0/0/22端口将成为根端口并处于转发状态,而GE0/0/23端口则被选举为替代端口并处于丢弃状态。此时,可以使用如下命令在交换机SW3的GE0/0/22端口上激活环路保护功能。
[SW3]interface GigabitEthernet 0/0/22
[SW3-GigabitEthernet0/0/23]stp loop-protection
完成上述配置后,在交换机SW3上执行[ display stp brief]命令,查看STP端口状态。
此时,如果GE0/0/22端口长时间没有收到BPDU,则交换机会将该端口调整为指定端口,并将其切换到丢弃状态,更到该端口再次收到BPDU为止。
②在替代端口上激活环路保护功能后,如果该端口长时间没有收到BPDU,那么交换机会将该端口的角色调整为指定端口,但是将其状态保持在丢弃状态,从而避免环路的出现。以上图所示的拓扑为例,交换机SW3的GE0/0/23端口为替代端口,其也可以激活环路保护功能,相关配置如下。
[SW3]interface GigabitEthernet 0/0/23
[SW3-GigabitEthernet0/0/23]stp loop-protection
上述配置完成后,在交换机SW3上执行[display stp brief]命令,查看STP端口状态。
完成上述配置后,如果交换机SW3的GE0/0/23端口长时间没有收到BPDU,则交换机会将该端口调整为指定端口,但是不会将其切换到转发状态,而是保持丢弃状态,从而避免环路的出现。
(4)拓扑变更保护
一个 稳定的交换网络是不会频繁地出现拓扑变更的,一旦网络出现拓扑变更,TC BPDU (此处指的是TC比特置位的BPDU)将会被泛洪到全网,而这些TC BPDU将会触发网络中的交换机执行MAC地址表删除操作。如果网络环境极端不稳定导致TC BPDU频繁地泛洪,或者网络中存在攻击者发送大量的TC BPDU对网络进行攻击,那么交换机的性能将受到极大的损耗。
交换机激活拓扑变更保护( TC Proteetion) 功能后,将在单位时间内只进行一定次数的 TC BPDU处理,如果交换机在该时间内收到超过所设上限的TC BPDU,则只会按照规定的次数进行处理,而对于超出的部分,必须等待一段时间后再进行处理 ,激活拓扑变更保护功能的命令如下。
[SW]stp tc-protection
交换机激活拓扑变更保护功能后,在单位时间内(默认为2s,相当于一个 Hello Time)只会处理一次TC BPDU,如果在该时间内收到了多个TC BPDU,则这些报文只能在超时后才会被处理。拓扑变更保护功能默认单位时间可以通过如下命令进行修改。
[SW]stp tc-protection interval interval-value
拓扑变更保护的默认单位时间内,处理TC BPDU的次数可以通过如下命令进行修改。
[SW]stp tc-protection threshold value
(1)选举根交换机
(2)选举非根交换机的根端口
(3)选举网段的指定端口
(4)选举预备端口和备份端口
1.案例背景与要求
根据图所示的RSTP拓扑,在交换机SW1、SW2、SW3、SW4上部署RSTP。要求:完成配置后,交换机SW4的6B0/0/20端口被阻塞,在交换机SW4上查看STP端口状态和GE0/0/20端口的详细信息以进行验证。
2.案例配置过程
(1)交换机SW1的配置如下。
[Huawei]sysname SW1
[SW1]stp mode rstp
[SW1]stp root primary
(2)交换机SW2的配置如下。
[Huawei]sysname SW2
[SW2]stp mode rstp
[SW2]stp root secondary
(3)交换机SW3的配置如下。
[Huawei]sysname SW3
[SW3]stp mode rstp
(4)交换机SW4的配置如下。
[Huawei]sysname SW4
[SW4]stp mode rstp
[SW4]interface GigabitEthernet 0/0/20
[SW4-GgabitEthemet0/0/20]stp cost 100000
3.案例验证
(1)查看交换机SW4的STP端口状态。
(2)查看交换机SW4的GE0/0/20端口的详细信息。
多生成树协议( Multiple Spanning Tree Protocol, MSTP )用于解决启用VLAN的交换网络中的环路问题。
MSTP允许将一个或多个VLAN映射到一个MST Instance (多生成树实例)上,MSTP为每个MST Instance单独计算根交换机,单独设置端口状态,即在网络中计算多个生成树。每个MST Instance都使用单独的RSTP算法,计算单独的生成树。每个MST Instance都有一个标识( MSTID ),MSTID是一个2B的整数。VRP平台支持16个MST Instance, MSTID的取值范围是0~15,默认所有的VLAN映射到MST Instance 0。