产生背景
为了提高网络可靠性,交换网络中通常会使用冗余链路,然而冗余链路会给交换网络带来风险,并且导致广播风暴以及mac地址不稳定的问题,进而影响用户的通信质量。stp可以提高可靠性的同时又避免环路带来的各种问题。
作用
防止交换环路(消除环路)和链路备份
环路带来的各种问题
1.环路导致网络风暴:
2.网络环路带来的mac地址震荡
3.网络环路带来的多帧复制(重复帧传送)
因为STP协议是交换机开启就会自己开启的,配置命令不多,所有主要介绍他的1原理就可以了;
stp disable
—关闭stp功能
stp enable
—开启stp功能
dis stp
—查看stp stp
dis stp brief
—查看端口开启状况
stp priority 0
—修改优先级(修改根桥)
stp root primary
—指定根桥
stp root secondary
—指定备用根桥
shutdown
—关闭端口使用
undo shutdown
—取消关闭端口
bpdu配置实验—边缘端口:
stp edged-port enable
—开启边缘端口(为了减少端口收敛时间,建议将pc接口都配置上)
bpdu配置实验—根保护功能:
stp root-protection
—启用根保护(有优先级更高的设备抢根桥时,会自动阻塞,隔一段时间会自动检测,如果没有抢的会自动开启,不能限制用户接入交换机)
bpdu配置实验—bpud防护:先配置边缘端口:
stp bpdu-protection
—配置bpdu防护(关闭后需手动开启端口)可以检测接入的是pc还是交换机,如果接入交换机将无法连通。
bpdu配置实验—bpud防护:先配置边缘端口:
error-down auto-recovery cause bpdu-protection interval 30
—配置bpdu防护,可以检测接入的是pc还是交换机,如果是交换机自动断开,并每隔30秒自动检测,如果没有检测到交换机会自动开启。
STP工作原理
通过stp算法,来阻塞特定的接口,实现冗余无环的网络;
STP的算法
选出整个网络的根桥(桥---交换机的意思)
在每个非根桥上选举一个根端口(只有一个)
在每个段的链路中选择一个指定端口(每个段时两台设备之间的链路,直连的这条线就叫做段)
剩下的就是堵塞端口(非指定端口或预备端口)
BPDU(桥协议数据单元):交换机专门正对生成树协议的数据包
标准的BPDU(配置BPDU)
特殊的BPDU(TCN BPDU)—拓扑变更通告/端口损坏(TCN)
-
根桥:通过优先级,MAC地址(16进制)进行选择(BID—CIST Bridge),优先级或mac地址越小越优先,(优先级的范围0-65535,默认值:32768)
-
根端口:
到达根桥最近的端口,判定方式:
1.依据该端口的根路径开销(开销小的为根端口)
2.依据对端的BID低的一端为根端口(CIST Bridge)
3.依据对端的PID(port priority+接口号)小的为根端口
4.依据本段的PID小的为根端口
-
指定端口:
1.根桥上的端口都是指定端口
2.BID小的一端为指定端口 -
阻塞端口
-
BID大的一端为阻塞端口(非指定端口)
路径开销示意图
端口的状态分类
- 未启用状态(禁用状态,disabing):默认所有端口都参与生成树规则,不管对端接的时交换机还是主机,该状态下不能使用
- 阻塞状态(blocking):正常状态下开启后的第一状态,端口处于该状态下不会转发数据帧,也不会学习mac地址表,会接收和处理bpdu报文,但是不会向外发送—关注bpud如果20秒没有收到会自动启用(该状态又叫预备状态,冗余使用)
- 侦听状态(listening):不会转发数据帧,不会学习mac地址表,会接收并发送BPUD报文(维持15秒时间),在15秒内通过BPUD确定根桥和端口角色。确定端口角色后非指定端口(预备端口)马上回到阻塞状态,其他端口就进入下一个状态
- 学习状态(learning):不会转发数据帧,会学习mac地址表,接收并发送BPUD,维持15秒时间,15秒之后,指定端口和根端口就会进入转发状态
- 转发状态(forwarding):正常转发数据帧。学习mac地址表,接收并发送BPUD,最终根和指定端口会停留在转发状态
所有一般启用会花费30秒时间
故障情况
- 如果时和阻塞端口的直连链路坏掉了,30秒时间开启阻塞端口
- 如果非直连链路(对端链路)有问题,经过20秒反应时间,再加上30秒启动时间,50秒后开启
根桥每两秒发送BPDU,阻塞端口20秒没有收到会默认,端口损坏,自动开启
MSTP配置
- Muliti STP—多生成树协议(华为交换机默认运行)
- 用于划分vlan后的网络结构中,代替stp;
- 工作原理:将多个valn捆绑在一起,运行在一个STP实例里面,不同实例间的STP相互独立
默认情况下所有vlan都在实例0里面
配置
stp region-configuration
—进入配置区域
region-name
—区域命名
instance <0-48> vlan 20
—创建一个实例,并划分为vlan20
active region-configuration
—开启服务
stp instace 20 priority 4096
—修改vlan20的优先级,修改默认路径