1、1 1第11章 生成树协议(STP)技术11.1 STP的产生的产生11.2 生成树协议生成树协议(STP)的基本原理的基本原理11.3 快速生成树协议快速生成树协议(RSTP)简介简介11.4 多生成树协议多生成树协议(MSTP)简介简介小结小结2 2主要内容:主要内容:STP协议的基本工作原理的产生及解决的问题 STP协议 STP协议的类型3 3单点故障会导致整个网络瘫痪。为了保证整个网络的可靠性和安全性,可以引入冗余链路或备份链路。物理上的备份链路会产生物理环路(或多重环路),从而导致广播风暴、重复帧以及MAC地址表不稳定(MAC地址漂移)等问题。同时,在实际的组网应用中经常会形成复杂的
2、多环路连接。面对如此复杂的环路,网络设备必须有一种解决办法在存在物理环路的情况下阻止两层环路的发生。11.1 STP的产生的产生4 4此时,为了保证网络可靠安全,同时又不产生环路问题,可以通过生成树协议来实现,即将路由器或交换机的某些端口置于阻塞状态,从而防止在冗余结构的网络拓扑中产生回路。5 511.1.1 广播风暴广播风暴我们可以通过图11-1来分析广播风暴是如何形成的。6 6图11-1 广播风暴(1)7 7在一个存在物理环路的两层网络中,主机X(Server/host A)发送了一个广播数据帧,交换机A(Switch A)从上方的端口接收到广播帧,做洪泛处理,转发至下面的端口。通过下面的
3、连接,广播帧将到达交换机B(Switch B)的下方端口。交换机在下方的端口上收到了一个广播数据帧,将做洪泛处理,通过上方的端口转发此帧,交换机A将在上方端口重新接收到这个广播数据帧,如图11-2所示。由于交换机执行的是透明桥的功能,转发数据帧时不对帧做任何处理。所以对于再次到来的广播帧,交换机A不能识别出此数据帧已经被转发过,交换机A还将对此广播帧做洪泛的操作。8 8图11-2 广播风暴(2)9 9广播帧到达交换机B后会做同样的操作,并且此过程会不断进行下去,无限循环。以上分析的只是广播被传播的一个方向,实际环境中会在两个不同的方向上产生这一过程。在很短的时间内大量重复的广播帧被不断循环转发
4、,消耗掉整个网络的带宽,而连接在这个网段上的所有主机设备也会受到影响,CPU将不得不产生中断来处理不断到来的广播帧,极大地消耗系统的处理能力,严重时可能导致死机。如图11-3所示。10 10图11-3 广播风暴(3)11 11一旦产生广播风暴系统将无法自动恢复,必须由系统管理员人工干预恢复网络状态。(某些设备在端口上可以设置广播限制,一旦特定时间内检测到广播帧超过了预先设置的阈值,即可进行某些操作,如关闭此端口一段时间,以减轻广播风暴对网络带来的损害。但这种方法并不能真正消除两层环路带来的危害。)12 1211.1.2 数据帧的重复复制数据帧的重复复制我们可以通过图11-4来分析一个数据帧被多
5、次复制的情况。主机X(Server/host X)发送一单播数据帧,目的为路由器Y(Router Y)的本地接口,而此时路由器Y的本地接口的MAC地址对于交换机(Switch)A与B都是未知的。数据帧通过上方的网段直接到达路由器Y,同时到达交换机A上方的端口。13 13图11-4 数据帧复制(1)14 14当交换机对于帧的目的MAC地址未知时,交换机会进行洪泛的操作。交换机A会将此数据帧从下方的端口转发出来,数据帧到达交换机B的下方端口,交换机B的情况与交换机A相同,也会对此数据帧进行洪泛的操作,从上方的端口将此数据帧转发出来,同样的数据帧再次到达路由器Y的本地接口。如图11-5所示。根据上层
6、协议与应用的不同,同一个数据帧被传输多次可能导致应用程序的错误。15 15图11-5 数据帧复制(2)16 1611.1.3 MAC地址漂移地址漂移我们可以通过图11-6分析MAC地址表不稳定的问题。主机X发送一单播数据帧,目的为路由器Y的本地接口,而此时路由器Y的本地接口的MAC地址对于交换机A与B都是未知的。数据帧通过上方的网段到达交换机A与交换机B上方的端口。交换机A与交换机B将此数据帧的源MAC地址,即主机X的MAC地址与各自的port0相关联并记录到MAC地址表中。17 17图11-6 MAC地址漂移(1)18 18而此时两个交换机对此数据帧的目的MAC地址是未知的,当交换机对帧的目
7、的MAC地址未知时,交换机会进行洪泛的操作。两台交换机都会将此数据帧从下方的port 1转发出来并将到达对方的port 1。两个交换机都从下方的port 1收到一个数据帧,其源地址为主机X的MAC地址,交换机会认为主机X连接在port 1所在网段而意识不到此数据帧是经过其他交换机转发的,所以会将主机X的MAC地址改为与port 1相关联并记录到MAC地址表中。交换机学习到了错误的信息,并且造成交换机MAC地址表的不稳定。这种现象也被称为MAC地址漂移,如图11-7所示。19 19图11-7 MAC地址漂移(2)2020用生成树协议(Spanning-Tree Protocol,STP)可以在有
8、物理环路的网络中阻止两层环路的产生,如图11-8所示。生成树协议能够自动发现冗余网络拓扑中的环路,保留一条最佳链路做转发链路,阻塞其他冗余链路,并且在网络拓扑结构发生变化的情况下重新计算,保证所有网段可达且无环路。11.2 生成树协议生成树协议(STP)的基本原理的基本原理21 21STP协议的基本思想十分简单。大家知道,自然界中生长的树一般情况下是不会出现环路的,如果网络也能够像一棵树一样生长,就不会出现环路。于是,STP协议中定义了根桥(Root Bridge)生成树的参考点、根端口(Root Port)非根桥到达根桥的最近端口、指定端口(Designated Port)连接各网段的转发端
9、口、路径开销(Path Cost)整个路径上端口开销之和等概念,目的就在于通过构造一棵自然树的方法达到裁剪冗余环路的目的,同时实现链路备份和路径最优化。用于构造这棵树的算法称为生成树算法SPA(Spanning Tree Algorithm)。2222图11-8 STP的作用232311.2.1 生成树协议生成树协议STP的运作过程的运作过程1.根桥的选择根桥的选择网桥之间必须要进行一些信息的交流。这些信息交流单元就称为配置消息BPDU(Bridge Protocol Data Unit)。STP BPDU是一种两层报文,目的MAC是多播地址01 80 C2 00 00 00,缺省情况下每2秒
10、发出。所有支持STP的网桥都会接收并处理收到的BPDU报文。该报文的数据区里携带了用于生成树计算的所有有用信息。BPDU的作用除了在STP刚开始运行时选举根桥外,其他的作用还包括检测发生环路的位置,通告网络状态的改变,监控生成树的状态等。BPDU数据单元的组成如图11-9所示。2424图11-9 BPDU数据单元的组成2525根桥选举的依据是网桥优先级和网桥MAC地址组合成的桥ID(Bridge ID)。桥ID最小的网桥将成为网络中的根桥。各网桥都以默认配置启动,在网桥优先级都一样(默认优先级是32768)的情况下,MAC地址最小的网桥成为根桥,它的所有端口的角色都成为指定端口,进入转发状态;
11、其他的网桥均为非根桥。如图11-10所示,两个网桥的优先级是一样的,此时,交换机X(Switch X)的MAC地址较小,则为根桥;交换机Y(Switch Y)为非根桥。2626图11-10 根桥的选择2727开始启动STP时,所有交换机将根桥ID设置为与自己的桥ID相同,即认为自己是根桥,如图11-11所示。当收到其他交换机发出的BPDU并且其中包含比自己的桥ID小的根桥ID时,交换机将此学习到的具有最小桥ID的交换机作为STP的根桥。当所有交换机都发出BPDU后,具有最小桥ID的交换机被选择作为整个网络的根桥。根桥选举出以后,在正常情况下只有根桥每隔2秒从所有指定端口发出BPDU。2828图
12、11-11 根桥的产生29292.STP的端口类型的确定的端口类型的确定STP的端口类型包括指定端口、根端口以及阻塞端口三种。1)指定端口的选择规则(1)根桥上的端口均是指定端口;(2)每条链路上有且只有一个指定端口DP;(3)判断:路径开销+Bridge ID(优先级+MAC地址)其中,路径开销=100Mb/s/链路带宽;当拓扑结构比较复杂时,指定端口的确定要通过路径开销的大小来确定。30302)根端口、阻塞端口的选择规则(1)根端口是针对非根桥而言的;(2)每个非根桥上有且只有一个根端口RP;(3)根端口是到根桥最近的端口;(4)判断:路径开销+Bridge ID(优先级+MAC地址)+P
13、ort ID除了指定端口和根端口以外,剩余的端口就是阻塞端口,从而有效阻止了两层环路的形成,保证了整个网络的可靠性和安全性。如图11-12所示。31 31图11-12 STP的端口类型的确定3232根路径是根据BPDU中根路径开销、传输桥ID、端口ID进行选择的。端口ID由1字节端口优先级与1字节端口号组成。根路径开销为到达根桥所经过的所有端口开销的总和。当非根桥检测到了环路的存在后,必须保留一条链路做转发链路,阻塞掉其他冗余链路。选择转发链路的方式为:选择链路开销最小的链路做转发链路,如果存在多条链路开销相等且具有最小开销的链路,则选择有最小转发桥ID的链路;如果存在多条桥ID相同的有最小链
14、路开销的链路,则选择有最小转发端口ID的链路,如图11-13和图11-14所示。3333图11-13 STP的端口类型的产生3434图11-14 STP的端口类型的产生353511.2.2 STP 的端口状态的端口状态如图11-15所示,交换机的端口在STP环境中共有5种状态:阻塞(Blocking)、倾听(Listening)、学习(Learning)、转发(Forwarding)、关闭(Off)。关闭状态为交换机非工作状态(休息),图11-15未画出。交换机上一个原来被阻塞掉的端口由于在最大老化时间内没有收到BPDU,从阻塞状态转变为倾听状态,倾听状态经过一个转发延迟(15 s)到达学习状
15、态,经过一个转发延迟时间的MAC地址学习过程后进入转发状态。如果到达倾听状态后发现本端口在新的生成树中不应该由此端口转发数据,则直接回到阻塞状态。3636图11-15 STP 的端口状态373711.2.3 STP的计时器的计时器(Timer)STP时间Timer如图11-16所示。最大的老化时间(Max Age Time):数值范围为640 s,缺省为20 s。如果在超出最大老化时间之后,还没有从原来转发的端口收到根桥发出的BPDU,那么交换机认为链路或端口发生了故障,需要重新计算生成树,打开一个原来阻塞掉的端口。3838如果交换机在超出最大老化时间之后没有在任何端口收到BPDU,说明此交换
16、机与根桥失去了联系,此交换机将充当根桥,向其它所有的交换机发出BPDU数据包。如果该交换机确实具有最小的桥ID,那么它将成为根桥。当拓扑发生变化时,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为转发延迟(Forward Delay),协议默认值是15 s。3939图11-16 STP时间Timer类型4040在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。为了解决临时环路的问题,生成树使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加上一个只学习MAC地址但不参与转发的中间状态,两次状态切换的时间长度
17、都是转发延迟,这样就可以保证在拓扑变化时不会产生临时环路。但由此导致STP的切换时间比较长,典型的切换时间为最大的老化时间加2次转发延迟时间,约为50 s。41 41对于运行STP的交换机来说,收敛(Convergence)的含义就是指所有的交换机的端口都处于Forwarding或Blocking状态,状态稳定,没有拓扑结构发生变化。当网络拓扑发生变化时,交换机必须重新计算生成树,在新的生成树没有完全计算、生成之前,为了防止临时环路的产生,所有链路都不转发数据。从发现状态改变到新的生成树计算完成的这段时间叫做收敛时间。通常STP的收敛时间约为50 s。由于标准STP的收敛时间较长,导致很多应用
18、在切换过程中受影响。针对这个问题提出了RSTP(IEEE 802.1w),即快速生成树协议,可以显著减少收敛时间。4242RSTP(Rapid Spanning Tree Protocol)称为快速生成树协议,它比STP(即SSTP模式)提供了更快的收敛速度,即在网络拓扑发生变化时,原来冗余的交换机端口在点对点的连接条件下,端口状态可以迅速迁移(DiscardingForword)。11.3 快速生成树协议快速生成树协议(RSTP)简介简介434311.3.1 端口角色端口角色RSTP靠指派端口角色和判断活跃拓扑来提供生成树的快速收敛。RSTP建立于IEEE 802.1D STP来选择有最高交
19、换机优先级(最低数字的优先级值)的交换机作为根交换机,正如“根交换机选择”部分中描述的那样。接着,RSTP指派这些端口角色中的一个给特定端口:根端口当交换机转发数据包给根交换机时,提供最好路径(最低开销)。指定端口连接指定交换机,当从局域网转发数据包到根交换机时,该指定交换机拥有最短路径开销。这个把指定交换机连在局域网上的端口被称为指定端口。4444供选择端口提供一条由当前根部端口提供的到该根交换机的供选择路径。备份端口作为由一个指定端口提供的到生成树叶节点(末端节点)路径的备份。当两个端口被一个点到点链路的一个环回(Loopback)连在一起时,或者当一个交换机有两个或多个到共享局域网段的连
20、接时,一个备份端口才能存在。禁用端口在生成树运行中不担当任何角色。一个有根端口或指定接口角色的端口被包含在活跃拓扑中。一个有供选择或备份端口角色的端口不被包含在活跃拓扑中。4545在整个网络都有协调的端口角色的一个稳定拓扑中,RSTP确保每个根端口和指定端口立即转换为转发状态,同时所有的冗余和备份端口总是在丢弃状态(对等于802.1D中的阻断)。端口状态控制转发和学习有步骤地运行。表11-1提供了一个STP(802.1D)和RSTP端口状态的对比。指定端口始于监听状态。4646表表11-1 端口状态对比端口状态对比474711.3.2 快速收敛快速收敛RSTP提供交换机,一个交换端口,或者一个
21、局域网失效后的可连通性的快速恢复。它为边缘端口、新根端口以及下面通过点到点链路而连接的端口提供了快速收敛。边缘端口如果用户在一个RSTP交换机上用接口配置命令配置一个端口为边缘端口,该边缘端口立即转换为转发状态。一个边缘端口就像一个未启动STP的端口,并且用户应该只在连接了一个单独的末端站点的端口上启用它。根端口如果RSTP选择了一个新端口,则它阻断旧根端口并且立即转换新根端口为转发状态。4848点到点链路如果通过一个点到点链路连接一个端口到另一个端口,并且本地端口成为一个指定端口,它使用计划同意握手(Proposal-Agreement Handshake)的其它端口协商一个快速转换来确保一
22、个无环路的拓扑。假设有两个交换机A、B用一条链路相连,交换机A通过点到点链路被连接到交换机B,并且所有端口都为阻断状态。假设交换机A有一个和交换机B一样的优先级数字值。交换机A发送一个计划(Proposal)消息(一个带有Proposal标志设置的BPDU)给交换机B,计划它自身作为指定交换机。4949在收到交换机B的同意(Agreement)消息后,交换机A立即也转换它自己的指定端口为转发状态。因为交换机B阻断了所有它自己的非边缘端口,并且在交换机A和交换机B之间有一条点到点的链路,所以无环路的网络被构成。当交换机C被连接到交换机B时,一个类似的握手消息设置被交换。交换机C选择连接交换机B的
23、端口作为它自己的根端口,并且两个端点都立即转换为转发模式。随着这个握手过程的每次重复,更多的交换机加入到活跃拓扑中。就像网络收敛一样,这个计划同意握手过程从根一直到生成树的叶节点(末端节点)。5050交换机从端口双工模式判断链路类型:一个全双工端口被认为有一个点到点的连接;一个半双工的端口被认为有一个共享连接。51 51多生成树协议(Multiple Spanning Tree Protocol,MSTP)增加了实例和VLAN映射的概念,SSTP模式和RSTP模式均可以当作MSTP模式的一种特例。MSTP模式还提供了VLAN环境的快速聚合和负载均衡。11.4 多生成树协议多生成树协议(MSTP
24、)简介简介5252在SSTP模式和RSTP模式下,没有VLAN的概念,每个端口的状态只有一种,即端口在不同VLAN中的转发状态是一致的。而在MSTP模式下,可以存在多个Spanning Tree实例,端口在不同VLAN下的转发状态可以不同;在MST区域内部可以形成多个独立的子树实例,实现负载均衡。基于多实例的多生成树协议(MSTP)如图11-17所示。5353图11-17 多生成树协议(MSTP)5454传统的STP属于CST,即Common Spanning Tree(公共生成树),无论存在多少VLAN,只运行一个生成树进程,这种方式对环路的处理方式是保留一条链路转发数据,阻塞其余所有冗余链
25、路,所有的数据转发必须通过处于转发状态的链路,其余链路处于阻塞状态,不能转发数据。设备无法分成利用多个端口、多条链路的处理能力。MSTP是基于多实例(instance)的多生成树协议。在网络中可以设置多个实例,每个实例运行一个STP进程,将VLAN分组,加入到不同的实例中。5555每个实例运行一个生成树进程。通过人为调节参数可以使同一个端口在不同的实例中的状态不同,比如对于图11-17所述情况,Port 1在instance 1中处于转发状态,在instance 2中处于阻塞状态,而Port 2正好相反。正常情况下,处于instance 1中的所有VLAN通过Port 1转发,处于instan
26、ce 2中的所有VLAN通过Port 2转发。可以充分利用设备端口与线路的转发能力,网络流量在多条线路上进行负载均衡。5656一旦链路或端口发生故障,比如下面的链路发生故障而无法转发数据,对处于instance 1中的所有VLAN的数据转发没有影响,而instance 2的STP检测到状态变化,重新计算后将打开原来阻塞的Port 1,完成状态的切换。采用MSTP的优点是避免环路故障,自动切换的同时可以实现二层的负载均衡。而且与PVST(Per Vlan Spanning Tree,每VLAN生成树)相比,不必为每个VLAN运行一个独立的生成树进程,可以节省交换机与网络的处理能力与资源。5757本章主要讲述了:本章主要讲述了:(1)STP协议的产生及解决的问题;(2)STP协议的基本工作原理;(3)RSTP与MSTP(简介)。小小 结结