生成树协议介绍及算法实现.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

目录

TOC\o1-3\h\z\u生成树2

摘要2

原理2

选举根桥3

生成树端口状态6

收敛7

数据结构7

算法实现16

实现代码17

C++代码17

Linux中源码23

总结30

生成树

摘要

在交换中,通常会设多个交换设备,并在交换设备之间建立多个连接来提供链路的冗余性,但是这有可能是网络中产生环路。为了解决这个问题,在提供冗余的同时,我们可以使用生成树协议来防止产生网络环路。

生成树协议最早是由DEC公司开发的,后来,IEEE开发了自己的STP版本,称为802.1D,有兴趣的可自行查阅资料。STP的主要任务是阻止在第二层网络上产生网络环路。它监视着网络中的所有链路,通过关闭一些冗余的接口来确保在网络中不会产生环路。STP采用生成树算法,它首先创立一个拓扑数据库,然后搜索并破坏掉冗余的链路。运行了STP算法之后,帧就只能被转发到保险的有STP挑选出来的链路上。

原理

在介绍生成树原理之前,首先要来介绍一些专业术语:

BPDU:BPDU就是桥协议数据单元,所有的交换设备相互之间都交换信息,并利用这些信息来选出根交换设备,也根据这些信息来进行网络的后续配置。每台交换设备都对桥协议数据单元中的参数进行比拟,它们将BPDU传送给某个邻居,并在其中放入他们从其他邻居那里收到的BPDU。

根桥:根桥是ID最低的网桥,对于STP来说,关键的问题是为网络中所有的交换机推选出一个根桥,并让根桥成为网络中的焦点。在网络中,所有其他的决定,如哪一个端口要被阻塞,哪个端口要被置为转发状态——都是根据根桥的判断来做出的。

桥ID:SPT利用桥ID来跟踪网络中的所有交换机。桥ID是由桥优先级和MAC地址的组合来决定的。在网络中,桥ID最小的网桥为根桥。

非根桥:出了根桥外,其它所有网桥都是非根桥。他们相互之间都交换BPDU,并在所有交换机上更新STP拓扑数据库,以防止环路并对链路失效采取补救措施。

端口开销:当两台交换机之间有多条链路且都不是根端口时,就根据端口开销来决定最正确路径,链路的开销取决于链路的带宽。

根端口:根端口是指直接连接到根桥的链路所在的端口,或者到根桥的路径最短的端口。如果有多条链路连接到根桥,就通过检查每条链路的带宽来决定端口的开销,开销最低的端口就成为根端口。如果多条链路的开销相同,就使用桥ID效益一些的那个桥的端口。如果多条链路来自同一台设备,就使用端口号最低的那条链路。

非指定端口:非指定端口指开销比指定端口高的端口,非指定端口将被置为阻塞状态,它不能转发数据。

转发端口:指能够转发帧的端口。

阻塞端口:阻塞端口是指不能转发帧的端口,这样做是为了防止产生环路。然而,被阻塞的端口将始终监听帧。

正如上文提到的,STP的任务是找到网络中的所有链路,并关闭较次的冗余链路,这样就可以防止网络环路的产生。为了到达这个目的,STP首先要选举一个根桥,由根桥来负责决定网络拓扑。一旦所有的交换机都同意将某台交换机选举为根桥,其余的每台交换机就必须找到其唯一的根端口。在两台交换机之间的每一条链路必须有唯一的指定端口——在那条链路上的端口提供到根桥最大的带宽。一个网桥到达根桥可能通过许多其他网桥,即它不总是最短的路径,但它是将被使用的最快〔最大带宽〕的路径,总之也就是路径开销最低的路径。

显然,在根交换机上每个端口都是指定端口,因为根桥离自己总是最近的。在执行STP算法之后,任何既不是根端口也不是指定端口的端口都将被置为阻塞状态,这样就打破了交换环路。

选举根桥

在网络中,桥ID用来选举根桥,并决定根端口。桥ID为8个字节长,其中包含了设备的优先级和MAC地址,在运行IEEESTP版本的所有设备上,默认时的优先级都为32768。

决定根桥时,需要将桥的优先级和MAC地址结合起来。如果两台交换机或网桥碰巧有同样的优先级值,那么就比拟他们的MAC地址,MAC地址最小的设备就是最低的桥ID。默认时,每2秒发送一次BPDU,它被发送到网桥/交换机的所有活动端口上。可以改变桥的ID,以使它自动成为根桥。在大的交换式网络中,能够做到这一点非常重要,它保证了能够选出最正确路径,在这里,需要考虑效率。

图1选举根桥举例

如图1,Fa0/2端口为橙色,也就是处于阻塞状态,从图中可看出,SwitchA和S优先级默认值都为32768〔思科交换机中优先级为优先级加VLAN号〕,而SwitchA的MAC地址显然大于B的,因此SwitchB为根桥,由于端口号Fa0/2的端口号大于Fa0/1所以Fa0/2被置为阻塞端口。

图2SwitchA生成树状态

本例以思科2960-24TT交换机为例,图2为SwitchA的生成树状态,上图显示了根ID和桥ID的信息,由于仅有Fa0/1处于转发状态,所以根ID上

文档评论(0)

199****4744 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7002121022000045

1亿VIP精品文档

相关文档