STP(Spanning Tree Protocol,生成树协议)是根据IEEE 802.1D 标准建立的,用于在局域网中消除数据链路层物理环路的协议。运行该协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某些端口进行阻塞,最终将环路网络结构修剪成无环路的树型网络结构,从而防止报文在环路网络中不断增生和无限循环,避免设备由于重复接收相同的报文所造成的报文处理能力下降的问题发生。
STP采用的协议报文是BPDU(Bridge Protocol Data Unit,桥协议数据单元),也称为配置消息,BPDU中包含了足够的信息来保证设备完成生成树的计算过程。STP即是通过在设备之间传递BPDU来确定网络的拓扑结构。
BPDU格式及字段说明
要实现生成树的功能,交换机之间传递BPDU报文实现信息交互,所有支持STP协议的交换机都会接收并处理收到的报文。该报文在数据区里携带了用于生成树计算的所有有用信息。
标准生成树的BPDU帧格式及字段说明:
Protocol identifier: 协议标识
Version: 协议版本
Message type: BPDU类型
Flag: 标志位
Root ID: 根桥ID,由两字节的优先级和6字节MAC地址构成
Root path cost: 根路径开销
Bridge ID: 桥ID,表示发送BPDU的桥的ID,由2字节优先级和6字节MAC地址构成
Port ID: 端口ID,标识发出BPDU的端口
Message age: BPDU生存时间
Maximum age: 当前BPDU的老化时间,即端口保存BPDU的最长时间
Hello time: 根桥发送BPDU的周期
Forward delay: 表示在拓扑改变后,交换机在发送数据包前维持在监听和学习状态的时间
STP的基本概念
桥ID(Bridge Identifier):桥ID是桥的优先级和其MAC地址的综合数值,其中桥优先级是一个可以设定的参数。桥ID越低,则桥的优先级越高,这样可以增加其成为根桥的可能性。
根桥(Root Bridge):具有最小桥ID的交换机是根桥。请将环路中所有交换机当中最好的一台设置为根桥交换机,以保证能够提供最好的网络性能和可靠性。
指定桥(Designated Bridge):在每个网段中,到根桥的路径开销最低的桥将成为指定桥,数据包将通过它转发到该网段。当所有的交换机具有相同的根路径开销时,具有最低的桥ID的交换机会被选为指定桥。
根路径开销(Root Path Cost):一台交换机的根路径开销是根端口的路径开销与数据包经过的所有交换机的根路径开销之和。根桥的根路径开销是零。
桥优先级(Bridge Priority):是一个用户可以设定的参数,数值范围从0到32768。设定的值越小,优先级越高。交换机的桥优先级越高,才越有可能成为根桥。
根端口(Root Port):非根桥的交换机上离根桥最近的端口,负责与根桥进行通信,这个端口到根桥的路径开销最低。当多个端口具有相同的到根桥的路径开销时,具有最高端口优先级的端口会成为根端口。
指定端口(Designated Port):指定桥上向本交换机转发数据的端口。
端口优先级(Port Priority):数值范围从0到255,值越小,端口的优先级就越高。端口的优先级越高,才越有可能成为根端口。
路径开销(Path Cost):STP协议用于选择链路的参考值。STP协议通过计算路径开销,选择较为“强壮”的链路,阻塞多余的链路,将网络修剪成无环路的树型网络结构。
生成树基本概念的组网示意图如图所示。交换机A、B、C三者顺次相连,经STP计算过后,交换机A被选为根桥,端口2和端口6之间的线路被阻塞。
桥:交换机A为整个网络的根桥;交换机B是交换机C的指定桥。
端口:端口3和端口5分别为交换机B和交换机C的根端口;端口1和端口4分别为交换机A和交换机B的指定端口;端口6为交换机C的阻塞端口。
STP定时器
联络时间(Hello Time):
数值范围从1秒到10秒。是指根桥向其它所有交换机发出BPDU数据包的时间间隔,用于交换机检测链路是否存在故障。
老化时间(Max. Age):
数值范围从6秒到40秒。如果在超出老化时间之后,还没有收到根桥发出的BPDU数据包,那么交换机将向其它所有的交换机发出BPDU数据包,重新计算生成树。
传输时延(Forward Delay):
数值范围从4秒到30秒。是指交换机的端口状态迁移所用的时间。
当网络故障引发生成树重新计算时,生成树的结构将发生相应的变化。但是重新计算得到的新配置消息无法立刻传遍整个网络,如果端口状态立刻迁移的话,可能会产生暂时性的环路。为此,生成树协议采用了一种状态迁移的机制,新的根端口和指定端口开始数据转发之前要经过2倍的传输时延,这个延时保证了新的配置消息已经传遍整个网络。
STP模式的BPDU的优先级比较原则
假定有两条BPDU X和Y,则:
如果X的根桥ID小于Y的根桥 ID,则X优于Y
如果X和Y的根桥ID相同,但X的根路径开销小于Y,则X优于Y
如果X和Y的根桥ID和根路径开销相同,但X的桥ID小于Y,则X优于Y
如果X和Y的根桥ID、根路径开销和桥ID相同,但X的端口ID小于Y,则X优于Y
STP的计算过程
初始状态:每台交换机在初始时会生成以自己为根桥的BPDU,根路径开销为0,指定桥ID为自身设备ID,指定端口为本端口。
最优BPDU的选择:每台交换机都向外发送自己的BPDU,同时也会收到其它交换机发送的BPDU。比较过程如下表所述:
根桥的选择:通过交换配置消息,设备之间比较根桥ID,网络中根桥ID 最小的设备被选为根桥。
根端口、指定端口的选择过程如下表所述:
RSTP
RSTP(Rapid Spanning Tree Protocol,快速生成树协议)是优化版的STP,他大大缩短了端口进入转发状态的延时,从而缩短了网络最终达到拓扑稳定所需要的时间。RSTP的端口状态实现快速迁移的前提如下:
根端口的端口状态快速迁移的条件是:本设备上旧的根端口已经停止转发数据,而且上游指定端口已经开始转发数据。
指定端口的端口状态快速迁移的条件是:指定端口是边缘端口或者指定端口与点对点链路相连。如果指定端口是边缘端口,则指定端口可以直接进入转发状态;如果指定端口连接着点对点链路,则设备可以通过与下游设备握手,得到响应后即刻进入转发状态。
RSTP的基本概念
边缘端口(Edge Port):直接与终端相连而不是与其它交换机相连的端口。
点对点链路:是两台交换机之间直接连接的链路。
MSTP
MSTP(Multiple Spanning Tree Protocol,多生成树协议)是在STP和RSTP的基础上,根据IEEE协会制定的802.1S标准建立的,他既可以快速收敛,也能使不同VLAN 的流量沿各自的路径转发,从而为冗余链路提供了更好的负载分担机制。
MSTP的特点如下:
MSTP通过VLAN-实例映射表,把VLAN和生成树联系起来,将多个VLAN捆绑到一个实例中,并以实例为基础实现负载均衡。
MSTP把一个生成树网络划分成多个域,每个域内形成多棵内部生成树,各个生成树之间彼此独立。
MSTP在数据转发过程中实现VLAN 数据的负载分担。
MSTP 兼容STP 和RSTP。
MSTP的基本概念
MST域(Multiple Spanning Tree Region,多生成树域):由具有相同域配置和相同Vlan-实例映射关系的交换机所构成。
IST(Internal Spanning Tree,内部生成树):MST域内的一棵生成树。
CST(Common Spanning Tree,公共生成树):连接网络内所有MST域的单生成树。
CIST(Common and Internal Spanning Tree,公共和内部生成树):连接网络内所有设备的单生成树,由IST和CST共同构成。
MSTP基本概念的组网图如图所示。
MSTP的基本原理
MSTP将整个网络划分为多个MST域,各个域之间通过计算生成CST;域内则通过计算生成多棵生成树,每棵生成树都被称为是一个多生成树实例。MSTP同STP一样,使用BPDU进行生成树的计算,只是BPDU中携带的是MSTP的配置信息。
MSTP模式的BPDU优先级比较原则
假定有两条MSTP的BPDU X和Y,则:
如果X的总根ID小于Y的总根ID,则X优于Y
如果X和Y的总根ID相同,但X的外部路径开销小于Y,则X优于Y
如果X和Y的总根ID和外部路径开销相同,但X的域根ID小于Y的域根ID,则X优于Y
如果X和Y的总根ID、外部路径开销和域根ID相同,但X的内部路径开销小于Y,则X优于Y
如果X和Y的总根ID、外部路径开销、域根ID和内部路径开销相同,但X的桥ID小于Y,则X优于Y
如果X和Y的总根ID、外部路径开销、域根ID、内部路径开销和桥ID均相同,但X的端口ID小于Y,则X优于Y
端口状态
MSTP中,根据端口是否转发数据和如何处理BPDU报文,可将端口状态划分为以下四种:
转发:接收并转发数据,接收并发送BPDU报文,进行地址学习。
学习:不接收或转发数据,接收并发送BPDU报文,进行地址学习。
阻塞:不接收或转发数据,接收但不发送BPDU报文,不进行地址学习。
断开:物理链路断开。
端口角色
MSTP的端口角色分为以下几种:
根端口:到根桥的路径开销最低,负责向根桥方向转发数据的端口。
指定端口:负责向下游网段或设备转发数据的端口。
Master端口:连接MST域到总根的端口,位于整个域到总根的最短路径上。
替换端口:根端口和Master端口的备份端口。
备份端口:指定端口的备份端口。
禁用端口:物理链路断开的端口。