PC机和服务器通过交换机相连接,当交换机出现故障导致PC机无法从服务器获取信息就会导致网络无法访问。此时增加冗余链路解决这个(单点故障)问题,但同时可能会引发广播风暴、多帧复制和MAC地址表不稳定等现象影响网络正常运行。当一个问题出现时,总会有另一个办法去解决它。这个办法就是生成树,生成树协议是一种二层管理协议,它通过有选择性地阻塞网络冗余链路也就是主要链路正常时,断开备份链路;主要链路故障时,启用备份链路,来达到消除网络二层环路的目的。
STP生成树 最早的生成树协议(STP)由IEEE802.1d标准定义,在该协议中定义了根桥(RootBridge)、根端口(RootPort)、指定端口(DesignatedPort)、路径开销(PathCost)等概念,目的就在于通过构造一棵自然树的方法达到裁剪冗余环路的目的,同时实现链路备份和路径最优化。经过STP计算最终形成一个无环拓扑的逻辑结构。 为了实现这些功能,网桥之间必须要进行信息的交流,这些信息交流单元就是BPDU(BridgeProtocol Data Unit)。所有支持STP协议的网桥都会接收并处理收到的BPDU报文。该报文的数据区里携带了用于生成树计算的所有有用信息。 在Disabled状态下端口不激活不参与STP任何动作,阻塞状态下交换机接收BPDU,判断交换机位置和根ID但不参与数据帧转发,学习状态下交换机根据BPDU判断端口是否应该参与数据帧的转发并发送BPDU;在学习状态下交换机准备参与数据帧的转发并填写MAC地址表;在转发状态下,交换机转发数据帧同时收发BPDU。 可靠的网络必须具备三个典型的特点:1是能够有效地提供传输流量;2是提供冗余;3是故障快速恢复能力但随着语音视频的广泛使用这就要求了网络必须具备更快的自我恢复能力,很显然STP的50秒貌似有那么一点点长,于是开发了由802.1w定义的快速生成树协议(RSTP)和由802.1s定义的多路生成树协议(MSTP)由于与MSTP协议相关联的协议有一点点多,所以我们首先说说RSTP快速生成树协议。
RSTP快速生成树 Rstp是从stp发展过来的,其实所有的生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。那么RSTP做的改进就是:为根端口和指定端口设置了快速切换用的替换端口(Alternate Port)和备份端口(Backup Port)两种角色,第二点改进:在只连接了两个交换端口的点对点链路中,指定端口只需与下游网桥进行一次握手就可以无时延地进入转发状态。第三点改进:直接与终端相连而不是把其他网桥相连的端口定义为边缘端口(Edge Port)。边缘端口可以直接进入转发状态,不需要任何延时。 在RSTP中只有三种端口状态,Discarding、Learning和Forwarding。802.1D中的禁止端口,监听端口,阻塞端口在802.1W中统一合并为禁止端口。 缺陷:1、由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间,拓扑改变的影响面也较大。2、在网络结构不对称的时候,单生成树就会影响网络的连通性。3、当链路被阻塞后将不承载任何流量,造成了带宽的极大浪费,这在环行城域网的情况下比较明显。
MSTP多生成树协议 MSTP协议是IEEE 802.1s中提出的一种STP和VLAN结合使用的新协议,是基于实例计算出多颗生成树。它既继承了RSTP端口快速迁移的优点,又解决了RSTP中不同vlan必须运行在同一棵生成树上的问题。这为虚拟局域网环境提供了快速收敛和负载均衡的功能。 要了解MSTP多生成树协议那么就需要了解MSTI多生成树实例、MST域、IST内部生成树、CST公共生成树这几个概念。 MSTI多生成树实例 每个实例可以包含一个或多个VLAN,每个VLAN只能映射到一个实例,从而实现不同VLAN组之间的负载分担。将每一个实例都看成STP,所以不同实例下都有一个相对应的根,选举规则与STP一致,在多余链路上实现VLAN级的负载均衡。 MST域 为了确保多生成树计算的准确性,这些网桥的VLAN和实例映射关系必须完全相同。然而在大型网络中不能保证所有网桥配置相同的VLAN映射关系,MSTP就提出了MST域来解决此问题。将大型网络划分成多个MST域 ,把拥有相同VLAN映射关系(也就是同一个实例)以及其他属性的网桥放在同一个域中,域之间运行标准还是RSTP。通过MST配置标识来判断设备是否在同一MST域内。 MST域的配置标识: 1.域名(Configuration Name):本域的域名 。 2.修订级别(Vevision level):目前保留,默认为0 3.配置摘要(Configuration Digest):由网桥的VLAN和实例映射关系生成的长度为16字节的HMAC-MD5签名。如果配置摘要不同,表示VLAN和实例映射关系不同,属于不同的MST域 这样一来MST提供了多个数据转发路径和负载均衡,提高了网络容错能力因为一个进程(转发路径)的故障不会影响其它进程(转发路径)。
CST 公共生成树 CST (Common Spanning Tree,公共生成树)是用来互联MST区域的单生成树。如果把每个MST区域看作是一个"设备",这些"设备通过STP协议、RSTP协议计算生成CST这样一棵生成树。 是连接网络内MST域的单生成树,总根所处的域为CST的根桥 。 IST 内部生成树 IST(Internal Spanning Tree 内部生成树)是一种特殊的MSTI,它是MST区域中的一个生成树实例。 SST单生成树 运行STP/RSTP的交换机设备只能属于一个生成树。MST域中只有一个交换设备,这个交换设备构成单生成树。
其实在每个MST区域内部,MST维护着多个生成树实例。实例0是一个特殊的实例 (其实可以与VLAN 1类比,VLAN 1是交换机默认的管理VLAN,也是交换机默认的本地VLAN),那就是此处所说的IST。所有其他MST实例号只能在1 ~ 4094之间,也可以把IST看成是每个MST区域的外在表现。默认情况下,所有VLAN是分配到IST实例中的。 默认情况下交换机运行的就是MSTP,所有的VLAN都在实例里面,在MSTP里面每个实例单独运行的是RSTP。 从包围范围来看,IST最小属于MST区域内部,CST次之是MST区域间的互联生成树实例,CIST包括了IST和CST。
CIST公共和内部生成树 是连接一个交换网络内所有设备的单生成树,由IST和CST共同构成。 通用和内部生成树(CIST)是每个MST区的内部生成树(IST)、互连MST区的通用生成树和单生成树桥的一个集合,它和一个MST区内的一个IST是一样的,它和一个MST区外的CST也是一样的;STP、RSTP和MSTP共同建立一个单独的桥来做为通用和内部生成树(CIST)的根。 是整个网络所有设备经过生成树计算得到的一棵树 。
PVST/PVST+每个VLAN生成树(Per-VLAN Spanning Tree) PVST它不再像STP那样把整个交换网络当成一个生成树实例,而是为每个VL AN当作一个生成树实例。在STP中,它只定义了一个CST (通用生成树),假设整个桥接网络中仅-一个生成树实例,这样就要求整个网络无环路。而在PVST中,每个VL AN一个生成树实例,只要每个VL AN内部无环路就可以,不考虑其他VL AN拓扑。这是它与STP的最大区别。 另外PVSTBPDU的格式和STP/RSTPBPDU格式已经不一样,发送的目的地址也发生了一定的变化所以,PVST协议并不兼容STP/RSTP协议。由于每个VLAN都有一棵独立的生成树,单生成树的种种缺陷都被克服了。同时,PVST带来了新的好处,那就是二层负载均衡。
缺陷:1、由于每个VLAN都需要生成一棵树,PVST BPDU的通信量将正比于Trunk的VLAN个数。2、在VLAN个数比较多的时候,维护多棵生成树的计算量和资源占用量将急剧增长。3、由于协议的私有性,PVST/PVST+不能像STP/RSTP一样得到广泛的支持。