STP生成树协议原理及配置—从入门到精通
生成树协议(Spanning-Tree Protocol,以下简称STP)是一个用于在局域网中消除环路的协议。运行该协议的交换机通过彼此交互信息而发现网络中的环路,并适当对某些端口进行阻塞以消除环路。由于局域网规模的不断增长,STP已经成为了当前最重要的局域网协议之一。
STP的算法
STP将一个环形网络生成无环拓朴的步骤:
选择根网桥(Root Bridge)
选择根端口(Root Ports)
选择指定端口(Designated Ports)
选择根网桥的依据
网桥ID(BID)
网桥ID是唯一的,交换机之间选择BID值最小的交换机作为网络中的根网桥
STP选择根网桥举例
根据网桥ID选择根网桥
选择根端口的依据
在非根网桥上选择一个到根网桥最近的端口作为根端口
选择根端口的依据是:
根路径成本最低
直连(上游)的网桥ID最小
端口(上游)ID最小
根路径成本
根路径成本(开销)-是网桥到根网桥的路径上所有链路的成本之和,默认10M/100M自适应的路径开销为200000
STP选择根端口举例
在非根桥上,选择一个根端口(RP)
选择指定端口的依据
在每个网段上,选择1个指定端口
根桥上的端口全是指定端口
非根桥上的指定端口:
根路径成本最低
端口所在的网桥的ID值较小
端口ID值较小
STP选择指定端口举例
在每个网段选择1个指定端口(DP)
STP计算结果
经过STP计算,最终的逻辑结构为无环拓朴
STP举例
经过STP计算后的逻辑拓朴
BPDU(桥协议数据单元)
交换机之间使用BPDU来交换STP信息
BPDU
Bridge Protocol Data Unit -桥协议数据单元
使用组播发送BPDU,组播地址为:
01-80-c2-00-00-00
BPDU分为2种类型:
配置BPDU -用于生成树计算
拓朴变更通告(TCN)BPDU -用于通告网络拓朴的变化
BPDU包含的关键字段
STP使用BPDU选择根网桥2-1
交换机启动时,假定自己是根网桥,在向外发送的BPDU中,根网桥ID 字段填写自己的网桥ID
STP使用BPDU选择根网桥2-2
当接收到其他交换机发出的BPDU后,比较网桥ID,选择较小的添加到根网桥ID中
STP使用BPDU计算根路径成本2-1
根网桥发送根路径成本为0的BPDU
STP使用BPDU计算根路径成本2-2
其他交换机接收到根网桥的BPDU后,在根路径成本上添加接收接口的路径成本,然后转发
生成树端口的状态
生成树计时器
STP状态机
在STP选举过程中,端口是不能转发用户数据的。端口一开始处于阻塞状态,这个状态只能接收BPDU;
一个接口20秒没收到BPDU,也就是到了最大时间,端口会进入侦听状态,这时接口可以接收BPDU,并开始发送BPDU;
发送15秒的BPDU,接口将会为转发用户数据做准备,也开始学习MAC 地址,这个状态叫学习状态;
再经过15秒的学习后,端口进入转发状态,转发状态是一个正常的接口。
spanning-tree设置
STP(Spanning-Tree Protocol)
在上图所示的网络环境中,当交换机之间连有多条链路时,将存在一定的问题,如SW1的MAC地址表中会显示接口F0/1与主机A相对应,而当数据发往SW2后,SW2的MAC地址表则记录接口F0/23与主机A相对应,当SW2再次将流量从接口F0/24发回SW1时,SW1的MAC地址表又会记录接口F0/24与主机A相对应。
因此可以看出,当交换机之间存在多条活动链路时,交换机将从不正常的接口上学习到MAC地址,导致MAC地址表的不正确与不稳定,并且还会导致重复的数据包在网络中传递,引起广播风暴,使网络不稳定。
为了防止交换机之间由于多条活动链路而导致的网络故障,必须将多余的链路
置于非活动状态,即不转发用户数据包,而只留下单条链路作为网络通信,当唯一的活动链路不能工作时,再启用非活动链路,从而达到网络的冗余性。要实现此功能,需要依靠生成树协议(STP)来完成,STP将交换网络中任何两个点之间的多余链路置于Blocking(关闭)状态,而只留一条活动链路,当使用中的活动链路失效时,立即启用被Block的链路,以此来提供网络的冗余效果。
STP并非思科私有协议,STP为IEEE标准协议,并且有多个协议版本,版本与协议号的对应关系如下:
Common Spanning Tree (CST)= IEEE 802.1D
Rapid Spanning Tree Protocol (RSTP)= IEEE 802.1w
Per-VLAN Spanning-Tree plus (PVST+) = Per-VLAN EEE 802.1D
Rapid PVST+ = Per-VLAN IEEE 802.1w
Multiple Spanning Tree Protocol (MSTP)= IEEE 802.1s
下面来详细介绍STP协议:
请观察如下网络环境:
在如上所示的网络环境中,不难看出,当所有主机都使用单条链路与一台核心相连时,只要不再增加其它额外设备与链路,就不可能存在环路。交换机就当相于Hub一样连接了多台主机,而这样的网络结构,被称为hub-spoke网络结构,只要主机与Hub是连通的,那么就表示主机之间是连通的。基于此原因,STP借助了hub-spoke网络结构无环的网络思想,将一个拥有多台交换机通过多条链路相连的网络,通过Block掉任意两点之间多余的链路而只留下单条链路,最终修整出一个hub-spoke的网络环境,创造一个无环的交换网络。