21.6.1 PVST/PVST+  
每个VLAN都生成一棵树是一种比较直接,而且最简单的解决方法。它能够保证每一个 VLAN 都不
存在环路。但是由于种种原因,以这种方式工作的生成树 协议并没有形成标准,而是各个厂商各有一套,
尤其是以Cisco 的VLAN生成树PVST(Per VLAN Spanning Tree)为代表。
为了携带更多的信息,PVST BPDU的格式和STP/RSTP BPDU 格式已经不一样,发送的目的地址也改
成了Cisco保留地址01-00-0C-CC-CC-CD,而且在VLAN  Trunk的情况下PVST  BPDU被打上了 802.1Q  VLAN
标签。所以,PVST 协议并不兼容STP/RSTP 协议
Cisco 很快又推出了经过改进的 PVST+ 协议,并
成为了交换机产品的默认生成树 协议。经过改进的 PVST
协议在VLAN 1上运行的是普通STP 协议,在其他VLAN
上运行 PVST 协议。PVST+ 协议可以与 STP/RSTP 互通,
在VLAN 1上生成树状态按照STP 协议计算。在其他VLAN
上,普通交换机只会把 PVST  BPDU 当作多播报文按照
VLAN 号进行转发。但这并不影响环路的消除,只是有可
能VLAN 1和其他VLAN的根桥状态可能不一致。 
 
21.6.2 Enhance PVST+
增强型 PVST+允许 PVST+和 MST 之间互操作,MISTP 模式是在一些 Catalyst 交换机上 Cisco 私有的
一种MST实现。
多实例生成树 协议MISTP(Multi-Instance Spanning Tree Protocol)定义了“实例”(Instance)的概
念。简单的说,STP/RSTP 是基于端口的,PVST/PVST+是基于 VLAN 的,而 MISTP 就是基于实例的。所谓
实例就是多个VLAN的一个集合,通过多个VLAN捆绑到一个实例中去的方法可以节省通信开销和资源占
用率。
在使用的时候可以把多个相同拓扑结构的VLAN 映射到一个实例里,这些VLAN在端口上转发状态
将取决于对应实例在MISTP里的状态。值得注意的是网络里的所有交换机的VLAN和实例映射关系必须都
一致,否则会影响网络连通性。为了检测这种错误,MISTP BPDU里除了携带实例号以外,还要携带实例
对应的VLAN关系等信息。MISTP 协议不处理 STP/RSTP/PVST BPDU,所以不能兼容STP/RSTP 协议,甚至不
能向下兼容PVST/PVST+ 协议,在一起组网的时候会出现环路。为了让网络能够平滑地从PVST+模式迁移
到MISTP模式,Cisco在交换机产品里又做了一个可以处理PVST BPDU 的混合模式MISTP-PVST+。网络升
级的时候需要先把设备都设置成MISTP-PVST+模式,然后再全部设置成MISTP模式。
MISTP 带来的好处是显而易见的。它既有 PVST 的 VLAN 认知能力和负载均衡能力,又拥有可以和
SST媲美的低CPU占用率。不过,极差的向下兼容性和 协议的私有性阻挡了MISTP的大范围应用。
21.6.3 MST( 802.1s )
MST这个缩写有2种解释:
  Mono Spanning Tree  
  Multiple Spanning Tree
多生成树 协议MSTP(Multiple Spanning Tree Protocol)是IEEE 802.1s中定义的一种新型多实例化生
成树 协议。这个 协议目前仍然在不断优化过程中,现在只有草案(Draft)版本可以获得。不过Cisco 已经
在CatOS 7.1 版本里增加了MSTP的支持,华为公司的三层交换机产品Quidway系列交换机也即将推出支
持MSTP 协议的新版本。
MSTP 协议精妙的地方在于把支持 MSTP 的交换机和不支持 MSTP 交换机划分成不同的区域,分别
称作 MST 域和 SST 域。在 MST 域内部运行多实例化的生成树,在 MST 域的边缘运行 RSTP 兼容的内部生
成树IST(Internal Spanning Tree) 。
 
 
 
MST域内的交换机间使用MSTP BPDU交换拓扑信息,
SST 域内的交换机使用 STP/RSTP/PVST+  BPDU 交换拓扑信
息。在MST域与SST域之间的边缘上,SST设备会认为对接
的设备也是一台RSTP设备。而MST设备在边缘端口上的状
态将取决于内部生成树的状态,也就是说端口上所有 VLAN
的生成树状态将保持一致。
 
MSTP 设备内部需要维护的生成树包括若干个内部生成树 IST,个数和连接了多少个 SST 域有关。
另外,还有若干个多生成树实例MSTI(Multiple Spanning Tree  Instance)确定的MSTP生成树,个数由配
置了多少个实例决定。
 
MSTP相对于之前的种种生成树 协议而言,优势非常明显。 MSTP
具有 VLAN 认知能力,可以实现负载均衡,可以实现类似 RSTP 的端口
状态快速切换,可以捆绑多个 VLAN 到一个实例中以降低资源占用率。
最难能可贵的是MSTP可以很好地向下兼容STP/RSTP 协议。而且, MSTP
是IEEE标准 协议,推广的阻力相对小得多。
MISTP就是Cisco对MST的私有实现:
21.6.4 RSTP
生成树的发展过程如下:
 
生成树 协议 IEEE  802.1d 虽可在 50 秒内恢复连接,但已不能满足现代交换式网络和应用的需要,
在  802.1w中定义的RSTP 协议可解决802.1d 的自恢复问题。快速生成树 协议(RSTP)是从生成树算法的
基础上发展而来的,通过配置消息来传递生成树信息,并通过优先级比较来进行计算。快速生成树能够
完成生成树的所有功能,优异之处在于快速生成树减小了端口从阻塞到转发的延时,快速恢复网络的正
常工作状态。它采用桥-桥握手机制,并不采用802.1d 中根桥所指定的计时器。   
快速生成树 协议与生成树 协议的区别不少:如端口状态迁移方式不同;配置消息的格式不同;拓
朴改变消息的传播方式不同。
RSTP端口状态
 
替代端口  ——提供了替代当前根端口所提供路径、到根网桥的路径  
RSTP计时器
RSTP  旨在尽快地将根端口和指定端口转成转发状态,以及将替代和备份端口转成阻塞
状态。为防止生成转发环路,  RSTP  在网桥间采用了明确的“握手”功能,以确保端口作用
在网络中分配的一致性。  
 
上图介绍了将端口转换成转发前达成的协定  /  建议握
手。当链接激活时,“P1”和“P2”都成为处于放弃状态的指
定端口。
在这种情况下,“  P1  ”将向交换机  A  发送一个建议
BPDU  。收到新  BPDU  后,交换机  A  将确认根交换机有较优
根成本。因为  BPDU  包含较高的根优先级,交换机  A  在将
新的根端口“  P2  ”转入转发状态前,会先启动同步机制。
如果一个端口处于阻塞状态或是一个边缘端口(位于网桥
LAN  边缘或连接到终端工作站),该端口与根信息同步。  
端口  3  (“  P3  ”)已满足上述要求,因为它已经是阻
塞的。因此,不会对该端口采取任何行动。但是,“  P4  ”是
一种指定端口,需要阻塞。一旦交换机  A  上的所有接口处于
同步状态,“  P2  ”就会承认从前从根接收的建议,并可以安
全地转入转发状态。在收到交换机  A  的认可后,根交换机将
立即将“  P1  ”转入转发。建议  /  协定信息的类似传送波将
从“  P4  ”传播至网络枝叶部分。  
由于这种握手机制不依赖计时器,因此它可以快速地传播至网络边缘,并在拓扑结构变更后迅速
恢复连接。如果协定并未复制建议信息,端口会转换成  802.1D  模式,并通过传统听学顺序转入转发状
态。需要说明的是,  802.1w  协议只适用于点到点链接。在媒体共享的情况下,  802.1w  协议将转换成
802.1D  运行。  
 
UplinkFast RSTP
Uplinkfast 是 IEEE 对 cisco 私有的 Uplinkfast 机制的扩展,他不需要像 cisco 那样清空 CAM 表
的所有条目,而只需要清空上游交换机中的 CAM 表部分条目即可,此时也不需要 UplinkFast 的
伪多播分组生成过程
边缘端口
边缘端口类似于以前 Cisco 实现的 PortFast 功能。新的根端口从阻塞到转发的实现:原
有根端口已经知道自己不再是根端口了,进入阻塞状态。新的根端口连接的网段的指定端口
处于转发状态,这个新的根端口就可以无延时地进入转发状态。非边缘指定端口从阻塞到转
发:此个端口连接着其他网桥。等待进入转发状态的指定端口向下游网桥发送一个握手请求
报文,若下游的网桥响应了,则这个指定端口就可以无延时地进入转发状态。
边缘端口从阻塞到转发:边缘端口直接和终端设备相连,不再连接任何网桥的端口。网
桥启动后这些端口即无延时地快速进入转发状态。
RSTP拓扑变化:
RSTP 拓扑变化仅在边缘端口进入转发状态才会导致。当 RSTP 网桥检测到拓扑变化,会发
生下列事件
  如果必要,RSTP 网桥可以对其所有的非边缘指定端口和根端口上启动一个 TC 当
型定时器(TC while timer),其时间是2倍的 Hello-time
  RSTP网桥刷新所有与这些端口相关的MAC。
  只要在端口上运行TC  while 定时器期间,该端口发送TC 位被置位的BPDU,该定
时器激活期间根端口也发送BPDU
RSTP的拓扑变化扩散处理与STP不同,当一个网桥从邻居受到一个TC位置位的BPDU的时
候,发生下列事件
 
 
通过STP实现链路冗余管理
正确理解 STP 原理和配置,对于维持交换网络的正常运行有重要的影响。设计好生成树,
可以使网络保持良好的性能。
通过人工设定的方法为网络指定网桥的优先级别,将其置于网络的中心位置,保证该网桥
能被选举为根网桥,并配备备份根网桥是实现链路优化管理的手段之一。为更好地定制生成树,
可通过调整交换机的端口ID、端口成本、网络直径等方法来实现。
快速生成树改进的只是生成树的收敛时间,没有解决在整个桥接网络只应用一个单生成树实例的
不足。网络设计时最好使网络直径不超过7。
 
21.6.5 RSTP和MST的配置
开启RSTP:
  在全局模式下配置:
 
 
配置交换机路径开销
Switch(config)#spanning-tree mst instance-id cost cost
配置交换机端口优先级
Switch(config-if)#spanning-tree mst instance-id priority priority
配置MSTP定时器
  Hello-time
Switch(config)#spanning-tree mst hello-time time
默认2s,修改范围1s~10s
Forward-delay
Switch(config)#spanning-tree mst forward-time time
默认15s,修改范围4s~30s
Max-age
Switch(config)#spanning-tree mst max-age time
默认20s,修改范围6s-40s
配置最大跳数限制
Switch(config)#spanning-tree mst max-hop hop-count  
默认20,修改范围1-40