STP 生成树协议详解:基本概念、相关术语、报文格式,学起来!
本期给大家分享STP生成树协议详解问答。
一、生成树协议基本介绍
1. 生成树的定义和目的以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。
为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。生成树协议演进如下:
生成树协议中,MSTP兼容RSTP、STP,RSTP兼容STP。三种生成树协议的比较如下表所示。
生成树协议
特点
应用场景
STP
形成一棵无环路的树,解决广播风暴并实现冗余备份。
收敛速度较慢。
无需区分用户或业务流量,所有VLAN共享一棵生成树。
RSTP
形成一棵无环路的树,解决广播风暴并实现冗余备份。
收敛速度快。
MSTP
形成一棵无环路的树,解决广播风暴并实现冗余备份。
收敛速度快。
多棵生成树在VLAN间实现负载均衡,不同VLAN的流量按照不同的路径转发。
需要区分用户或业务流量,并实现负载分担。不同的VLAN通过不同的生成树转发流量,每棵生成树之间相互独立。
生成树协议目的:
在以太网交换网中部署生成树协议后,如果网络中出现环路,生成树协议通过拓扑计算,可实现:
消除环路:通过阻塞冗余链路消除网络中可能存在的网络通信环路。链路备份:当前活动的路径发生故障时,激活冗余备份链路,恢复网络连通性。2. 生成树协议的应用场景在一个复杂的网络中,网络规划者由于冗余备份的需要,一般都倾向于在设备之间部署多条物理链路,其中一条作主用链路,其他链路作备份。这样就难免会形成环形网络,若网络中存在环路,可能会引起广播风暴和MAC表项被破坏。
生成树典型应用组网图
如上图,在网络中部署STP协议,通过彼此交互信息发现网络中的环路,并有选择的对某个端口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断增生和无限循环,避免设备由于重复接收相同的报文造成处理能力下降。
二、STP机制原理详解
1. STP相关概念STP基本概念如下:
(1) 一个根桥
树形的网络结构必须有树根,于是STP引入了根桥(Root Bridge)概念。
对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。
(2) 两种度量
生成树的生成计算有两大基本度量依据:ID和路径开销。
① ID,又分为:BID(Bridge ID)和PID(Port ID)。
BID:桥ID。IEEE 802.1D标准中规定BID是由桥优先级(Bridge Priority)与桥MAC地址构成。BID桥优先级占据高16位(默认为32768,须为4096的整数倍,范围0-61440),其余的低48位是MAC地址。在STP网络中,桥ID最小的设备会被选举为根桥。
PID:端口ID。PID由两部分构成的,高4位是端口优先级,低12位是端口号。
② 路径开销(Path Cost)描述了连接网络的端口 的“优劣”,端口类型和带宽决定了该端口的路径开销,根交换机的根路径开销为零。其他交换机收到BPDU后,把报文中的根路径开销加上接收端口路径开销,得到该端口的“根路径开销”(Root Path Cost),根路径开销反映了某端口到根交换机的“远近”。
(3) 三要素选举
从环形网络拓扑结构到树形结构,总体来说有三个要素:根桥、根端口和指定端口。
选举一个网桥ID最小(最优)的交换机作为根网桥(Root Bridge)每个非根交换机选择一个根端口(Root Port RP),即去往根桥路径开销最小的端口每个交换网段选择一个除根端口之外的转发端口—指定端口(Designated Port DP),用于发送配置BPDU堵塞其他(非根非指定端口)端口,该端口不转发业务流量,但会持续接收和侦听BPDU(4) 四个比较原则
STP选举有四个比较原则,构成消息优先级向量:{ 根桥ID,根路径开销,发送设备BID,发送端口PID },即配置BPDU报文的比较如下:
先比较根桥ID,越小越好如果根桥ID相等,根路径开销越小越好如果根桥ID和根路径开销相等,发送设备BID越小越好如果根桥ID、根路径开销和发送设备BID相等,发送端口PID越小越好记住生成树协议所有优先级比较都是“小优”!
(5) 五种端口状态
运行STP协议的设备上端口状态如下表所示:
STP报文类型有2种:
配置BPDU:通常所说的BPDU报文多数指配置BPDU,它是一种心跳报文,只要端口使能STP,则配置BPDU就会按照Hello Time定时器规定的时间间隔从指定端口发出。TCN BPDU:在设备检测到网络拓扑发生变化时才发出,指在下游拓扑发生变化时向上游发送拓扑变化通知,直到根节点3. STP的配置BPDUSTP的配置BPDU报文被封装在以太网数据帧中,特征为:
目的MAC是组播MAC:01-80-C2-00-00-00,Length/Type字段为MAC数据长度,后面是LLC头,LLC之后是BPDU报文头。
这里注意,现在大多数网络应用都使用Ethernet V2格式,而交换机之间的BPDU则采用IEEE802.3 LLC格式封装,两者对比如下图
在初始化过程中,每个桥都主动发送配置BPDU。但在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他桥在收到上游传来的配置BPDU后,才触发发送自己的配置BPDU。
配置BPDU的长度至少要35个字节,主要携带(根网桥ID 、根路径开销、发送网桥ID、发送端口ID)这四个参数和(Hello time、Forwarding delay、MAXage)这三个计时器。
STP有三个计时器影响端口状态和网络收敛:
(1) Hello time
根交换机发送配置BPDU的时间间隔,缺省2s感知拓扑变化的交换机发送TCN的时间间隔(2) Forwaring delay:端口在listening或learning状态停留的时间,缺省15s
(3) MAXage:交换机缓存的配置BPDU的老化时间,缺省20s
STP配置BPDU报文基本格式如下图所示:
参数表格详解:
TCN BPDU是指在下游拓扑发生变化时向上游发送拓扑变化通知,直到根节点。TCN BPDU在如下两种情况下会产生(STP/RSTP/MSTP机制均一致):
端口状态变为Forwarding状态。指定端口收到TCN BPDU,复制TCN BPDU并发往根桥。STP的TCN BPDU内容比较简单,只有表1中列出的前3个字段:协议号、版本和类型,总长度只有4个字节,如下:
字段说明:
Protocol Identifier:协议号为0Protocol Version Identifier:协议版本号为0,表示为STP(2是RSTP,3是MSTP)BPDU Type:类型字段均是固定值0x80,表示为TCN BPDU