STP(Spanning Tree Protocol)是生成树协议,主要作用是防止冗余链路中2层网络环路。
以太网LAN(局域网)要求拓扑是无环路的,以太网LAN中的环路可以让以太网帧持续不断的传播,直至一条链路中断,环路才会断开。
冗余链路是提供一个备份链路来保持网络的稳定性,如果主链路出问题了就可以使用备用链路来传输数据,冗余链路可以很好的解决单点故障。
第二层以太网协议没有可以用来识别和消除帧无限循环的机制,使用如果第2层出现了环路,其数据帧将在里面无限循环。
在第三层(网络层)中的IPv4和IPv6协议都提供了一种消除数据包无限循环的机制。
IPv4协议中使用TTL(Time To Live)生存时间来防止环路,数据包每经过一个路由器,其TTL值就会减1,直到TTL减为0后将其数据包丢弃。
IPv6协议中使用跳数限制(hop limit)字段值来防止环路,数据包每经过一个路由器称为一跳,其hop limit值就会减1,直到hop limit减为0后将其数据包丢弃。
广播风暴是指在一段时间范围内出现大量的广播淹没网络,广播风暴可以在几秒钟的时间内淹没交换机和终端设备。
第二层广播(如ARP请求)在网络中非常常见,如果二层链路产生环路,其ARP请求将迅速淹没整个网络。
STP采用生成树算法 (STA) 可以选择出一个根桥,让其他交换机判断出一条最小开销的路径,从而创建出无环的拓扑。
STP使用(STA)构建无环拓扑的步骤:
交换机会使用网桥协议数据单元(BPDU)来分享与自己和自身连接相关的信息。BPDU用来选举根桥,根端口,指定端口,阻塞端口。
根桥通过选举来确定的,当交换机启动时,它会每两秒发送一次BPDU帧,这些帧包含了发送方交换机的BID和根桥的BID。
选举根桥的方式是:
如图所示:S1,S2,S3交换机的优先级都是一样的,查看他们的MAC地址,S1的MAC地址最小,所以S1为根桥
网桥优先级值介于0-65535之间,默认值为32768,网桥优先级是可以更改的,其增值为4096(例如:0,4096,8192,12288…)
交换机显示的优先级是:网桥优先级+VLAN编号(这里是默认网桥优先级32768+VLAN1=32769)
确定根桥后,STA算法会选择根端口。每个非根交换机都会选择一个根端口。
根端口选举方式:
如图所示:S1为根桥
S1到S2的F0/1接口的开销为19
S1到S2的G0/1接口开销为8
所以S2的G0/1为根端口
S1到S3的G0/1接口开销为23
S1到S3的G0/2接口开销为4
所以S3的G0/2为根端口
如图所示:
新增一个交换机其MAC地址值最低,所以S4成为了根桥
S4到S1F0/1和F0/2的开销都是38,接下来查看S1的接口ID,F0/1的接口ID小,所以S1的F0/1接口为根端口。
指定端口的选举:
如图所示:
根桥交换机S4的端口都是根端口
S2的F0/1到S4的开销为19,S1的F0/3到S4的开销为38,所以S2的F0/1为指定端口
S3的F0/1到S4的开销为19,S1的F0/3到S4的开销为38,所以S3的F0/1为指定端口
S1的F0/2为非指定端口(阻塞端口)
不是根端口,也不是指定端口的端口就是非指定端口。
优先级都一样,比较MAC地址,S2的MAC地址值最小,所以S2为根桥
1)S1的F0/2和F0/4到根桥的开销都为19,比较对端桥ID(BID)也一样,比较对端PID,S1的F0/2对应的PID小,所以F0/2为S1的根端口
2)S3的F0/2到根桥的开销19最低,所以F0/2为S3的根端口
3)S4的F0/1和F0/2到根桥的开销都为38,比较对端BID,对端优先级都为32769,比较对端MAC地址值,S1的BID小,所以F0/1为S4的根端口
1)根桥(S2)的所有端口都为指定端口(S2的F0/1,F0/2,F0/3为指定端口)
2)S1的F0/1到根桥开销为19,S4的F0/1到根桥开销为38,所以F0/1为S1的指定端口
3)S3的F0/1到根桥开销为19,S4的F0/2到根桥开销为38,所以F0/1为S3的指定端口
4) S1的F0/3,F0/5和S3的F0/3,F0/4到根桥开销都为19,比较两交换机的BID,S1和S3优先级都为32769,比较其MAC地址值,S1的BID小,所以F0/3和F0/5为S1的指定端口
不是根端口,也不是指定端口的端口为非指定端口,
所以S1的F0/4、S3的F0/3和F0/4、S4的F0/2为非指定端口
STP收敛的3的计时器:
因此链路如果出现故障,STP重新选举到接口转发状态默认情况下至少需要50秒