欢迎来到天天文库
浏览记录
ID:1974574
大小:198.50 KB
页数:31页
时间:2017-11-14
《生成树协议介绍及算法实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、目录生成树2摘要2原理2选举根桥3生成树端口状态6收敛7数据结构7算法实现16实现代码17C++代码17Linux中源码23总结30生成树摘要在交换中,通常会设多个交换设备,并在交换设备之间建立多个连接来提供链路的冗余性,但是这有可能是网络中产生环路。为了解决这个问题,在提供冗余的同时,我们可以使用生成树协议来防止产生网络环路。生成树协议最早是由DEC公司开发的,后来,IEEE开发了自己的STP版本,称为802.1D,有兴趣的可自行查阅资料。STP的主要任务是阻止在第二层网络上产生网络环路。它监视着
2、网络中的所有链路,通过关闭一些冗余的接口来确保在网络中不会产生环路。STP采用生成树算法,它首先创建一个拓扑数据库,然后搜索并破坏掉冗余的链路。运行了STP算法之后,帧就只能被转发到保险的有STP挑选出来的链路上。原理在介绍生成树原理之前,首先要来介绍一些专业术语:BPDU:BPDU就是桥协议数据单元,所有的交换设备相互之间都交换信息,并利用这些信息来选出根交换设备,也根据这些信息来进行网络的后续配置。每台交换设备都对桥协议数据单元中的参数进行比较,它们将BPDU传送给某个邻居,并在其中放入他们从其
3、他邻居那里收到的BPDU。根桥:根桥是ID最低的网桥,对于STP来说,关键的问题是为网络中所有的交换机推选出一个根桥,并让根桥成为网络中的焦点。在网络中,所有其他的决定,如哪一个端口要被阻塞,哪个端口要被置为转发状态——都是根据根桥的判断来做出的。桥ID:SPT利用桥ID来跟踪网络中的所有交换机。桥ID是由桥优先级和MAC地址的组合来决定的。在网络中,桥ID最小的网桥为根桥。非根桥:出了根桥外,其它所有网桥都是非根桥。他们相互之间都交换BPDU,并在所有交换机上更新STP拓扑数据库,以防止环路并对链
4、路失效采取补救措施。端口开销:当两台交换机之间有多条链路且都不是根端口时,就根据端口开销来决定最佳路径,链路的开销取决于链路的带宽。根端口:根端口是指直接连接到根桥的链路所在的端口,或者到根桥的路径最短的端口。如果有多条链路连接到根桥,就通过检查每条链路的带宽来决定端口的开销,开销最低的端口就成为根端口。如果多条链路的开销相同,就使用桥ID效益一些的那个桥的端口。如果多条链路来自同一台设备,就使用端口号最低的那条链路。非指定端口:非指定端口指开销比指定端口高的端口,非指定端口将被置为阻塞状态,它不能
5、转发数据。转发端口:指能够转发帧的端口。阻塞端口:阻塞端口是指不能转发帧的端口,这样做是为了防止产生环路。然而,被阻塞的端口将始终监听帧。正如上文提到的,STP的任务是找到网络中的所有链路,并关闭较次的冗余链路,这样就可以防止网络环路的产生。为了达到这个目的,STP首先要选举一个根桥,由根桥来负责决定网络拓扑。一旦所有的交换机都同意将某台交换机选举为根桥,其余的每台交换机就必须找到其唯一的根端口。在两台交换机之间的每一条链路必须有唯一的指定端口——在那条链路上的端口提供到根桥最大的带宽。一个网桥到达
6、根桥可能通过许多其他网桥,即它不总是最短的路径,但它是将被使用的最快(最大带宽)的路径,总之也就是路径开销最低的路径。显然,在根交换机上每个端口都是指定端口,因为根桥离自己总是最近的。在执行STP算法之后,任何既不是根端口也不是指定端口的端口都将被置为阻塞状态,这样就打破了交换环路。选举根桥在网络中,桥ID用来选举根桥,并决定根端口。桥ID为8个字节长,其中包含了设备的优先级和MAC地址,在运行IEEESTP版本的所有设备上,默认时的优先级都为32768。决定根桥时,需要将桥的优先级和MAC地址结合
7、起来。如果两台交换机或网桥碰巧有同样的优先级值,那么就比较他们的MAC地址,MAC地址最小的设备就是最低的桥ID。默认时,每2秒发送一次BPDU,它被发送到网桥/交换机的所有活动端口上。可以改变桥的ID,以使它自动成为根桥。在大的交换式网络中,能够做到这一点非常重要,它保证了能够选出最佳路径,在这里,需要考虑效率。图1选举根桥举例如图1,Fa0/2端口为橙色,也就是处于阻塞状态,从图中可看出,SwitchA和S优先级默认值都为32768(思科交换机中优先级为优先级加VLAN号),而SwitchA的M
8、AC地址显然大于B的,因此SwitchB为根桥,由于端口号Fa0/2的端口号大于Fa0/1所以Fa0/2被置为阻塞端口。图2SwitchA生成树状态本例以思科2960-24TT交换机为例,图2为SwitchA的生成树状态,上图显示了根ID和桥ID的信息,由于仅有Fa0/1处于转发状态,所以根ID上只显示了Fa0/1。下面带虚线部分Role字段显示该端口扮演什么样的角色,Fa0/2为阻塞端口Fa0/1为根端口;Sts字段为端口当前状态,上图显示Fa0/2状态为BLK,也
此文档下载收益归作者所有