在组网中,很可能会出现环路或者称冗余链路,为避免形成广播风暴,需要一种方法来避免形成环路,并且在主链路故障中断时候,可以将冗余链路自动切换为转发状态,以恢复网络的连通性。生成树协议(STP、RSTP、MSTP)就可以实现这样的功能。
STP(802.1D,Spanning Tree Protocol,生成树协议)
基本思想
将网络的拓扑修剪为树形拓扑,拓扑图形状与一棵树相似,这样就不会产生环路了。
-
在每个运行STP协议的设备上依据一定的准则选举出一个树根节点作为网络中的根桥,其他节点为非树根节点。
-
每一个非树根节点,会选择最优的路径和根桥相连,每个非树根节点上位于最优路径的端口,为该非树根节点的根端口。
-
如果非树根节点存在冗余链路,则会对相应端口进行阻塞
基本概念介绍
-
根桥(Root Bridge):是整个生成树的根节点,所有网桥中优先级最高的桥。
-
指定桥(Designate Bridge):负责一个物理段(相对于两个网桥而言是一个物理段)上数据转发任务的桥。
-
根端口(Root Port):指一个网桥上距离跟桥最近的端口。根桥上没有根端口,只有非根桥上有且仅有一个根端口。
-
指定端口(Designate Port):指定桥上的端口,就是用于转发生成树信息报文的端口。根桥上全是指定端口。
-
候补端口(Alternate Port):用来为根端口或指定端口做备份的端口,即为最终需要阻塞的端口。
-
桥ID(Bridge ID):每一个运行STP协议的网桥都会有一个桥ID,用于在网络中唯一标识一个桥,由桥优先级和桥MAC地址组成,桥优先级占2字节,桥MAC地址占6个字节。桥优先级只能是4096的整数倍,最大为61440,默认为32768。
-
路径开销(Path Cost):STP中每条链路都具有开销值,默认的开销值取决于链路的带宽,带宽越大,开销越小。例如IEEE标准的开销,链路速度为10Gbps开销为2,速度为100Mbps时开销为19,速度为10Mbps时候开销为100。
-
BPDU(Bridge Protocol Data Unit,桥协议数据单元):用于网桥之间传递BPDU来交互协议信息。BPDU分为配置BPDU和TCN BPDU。配置BPDU用来进行生成树的计算和维护生成树拓扑的报文。TCN BPDU是当拓扑结构改变时候,用来通知相关桥设备网络拓扑结构发生变化的报文。
BPDU报文分析
-
Protocol Identifier:固定为0x0000,表示是生成树协议
-
Protocol Version Identifier:协议版本号,STP版本号为0x00
-
BPDU Type:配置BPDU类型为0x00,TCN BPDU类型为0x80
-
Flags:由8位组成,最低位为TC标志位,最高位为TCA标志位,其他6位保留。当拓扑结构变化时候,下游网桥将会从根端口发送TCN BPDU报文,TC标志位置为1,上游网桥收到后进行相应处理,回复配置BPDU报文,TCA标志位置为1.
-
Root Identifier:根桥ID,包含优先级和MAC地址,标识网络中的根桥。
-
Root Path Cost:根路径开销,指从发送该配置BPDU的网桥到根网桥的最小路径开销,是所有链路开销的代数和。
-
Bridge Identifier:发送该配置BPDU的网桥ID,即该指定桥的ID。
-
Port Identifier:发送该配置BPDU的网桥的发送端口ID。
-
Message Age:从根桥生成配置BPDU开始,到当前时间为止配置BPDU的存活时间。
-
Max Age:配置BPDU存活的最大时间。
-
Hello Time:根桥生成并发送配置BPDU的周期,默认为2s
-
Forward Delay:配置BPDU传播到全网的最大时延,默认为15s
接口状态
状态名称 |
状态描述 |
禁用(Disable) |
不能收发BPDU,也不能收发数据帧 |
阻塞(Blocking) |
该接口被STP阻塞。不能发送BPDU,但是会持续侦听BPDU。不能收发数据帧 |
侦听(Listening) |
表明STP初步认定该接口为根接口或指定接口,但STP还在计算过 |