交换网络的核心技术(STP)生成树(一)-技术原理

1、什么是生成树(STP)

STP(Spanning Tree Protocol)是生成树协议的英文缩写。该协议可应用于在网络中建立树形拓扑,消除网络中的环路,并且可以通过一定的方法实现路径冗余,但不是一定可以实现路径冗余。生成树协议适合所有厂商的网络设备,在配置上和体现功能强度上有所差别,但是在原理和应用效果是一致的。

image常见的STP协议image

1、CST:协议号802.1d,只维护一个STP 实例,而不管交换机上有多少个VLAN;

2、PVST+:Cisco 私用协议,基于CST,但会为每个VLAN 维护一个实例,增加了一些特性;

3、RSTP:协议号802.1w,只维护一个STP 实例,但收敛速度加快;

4、MSTP:协议号802.1s,基于RSTP,可以将多VLAN 映射到一个实例中,还支持一些特性;

image技术原理image

STP的基本原理是,通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),来确定网络的拓扑结构。BPDU有两种,配置BPDU(Configuration BPDU)和TCN BPDU。前者是用于计算无环的生成树的,后者则是用于在二层网络拓扑发生变化时产生用来缩短MAC表项的刷新时间的(由默认的300s缩短为15s)。

Spanning Tree Protocol(STP)在IEEE802.1D文档中定义。该协议的原理是按照树的结构来构造网络拓扑,消除网络中的环路,避免由于环路的存在而造成广播风暴问题。

Spanning Tree Protocol(STP)的基本思想就是按照”树”的结构构造网络的拓扑结构,树的根是一个称为根桥的桥设备,根桥的确立是由交换机或网桥的BID(Bridge ID)确定的,BID最小的设备成为二层网络中的根桥。BID又是由网桥优先级和MAC地址构成,不同厂商的设备的网桥优先级的字节个数可能不同。由根桥开始,逐级形成一棵树,根桥定时发送配置BPDU,非根桥接收配置BPDU,刷新最佳BPDU并转发。这里的最佳BPDU指的是当前根桥所发送的BPDU。如果接收到了下级BPDU(新接入的设备会发送BPDU,但该设备的BID比当前根桥大),接收到该下级BPDU的设备将会向新接入的设备发送自己存储的最佳BPDU,以告知其当前网络中根桥;如果接收到的BPDU更优,将会重新计算生成树拓扑。当非根桥在离上一次接收到最佳BPDU最长寿命(Max Age,默认20s)后还没有接收到最佳BPDU的时候,该端口将进入监听状态,该设备将产生TCN BPDU,并从根端口转发出去,从指定端口接收到TCN BPDU的上级设备将发送确认,然后再向上级设备发送TCN BPDU,此过程持续到根桥为止,然后根桥在其后发送的配置BPDU中将携带标记表明拓扑已发生变化,网络中的所有设备接收到后将CAM表项的刷新时间从300s缩短为15s。整个收敛的时间为50s左右。

2、STP的工作方式

STP 会强制一些端口进入备份状态,使其不会侦听、转发或泛洪数据帧。总的效果是最后只有一条路径能够通向一个网段;如果网络中通往任何一个网段的连通性出现了问题,STP 就会自动激活先前的非活动路径来重建连接(前提是存在冗余路径);

image网桥标识符(BID)的组成image

如下图所示,BID 由下面三部分组成:

img

1、Bridge Priority(网桥优先级):默认是32768,取值范围是0 ~ 65535,每4096 倍数增长;

2、Extend System ID:这个值就是VLAN 号,它会和Bridge Priority 叠加组成BID的第一部分,例如:BridgePriority 是32768,VLAN 号是1,那么BID 第一部分的值就是32769;

3、MAC Address:取设备的MAC 地址;

img

imageSTP的四种端口状态image

1、Blocking(阻塞状态);2、Listening(侦听状态);3、Learning(学习状态);4、Forwarding(转发状态)。

STP选举过程

1、选1 个根网桥:每个VLAN 或实例中只能有一个根网桥,网桥ID 最小的将成为根桥,在根桥上所有端口都会成为指定端口,指定端口可以发送和接收流量,还可以发送和接收BPDU;

2、在所有非根桥上选举根端口:STP 将在每个非根网桥上选举1 个根端口,该端口所连接的路径一定是该网桥到根桥开销最低的路径,选举根端口次序是:cost > 对端BID > 对端接口ID;

3、在每个网段上选举指定端口:STP 会为每个网段选举一个指定端口,从它到达根网桥的路径开销最低,每个网段只能有一个指定端口,选举次序是:cost > 对端BID > 对端接口ID;

4、所有其他端口都会被堵塞(B)。

3、配置实例需求

img

需求一:SW1 和SW2 关闭VLAN 1 的生成树协议,连接一台PC 并产生一些广播包,观察交换机CPU 利用率变化情况。

需求二:SW1 和SW2 开启生成树协议,让交换机自动选举根桥(Root Bridge)、根端口(RootPort)、指定端口(Designated Port)、阻塞端口(Blocked Port)。

需求三:观察哪一个交换机是根桥,为什么。

需求四:观察根交换机上的端口都是什么端口。

需求五:观察与根交换机端口相连的对端交换机端口是什么角色。

需求六:为什么非根桥上有一个端口被Block。

# 配置命令详解
# 在交换机上关闭STP 协议
no spanning-tree vlan [vlan ID]
# 查看交换机CPU 利用率
show processes cpu
# 改变交换机优先级
spanning-tree vlan [vlan ID] priority [0-61440]
# 查看网桥优先级(BID),端口角色等
show spanning-tree

推荐文章