为了避免单点失效对链路进行备份。分为冷备份(物理备份) 和 热备份(逻辑上断开链路从而避免环路)
冗余链路会导致的问题
1 广播风暴
2 多帧复制
3 mac 地址表不稳定
stp 生成树协议 就是为了解决以上问题的
三个步骤:
1 选择根桥
比较网桥ID
网桥ID 由 交换机优先级(默认是32768 两个字节表示,最小的是4096 其他的都是4096 的倍数) 和 MAC地址组成
交换机的每个接口有一个mac地址。而且还有一个cpu的mac地址应该是最小的
可以通过命令:
进行查看
包含扩展系统ID的桥ID 12位的扩展系统ID
选举根桥:1 先看网桥优先级 选最小的 2 优先级一样选择mac地址最小的
2 选择根端口
根端口是在非跟桥上选举
选择根端口的依据
(1) 到根桥最低的根路径成本
在非根桥上某一个端口到根桥的根路径成本(跟桥发送BPDU到达端口路径成本)之和。
(2) 直连的网桥ID最小(sender’s bridgeid)
(3) 端口ID最小(sender’s portid)
端口ID 由 端口优先级和端口编号组成 端口默认的优先级为128
(4)比较本交换机的portid
3 选择指定端口
在每个网段上选
每个网段 一个指定端口 根桥上的端口都是指定端口
比较依据:
(1) 根路径成本低的
(2) 所在的交换机的网桥ID的值较小(这一步一般就能够比较出来了)
(3) 端口ID的值较小
* 选择根端口时,比较的是接收到的对端端口ID
===============================================
BPDU 桥协议数据单元
使用组播发送
分2种:
1 配置BPDU
(一般由根桥发出)
2 拓扑变更BPDU
交换机端口的几种状态:
转发 :全功能 接收发送 BPDU 学习mac 转发数据
15s
学习 :接收BPDU 参与根端口 指定端口的选举 学习mac地址
15s
侦听 :可以接收BPDU 参与 根端口 指定端口的选举 依然不能学习mac地址
20s
阻塞 :可以接收BPDU 不能接收 发送数据 不能学习mac地址
BPDU :
协议ID(2 字节):protocol ID
当前保留没有被利用,该值通常为0
协议版本(1 字节):version
该值通常为0
BPDU类型(1 字节):message type
通常有两种BPDU:一种是配置BPDU,一种是TCN的BPDU
标志位(1 字节):flags
该位为8个比特,但是就现在的BPDU只用到了两个比特,一个是第一个比特,叫TCA位(拓扑变化确认),这位如果置位的话,标志着别人告诉我拓扑发生变化了,我要进行一个确认,
另外一个比特叫TC位,这位如果置位的话,标志着我这个BPDU是一个通告拓扑变化的BPDU
当交换机检测到链路down掉时 就会沿着root port 向root bridge 发送TCN bpdu。直到 root bridge 回复一个TCA 才停止发送
根桥ID(8 字节):Root ID
表示当前网络里的根桥,你可以认为它是统领这个2层网络的
根路径开销(4 字节):Cost of path
网桥到达根网桥的路径开销,或者说,是我这个交换机的这个接口到达根桥的开销是多少,从根发出的BPDU发出的cost是0
网桥ID(8 字节):Bridge ID
指发送BPDU的网桥,包括:
网桥优先级 (2 字节)
网桥的Mac地址 (6 字节)
端口ID(2 字节):Port ID,端口ID不等于端口号
指发送BPDU的网桥端口,包括:
端口优先级(CISCO的IOS默认是128,CAT交换机默认是32)
端口号
Message Age(2 字节)
BPDU的有效存活时间
Maximum Age(2 字节)
BPDU的最大有效存活时间,默认为20秒
Hello Time(2 字节)
周期发送BPDU的时间间隔,默认为2秒
Forward Delay(2 字节)
端口转入发送状态的时延,默认为15秒
=============================================
portfast
如果交换机的某些端口接的是客户端 不需要参加stp选举。就可以将该端口配置成portfast端口来避免stp选举导致该端口要经过50s才能进行转发数据。
给某借口配置成portfast
接口模式下 spanning-tree portfast
将所有接口配置成portfast
全局:spanning-tree portfast default
配置好后通过命令:
show run int f0/1 来验证
================================================
uplinkfast
全局下 spanning-tree uplinkfast
使某条冗余上行链路在一条down时 从block到forward 不用经过50s 作用和portfast类似。
================================================
pvstp
per vlan stp : 即值每一个vlan都有一颗生成树=>充分利用链路带宽
对于stp来说通过阻塞某一个端口来热备份。这导致某条链路带宽就被浪费了。pvstp解决了这个问题
每个vlan都维护者一个生成树。如上图:
配置:
在switchA 上配置使其成为vlan1 的根桥
spanning-tree vlan 1 root primary
spanning-tree vlan 2 root secondary
或者直接修改优先级:
spanning-tree vlan # priority priority
然后在switch B 上配置:
spanning-tree vlan 1 root secondary
spanning-tree vlan 2 root primary
================================================
bpduguard
如果当前网络已经收敛了,而此时突然接入一个低优先级的交换机。那么就会造成网络重新收敛,因为他发送BPDU 由于他的优先级比较低 他将会成为root bridge,从而影响网络的稳定性。为了避免发生这种情况 在某些端口启用bpduguard
接口模式下:
spanning-tree bpduguard enable