背景:为了达到网络的高可用性,通常会部署冗余的线路,来避免单点故障的问题,但是冗余的环境会造成其他的问题:广播风暴、帧的多个副本,mac数据可不稳定。为了避免冗余环境带来的问题,提出了stp协议来避免。
1.分类
①stp:spanning tree protocol,生成树协议,基于802.1d协议
②cst ③pvst/pvst+ ④rstp ⑤mstp
2.BPDU
网桥协议数据单元,每2s发送一次,老化时间20s
①内容:1)自己的桥ID 2)自己认为的根桥id 3)到达根桥的开销
②分类:
配置BPDU:当网络环境稳定的时候,只有根桥会发送配置BPDU
TCN BPDU:拓扑变更BPDU,当网络环境拓扑发生变化的时候,之后根桥会发送TCN BPDU
③生成树的选举:(选举过程是同时进行的)
1)根桥:通过比较桥ID(优先级+背板mac地址),越小越优,选举出根桥之后,只有根桥会发送配置BPDU
2)根端口(RP):在所有非根桥交换机上进行选举,每台交换机选举出一个根端口
I、作用:接收来自根桥的BPDU
II、选举:
a、比较到达根桥的开销,越小越优(10M--100、100M--19、1G--4、10G--2)
b、比较发送方的桥ID(优先级+背板mac地址),越小越优
c、比较发送方的端口ID(端口优先级+端口号),越小越优
3)指定端口(DP):在所有链路上进行选举,每条链路选举出一个指定端口
I、作用:发送和转发BPDU
II、选举:
a、比较到达根桥的开销,越小越优(10M--100、100M--19、1G--4、10G--2)
b、比较自己的桥ID(优先级+背板mac地址),越小越优
c、比较自己的端口ID(端口优先级+端口号),越小越优
4)阻塞端口
④端口状态:
1)disable:禁用状态,不参与生成树选举的端口,现网中接口处于shutdown的端口
2)blocking:阻塞状态,处于阻塞状态的端口,可以接收BPDU、但是不会发送BPDU,不能进行数据帧的转发(最大老化时间20s,当转发端口超过最大老化时间没有接收BPDU时,就会进行状态的转变,从阻塞状态变为侦听状态)
3)listening:侦听状态,处于侦听状态的端口,可以接收BPDU、发送BPDU,但是不能进行数据帧的转发(转发延迟时间15s)
4)learning:学习状态,处于学习状态的端口,可以接收BPDU、发送BPDU,但是不能进行数据帧的转发(转发延迟时间15s)
5)forwarding:转发状态,处于转发状态的端口,可以接收BPDU、发送BPDU,可以进行数据帧的转发
⑤交换机的端口从阻塞状态变为转发状态需要的时间:
1)当交换机自身链路出现故障的时候,需要30s才能从阻塞状态变为转发状态
2)当交换机非自身链路出现故障的时候,需要50s才能从阻塞状态变为转发状态
3)当终端设备接入进交换机的时候,需要30s才能转发数据
3.PVST+
每个vlan一棵生成树,对802.1d的拓展,思科私有的
基本配置:
Switch#show spanning-tree
Switch(config)#spanning-tree mode pvst
Switch(config)#spanning-tree vlan 1 root primary (优先级默认降低8192)
Switch(config)#spanning-tree vlan 1 root secondary(优先级默认降低4096)
Switch(config)#spanning-tree vlan 1 priority 20480(4096的倍数)
4.stp拓扑变更
拓扑变更:当网络环境发生变化时,端口状态也会进行改变(变为转发状态/阻塞状态)
当某台交换机检测到网络拓扑环境发生变化,就会向沿着根桥的交换机发送TCN(拓扑变更),上游的设备接收到下游设备的TCN后,会先给下游设备回复一个TCA,然后再向沿着根桥的交换机发送TCN,只到根桥交换收到为止。根桥交换机收到下游设备发送的TCN后,会先给下游设备回复一个TCA,然后向其他所有端口发送TCN,把自己的mac地址秒的老化时间修改为15s,其他下游交换机收到根桥发送的TCN之后,重复以上动作,直到整个网络环境的交换机都收到为止。
增强特性:
1. UplinkFast:
主要是部署接入层交换机(部署在汇聚层交换机可能会导致环路,假如汇聚层交换机有三条链路,其中一条能通的链路断了
,另外两条可能变成转发状态,可能会导致环路),实现当接入层交换机的上行链路发生故障的时候可以实现快速转移 ,收敛速度1s
SW3(config)#spanning-tree uplinkfast
*Sep 24 12:31:26.607: setting bridge id (which=1) prio 49153 prio cfg 49152 sysid 1 (on) id C001.aabb.cc00.3000-优先级变大
*Sep 24 12:32:12.216: STP: VLAN0001 new root port Et0/0, cost 3200--开销变大
改变优先级或者开销主要是为了让设备成为根桥,端口成为指定端口的可能性降低(成为根桥后,端口都为指定端口)
SW3#show spanning-tree uplinkfast
2.BackboneFast:
主要是部署在汇聚层交换机,要求全部的汇聚层交换机都要开启这个特性。实现当非自身链路出现故障时节约20s时间
全部汇聚层交换机都要开:因为汇聚层交换机要发送根链路查询,其他汇聚层交换机不开它是不知道咋进行处理的。
当交换机检测到链路发生故障的时候,将收到新的BPDU与认为的根桥的BPDU做比较,如果新的BPDU没有之前更优的话,交换机就会发送根链路查询(RLQ)
,询问根桥是否还在,如果有收到根桥的回复,则交换机的阻塞端口直接调到侦听状态,同时会将自身存储BPDU发送给对方
SW1(config)#spanning-tree backbonefast
SW3#show spanning-tree backbonefast
3.PortFast:
主要是部署接入层交换机,一般在用于连接终端接口(access),当主机接入的时候可以实现快速转发,收敛时间约1s,
(开启这个特性之后是不参与生成树选举),不建议在trunk链路上开启(除非trunk链路接的是服务器)
接口上配置:
SW3(config)#int range e0/2
SW3(config-if-range)#spanning-tree portfast edge
全局上配置:(将所有非trunk端口自动激活PortFast特性)
SW3(config)#spanning-tree portfast edge default
SW3(config-if)#spanning-tree portfast edge trunk--针对trunk端口开启这个特性,不建议使用
*Sep 24 13:06:51.632: STP: VLAN0001 Et0/2 ->jump to forwarding from blocking
SW3#sh spanning-tree int e0/2 portfast
标签:BPDU,tree,端口,生成,STP,根桥,转发,spanning From: https://blog.csdn.net/qq_45790661/article/details/137111291