STP——生成树协议
STP--spanning tree protocol--生成树协议,是IEEE定义的一个802.1d标准,用于解决交换机中得人一系列环路问题。
为什么要使用STP?
在大型的网络当中,为了避免单点故障和实现网络的高可用性以及负载均衡,通常会在两台交换机之间以网线相连,形成冗余的链路环境。但是冗余的链路环境为形成环路,会对整个网络中的资源消耗和设备损耗造成很大的负担。所以提出了STP来解决这一系列问题。
冗余的链路会引发什么问题?
①会形成广播风暴(环路)
②帧的多个副本
③造成MAC地址表的不稳定
交换机之间一开始互相发送BPDU,类似于OSPF的hello包
BPDU:网桥协议数据单元 每隔2s发送一次。
几个参数:
①桥ID:优先级+背板MAC地址 优先级默认是32768
②自己认为到到达根桥的开销
③自己认为根桥的ID
生成树的开销:是通过链路速度来衡量
10G=2 1G=4 100M=19 10M=100
背板MAC地址:每台设备唯一,出厂前就记录在设备上。
Switch#show version ——可以用来查看背板MAC地址
几个重要角色和端口
根桥:二层网络的一个核心,网络中的阻塞端口是以根桥为核心来进行选举的。(是在交换机之间进行选举的)
注意:是通过选举得到,在网络一开始的时候,所有的交换机都认为自己是根桥,都会向网路中发送BPDU,并且都会接收到对方发送的BPDU。此时,双方就会进行相应参数的对比,选择出网络中的根桥。
(一旦网络中选举出新的根桥,那么整个网络中就只有根桥会发送BPDU,其他交换机只能转发来自根桥的BPDU)
选举规则:
①首先比较优先级大小,优先级小的成为根桥。
②如果优先级一致,就比较背板MAC地址的大小,同样是越小越好
指定端口:在网络中的每条链路上都需要选举出一个指定端口。指定端口到达根桥的开销一定是最小,指定端口对应的桥ID一定最小。(注意:根桥上的所有端口都是指定端口)
作用:用于发送BPDU和转发来自根桥的BPDU
选举规则:
①到达根桥的开销最小
②桥ID越小越优
③端口ID,同样是越小越好
端口ID:端口优先级+端口号(默认的端口优先级是128)
e0/0 128.5
e0/1 128.6
f0/0 128.3
f0/1 128.4
g0/0 128.1
g0/1 128.2
根端口:一台交换机上只有一个根端口,根端口到达根桥的开销 一定是最小的。所以根端口到达根桥的路径一定是最优路径。
作用:接收来自根桥的BPDU
选举规则:
①到达根桥的开销最小
②桥ID越小越优
③端口ID,同样是越小越好
阻塞端口:逻辑的阻塞一个端口,该端口并不是真正的关闭,一旦最优路径出现故障后,阻塞端口就会自动开启。
Switch#show spanning-tree——查看STP生成树
生成树的端口状态:
①阻塞状态:处于阻塞状态的端口,不会转发来自根桥的BPDU,但是会接收BPDU,以此来避免环路。
最大老化时间:20s,网络中的BPDU每隔两秒发送一次,同样的阻塞端口也是每隔2秒接受一次BPDU,如果阻塞端口在20s内没有接收到BPDU的话,那么就会跳出阻塞状态,进入侦听状态。
②侦听状态:处于侦听状态的接口,会侦听网络中的BPDU,并且进行MAC地址的学习。
最大转发延迟时间:15s,15s内没有接收到来自对方的BPDU,就会跳出侦听状态,进入学习状态。
③学习状态:处于学习状态的接口,会进行MAC地址的学习,并且准备转发数据帧。
最大转发延迟时间:15s,15s内没有接收到来自对方的BPDU,就会跳出学习状态,进入转发状态。
④转发状态:已经进行了MAC地址的学习,并且开始转发数据。
注意:端口从阻塞状态到达正常转发数据的学习状态需要多久---30-50s
①如果出现问题端口是在本台设备上:30s
②如果出现问题端口不再本台设备上:50s
Portfast--快速端口
在网络中,交换机和PC等终端设备相连的接口,由于不需要进行冗余备份处理,所以不会产生环路问题,因此一般情况下,取消交换机之间端口切换的50s时间,此时就可以通过配置快速端口来实现。
注意:快速端口只能使用在交换和pc等终端设备的接口上,并且快速端口默认情况下只能配置在access口,不能配置在trunk口。
①将某一个接口配置成快速端口
Switch(config)#int f0/4--
Switch(config-if)#spanning-tree portfast
②同时将多个接口配置成快速的端口
Switch(config)#in range f0/1-3
Switch(config-if-range)#spanning-tree portfast
③将交换机上的所有接口都配置成快速端口
Switch(config)#spanning-tree portfast default
④在某些特殊情况下,需要将trunk配置成快速端口
Switch(config-if)#spanning-tree portfast trunk
PVST--per-VLAN spanning tree
在网络中,可以针对某一个特定的vlan,设置一个特定根桥
①通过更改优先级来选举成为根桥,如果网络中加入优先级更高级别发,会被抢夺根桥地位。
Switch(config)#spanning-tree vlan 10 priority 28672
②直接指定
Switch(config)#spanning-tree vlan 10 root primary --
使得vlan成为绝对根桥,不会随着网络拓扑的变化而发生改变
Switch(config)#spanning-tree vlan 10 root secondary --成为绝对的备份根桥
快速生成树:
传统的生成树虽然能够解决冗余链路所带来的的环路问题,但是传统生成树的作用是基于4个状态和时间的,这样所需要的时间比较久。但是快速生成树完全避免了这一个问题。
端口角色:指定端口、根端口、替换端口
端口作用:发送、接收、丢弃