Stp:生成树协议

运行生成树协议的交换机上的端口,总是处于下面四个状态中的一个:
1)阻塞:所有端口以阻塞状态启动以防止回路,由生成树确定哪个端口切换为
转发状态,处于阻塞状态的端口不转发数据帧但可接受 BPDU。
2)监听:不转发数据帧,但检测 BPDU(临时状态)。

3)学习:不转发数据帧,但学习 MAC 地址表(临时状态)。

4)转发:可以传送和接受数据数据帧。
在正常操作期间,端口处于转发或阻塞状态。当检测到网络拓扑结构有变化时,
交换机会自动进行状态转换,在这个期间端口暂时处于监听和学习状态。
生成树经过一段时间(默认值是 50 秒左右)稳定之后,所有端口要么进入转发
状态,要么进入阻塞状态。STP BPDU 仍然会定时从各个网桥的指定端口发出,
以维护链路的状态。如果网络拓扑发生变化,生成树就会重新计算,端口状态也
会随之改变。
当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时
延称为 Forward Delay,协议默认值是 15 秒。在所有网桥收到这个变化的消息
之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转
发,则可能存在临时环路。为了解决临时环路的问题,生成树使用了一种定时器
策略,即在端口从阻塞状态到转发状态中间加上一个只学习 MAC 地址但不参与转
发的中间状态,两次状态切换的时间长度都是 Forward Delay,这样就可以保证
在拓扑变化的时候不会产生临时环路。但是,这个看似良好的解决方案实际上带
来的却是至少两倍 Forward Delay 的收敛时间!

默认情况下,交换机端口由阻塞状态到侦听状时间为 20 秒

 

 

RSTP生成树协议:
了解决 STP 协议收敛时间长这个缺陷,在世纪之初 IEEE 推出了 802.1w 标准,
作为对 802.1D 标准的补充。在 IEEE 802.1w 标准里定义了快速生成树协议
RSTP(Rapid Spanning Tree Protocol)。RSTP 协议在 STP 协议基础上做
了三点重要改进,使得收敛速度快得多(最快 1 秒以内)。
第一点改进:为根端口和指定端口设置了快速切换用的替换端口(Alternate
Port)和备份端口(Backup Port)两种角色,当根端口/指定端口失效的情况
下,替换端口/备份端口就会无时延地进入转发状态。
第二点改进:在只连接了两个交换端口的点对点链路中,指定端口只需与下游网
桥进行一次握手就可以无时延地进入转发状态。如果是连接了三个以上网桥的共
享链路,下游网桥是不会响应上游指定端口发出的握手请求的,只能等待两倍
Forward Delay 时间进入转发状态。
第三点改进:直接与终端相连而不是把其他网桥相连的端口定义为边缘端口
(Edge Port)。边缘端口可以直接进入转发状态,不需要任何延时。由于网桥
无法知道端口是否是直接与终端相连,所以需要人工配置。
可见,RSTP 协议相对于 STP 协议的确改进了很多。为了支持这些改进,
BPDU 的格式做了一些修改,但 RSTP 协议仍然向下兼容 STP 协议,可以混合
组网。虽然如此,RSTP 和 STP 一样同属于单生成树 SST(Single Spanning
Tree),有它自身的诸多缺陷,主要表现在三个方面。
第一点缺陷:由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导
致较长的收敛时间,拓扑改变的影响面也较大。
第二点缺陷:近些年 IEEE 802.1Q 大行其道,逐渐成为交换机的标准协议。在
网络结构对称的情况下,单生成树也没什么大碍。但是,在网络结构不对称的时
候,单生成树就会影响网络的连通性。

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 都有一棵独立的生成树,单生成树的种种缺陷都被克服了。同
时,PVST 带来了新的好处,那就是二层负载均衡

 

  MISTP/MSTP协议

多实例生成树协议 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 的大范围应用。
MSTP 协议精妙的地方在于把支持 MSTP 的交换机和不支持 MSTP 交换机划分
成不同的区域,分别称作 MST 域和 SST 域。在 MST 域内部运行多实例化的生
成树,在 MST 域的边缘运行 RSTP 兼容的内部生成树 IST(Internal Spanning
Tree)。
MSTP 设备内部需要维护的生成树包括若干个内部生成树 IST,个数和连接了多
少个 SST 域有关。另外,还有若干个多生成树实例 MSTI(MultIPle Spanning
Tree Instance)确定的 MSTP 生成树,个数由配置了多少个实例决定。
MSTP 相对于之前的种种生成树协议而言,优势非常明显。MSTP 具有 VLAN
认知能力,可以实现负载均衡,可以实现类似 RSTP 的端口状态快速切换,可以
捆绑多个 VLAN 到一个实例中以降低资源占用率。最难能可贵的是 MSTP 可以
很好地向下兼容 STP/RSTP 协议。而且,MSTP 是 IEEE 标准协议,推广的阻
力相对小得多。
可见,各项全能的 MSTP 协议能够成为当今生成树发展的一致方向是当之无
愧的。