HCNA网络技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 生成树协议STP

2.3.1 STP的产生

单点故障会导致整个网络瘫痪,为了保证整个网络的可靠性和安全性,可以引入冗余链路或备份链路,物理上的备份链路会产生物理环路或多重环路,从而导致广播风暴、重复帧及 MAC 地址表不稳定等问题。在实际的组网应用中经常会形成复杂的多环路连接。面对复杂的环路,网络设备必须有一种解决办法在有物理环路的情况下阻止二层环路的发生。此时,减少冗余链路是不现实的,因为可靠性得不到保证。可以通过生成树协议来解决环路问题,即将某些端口置于阻塞状态,从而防止在冗余结构的网络拓扑中产生回路。

下面来分析广播风暴是如何形成的。

在一个存在物理环路的二层网络中,Server/Host X发送了一个广播数据帧(Broadcast),Switch A从上方的端口接收到广播帧,做洪泛处理,转发至下面的端口。通过下面的连接,广播帧将到达Switch B的下方端口,如图2-21所示。

图2-21 广播风暴(1)

交换机在下方的端口收到了一个广播数据帧,将做洪泛处理,通过上方的端口转发此帧,Switch A将在上方端口重新接收到这个广播数据帧,如图2-22所示。

图2-22 广播风暴(2)

由于交换机执行的是透明桥的功能,在转发数据帧时不对帧做任何处理。所以对于再次到来的广播数据帧,Switch A不能识别出此数据帧已经被转发过,Switch A还将对此广播数据帧做洪泛的操作。

广播数据帧到达Switch B后会做同样的操作,并且此过程会不断进行下去,无限循环。以上分析的只是广播数据帧被传播的一个方向,实际环境中会在两个不同的方向上产生这一过程。在很短的时间内大量重复的广播数据帧被不断循环转发消耗掉整个网络的带宽,而连接在这个网段上的所有主机设备也会受到影响,CPU将不得不产生中断来处理不断到来的广播数据帧,极大地消耗系统的处理能力,严重时可能导致死机,如图2-23所示。

图2-23 广播风暴(3)

一旦产生广播风暴系统将无法自动恢复,必须由系统管理员人工干预恢复网络状态。某些设备在端口上可以设置广播限制,一旦特定时间内检测到广播数据帧超过了预先设置的阀值即可进行某些操作,如关闭此端口一段时间以减轻广播风暴对网络带来的损害。但这种方法并不能真正消除二层的环路带来的危害。

接下来看一个数据帧被多次复制的情况。

Server/Host X发送一个单播数据帧(Unicast),目的为Router Y的本地端口,而此时Router Y的本地端口的MAC地址对于Switch A与Switch B都是未知的。

单播数据帧通过上方的网段直接到达 Router Y,同时到达交换机 A 上方的端口,如图2-24所示。

图2-24 数据帧复制(1)

当交换机对于帧的目的MAC地址未知时交换机会进行洪泛的操作。

Switch A会将此数据帧从下方的端口转发出来,单播数据帧到达Switch B的下方端口,Switch B的情况与Switch A相同,也会对此数据帧进行洪泛的操作,从上方的端口将此数据帧转发出来,同样的单播数据帧再次到达Router Y的本地端口,如图2-25所示。

图2-25 单播数据帧复制(2)

根据上层协议与应用的不同,同一个单播数据帧被传输多次可能导致应用程序的错误。

最后介绍MAC地址表不稳定的问题。

Server/Host X发送一单播数据帧,目的为Router Y的本地端口,而此时Router Y的本地端口的MAC地址对于Switch A与Switch B都是未知的。

单播数据帧通过上方的网段到达Switch A与Switch B的上方端口。Switch A与Switch B将此数据帧的源MAC地址(Server/Host X的MAC地址)与各自的Port 0相关联并记录到MAC地址表中,如图2-26所示。

图2-26 MAC地址漂移(1)

此时两个交换机对此数据帧的目的MAC地址是未知的,当交换机对帧的目的MAC地址未知时,交换机会进行洪泛的操作。两台交换机都会将此数据帧从下方的Port 1转发出来并将到达对方的Port 1。

两个交换机都从下方的Port 1收到一个单播数据帧,其源地址为Server/Host X的MAC地址,交换机会认为Server/Host X连接在Port 1所在网段而意识不到此数据帧是经过其他交换机转发的,所以会将Server/Host X的MAC地址改为与Port 1相关联并记录到MAC地址表中。交换机学习到了错误的信息,并且造成交换机 MAC 地址表的不稳定。这种现象也被称为MAC地址漂移,如图2-27所示。

图2-27 MAC地址漂移(2)

在此背景下,生成树协议(Spanning Tree Protocol,STP)应运而生,其主要作用为消除环路和冗余备份。STP 通过阻断冗余链路来消除网络中可能存在的路径回环,并且 STP仅仅是在逻辑上阻断冗余链路,当主链路发生故障后,被阻断的冗余链路将被重新激活从而保证网络的通畅。

2.3.2 STP的基本原理

生成树协议能够自动发现冗余网络拓扑中的环路,保留一条最佳链路做转发链路,阻塞其他冗余链路,并且在网络拓扑发生变化的情况下重新计算,保证所有网段的可达且无环路。STP 协议的基本思想十分简单,如果网络也能够像树一样生长就不会出现环路。STP的基本工作原理:通过BPDU(Bridge Protocol Data Unit,桥接协议数据单元)的交互传递STP计算所需要的条件,随后根据特定的算法,阻塞其特定端口,从而得到无环的树形拓扑。

下面来看一下STP的工作流程。

1.选举根网桥(Root Bridge)

所谓根网桥,简单来说就是树的根,它是生成树状网络的核心,其选举对象范围为所有网桥。在整个二层网络中,只能有一个根网桥,如图2-28所示。

根网桥的选举是比较网桥 ID,值小者优先。网桥 ID(Bridge ID)可理解为交换机的身份标志共8B,由16bit的网桥优先级与48bit的网桥MAC地址构成。网桥ID如图2-29所示。其中,优先级可配,默认值为32 768。另外,由于网桥的 MAC 地址具备全局唯一性,所以网桥ID也具备全局唯一性。

图2-28 选举根网桥

图2-29 网桥ID

2.选举根端口(Root Port)

根端口就是去根网桥路径最“近”的端口,根端口负责向根网桥方向转发数据。在每一台非根网桥上,有且只有一个根端口,如图2-30所示。

图2-30 选举根端口

根端口的选举将会按照以下顺序进行逐一比对,当某一规则满足时判定结束,选举完成。

① 比较根路径成本,值小者优先。

② 比较指定网桥(BPDU的发送交换机,此时可简单理解为相邻的交换机)的ID,值小者为优先。

③ 比较指定端口(BPDU的发送端口,此时可简单理解为相邻的交换机端口)的ID,值小者为先。

根路径成本为各网桥到达根网桥所要花费的开销,它由沿途各路径成本(Path Cost)叠加而来,如图2-31所示。

图2-31 根路径成本

路径成本根据链路带宽的高低制定,最初为线性计算方法,后变更为非线性。各类标准的路径成本如表2-2所示。其中Legacy为华为私有标准路径成本可在设备端口上进行手动修改。需要特别说明的是,对于普通的 FE 端口,如果是半双工模式,路径成本与标准一致;如果是全双工模式,会在标准的基础上减1,目的是让STP尽量选择全双工的端口。

表2-2 路径成本

在计算根路径成本时,仅计算收到BPDU端口(可简单理解为到达根网桥的出端口)的开销。

端口ID为端口的身份标志,由两个部分构成共2B,其中高4bit是端口优先级(Port Priority),低12bit是端口编号,如图2-32所示。端口优先级可以被配置,默认值是128。

图2-32 端口ID

3.选举指定端口(Designated Port)

指定端口为每个网段上离根最近的端口,由它转发该网段的数据。在每一个网段上,有且只有一个指定端口,如图2-33所示选举指定端口。

图2-33 选举指定端口

指定端口的选举规则同根端口的选举相同。值得特别说明的是根网桥上的所有端口皆为指定端口。根端口相对应的端口(与根端口直连的端口)皆为指定端口。

4.阻塞预备端口(Alternate Port)

如果一个端口既不是根端,也不是指定端口,则将成为预备端口,该端口会被阻塞不能转发数据,如图2-34所示。

图2-34 阻塞预备端口

2.3.3 STP端口状态

STP为进行生成树的计算一共定义了5种端口状态。不同状态下,端口所能实现的功能不同,STP端口状态如表2-3所示。

表2-3 STP端口状态

各状态之间的迁移有一定的规则,端口状态迁移如图2-35所示。当端口正常启用之后,端口首先进入Listening状态,开始生成树的计算过程。如果经过计算,端口角色需要设置为预备端口(Alternate Port),则端口状态立即进入Blocking;如果经过计算,端口角色需要设置为根端口(Root Port)或指定端口(Designated Port),则端口状态在等待一个时间周期之后从Listening状态进入Learning状态,然后继续等待一个时间周期之后,从Learning状态进入Forwarding状态,正常转发数据帧。端口被禁用之后则进入Disable状态。

图2-35 端口状态迁移

● 端口被选为指定端口(Designated Port)或根端口(Root Port);

● 端口被选为预备端口(Alternate Port);

● 经过时间周期,此时间周期称为Forward Delay,默认为15s。