什么是生成树协议?
通过将环形结构变成树形结构从而逻辑上打破环路的协议。
为什么需要生成树协议?
因为现网的冗余设计,为了增加带宽,防止单点故障。
因此产生了环路,而环路引起的问题
1. 广播风暴
2. MAC地址表翻动
冗余级别:
防止环路的方法:
STP协议的工作原理:
通过逻辑上阻塞冗余链路
消除环路
导图:
802.1d,生成树协议最开始的版本。
封装格式:802.3 | LLC | STP
目的组播MAC地址:01-80-C2-00-00-00
STP的比较规则都是越小越优
开始所有交换机都以自己为根桥发送BPDU进行选举,选举成功的根桥周期发送BPDU,其他交换机负责转发。
根桥选举通过比较网桥ID
网桥ID:
8个字节:2字节优先级+6字节MAC地址
2字节优先级由4bit的优先级+上12bit的扩展系统ID组成
扩展系统ID用于MSTP中的4096个实例对应每一个VLAN
为什么优先级要改成4096的倍数?
因为bridge ID中的优先级字段2个字节,16bit,其中了扩展系统ID为12位给MSTP中的实例预留,优先级只有4位的取值范围在12位的基础上。0000-12位扩展系统ID=0,0001-12位扩展系统ID=4096
选择RP(根端口):
选择DP(指定端口):
根桥的所有端口都是指定端口
一条链路只有一个指定端口
一个交换机只有一个根端口
当网络正常收敛,阻塞端口不发送数据。但当与阻塞端口直连的交换机成为新的root桥之后,阻塞端口变成根端口,其他端口变成指定端口处于转发状态,而之前的指定端口还没有切换到阻塞端口也在转发状态,此时会造成临时的环路。
所以需要端口状态的转发延迟来进行解决。
当网络拓扑重新收敛,最快也要listen+learning=30s的时间
第一个15s是确保端口选举时间充足
第二个15s是确保TC能够传递到整网,保证MAC地址表学习时间充分。
什么时候发送配置BPDU?
1、端口开启了STP
2、根端口收到配置BPDU,会向本地指定端口复制转发配置BPDU
3、当指定端口收到比本地差的配置BPDU,会立刻向下游设备发送自己的BPDU
网络正常收敛,当S2的根端口所在链路Down掉之后,S2收不到比自己更优的BPDU,会发送以自己为根的BPDU给S3,S3收到之后发现没有本地的BPDU(从根端口收到的S1的BPDU)更优,会反向发一份本地的BPDU给S2,S2收到之后将2口置为根端口。等待2倍forward delay时间。30s
Cisco中收到次级BPDU默认当作没收到,等待老化时间和2倍的forward delay时间
。
hub之间链路down掉,交换机连接hub的端口链路是up的,所以需要等待20s的超时时间,在经历2倍的Forwarding delay时间。至少50s。或者根桥Down掉
拓扑中,经由STP计算,S1为根桥,S3的E2和E3端口被阻塞。当S2的面向PC1的链路断掉之后,S2会立即上上游发送TCN消息
S1收到S2发送的TCN消息之后,将下一个配置BPDU中的TCA和TC置位并从指定端口发送给全网。
此后的(20秒+15秒)时间内,S1均将配置BPDU中的TC置位,各个网桥收到TC置位的BPDU后,将MAC地址老化为15秒。
经过(20+15+15)秒之后,S3的E3接口会变为转发状态。S3的接口E3口学习到PC1的MAC地址。
为什么有RSTP?
因为STP网络收敛速度过慢。不管MAC地址老化、学习多长时间,stp的Forwarding delay时间都是固定的。
拓扑发生改变,交换机会一层层的发送TCN BPDU到根桥,然后才由根桥来通知网络发送变化,如果网络拓扑过大则延迟又会增大。
保留根端口、指定端口,增加了预备端口、备份端口
备份端口和阻塞端口相同点:不转发数据
备份端口为指定端口的备份。需要PA机制进行切换
预备端口为根端口的备份。可以快速切换。
快速生成树BPDU,充分利用了BPDU中的Flag字段
RSTP BPDU Flag字段:
1、TCA:拓扑变化确认位
2、Agreement:同意位
3、Forwarding:转发位
4、Learning:学习位
5、Port Role:端口角色 2位取值范围,
11是指定端口,10是根端口。
01代表预备端口或备份端口。
00保留
6、Proposal:提议位
7、TC:拓扑变更位
1、非根桥每隔hello timer从指定端口主动发送配置BPDU
2、BPDU超时计时器为3个Hello timer
3、阻塞端口可以立即对收到的次级BPDU进行回应
连接用户的接口,不需要进行STP计算,直接进入forwording状态。
再次期间该端口如果收到RSTP BPDU变为普通端口,重新参与生成树计算
配置:
#进入接口
stp edged-port enable #开启边缘端口。
#或者全局开启
stp edged-prot default #所有接口都开启
STP中直连故障需等待30s时间才能正常转发数据,RSTP通过预备alternate端口可以快速进入转发状态。
涉及Flags中的Proposal位和Agreement位。
作用:使指定端口快速进入forwading状态.
当一个端口被选举成为指定端口之后,在STP中,该端口至少要等待一个Forward Delay(Learning)时间才会迁移到Forwarding状态。而在RSTP中,此端口会先进入Discarding状态,再通过Proposal/Agreement机制快速进入Forward状态。这种机制必须在点到点全双工链路
上使用。
在PA机制选举时,非边缘指定端口要进入阻塞状态,防止临时环路。因为PA机制选举完成之后会立即进行转发状态,如果其他交换机的原来是指定端口、对端是根端口时为转发状态还没来得及切换到阻塞状态,会造成临时环路。
当RSTP拓扑发生改变后:交换机为本设备的所有非边缘指定端口开启TC while计时器 在4s内不断发送TC BPDU,超过4s停止发送。清除发生变化端口学习到的MAC地址。其他设备收到TC报文之后,清空除了接受TC报文端口之外的所有端口学习到的MAC地址。
RSTP端口在收到STP-BPDU之后启用TC WHILE计时器,如果在计时器内还受到STP的BPDU,那么该端口会切换到STP工作模式
当运行stp的设备撤离之后,那么运行RSTP的交换设备可以迁移回RSTP工作模式
为什么要有MSTP?
RSTP/STP共同的缺陷,所有VLAN共享一颗树,链路阻塞,造成部分vlan报文无法转发,如下图,vlan2原本所走的链路down掉之后,本来可以通过s6经过,但是S3-S6链路没有允许vlan2流量经过。
MSTP(多实例生成树协议):可以理解成功多个RSTP的集合。 802.1s
单个生成树的弊端
创建多个实例,可定义哪个vlan属于同一个实例。
交换机默认实例0。
相同属性交换机的集合
IST(内部生成树):每个域内实例0运行的树。
MSTI(实例树):普通实例运行的树。
CST(公共生成树):区域之间的生成树。域与域之间也有环路。
CIST(公共和内部生成树):由IST和CST构成的树。
总根:CIST中的根网桥,整网中优先级最高的网桥
IRPC(内部根路径开销):本地到域根的开销
IST域根
MSTI域根
ERPC(外部根路径开销):本地到总根所在域的开销
Master(主桥):区域内离总根最近的桥
域边缘端口:域和域之间相连的端口
Master端口:主桥到总根最忧的口。对于普通实例来说。
不管有多少实例,就发送一份BPDU,只在实例0(IST)中发送,MSTI的信息携带在IST的BPDU中的MSTI的扩展中。
1、正常的BPDU字段----
2、version 3
3、MST扩展
MST的配置信息:域名,修订级别
CIST的IRPC:到IST域根的路径开销
CIST的根桥ID
CIST的BPDU剩余跳数
MSTI的配置信息:
MSTI的flags
MSTI的域根id
到达MSTI域根的路径开销
桥优先级
端口优先级
剩余跳数
CST—IST—总根—CIST
RSTP交换机会将MSTP域看作一个桥ID为域根ID的交换机
增强型P/A机制:不但可以使指定端口快速转发,还可以使根端口快速转发。
stp mode mstp #修改STP版本为MSTP
stp region-configuration #创建一个MSTP域。
region-name huawei #域名
revision-level 1 #修订版本两边必须一致
instance 1 vlan 10 #将vlan 10 加入实例1。
check region-configuration #检查配置
active region-configuration #激活MSTP域
stp instance 1 root primary # 设置交换机为实例1的主根。
display stp 默认查看实例0的信息
display stp instance 1 查看实例1 的信息
在做VRRP和MSTP时,VRRP的主一定是MSTP的主,VRRP的备一定是MSTP的备。否则会导致次优路径的产生。
MSTP向下兼容RSTP,向下兼容STP。
选举规则(越大越优先)
1、优先级(默认100)
2、接口IP
先在哪个接口配的虚拟IP,哪个接口称为主路由器。
主路由器可以被抢占,抢占的时候只看优先级,相同也抢占不了只有优先级大才可以,不比较IP。
主路由器1s发送一次报文以表示自己状态正常,备份路由器如果3s收不到主路由器发送的报文则认为主路由器DOWN掉,于是自己称为备份路由器
虚拟MAC地址,地址的格式为00-00-5E-00-01-[VRID]
VRRP组播使用的目的地址是由IANA标准指定的多点广播地址224.0.0.18
协议号为 112
配置:
# 接口下:
vrrp vrid 1 virtual-ip ip地址 #设置虚拟网关IP加入vrid 1组
display vrrp * # 查看VRRP状态
在做VRRP和MSTP时,VRRP的主一定是MSTP的主,VRRP的备一定是MSTP的备。否则会导致次优路径的产生。
bpdu-protection #前提是开启了边缘端口,当边缘端口收到了BPDU,端口直接error-down关闭该端口。
#全局开启边缘端口保护
stp bpdu-protecion
#恢复error-down的端口:配置error-down之后一天可以自动恢复该端口,单位是s。
error-down auto-recovery cause bpdu-protection interval 86400
#还可以接口下shutdown,undo shutdown重启接口。
根交换机保护(指定端口保护):如果根交换机的指定接口收到优先级更高的BPDU将主动将指定接口阻塞掉。
当在足够长的时间内(Max Age,默认20秒)没有收到更优的配置消息时,端口会恢复原来的正常状态,重新成为指定端口,进入转发状态。
stp root-protection
在根指定接口开启
限制接受TC BPDU的数量。防止网络不断的老化学习MAC地址,影响网络稳定。
设置5s内收到TC-BPDU只刷新一次,缺省2s。
stp tc-protection threshold 5
如果上游接口长时间收不到BPDU直接阻塞该接口。如光纤中的某条链路。
环路保护功能只能在根端口或Alternate端口上配置生效。
stp loop-protection
如果根端口收不到来自上游的BPDU时,根端口会被设置进入阻塞状态;