Common Spanning Tree(CST) = IEEE 802.1D(802.1t)补充 ===>Per VLAN Spanning-Tree plus(PVST ) 思科私有,默认运行的协议Rapid Spanning Tree Protocol(RSTP) = IEEE 802.1w ===>Multiple Spanning Tree Protocol(MST) = IEEE 802.1sDEC STP是世界上第一个STP,由Radia Perlman在1985年于DEC公司开发出来。DEC STP是所有生成树的原型,现在已经被淘汰;Common Spanning Tree(CST)CST在1990基于DEC STP设计,是首个协议标准,协议号为IEEE 802.1D,如果交换机运行在CST,交换机只进行一次STP计算,无论交换机上有多少个VLAN,所有流量都会走相同的路径。STP增强的技术或者将来取代STP的技术:思科私有!它们的本质是在一个企业园区网当中,即使不适用STP技术也能保证无环路转发,里面借用一些EC的技术;这两个技术能够取代生成树的一个很大的原因是他们的收敛速度,它们的收敛速度能够达到毫秒级别。因为VSS和vPC本身受到硬件的制约,所以STP也不会一下子被淘汰;STP计算无环路径使用的算法是SPA(最短路径树)算法;STP选举的过程也像其他协议一样通过相互之间发送数据报文来协商;STP之间的报文我们管它叫做BPDU,一种叫配置BPDU(C-BPDU)一种叫TCN-BPDU)C-BPDU:交换机与交换机之间用来做STP配置的;TCN-BPDU:交换机与交换机之间用来通告拓扑变更的;Protocol ID:表明该BPDU是哪种生成树协议;Message type:配置BPDU是0x00,TCN BPDU是0x80 用来做生成树状态变更通知Root ID、Cost of path、Bridge ID、Port ID这四个字段主要用来做生成树的选举;其中,Root ID有两部分组成一部分叫priority,一部分叫mac地址;思科认为桥优先级2btyes过多,所以对桥优先级做了一些改动,前4bit依然做优先级,后12bit做扩展系统ID;B要把流量给C必须通过A到达,而且不是某个vlan的流量要通过A到达而是所有vlan的流量都要通过A到达。思科做了改进,也就是扩展了12bit的系统ID,2^12=4096刚好是所有vlan数目;这样使得每一个vlan有一个生成树;即可以使得某些vlan直接到达C某些vlan通过A到达C;这个协议思科私有叫做Per-VLAN Spanning-Tree Plus ==》PVST 思科默认运行的STP是自己的PVST 尽管sh spanning-tree显示的是ieee,也可以严格的说思科不支持802.1D,但是PVST 可以兼容802.1D;思科产品有Bug,唯一能做的就是发case给售后,你要么换IOS或者换硬件;华为产品有Bug,直接叫研发工程师到现场,你需要什么功能现场给你写、你有什么Bug现场给你补;如果Bridge ID和Root ID一样那说明这台交换机自己是根!表格式(100M是10,10M是100,1G是1)但凡看到这样的标准不要去记了,已经不用这套线性标准了;(因为如果是10G?那怎么算?)Port ID:由两部分组成,一部分是端口优先级另一部分是端口号生成树选举完成之后,生成树的维护主要靠一下这两个字段来维护:1.Disabled,接口没被激活,shutdown或者没插上网线2.Blocking,接口no shudown或者插上网线检测到电信号接口马上进入Blocking状态,该状态可以认为是过度状态或者瞬时状态不经历任何时间,一闪而过;3.Listening,该状态接口停留15秒钟,用来接收和发送BPDU而且只用来接收和发送BPDU,如果该15秒内接收到用户流量交换机不做转发,也不学习mac地址,全部丢包。4.Learning,也是停留15秒钟,该状态继续接收和发送BPDU,单独构建mac地址表项,用户数据依然不能泛洪、不能单播转发。防止大面积泛洪。因为Listening和Learning都历经15秒,所以大概要等30秒交换机才能转发数据;1.Hello,根桥发送BPDU的时间间隔,默认是2秒钟;2.Forward Delay,Listening和Learning的持续时间,默认都是15秒钟。3.Max age,指BPDU存活年龄,端口缓存中的BPDU生存时间,默认是20秒钟,如果长达20秒钟没收到,就会重新选举生成树。如果是底层链路问题,例如线路被老鼠咬断等等,这种情况的切换要历时30秒(Listening Learning)如果是链路对端的设备down掉或者链路光衰等等,这种情况的切换要历时50秒(Max age Listening Learning)=========================================1.在广播域内选Root Bridge,每一个广播域都会选择一个根。先比优先级再比mac地址,小的优先。上机架演示:show spanning-tree表项说明!更改优先级成为根!spanning-tree vlan 1 root primary 先比的是mac地址如果mac地址比较小就不降优先级,如果比较大才降优先级;思科建议部署STP的时候保持交换机默认的优先级,在根上敲spanning-tree vlan X root primary,在备份根上敲spanning-tree vlan X root secondaryspanning-tree vlan X root primary = spanning-tree vlan X priority 24576 相等!spanning-tree vlan X root secondary = spanning-tree vlan X priority 28672 相等!功能一样例如A、B、C三台交换机互联,A作为根,当他们互联的接口都up up之后,A、B、C开始向外发BPDU,此时假如C收到了来自B发送过来的BPDU,由于B和C的优先级一样但是B的mac地址比C的mac地址小,所以C就把B的BPDU存放在自己的接口缓存中,而C也不会向外发BPDU了.....B从2口收到的BPDU中cost为:0 19 193)比PID,有两部分组成port-priority和port-number需要注意的是:端口号不一定等于端口编号但不会影响生成树的计算,因为一般端口编号大的端口号比较大。B发送给C的BPDU中cost为:0 B1=0 19C发送给B的BPDU中cost为:0 C1=0 19PID的比较只有在一台交换机的两个端口互联的情况下发生!spanning-tree vlan X priority xxxxspanning-tree vlan X cost xxxxspanning-tree port-priority xxxxspanning-tree vlan X root primaryspanning-tree vlan X root secondary===========================================TCN-BPDU:当拓扑发生改变生成树需要重新收敛交换机之间通过发送TCN-BPDU重新进行生成树的选举;spanning-tree vlan 1 hello-time 3spanning-tree vlan 1 max-age 21spanning-tree vlan 1 forward-time 16思科的PVST 跟CST完全一样唯一的区别是PVST 是基于每个VLAN一棵树的;另外PVST 有自身的限制:最多支持128个VLAN,129个以后的VLAN运行不了生成树;=========================================和CST核心完全一样,只不过在RSTP中对生成树的选举和接口的状态进行了一些优化;RSTP的5个端口是:根端口,指定端口,替代端口,备份端口,禁用端口RSTP的3个状态:丢弃状态(Discarding),学习状态(Learning),转发状态(Forwarding)A、B与根相连,A、B之间用Hub或者透明网桥连在一起,RP和DP的选举跟普通生成树一样,但是A和B之间相连的链路选举完DP之后如果是普通生成树那么除了DP其他端口都会Blocking,但是RSTP中选举完DP之后剩余其他两个接口虽说也是Blocking状态但他们也有自己的名字,例如A下面的接口叫替代根端口(即A的根端口如果没有了下面的端口来替代原来的根端口),B下面的接口叫备份指定端口(即B的DP如果没有了那么右边的接口来替代原来的指定端口)替代端口:根端口的一个备份,用来在根端口down的情况下接替根端口的工作备份端口:指定端口的一个备份,用来在指定端口down的情况下接替指定端口的工作RSTP的端口角色变得更丰富了,Blocking的端口在STP第一次收敛的时候已经算好了当拓扑发生改变的时候哪个Blocking端口是替代端口哪个端口是备份端口。sh spanning-tree 查看生成树端口的状态;接口的Type,分为:p2p和share(根据接口的双工状态发生改变,全双工是p2p,半双工是share)或者接口下更改:spanning-tree link-type point-to-point/sharedp2p链路可以使得STP拓扑发生改变的时候接口直接进入Forwarding状态(as well as 边缘端口)Proposal和Agreement被定义作为生成树收敛的过程;Learning和Forwarding被定义为端口的状态;Proposal和Agreement如何判断生成树的收敛呢?如图,最上面是根,根直接连接到C、C直接连接到B、B直接连接到A、A和根之间没有链路,现在假设A的P1口和根的P0口新连一根网线根马上向P0口发一个BPDU,该BPDU中Flag字段的Proposal位被置位或者说发一个proposal的BPDU,A收到之后A把自己所有的其他接口全部都设置为一个特殊的状态,叫sync状态(同步状态)当A把其他所有接口都设置为sync状态后A会向Root返回一个Agreement的BPDU,发完之后生成树就选举完了,从拓扑的更改到收敛只发送了三个BPDU所以收敛的时间最长也就6秒钟,普通生成树需要30秒或者50秒。spanning-tree portfast 推荐连接主机spanning-tree portfast trunk 推荐连接到主机,例如刀片服务器spanning-tree host 该命令的功能三合一(sw mo access、spanning-tree portfast、channel-group disable)RSTP可以和PVST混合使用兼容性没问题,并且在RSTP上show spaning-tree可以看到对端是否是PVST;Trunk口两端的native vlan不匹配的话,生成树会报错!(原因:STP基本原理:每一个广播域)Multiple Spanning Tree Protocol(MST) = IEEE 802.1s是现在使用最多尤其是项目中采用多厂商设备最建议采用的部署方式;DP:都是发送BPDU的接口 即:DP发送BPDURP:都是接收BPDU的接口 即:RP接收或者监听BPDU,当然还有Blocking端口也就是说接口针对BPDU的max age参数只有在RP接口有用。
|