STP生成树(IEEE 802.1D) 为什么需要生成树? 链路聚合技术只有线路的冗余,没有设备的冗余,如果要做设备上的冗余,就可以做生成树。表面上看生成树的作用是做设备冗余时,防止成环的一种途径,但实际上可以避免做生成树,使用堆叠技术和虚拟化技术来达到防止出现环路的作用(将两个设备做成一个设备,使得整个拓扑还是一个树状结构),所以生成树并不是必须项,但如果担心交换机出现环路风险,就一定要使用生成树。从冗余角度来讲,生成树是不会带来冗余的,是因为冗余出现了环路才使用生成树的,并不是一个冗余关系。 如果出现环路,怎么使用生成树来处理? 交换网络出环的概率是非常大的,尤其是在企业网中,网络环境复杂,管理上的不严格是随处可见的,所以大部分的企业网都会使用生成树。环路会引发几个现象:广播风暴、MAC地址表反复重写,都会对交换机造成严重损害,都会迅速的把设备搞成资源不足的情况,不管说是转发资源还是MAC表的内存资源问题,都会造成宕机,导致数据无法通过交换机。 交换机如何防环? 将拓扑结构做成树状结构,防止出环,凡是阻碍成树的线路全部砍掉。 生成树是一种依靠BPDU信息来形成交换机间通信的技术 BPDU

协议ID:表明哪一种生成树 版本:生成树的版本(如cisco的pvst/pvst+) Message type:BPDU的包的种类(配置BPDU、拓扑变更BPDU) Flags:标记 Root ID:根ID Cost of path:到达根的开销,带宽越大,开销越小,叠加值 Bridge ID:自己的桥ID Port ID:描述端口的两个参数,端口优先级、端口MAC Message age:按照时间算,最大20s(Max age) Hellotime:2s Forward delay:15s 20s+15s*2=50s,即原始生成树的切换时间 第一个20s的来源是BPDU最迟被收集到的时间,转发延时牵扯到侦听和学习,指的是一个数据包(无论是BPDU数据包还是普通数据包)在一个有限的交换网络中从一个交换机到达另一个交换机的转发时间最长是15s。

原始生成树的运算过程 总的来说,在最开始的时候,每个交换机会发送BPDU,收集完BPDU后开始选举,选完根交换机选根端口,选举完成后收敛完成。 发送BPDU之前,交换机的接口会同步它的全局BPDU参数,即交换机将BPDU同步给接口,接口将BPDU保存后向外发送,到达对端接口的时候,对端接口由于同步了自己的全局BPDU,会将自己的BPDU与收到的BPDU进行比对(BID),比对后同步较优的BPDU,此时交换机会认为较优BPDU的发送者是本地的根交换机,同时接口会同步全局BPDU后再同步给其他接口,因为周期的存在,其他接口会根据周期发送所同步的BPDU,一直扩散。只要保证自己所发出的BPDU一定能被其他设备接收到,全网一定会同步出一个唯一的根ID,这就是选根的过程,也因此必须等待20s,否则可能会导致某一条BPDU没有同步结束,此时选的根就不一定是一个准确的根。如果想加快收敛,可以手动将max age改小,但不建议改动,后期生成树因为更改了选举方法,故不会有这样的问题。 根接口:设备对端的接口会被同步,被同步后会计算cost-path,远端设备的BPDU同步时,会叠加cost-path,其他设备的接口在同步BPDU比对RID时会发现RID相同,接着会比对cost-path,设备在同步全局BPDU时,会保留最优的cost-path,此时被同步cost-path的接口即为根接口。如果cost-path依旧相等,就比对对方的BID,因为此时全局BPDU被对端设备同步了,此时的BID就是对端的BID,大部分人会认为是因为对端的BID越小,就越能成为下一代根,但实际上这是从结果推导出来的结论,存在逻辑上的问题 然后比对对端的port ID(port优先级/port MAC),在port优先级相同时比对MAC,MAC值小为优。

如果要修改参数以达到更改原有线路的目的,cost-path一般在本端修改,PID优先级在对端接口修改。

SW(config-if)#spanning-tree vlan 1 ? Cost Change an interface’s per VLAN spanning tree path cost Port-priority Change an interface’s spanning tree port priority 1 2 3 根的选举 根据BID的参数来选,越小越优,先看优先级后看MAC

根端口选举 越小越优

cost-path 对端BID 桥优先级和桥MAC 对端的PID 端口优先级 指定端口的选举 一条线路上只能有一个指定端口 BID本交换机成根的可能性越大越能成为指定接口

状态接口跳转 为什么要有状态切换? 状态切换的其中一个目的是要保证生成树在收敛完成之前没有环路,如果出现环路,数据有可能会无法传递,导致生成树无法收敛。状态切换就是为了保证不会出环并且按照既定步骤完成生成树的收敛。

blocking 不能收也不能发送数据及BPDU,但可以监听BPDU 20s(max age) Listening 收集BPDU信息选举,本质是选举根接口,可以发送BPDU 15s(forward delay) Learning 可以发送普通数据,但不能转发,学习接口转发的MAC地址 15s(forward delay) Forwarding 可以转发数据及BPDU 其他的生成树都是在STP生成树的基础上改进的,STP生成树最大的问题还是收敛过程太长,所以改进的方向也是以此为主

版权声明:本文为博主原创文章,转载请附上博文链接!