生成树
生成树
STP模式(PVST+和RPVST+)STP mode (PVST+ and RPVST+)
1.pvst+
每VLAN生成树(PVST)为每个在网络中配置的VLAN维护一个生成树实例。它使用ISL
中继和允许一个VLAN中继当被其它VLANs的阻塞时将一些VLANs转发。尽管PVST
对待每个VLAN作为一个单独的网络,它有能力(在第2层)通过一些在主干和其它
在另一个主干中的不引起生成树循环的Vlans中的一些VLANs来负载平衡通信。
配置:
S1:
S1(config)#intface range f0/1-3
S1(config-if-range)#switchport trunk encapsulation dot1q
S1(config-if-range)#switchport mode trunk
S1(config-if-range)#exit
S1(config)#spanning-tree mode pvst
S1(config)#spanning-tree vlan 10 root primary
S1(config)#spanning-tree vlan 20 root primary
S1(config)#spanning-tree vlan 30 root secondary
S1(config)#spanning-tree vlan 40 root secondary
S2:
S2(config)#intface range f0/1-3
S2(config-if-range)#switchport trunk encapsulation dot1q
S2(config-if-range)#switchport mode trunk
S2(config-if-range)#exit
S2(config)#spanning-tree mode pvst
S2(config)#spanning-tree vlan 10 root secondary
S2(config)#spanning-tree vlan 20 root secondary
S2(config)#spanning-tree vlan 30 root primary
S2(config)#spanning-tree vlan 40 root primary
S3:
S3(config)#intface range f0/1-2
S3(config-if-range)#switchport trunk encapsulation dot1q
S3(config-if-range)#switchport mode trunk
S3(config-if-range)#exit
S3(config)#spanning-tree mode pvst
S3(config)#spanning-tree vlan 10
S3(config)#spanning-tree vlan 20
S3(config)#spanning-tree vlan 30
S3(config)#spanning-tree vlan 40
S4:
S4(config)#intface range f0/1-2
S4(config-if-range)#switchport trunk encapsulation dot1q
S4(config-if-range)#switchport mode trunk
S4(config-if-range)#exit
S4(config)#spanning-tree mode pvst
S4(config)#spanning-tree vlan 10
S4(config)#spanning-tree vlan 20
S4(config)#spanning-tree vlan 30
S4(config)#spanning-tree vlan 40
2. rapid-pvst+(快速生成树)
STP里介绍了802.1d标准生成树,缺点是收敛时间太慢要30-50s,如果网络拓扑频繁发生变化,将频繁断网,这是不可忍受的。虽然在Uplinkfast / Backbonefast / Portfast里有解决方案,但更好的方式是升级交换机用IEEE 802.1w快速生成树(思科设备对应的是Rapid-PVST)。802.1w并不是新的协议,只是在802.1d基础上做了改进。对用户来说和802.1d的区别就是节省了Listening,Learning两个15s的时间将收敛时间减少到了1s,其他基本和802.1d是相同的。(因此可以向下兼容802.1d,但如果两者共存时,802.1w的快速收敛功能将失效)
802.1w在802.1d基础上改进了以下几点:
改进1:状态发生变化。原来Disabled,Blocking,Listening都变成了Discarding。Learning和Forwarding不变
改进2:角色发生变化。根端口,指定端口不变。但非根非指定端口(即被阻塞的端口)名字分成:Alternative端口和Backup端口。但这只是名字发生变化,仍旧是被阻塞的,知道一下即可
改进3:根端口立刻Forwarding(不用配成UplinkFast)。
改进4:因为链路是由两个端口形成的,根端口立刻Forwarding,指定端口不Forwarding仍旧没用。因此指定端口用两次握手实现Forwarding。握手只能发生在点到点链路(一般现在都是点到点端口,只要端口是全双工,就自动协商成点到点,除非你连HUB那就是share链路,现在基本全是全双工不连HUB)。
改进5:报文发生变化。802.1d的BPDU的flag里只用到低位和高位,RSTP里中间6位也用了重点是第1和6位,两个用于握手(具体见STP里flag字段的介绍)。
改进6:边缘端口直接Forwarding。
改进7:网络拓扑发生变化直接发TC报文通知全网,不需要TCN报文了。
2 STP根桥选择STP root bridge selection
选举跟乔和根端口,指定端口都是依靠BPDU每个交换机发送的BPDU里面都有root ID字段,Bridge ID字段,port ID字段。最一开始每台都周期发送BPDU,root ID=Bridge ID,即所有交换机都认为自己是根桥,此时所有交换机的所有接口都相当于是DP。一旦某个交换机收到邻居的BPDU中root ID比自己的优,则将root ID修改为邻居的。 并继续2秒一次的周期发送root ID=更优的邻居的BPDU。而收到最优的BPDU的端口不 再是DP,而成为根端口RP,RP不再周期发送BPDU。如果从多个接口都收到相同的最优root ID的BPDU,则比较接收到的BPDU的bridge ID字段,小的胜出。这就是为什么一台非根桥的RP只有一个了。这也是为什么根桥的所有端口仍然保持DP,不会有RP了(根桥所有端口全部是DP)。此时根桥和根端口都选举出了,所有非根桥仍然保持DP的接口继续周期2秒发送BPDU,那么看起来好像所有的非根桥停止了发送root ID=自己BID的BPDU,而是在帮根桥转发根桥的BPDU一样(因为此时他们所有BPDU的root ID都是根桥的BID)。 然后剩下所有非根桥的接口全部是这样的状况:两端都仍然保持DP,周期发送BPDU。 此时再比较2台非根桥去往根桥的开销(去往根桥出接口,即从根桥出发的入接口),比不出来就比BPDU中的port ID,小的胜出,保持DP不变,继续周期发送BPDU。失败者 成为BLock接口。我说的可能和某些教材判断根桥根端口的方法有区别。但这个才是真实的过程。其实BPDU一直在持续地周期发送,只是目前的拓扑已经没有了环路而已,所有交换机依旧时刻在准备着选举。一旦收到更优的root ID的BPDU,还会重复之前的过程所以会有修改核心交换机的优先级和在一些接口上开启guard root,防止拓扑来回变动。