You are on page 1of 15

Cisco Learning Network China (思科网络学习空间)

https://learningnetwork.cisco.com/community/connections/china

本章包括下列主题:
· 利用生成树避免环路;
· 生成树收敛;
· 快速生成树协议;
· 理解多生成树;
· 单向链路检测。

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

第10 章
实施和调整生成树

本书第 1 章“局域网交换技术基础”讨论了生成树算法
的基础理论。本章将详细讨论生成树的复杂问题,其中包括
如何利用诸多 Cisco 专有特性避免网络环路。因为应用和某
些网络协议的敏感本质,所以要求网络能够快速收敛。基于
上述原因,也就要求 STP (Spanning Tree Protocol,生成树协
议)能够快速而有效地处理收敛问题。为了能够解决第 2 层
快速收敛和可扩展性问题,先后出现了 RSTP ( Rapid
Spanning Tree Protocol , 快 速 生 成 树 ) 和 MST ( Multiple
Spanning Tree ,多生成树)技术。

10.1 利用生成树避免环路

STP ( IEEE 802.1D 标准)具有两个直接的缺点。第一


个问题是收敛性。对于第 2 层网络,它需要经过很长时间才
能收敛。根据所发生的故障类型, STP 需要经过30~ 50s 的
时间才能实现网络收敛。另外一个问题就是可能存在环路。
如本书其他内容所讨论,环路会给网络带来灾难性的后果
Cisco 推出诸多特性(例如 PortFast 、根防护和环路防护
等)来缓解环路故障,本章接下来将展开讨论。

10.1.1 PortFast

PortFast 特性能够跳跃生成树状态的多个阶段,并且能
够使得阻塞状态的端口立即进入转发状态。采用 PortFast 特
性的两个原因分别是:首先,正常的生成树状态转换会产生

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

一定的延迟,它会引起启动故障。例如,某个用户正在试图
登录主机,但因为端口正在经历生成树的几种状态,所以就
会导致用户登录屏幕超时退出。端口大约需要 30s 才能转换
到转发状态。当端口处于转换过程的时候,如果Windows软

试图登录服务器,那么因为主机尚未建立完整的网络连接,所以会导致登录过程失败。对于
采用 Novell 客户端的用户,这种问题就非常普遍。
采用 PortFast 特性的第二个原因是:当主机连接或脱离端口的时候,它不会产生
TCN( Topology Change Notification ,拓扑变更通告)。这个原因是非常重要的。如果在主
机端口禁用 PortFast ,那么一旦用户重新启动或关闭计算机,交换机就会产生TCN,并且在
网桥的根端口上转发,如图10-1所示。

图 10-1 TCN 更新

上行指定交换机将向交换机返回TCA( Topology Change Acknowledgment ,拓扑变更


确认)。这种过程将一直持续到根交换机接收到TCN为止。根交换机将对 CAM ( content-
addressable memory ,内容寻址内存)条目进行复位,周期从 5min 调整为 15s (转发延
迟);在重新转换回 5min 计时器之前,新 CAM 条目将持续 35s (最大寿命20s+转发延迟
15s )。通过发送配置 BPDU (bridge protocol data unit,桥接协议数据单元),根交换机能
够将拓扑和计时器变更通知给所有的交换机。如果交换机端口没有参与生成树,那么上述过
程就是不必要的。当用户计算机加入或脱离网桥的时候,生成树不会发生变更。基于上述原
因, PortFast 配置适合于主机端口。
因为交换机参与生成树拓扑,所以交换机间链路不应当启用 PortFast 特性。如果交换
机在启用 PortFast 的端口上接收到配置 BPDU ,那么它将使得端口重新经历正常的生成树状
态。这种方式有助于避免发生网络环路。
例10-1给出如何在主机端口( 3/1 )上配置 PortFast 特性。在启用 PortFast 特性的时
候,交换机会弹出警告信息,它会提示工程人员哪些设备不应当启用 PortFast 特性。

例 10-1 启用 PortFast 特性

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

如例10-2所示,通过执行 show spantree 命令,将能够查看已经启用 PortFast 特性的


接口的全面信息。

例 10-2 VLAN 3 的生成树信息

(待续)

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

一、PortFast BPDU 防护

BPDU 防护能够进一步避免发生网络环路。如果端口已经启用 PortFast ,那么因为这


些端口不参与生成树,所以它们不应当接收任何 BPDU 。基于上述原因,这些端口所接收的
任何 BPDU 都是无效的。在某些情况下,有些人可能会有意无意地在 PortFast 端口上连接新
的交换机,或者将 PortFast 端口连接到其他交换机。默认情况下,如果 PortFast 端口接收到
BPDU 报文,那么就会使端口进入阻塞状态,随后会使端口经历正常的生成树过程,并且会
关闭 PortFast 特性。 PortFast 端口接收到 BPDU 时, BPDU 防护特性会完全禁用该端口。如
果希望使端口脱离“ err-disabled” 状态,那么就必须通过手工配置进行干预。 BPDU 防护是
一种全局命令,它能够影响所有启用 PortFast 特性的端口,如例10-3所示。

例 10-3 启用 BPDU 防护

例10-4举例说明正在接收 BPDU 报文的 PortFast BPDU 防护端口。

例 10-4 PortFast BPDU 防护端口的 BPDU 流量

二、PortFast BPDU 过滤

BPDU 过滤是一种全局命令,它能够防止交换机通过 PortFast 端口发送 BPDU 报文,


如例10-5所示。如本章先前内容所述,如果 PortFast 端口接收到 BPDU ,就会导致该端口经
历正常的生成树状态。但利用 BPDU 过滤,下行 PortFast 端口就应该永远也不会看到 BPDU

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

报文。 BPDU 是能够防止网络环路的一种安全方法。

例 10-5 启用 BPDU 过滤

如图10-2所示,交换机 2 不会从连接交换机 3 的 PortFast 端口发送 BPDU 。它仍然从


交换机 3 接收 BPDU 。为了避免出现生成树问题,交换机 3 就应当启用 BPDU 过滤。

图 10-2 BPDU 过滤

注意:图10-2反映了一种不好的网络设计,该图用于说明 Cisco 交换机能够使用 BPDU


过滤。

10.1.2 根防护

通过使用根防护,将允许连接到 PortFast 端口的设备能够参与生成树,但不允许它成


为根交换机。例10-6概述如何配置根防护。

例 10-6 启用根防护

注意:根防护与环路防护不兼容,本章稍后将介绍环路防护。

如果 PortFast 端口接收到上级 BPDU ,那么端口状态将转变为“ 不一致根”状态。如


例10-7所示,交换机 2 在端口 1/1 接收到 VLAN 2 的上级 BPDU 。每个端口都启用根防护特
性,并且它将影响经过该端口的所有 VLAN 。

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

例 10-7 VLAN 2 的生成树

(待续)

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

如果交换机 2 的端口 1/1 停止接收上级 BPDU ,那么它将把端口转换到转发状态,如


例10-8所示。这是个动态过程。

例 10-8 因为新增根而导致端口状态转换

10.1.3 环路防护
通过单向链路检测,环路防护特性能够避免出现生成树环路。通过采用单向链路,链
路伙伴一侧的端口能够工作在“ up” 状态并发送数据。与此同时,链路伙伴的另外一侧也能
够正常地工作。如例10-9所示,通过在参与生成树的端口上启用环路防护,能够提供第 2 层
冗余。当交换机的根端口或阻塞端口停止接收 BPDU 时,它将把端口转换到“不一致环路”
状态。如果发生上述情况,它们会失去通道化( channeling )所带来的冗余性,并且也不是
人们所期望的结果。

例 10-9 启用环路防护

如图10-3所示,交换机 2 不能从交换机 3 接收 BPDU 。通过启用环路防护,交换机 2


的阻塞端口能够转换到“不一致环路”状态。如果交换机 3 收
发器的发送部分或交换机 2 收发器的接收部分发生故障,就会
产生单向链路。无论是哪种情况,环路防护都会通过变更端口
状态来保护网络。如果没有启用环路防护,那么交换机 2 将把

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
图 10-3 环路防护
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

阻塞端口转换为转发状态。如果端口状态发生上述变更,那么就会产生逆时针方向的单向环
路。环路防护不需要人工干预。如果交换机从端口 3/5 重新接收到 BPDU ,那么交换机将把
该端口转换回阻塞状态。

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

10.2 生成树收敛

生成树收敛问题已经成为网络管理员需要解决的挑战之一。根据第 2 层网络规模的不
同,生成树收敛问题可能非常复杂。实际上,与传统 STP 方法相比, RSTP 的主要卖点之一
就是它具有更好的收敛能力。如本书第 1 章所述, Cisco 交换机能够支持用于调整特定生成
树计数器的多种命令。本章将深入讨论这些命令。此外,为了加快第 2 层网络的收敛速度,
Cisco 交换机还支持其他一些特性,如 BackboneFast 和 UplinkFast 等。

10.2.1 生成树计时器

生成树收敛是非常复杂的问题。我们建议应当尽可能保持第 2 层网络的简单性。通过
采用生成树默认计时器所进行的大量测试、网络设计认证和安装等工作,我们建议保留计时
器的默认值。
生成树支持多种计时器,主要包括如下三种:
· Hello 时间—— Hello 时间是根发送两个配置 BPDU 之间的时间, Hello 时间的默
认值是2s。
set spantree hello interval [vlan]
· 转发延迟——转发延迟是监听状态和学习状态的时间间隔,它不是监听和学习状态
的时间之和,转发延迟的默认值为 15s 。
set spantree fwddelay delay [vlan]
· 最大寿命——最大寿命是交换机保存配置 BPDU 的时间长度。在发生间接故障的时
候,最大寿命计时器能够承担重要的角色,最大寿命的默认值为 20s 。
set spantree maxage agingtime [vlan]
网络直径能够决定上述参数配置的灵活性。通常情况下, Hello 时间和转发延迟保持
默认值。在某些情况下,还要修改最大寿命计时器。
图10-4给出发生间接链路故障后端口从阻塞状态转换到转发状态的时间。
下列步骤概述最大寿命计时器的工作过程:
第1步 交换机 1 和交换机 3 之间的连接发生故障;
第2步 交换机 3 向交换机 2 产生次级配置 BPDU ;
第3步 在 20s (最大寿命计时器)内,交换机 2 将忽略来自交换机 3 的这些
BPDU ;
4
第 步 在最大寿命计时器到期之后,交换机 2 将把端口从阻塞状态转换到转发状态,
这个过程需要额外的 30s 时间;
第5步 交换机 2 将来自根(交换机 1 )的配置 BPDU 转发给交换机 2 ;
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

第6步 交换机 2 停止发送次级 BPDU ,网络已经处于收敛状态。


从生成树的观点来看,收敛后的网络如图10-5所示。网络收敛过程需要 50s 时间:最
大寿命( 20s ) + 监听状态( 15s ) + 学习状态( 15s )。这类故障又称为间接故障。如果
交换机 2 的根端口受到破坏,那么收敛时间将是 30s 。阻塞端口将立即转换到学习状态,这
类故障又称为直接故障。

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

图 10-4 最大寿命 图 10-5 生成树收敛

最大寿命计时器由两个要素所组成:第一个要素是两台主机之间的交换机直径,通常,
两台主机之间不应当超过 7 台交换机,它也是最多丢失 3 个配置 BPDU 的基本要求:
直径 = ((丢失的 BPDU+1 ) *Hello 时间) + (延迟 * (直径-1))
= (( 3+1 )*2) + (1*( 7-1 ))=14s
第二个要素是最大寿命高估值。每台交换机都将最大寿命字段增加1s,并且将其作为
BPDU 穿过交换机的时间。这个1s是被交换机夸张的结果。实际上,交换机能够远在1s之内
就可以转发 BPDU :
最大寿命高估值 = (直径-1) * 延迟
= ( 7-1 ) *1=6s
最后,这两部分数值汇总成为最大寿命计时器的默认值( 20s ):
最大寿命 = 直径 + 最大寿命高估值
=14+6=20s
例如,如果两台主机的直径是 3 台网桥或交换机,那么最大寿命就是
12( 10+2 ) s :
直径 = (( 3+1 )*2) + (1*( 3-1 ))=10s
最大寿命高估值 = ( 3-1 ) *1=2s

10.2.2 BackboneFast

BackboneFast 特性能够对最大寿命计时器进行优化处理,如图 10-6 所示。换而言之,


BackboneFast 能够消除与最大寿命计时器相关的 20s (它用于间接故障)。通过首先检测间
接故障, BackboneFast 能够实现上述目标。交换机的阻塞端
口接收到次级 BPDU 时,它就触发间接故障。 BackboneFast
的第二个组成部分将验证这种故障。交换机通过RLQ(Root
Link Query ,根链路查询)完成上述过程。为了查出根的位
置,交换机需要向上行交换机发送RLQ请求。在查找到根的
位置之后,交换机将使最大寿命计时器到期,并且使端口从
阻塞状态转换到监听状态。
图 10-6 BackboneFast
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

下列步骤概述 BackboneFast 的工作过程:


第1步 交换机 1 和交换机 3 之间的连接发生故障;
第2步 交换机 3 向交换机 2 产生次级配置 BPDU ;
第3步 在接收到次级 BPDU 之后,交换机 2 将向上行交换机发送RLQ;
第4步 交换机 1 将向交换机 2 发回RLQ响应,表明交换机 1 是根;
第5步 交换机 2 知道自己仍然存在到根的路径,它就可以安全地转换阻塞端口;
第6步 交换机 2 将端口从阻塞状态转换到监听状态,它将把配置 BPDU 转发给交换
机3;
第7步 在 30s 之后,交换机 3 就可以重新收敛。这与直接故障的收敛时间是相同的。
BackboneFast 是一种全局命令,在配置 BackboneFast 特性时,要求网络中的所
有交换机都必须启用该特性,如例 10-10 所示。 BackboneFast 特性不会影响直接故
障的收敛时间。

例 10-10 启用 BackboneFast 特性

10.2.3 UplinkFast
UplinkFast 是有助于解决收敛问题的另外一种特性。为了能够启用 UplinkFast 特性,
要求接入交换机和上行交换机之间必须存在冗余的物理链路,如图10-7所示。其中一条链路
用于流量转发,而另外一条链路用于备份功能。当转发链路发生故障时,备份链路将开始工
作并转发流量。通过上述过程,收敛时间能够降低到 2 ~3s。为了帮助建立新链路的 CAM
表,交换机将记录所有与故障链路相关的 MAC 地址,并且将以150pps的速度进行宣告,它
所采用的哑组播地址是01-00-0C-CD-CD-CD。

图 10-7 UplinkFast

如果准备使用 UplinkFast 特性,那么只能在接入交换机上进行配置。值得强调的是,


因为 UplinkFast 特性可能会导致某些严重的不稳定问题,所以核心交换机不应当启用该特性。
实际上,当启用 UplinkFast 特性时,交换机将把网桥优先级从默认的 32 768 增加到 49 152 。
这也确保接入交换机不会成为根交换机。此外,交换机端口开销也将增加 3 000 ,所以该交
换机也就不会被其他交换机作为中转。
如图 10-7 所示,交换机 2 是接入交换机。根据例 10-11 所提供的生成树信息,因为
VLAN 4 的端口 3/12 处于阻塞模式,所以交换机具有 VLAN 4 的冗余链路。 UplinkFast 是一

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

种全局命令。在启用 UplinkFast 特性的时候,交换机将自动调整根优先级和端口开销。

例 10-11 VLAN 4 的生成树信息

(待续)

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china
Cisco Learning Network China (思科网络学习空间)
https://learningnetwork.cisco.com/community/connections/china

例 10-12 给出如何在交换机上配置 UplinkFast 特性。网桥和端口的默认值也


进行相应的调整。

例 10-12 启用 UplinkFast 特性

如例 10-13 所示,端口 3/11 处于转发状态,端口 3/12 处于备份状态。

例 10-13 端口3/11的 UplinkFast 特性处于活跃状态

Cisco Learning Network China (思科网络学习空间)


https://learningnetwork.cisco.com/community/connections/china

You might also like