收藏 分享(赏)

STP生成树协议原理与算法简析.doc

上传人:精品资料 文档编号:11044483 上传时间:2020-02-05 格式:DOC 页数:16 大小:342KB
下载 相关 举报
STP生成树协议原理与算法简析.doc_第1页
第1页 / 共16页
STP生成树协议原理与算法简析.doc_第2页
第2页 / 共16页
STP生成树协议原理与算法简析.doc_第3页
第3页 / 共16页
STP生成树协议原理与算法简析.doc_第4页
第4页 / 共16页
STP生成树协议原理与算法简析.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、STP 生成树协议原理与算法简析简介在实际的网络环境中,物理环路可以提高网络的可靠性,当一条线路断掉的时候,另一条链路仍然可以传输数据。但是,在交换网络中,当交换机接收到一个未知目的地址的数据帧时,交换机的操作是将这个数据帧广播出去,这样,在存在物理的交换网络中,就会产生一个双向的广播环,甚至产生广播风暴,导致交换机死机。这就产生一个矛盾,需要物理环路来提高网络可靠性,而环路又可能产生广播风暴,如何才能两全其美呢?本章将要讲述的 STP,就是用来解决这个矛盾的。 STP(Spanning Tree Protocol,生成树协议)是根据 IEEE 802.1D 标准建立的,用于在局域网中消除数据

2、链路层物理环路的协议。运行该协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某些端口进行阻塞,最终将环路网络结构修剪成无环路的树型网络结构,从而防止报文在环路网络中不断增生和无限循环,避免设备由于重复接收相同的报文所造成的报文处理能力下降的问题发生。STP 采用的协议报文是 BPDU(Bridge Protocol Data Unit,桥协议数据单元) ,也称为配置消息,BPDU 中包含了足够的信息来保证设备完成生成树的计算过程。STP 即是通过在设备之间传递 BPDU 来确定网络的拓扑结构。1 STP 生成树协议1.1 STP 的主要作用消除环路:通过阻断冗余链路来消除网络中可能存在

3、的路径回环。链路备份:当前活动路径发生故障时,激活冗余备份链路,恢复网络连通性。1.2 STP 的基本原理:通过在交换机之间传递一种特殊的协议报文BPDU (在 IEEE 802.1D 中这种协议报文被称为“配置消息” )来确定网络的拓扑结构。配置消息中包含了足够的信息来保证交换机完成生成树计算。 (注:此 BPDU 被称为配置 BPDU,另外 STP 还有 TCN BPDU。 )DMASMAL/TLC Headr paylod0x180c20 0x4203BPDU数 据 报 文 字 节 2协 议 版 本 1标 志 位 18482Max Age22目 的 MAC地 址是 一 个 固 定 的组

4、播 地 址 源 MAC地 址是 发 送 配 置消 息 的 桥 的MAC地 址 。 配 置 消 息 固 定的 链 路 头帧 长 域 值协 议 IDBPU类 型根 桥 ID最 短 路 径 开 销指 定 桥 I指 定 端 口 IDHelo TimFrward Delayes ge数 据 报 文 字 节协 议 版 本标 志 位目 的 地 址是 一 个 固 定 的组 播 地 址 源 地 址是 发 送 配 置消 息 的 桥 的地 址 。 配 置 消 息 固 定的 链 路 头帧 长 域 值协 议 类 型根 桥最 短 路 径 开 销指 定 桥指 定 端 口图 1 BPDU 的报文格式注意看 BPDU 数据报文

5、的最后 8 个字段,分别是:根桥 ID:由树根的优先级( 0-65535,默认 32768)和 MAC 地址组合而成;到树根的最短路径开销(实际由 PortPathCost 叠加而成) ,有两个标准dot1d-1998,默认值为 100 和 dot1t,默认值为 200000;指定桥的 ID:由指定交换机的优先级和 MAC 地址组合而成;指定端口的 ID:由指定端口的优先级( 0-256,默认 128)和端口编号组成;配置消息的生存期:MessageAge;配置消息的最大生存期:MaxAge;配置消息发送的周期:HelloTime;端口状态迁移的延时:ForwardDelay。启动了 STP

6、的交换机互相之间通过发送配置 BPDU 来完成根桥,指定桥的选举,各端口状态的选择和整个网络拓扑结构的确定。比较的关键部分在于这八个字段中的前四个字段,即:根桥 ID、路径开销、指定桥 ID 和指定端口的 ID。其实还有一个接收端口的 ID,用于本地比较(当交换机的 2 个端口都收到相同的 BPDU 时比如上连一个 stp disable 的交换机或 hub) 。比较的原则:从上到下、从左到右数值小者优先。STP 协议使用的所有 BPDU 都是组播报文,目的 MAC 是 01-80-c2-00-00-00。1.3 STP 端口的角色和状态STP 拓扑结构的建立微观上说是一个全网交换机互相交互的

7、过程,各台交换机相互之间不停的发送配置 BPDU,发送和接受 BPDU 的是各 switch 的 Ports,BPDU 不单在不同交换机的端口之间比较,也在交换机的内部作比较,如果发现比自己“优”的 BPDU,就进行报文的更新,如果发现对方传来的 BPDU 不如自己的,则丢弃报文,直到再收不到比自己更优的 BPDU 为止。当网络中所有的交换机都处于这种状态的时候我们可以认为拓扑结构已经建立,但根端口和指定端口还得经过 2 个 Forward Delay Time 才能进入转发状态。所以 STP拓扑结构的建立实际上可以理解为端口角色的建立,所有端口都为指定端口的交换机被选为根桥,其余的为指定桥。

8、这里要提到 5 个概念:根桥,指定桥,根端口,指定端口,Block 端口。根桥就是“网桥 ID”最优的桥,当 STP 的拓扑结构稳定之后由根桥负责每 2 秒(Hello Time)向树中所有的网桥发送配置 BPDU 报文,其他网桥接收并转发。根端口即去往根桥路径最近的端口,这个最近的衡量是靠 Root Path Cost 来判定的。有关Path Cost 的计算,是每当一个端口收到一个 BPDU 后,会在该 BPDU 所指示的 Path Cost上加上该端口的 Port Path Cost(这是可以人为配置的) 。比较累计 Root Path Cost 最小的端口就是根端口,如果有两条开销相同

9、的路径,那么就选择桥 BID 较小的。指定桥就是对下游来说向它转发 BPDU 报文的桥,一个 LAN 上除了根桥以外的所有网桥都是指定桥。为什么这么说呢?根据定义而来,指定桥上必定有指定端口(即使是网络边缘的网桥也有连接到主机的端口) ,而指定端口就是用来转发 BPDU 报文的。这里要注意的是拓扑稳定后 Root Port 是不发送 BPDU 报文的,虽然它的状态是 Forwarding,它只接收BPDU。指定端口:即在一个 LAN 里面负责转发 BPDU 的端口,根桥和指定桥上都有它,但根端口只在指定桥上有,同样 block 端口也只存在于指定桥上。Block 端口:即被对方的指定端口抑制的

10、端口,Block 端口不转发任何报文,但他接收BPDU,监听网络变化。根端口、指定端口、Block 端口即为 STP 网桥端口的三个角色。1.4 端口状态:如图所示,一共有 5 种端口状态:表 1 STP 的五种端口状态前三个状态之间的转换各需要经过一个 Forwarding Delay Time(15s) ,这也是可以人为配置的。关于几个计时器将在后面的内容加以介绍。1.5 STP 工作原理生成树算法及验证(STP 选举过程). 生成树算法生成树协议运行生成树算法(STA) 。生成树算法很复杂,但是其过程可以归纳为以下三个步骤。() 选择根网桥(ROOT BRIDGE)Forwarding

11、转发用户流量的状态,只有根端口或指定端口才有这种状态。Learning构建 MAC 地址表,这时接收到用户帧,网桥会填充自己MAC 地址表。所以是学习“ 状态”。Listening 根桥、根端口、指定端口的选择就是在该状态内完成。Blocking 仅仅接收 Configuration BPDU。Disabled 或 Down,认为阻断或物理上断掉。() 选择根端口(ROOT PORTS)() 选择指定端口(DESIGNATED PORTS)*名词解释: 网桥的交换机的前身,由于 STP 是在网桥基础上开发的,因此现在交换机的网络中仍然沿用网桥这一术语。*下面以一个例子来讲解这几个步骤的选择过程

12、,它采用如图.所示的网络拓扑。图.STP 收敛过程示例拓扑图要将图所示的网络结构变成一个无环的拓扑,首先,STP 要选择根网桥,前面讲过,STP 是将一个环形的拓扑变成一个树状的拓扑结构,因此选择根网桥实现上就是为网络选出一个树根,那么选择根网桥的依据是什么呢?) 选择根网桥选择根网桥的依据是网桥 ID,网桥 ID 是一个八字节的字段,其组成结构如图 4.6 所示,前面两个字节的十进制数称为网桥优先级,后六个字节是网桥的 MAC 地址。 网桥优先级是用于衡量网桥在生成树算法中优生级的十进制数,取值范围为65535,默认值是 32768.网桥 ID 中的 MAC 地址是交换机自身的 MAC 地址

13、.按照生成树算法的定义,当比较那个 STP 参数的两个取值时,值小的优先级高。因此,在选择根网桥的时候,比较的方法是看哪台交换机的网桥 ID 的值最小,优先级小的被选择为根网桥,在优先级相同的情况下,MAC 地址小的为根网桥。在如图.所示的拓扑中,SW2 的优先级为 4096,SW1 与 SW3 的优先级为默认值32768,因此,SW2 被选为根网桥,如图 .所示。图.收敛过程选择根网桥如果 SW2 的优先级也是 32768 时,三台交换机的优先级相同。比较三台交换机的MAC 地址,SW2 的 MAC 地址最小,所以 SW2 被选为根网桥。) 选择根端口选出了根网桥之后,网络中的每台交换机必须

14、和根网桥建立关联,因此,STP 将开始选择根端口的过程。根端口存在每个非根网桥上,需要在每个非根网桥上选择一个根端口。选择根端口的依据按照顺序依次如下:到根网桥最低的根路径成本。直连的网桥 ID 最小端口 ID 最小根路径成本是两个网桥间的路径上所有链路的成本之和,也就是一个网桥到达根网桥的中间所有链路的路径成本之和,如图 4.8 所示图 4.8 根路径成本与路径成本路径成本用来代表一条链路带宽的大小,见表 4-1,一条链路的带宽越大,它的传输数据的成本也就越低。4-1 带宽与路径成本的关系端口 ID 是一个二字节的 STP 参数,由一个字节的端口优先级和一个字节的端口编号组成,如图 4.9

15、所示。端口优先级是一个可配置的 STP 参数,在基于 IOS 的交换机上,端口优先级的十进制取值范围是 0255,默认值是 128。端口编号是 catalyst 用于列举各个端口的数字标识符。在 STP 选择根端口的时候,首先比较交换机端口的根路径成本,根路径成本低的为根端口,当根路径成本相同的时候,比较连接的交换机的网桥 ID 值,选择网桥 ID 值小的作为根端口;当网桥 ID 相同的时候,比较端口 ID 值,选择较小的作为根端口。*注意啦:在比较端口 ID 时,比较的是接收到的对端的端口 ID 值*在如图 4.10 所示的拓扑中,已经选出了根网桥,那么下一步就需要在 SW1 和 SW3 上

16、各选择一个根端口,在本例中,所有的链路都是 100MB/S 的,那么下一步就需要在 SW1 和SW3 上直接与 SW2 相连的接口的根路径成本是 19,而 SW1 与 SW3 之间连接的端口,其根路径成本应该是 19+19=38;因此,在 SW1 与 SW3 上,直连 SW2 的端口被选为根端口,如图 4.10图 4.10 STP 收敛过程选择根端口) 选择指定端口选择完根网桥和每台交换机的根端口后, 一个树形结构已初步形成,但是,所有链路仍连接在一起,并可以都处于活动状态,最后导致形成环路。为了消除环路形成的可能,STP 进行最后的计算,在每一个网段上选择一个指定端口,选择指定端口的依据有三

17、个:根路径成本较低所在的交换机的网桥 ID 值较小端口 ID 较小在 STP 选择指定端口的时候,首先比较同一网段上端口中根路径成本最低的,也就是将到达根网桥最近的端口作为指定端口;当根路径成本相同的时候,比较这个端口所在的交换机的网桥 ID 值,选择一个网桥 ID 值小的交换机上的端口作为指定端口;当网桥 ID 相同的时候,也就是说,有几个位于同一交换机上的端口时,比较端口 ID 值,选择较小的作为指定端口。另外,根网桥上的接口都是指定端口,因为根网桥上端口的根路径成本为 0如图 4.11 所示的拓朴中,首先,作为根网桥的 SW2 上的端口都是指定端口。那么在 SW1 与 SW3 连接的网段

18、上需要在两个端口之间选出一个指定端口来。首先比较两个端口的根路径成本,这两个端口的根路径成本的值都是 38 (19+19) ,那么只能比较网桥的 ID 了,现在 SW1 与 SW3 的网桥优先级相同,SW3 的 MAC 地址小于 SW1的 MAC 地址,因此,SW3 的网桥 ID 小,所以 SW3 上的端口选作指定端口(如图 4.11 所示) 。STP 的计算过程结束,这时,只有在 SW1 上连接到 SW3 的端口既不是根端口,也不是指定端口,那么这个端口被阻塞(BLOCK) 。被阻塞的端口不能传输数据。由于 SW1 上连接 SW3 的接口被阻塞,所以图 4.11 所示的拓朴可以等价为图 4.

19、12 SW1 和 SW3 之间的链路成为备份链路。1.6 STP 算法现在重点讲一下 STP 算法的实现,纯理论的讲算法过于枯燥,这儿以三台全互连的交换机为例描述一下实现过程。 (注:关于状态机的标准实现可以参考 IEEE.802.1D,这里只用容易理解的语言描述整个过程,可能有细节说法上不太规范,但更方便理解。 )AP2AP1BP1BP2 CP1CP2236图 2 STP 算法拓扑图为了描述方便,这里指比较 BPDU 的前四项:根桥 ID(以以太网交换机的优先级表示) ,根路径开销,指定交换机 ID(以以太网交换机的优先级表示) ,指定端口 ID(以端口号表示) 。假设 SWA,SWB,SW

20、C 的桥优先级分别为 0,1,2。各链路开销为 2,3,6。这里要特别说明一点:Root Path Cost 不是一个可配置项,即它是由交换机根据 Port Path Cost 比较而累积得出的,Port Path Cost 才是一个可配置的选项。图中的链路开销可理解为 2 端端口的Port Path Cost,只不过它们恰好相同而已。(1)初始状态各台交换机的各个端口在初始时会生成以自己为根的配置消息,根路径开销为 0,指定交换机 ID 为自身交换机 ID,指定端口为本端口。Switch A:端口 AP1 配置消息:0,0,0,AP1端口 AP2 配置消息:0,0,0,AP2Switch B

21、:端口 BP1 配置消息:1,0,1,BP1端口 BP2 配置消息:1,0,1,BP2Switch C:端口 CP2 配置消息:2,0,2,CP2端口 CP1 配置消息:2,0,2,CP1(2)选出最优配置消息各台交换机都向外发送自己的配置消息。当某个端口收到比自身的配置消息优先级低的配置消息时,交换机会将接收到的配置消息丢弃,对该端口的配置消息不作任 何处理。当端口收到比本端口配置消息优先级高的配置消息的时候,交换机就用接收到的配置消息中的内容替换该端口的配置消息中的内容。然后以太网交换机将该 端口的配置消息和交换机上的其它端口的配置消息进行比较,选出最优的配置消息。配置消息的比较原则是:树

22、根 ID 较小的配置消息优先级高;若树根 ID 相同,则比较根路径开销,比较方法为:用配置消息中的根路径开销加上本端口对应的路径开销之和(设为 S) ,则 S 较小的配置消息优先级较高;若根路径开销也相同,则依次比较指定交换机 ID、指定端口 ID、接收该配置消息的端口 ID 等。为便于表述,本例中假设只需比较树根 ID 就可以选出最优配置消息。(3)确定根端口,并阻塞冗余链路,然后更新指定端口的配置消息。交换机接收最优配置消息的那个端口定为根端口,端口配置消息不作改变;其它端口中,如果某端口的配置消息在过程“选出最优配置消息”中更新过,则交换机将 此端口阻塞,端口配置消息不变,此端口将不再转

23、发数据,并且只接收但不发送配置消息;如果某端口的配置消息在过程“选出最优配置消息”中没有更新过,则交换 机就将其定为指定端口,配置消息要作如下改变:树根 ID 替换为根端口的配置消息的树根 ID;根路径开销替换为根端口的配置消息的根路径开销加上根端口对应 的路径开销;指定交换机 ID 替换为自身交换机的 ID;指定端口 ID 替换为自身端口 ID。例子中各台交换机的比较过程如下:Switch A:端口 AP1 收到 Switch B 的配置消息, Switch A 发现本端口的配置消息优先级优于接收到的配置消息的优先级,就把接收到的配置消息丢弃。端口 AP2 的配置消息处理过程与端口AP1 类

24、似。Switch A 发现自己各个端口的配置消息中树根和指定交换机都是自己,则认为自己是树根,各个端口的配置消息都不作任何修改,以后周期性的向外发送配置消息。此时两个端口的配置消息如下:端口 AP1 配置消息:0,0,0 ,AP1。端口 AP2 配置消息:0,0,0 ,AP2。Switch B:端口 BP1 收到来自 Switch A 的配置消息,经过比较后 Switch B 发现接收到的配置消息的优先级比端口 BP1 的配置消息的优先级优,于是更新端口 BP1 的配置消息。端口 BP2 收到来自 Switch C 的配置消息,Switch B 发现该端口的配置消息优先级优于接收到的配置消息的

25、优先级,就把接收到的配置消息丢弃。则此时各个端口的配置消息如下:端口 BP1 配置消息:0,0,0 ,AP1,端口 BP2 配置消息:1,0,1 , BP2。Switch B 对各个端口的配置消息进行比较,选出端口 BP1 的配置消息为最优配置消息,然后将端口 BP1 定为根端口,这个过程中端口 BP2 的配置消息没有更新过,则将端口 BP2定位指定端口。整台交换机各个端口的配置消息都进行如下更新:根端口 BP1 配置消息不作改变:0 ,0,0,AP1。端口 BP2 配置消息中,树根 ID 更新为最优配置消息中的树根ID,根路径开销更新为 2,指定交换 机 ID 更新为本交换机 ID,指定端口

26、 ID 更新为本端口ID,配置消息变为: 0,2 , 1,BP2。然后 Switch B 各个指定端口周期性向外发送自己的配置消息。Switch C:端口 CP2 先会收到来自 Switch B 端口 BP2 更新前的配置消息1,0,1 ,BP2,Switch C 触发更新过程,更新后的配置消息如下:1,0,1,BP2 。端口 CP1 收到来自 Switch A 的配置消息0,0,0 ,AP2后 Switch C 也触发更新过程,更新后的配置消息如下:0,0,0,AP2。经过比较,端口 CP1 的配置消息被选为最优的配置消息,端口 CP1 就被定为根端口;而端口 CP2 就会被选为指定端口,并

27、发送更新后的 BPDU:0,6,2 ,CP2接着端口 CP2 会收到 Switch B 更新后的配置消息0 ,2 ,1,BP2,由于收到的配置消息比原配置消息优,则 Switch C 触发更新过程,更新后的配置消息为:0,2,1,BP2。同时端口 CP1 收到来自 Switch A 配置消息,比较后 Switch C 不会触发更新过程,配置消息仍然为:0,0,0,AP2。经过内部比较,( CP10,6, 0,AP2,CP20,5,1 ,BP2 )端口 CP2 的配置消息被选为最优的配置消息,端口 CP2 就被选为根端口,端口 CP1 的配置消息因为更新过,所以端口 CP1 就被阻塞,状态稳定后

28、,不接收从 Switch A 转发的数据,直到新的情况触发生成树的计算,比如从 Switch A 到 Switch C 的链路 down 掉,或者端口收到更优的配置消息。1.7 关于 STP 协议的手工选举方法交换机接收 BPDU 时开销值增加,发送 BPDU 时开销值不变选举根端口,比较接收的 BPDU选举指定端口,比较发送的 BPDU下面通过一个示例具体介绍,首先是拓扑图。1、选举根桥(Root Bridge)。优先级一样,比较 MAC 地址,SW1 为根桥。2、 选举每台非根桥交换机上的根端口(Root Port),比较接收到的 BPDU(BPDU 由根桥发出,即 SW1 发出) :SW

29、2:从 f0 端口收到的 BPDU 代价为 19;从 f1 端口收到的 BPDU 代价为 19+4+19=42;因此 f0 端口为根端口。SW3:从 g0 端口收到的 BPDU 代价为 19+19=38;从 g1 端口收到的 BPDU 代价为 19+4=23;因此 g1 端口为根端口。SW4:从 g0 端口收到的 BPDU 代价为 19;从 g1 端口收到的 BPDU 代价为 19+19+4=42;因此 g0 端口为根端口。3、选举每个网段上的指定端口(Designated Port),比较发出的 BPDU:SW1-SW2 网段:从 SW1/f0 口发出的 BPDU 代价为 0;从 SW2/f

30、0 口发出的 BPDU 代价为19+4+19=42;因此 SW1/f0 口为指定端口。SW1-SW4 网段:从 SW1/f1 口发出的 BPDU 代价为 0;从 SW4/g0 口发出的 BPDU 代价为19+19+4=42;因此 SW1/f1 口为指定端口。SW3-SW4 网段:从 SW3/g1 口发出的 BPDU 代价为 19+19=38;从 SW4/g1 口发出的 BPDU代价为 19;因此 SW4/g1 口为指定端口。SW2-SW3 网段:从 SW2/f1 口发出的 BPDU 代价为 19;从 SW3/g0 口发出的 BPDU 代价为19+4=23;因此 SW2/f1 口为指定端口。4、非根端口,非指定端口即为阻塞端口(Block Port),即 SW3/g0 口为阻塞端口。好了,有什么问题大家可以互相交流,这个方法在考试的时候很好用。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报