- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
生成树协议介绍及算法实现
目录
生成树 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地址,在运行IEEE STP版本的所有设备上,默认时的优先级都为32768。
决定根桥时,需要将桥的优先级和MAC地址结合起来。如果两台交换机或网桥碰巧有同样的优先级值,那么就比较他们的MAC地址,MAC地址最小的设备就是最低的桥ID。默认时,每2秒发送一次BPDU,它被发送到网桥/交换机的所有活动端口上。可以改变桥的ID,以使它自动成为根桥。在大的交换式网络中,能够做到这一点非常重要,它保证了能够选出最佳路径,在这里,需要考虑效率。
图1 选举根桥举例
如图1,Fa0/2端口为橙色,也就是处于阻塞状态,从图中可看出,SwitchA和S优先级默认值都为32768(思科交换机中优先级为优先级加VLAN号),而Switch A的MAC地址显然大于B的,因此Switch B为根桥,由于端口号Fa0/2的端口号大于Fa0/1所以Fa0/2被置为阻塞端口。
图2 Switch A生成树状态
本例以思科2960-24TT交换机为例,图2为Switch A的生成树状态,上图显示了根ID和桥ID的信息,由于仅有Fa0/1处于转发状态,所以根ID上只显示了Fa0/1。下面带虚线部分Role字段
文档评论(0)