生成树协议(STP:802.1D、RSTP:802.1w、MSTP:802.1s)

在二层网络中,如果没有生成树协议,会带来哪些问题:
1、广播风暴
2、MAC地址表飘移
3、重复数据帧接收

TTL字段是IP协议的一部分,存在于每个IP数据包中,而不仅仅是路由器中的。无论是路由器还是三层交换机,只要它们处理IP数据包,就会处理TTL字段。

传统的二层交换机没有内置的防环机制,因为它们仅在数据链路层工作,而路由器和三层交换机在网络层工作,可以使用路由协议(比如ospf、bgp等)来避免环路的产生。

回顾生成树有哪些术语:
1、根桥 为了破除环路,生成树网络首先要选举出一个首脑,头脑,首领。叫做根桥,也叫作根交换机
2、桥ID bridge-id:由桥优先级(默认取值为32768,必须为4096的倍数)和桥MAC地址组成
3、root ID 根桥的桥ID(经常在BPDU报文中看到)
4、非根桥 除了根桥以外的交换机都叫做非根桥或非根交换机,一个生成树网络中有且只有一个根桥
5、端口ID 也叫作PID:Port ID:由端口优先级(默认取值128,必须是16的倍数)和端口号构成
6、RPC root path cost 根路径开销,即到达根桥的开销值 交换机计算生成树开销值根据dot1t协议计算,千兆接口全双工为20000
7、根端口 又叫做RP,root port:非根桥上去往根桥最近的端口(非根交换机接收最优BPDU的端口成为根端口)
8、指定端口 又叫做DP,会在每一条链路上的两个端口之间选取出一个指定端口用于转发BPDU
9、BPDU 桥协议单元,是生成树协议唯一的报文,分为配置BPDU和TCN-BPDU,只有根桥可以发出配置BPDU,其他非根桥转发根桥的配置BPDU,非根桥可以发出TCN-BPDU

在这里插入图片描述
在这里插入图片描述
根桥ID:0741,开销值20000

指定端口帮助根桥转发BPDU,BPDU只能从指定端口发送,根端口是不发送BPDU的,只接收BPDU
总结:发送的为指定端口;接收的为根端口

桥ID(Bridge ID,BID)
桥优先级和桥mac地址

一、STP:

在这里插入图片描述

1、选举根桥
所有交换机在初始状态下都会认为自己是根桥,发送以自己为根的BPDU(报文中的root id字段为自己的BID
所有的交换机都会使用BPDU中的root id来进行PK,比较桥ID,谁的BID更优秀谁将成为根桥。
BID的比较原则:首先比较桥优先级,数值默认为32768,越小越优。如果优先级比较不出来,则继续比较桥MAC地址,越小越优先。
2、在每一台非根交换机上选举一个根端口
选举原则:非根交换机接收到最优BPDU的接口为根端口(RP)
最优BPDU的标准:
	2.1 root id小的(RID)				根桥的桥ID
	2.2 RPC根路径开销小的(报文中携带的RPC+该接口的RPC)
	2.3 sender bid小的(BID)		由桥优先级(默认取值为32768,4096倍数)和桥MAC地址组成
	如果为同一个交换机发出的两个条线路就有可能导致比较不出来mac地址(因为是同一个交换机)
	2.4 sender pid小的(PID)		由端口优先级(默认取值128,16的倍数)和端口号构成
	2.5 本地pid小的			即 接口id更小的

总结:先判断根桥是不是同一个,然后判断开销路径、接着判断桥优先级和桥mac、然后比较不出来,就看端口优先级和端口号、最后判断接口(后两个很少用到)
DP、RP、BP(阻塞端口)

3、在每一条链路上选择一个指定端口
当非根交换机选举出根端口以后,将会默认其他端口为指定端口。那么就会将根端口接收到的BPDU进行一个加工,将自己的一些参数加工后,生成新的BPDU由这些指定端口向外发送
这个指定端口在向外发送加工后的BPDU时,同时也会受到对向发来的BPDU。这时就要进行PK:
	3.1	收到对端发来的BPDU后,如果认为自己的BPD更优秀,那么DP端口不会改变,继续保持为DP角色收到
	3.2	对端发来的BPDU后,如果认为对方的BPDU更优秀,那么DP端口将会被阻塞。
	注意:**根桥的所有端口默认为指定端口**

STP小总结:

1、STP的端口角色:
	RP:根端口
	DP:指定端口
	AP:预备端口(阻塞端口)(不属于STP的端口角色)		属于根端口(RP)的备份
	BP:备份端口(不属于STP的端口角色)		属于指定端口(DP)的备份
	所有:STP的端口角色只有两种
2、STP的端口状态:
	2.1 disable(禁用)			端口down或者没有开启STP协议,这时该接口不处理任何BPDU
	2.2 listening(倾听)		接收BPDU,发送BPDU,不学习MAC地址,不转发数据
	2.3 learning(学习)			接收BPDU,发送BPDU,学习MAC地址,不转发数据(可以侦听业务数据帧,但不能转发)
	2.4 forwarding(转发)		接收、发送BPDU,学习MAC地址,转发数据(可以正常收发业务数据帧)
	2.5 blocking(阻塞)			接收、不发送BPDU,不学习MAC地址,不转发数据

{
1:disable:端口禁用或者链路失效
2:listening:端口被选为根端口或者指定端口。
解析:端口在进入Listening状态后,会立即开始比较接收到的BPDU和自身发送的BPDU,如果发送端更优,则为DP;反之是RP(历时15s)

如果在RSTP中,进入listening状态后,如果端口角色是DP或者RP的话,经过15s后会进入learning状态,如果端口角色是BP的话,则会返回上一个端口状态

3:learning:计时15s
4:forwarding:(历经30s)
5:blocking:端口初始化或使能、或者为阻塞状态(1->5或2->5)(可以一直接收到更好的BPDU),如果接收到更好的BPDU的话,等20s就可以转换端口状态

一般情况下只看得到阻塞和转发

端口状态转换:
DP、RP、BP常见状态以及作用
DP通常处于转发(Forwarding)状态。因为它是负责转发数据帧和BPDU的端口。DP是每个网段上唯一的端口,它确保了BPDU能够从根桥顺利传递到整个网络。
RP通常处于转发(Forwarding)状态,可以转发数据流量和BPDU。(每个非根桥至少有一个根端口(RP))
BP通常处于丢弃(Discarding)状态,不转发数据流量,但可以接收并处理BPDU,用于在DP出现故障时迅速接管其角色。

}

3、拓扑改变(TC(TCN)和TCA置位)
	在STP协议中,BPDU有两种类型,分别为配置TCA-BPDU和TCN-BPDU
	当非根交换机网络拓扑发生改变时,会发送TCN-BPDU给根桥,沿路交换机会给原始交换机回复TCA,同时继续向根桥转发该TCN-BPDU
	当根桥收到TCN-BPDU后,将会沿原路回复TC和TCA置位的配置BPDU,沿路收到TC置位的BPDU时将会把自己的MAC地址表老化时间强制修改为15s。

(mac地址默认的老化时间是5min)

当网络中的某个交换机检测到拓扑变化(例如链路的增加或移除),它会发送一个TCN置位的BPDU,向上游交换机通知这一变化。
根桥收到TCN置位的BPDU后,会在其发送的配置BPDU中设置TC置位,以通知整个网络拓扑已发生变化。收到TC置位的BPDU后,会泛洪到整个网络,交换机会清除受影响端口的MAC地址表,以避免因拓扑变化导致的环路或MAC地址表错误。

如果配置为边缘端口了,当收到TC置位的BPDU,EP端口也不会清除MAC地址表

在这里插入图片描述
TC和TCA都置位为1代表要快速收敛了

4、STP的几个计时器
	4.1  hello time:2s一次
	4.2 老化时间max age:20s
	4.3 message age:每转发一次会+1,默认最大不超过20跳
	4.4 forwarding delay:15s

在这里插入图片描述
blocking->Listening很短暂就选出好了,其他两个就很久各自要15s才能到达

由于STP一收敛就断30s,所以当网络拓扑频繁发生变化时,网络也会随之失去连通性。所以2001发布了802.1w标准定义的RSTP(STP:802.1d,MSTP:802.1s)

二、RSTP:

1、端口角色的扩充

RP:根端口
DP:指定端口
AP:预备端口(阻塞端口),给RP做备份的
BP:备份端口(backup port),给DP做备份的

2、端口状态的优化

对于disable listening blocking状态来说结果都是不转发流量,不学习MACRSTP将这3个状态合并为一个:discarding状态(3合1状态)

3、P/A机制

4、根端口快速切换机制

5、次优BPDU立即处理,配合P/A机制

6、EP(边缘端口)

RSTP中一旦端口变为RP,先进入到侦听,再学习,再转发
RSTP中有PA协商,从discarding直接到达Forwarding状态

在华为设备中:A一直都是1,不会变成0

3:P/A机制:

P/A机制原理:两个交换机(1、2)都发送P置位的BPDU,比较两个桥ID哪个更优,更优的就继续发送以P置位的BPDU,2则发送A置位的BPDU,端口角色也从DP更换成RP。端口状态也直接变成Forwarding,这时候1收到2的A置位的BPDU,那么1的端口角色保持DP,端口状态会变成Forwarding状态,此时,交换机1发送的BPDU不再需要P置位,因为它已经是根桥。A置位用于确认收到的BPDU信息。
在这里插入图片描述
解析:即代表上述中的2发送A置位的BPDU,端口角色也变成了RP,端口状态变成Forwarding
在这里插入图片描述
解析:代表上述中的1收到2的A置位的BPDU,端口角色仍为DP,端口状态为forwarding。因为这时候它已经是根桥ID了,所以不用把P置位了

RSTP报文解析:

RSTP协议
RSTP版本
BPDU的类型(RSTP中只有这一种)
BPDU flag:标记位 里面有TC和TCA,都为1的时候要快速收敛
Proposal和agreement(统称PA协商)P置位、A置位
如果forwarding和learning都为1就代表Forwarding(转发)状态,
如果forwarding为0和learning为1就代表learning状态
如果forwarding和learning都为0就代表discarding状态
Port Role:Designated(DP)指定端口角色 若是为Root则是RP根端口
Root Identifier:根桥ID
Root Path Cost:到达根桥的开销值
Bridge Identifier:发出该报文的桥ID
PID:0x8001端口ID(端口优先级(默认为128)+端口号)(8等于1000,1等于0001,合成等于128)
Message Age:每被交换机转发一次就加1(最大跳数为20)
Max Age: 老化时间20s
Hello:每2s发送一次
Forward Delay:表示网络设备在从 Listening 状态转换到 Learning 状态,以及从 Learning 状态转换到 Forwarding 状态之前,必须等待 15 秒。可配置的,默认值15 秒

4:根端口快速切换机制

AP直接变成RP,并进入forwarding状态(不需要像STP等30s才能进入)
在这里插入图片描述

5:次优BPDU立即处理,配合P/A机制

AP会收到SWB发送的P置位的BPDU,同时也发送SWA发送给SWC的BPDU,两者进行PA协商,最后SWC的AP阻塞端口变更为DP,SWB的DP端口变更为RP。

如果在STP中,SWC就要等SWA给SWC的BDPU老化时间(20s),然后再等SWB与SWC的STP收敛,然后AP会变成DP(30s)

在这里插入图片描述

6:EP边缘端口

如果根桥发生改变,PC与交换机的收敛需要照着STP收敛速度等待30s(很久)为了不让PC与交换机的收敛还要照着STP收敛速度等30s 而设计的

6.1:当配置边缘端口,那么该端口默认不会进行STP收敛工作,而是直接进入forwarding(转发)状态
6.2:当边缘端口收到BPDU后,该接口变成普通端口,进行生成树收敛工作。
6.3:边缘端口每2s会发送一个BPDU,用于判断是否自环
6.4:当检测到自己发出的BPDU从其他边缘端口收进来时,会判断为**自环**,然后2个边缘端口都会变成普通端口,进行生成树收敛工作。
6.5:当收到TC置位的BPDU时,EP端口的MAC也不会被清空
交换机上的
stp mode rstp						//配置rstp
stp priority 0						//配置stp优先级
interface GigabitEthernet0/0/3
stp edged-port enable				//将端口配置为边缘端口

[ISW8]stp edged-port default		//全局边缘端口
		
stp disable							//关闭stp
stp enable							//开启stp
display bridge mac-address			//比较桥MAC地址
eg:System bridge MAc address:4c1f-cc47-332e

在这里插入图片描述
LSW5配置了边缘端口,每2s发送BPDU,
解析:发送一个组播地址,(只有加入这个组播,才能处理这个BPDU),但是又因为它不支持生成树,即不在这个组里,所以无法处理。所以LSW5两个接口都收不到对方接口的BPDU,所以无法进行生成树的收敛了,所以就导致环路。
如果LSW6是一个物理层设备就可以直接作为转发设备。(交换机至少是2层设备,不能直接透传组播流量)所以会把BPDU转发给LSW5的另一个接口,所以会进行生成树的收敛,LSW5的g0/0/1接口就会进入Forwarding状态,g0/0/2接口就会进入discarding状态。

关于STP和RSTP的问题:

5.1 端口状态优化
原本STP公有协议中具有5种端口状态,但是华为在实现STP协议时,参考了RSTP的相关特性,因此华为设备中的STP协议只具有三种状态,和RSTP一致
5.2 端口角色的优化
原本STP只有2个端口角色,华为在实现STP时借用了RSTP的端口角色,因此在STP中,可以看到RP DP AP BP等4个端口角色,和RSTP一致5.3 STP对于AP接口的优化
原本STP协议中AP接口对于次优BPDU不会立即处理,需要等待20s的老化时间华为在实现STP协议时参考了RSTP的特性,AP接口可以立即处理次优BPDU了,但是时间上仅仅从50s缩短至30s。(因为没有P/A机制)
5.4 STP也可以支持EP端口角色

BPDU保护

1、针对对象:边缘端口

由于边缘端口存在一定风险,当外接支持生成树功能的交换机时会触发BPDU收敛,使得EP端口变成别的端口,为了防止网络拓扑发生非预期的变动。造成网络重新收敛,导致断网。

保护方法:针对边缘端口配置BPDU保护。

作用原理:当边缘端口配置了BPDU保护以后,边缘端口在收到BPDU以后,该接口会进入error-down状态。但是边缘端口属性不变
开启BPDU,只是为了保护自己生成树稳定, 为了避免收到BPDU变成别的端口,不是为了阻止接交换机的(一般情况下EP端口对端接口都是接PC主机)

(一般情况下EP端口对端是PC主机(或者没有收到BPDU的交换机)就可以配置BPDU保护,其他接口是不配置BPDU保护的,因为如果配了,又收到BPDU,那么就会进入down状态,直接造成断网)
在这里插入图片描述
如果直接连接会导致:断开30s
在这里插入图片描述

[LSW1]stp mode rstp
[LSW1]stp priority 4096

[LSW2]stp mode rstp
[LSW2]stp priority 32768
[LSW2-GigabitEthernet0/0/2]stp edged-port enable 	//让2接口变成边缘端口就行
[LSW2]stp bpdu-protection			//全局下配置BPDU保护功能,那么只要是边缘端口就会默认将开启BPDU保护功能

[LSW3]stp mode rstp
[LSW3]stp priority 0

开启完后,就算手动把LSW2与LSW3的接口进行undo shutdown,则先变成up状态,接着又收到了对方的BPDU报文,所以又变成down状态(Administratively down)了
在这里插入图片描述

配置边缘端口的两种方法(全局配置和上述演示的单个接口配置)

 stp edged-port default //全局配置该命令后,交换机的所有接口全部配置为边缘端口
 如果需要改成普通端口stp edge-port disable

恢复措施:
手动恢复:关掉LSW3的stp,在接口下undo shutdown
自动恢复:[S8]error-down auto-recovery cause bpdu-protection interval 30//配置由于bpdu保护被shutdown的接口在30秒后自动恢复
记得先配置这个,如果目前LSW3是开启的,就先把LSW3的stp取消,再开启,再取消,就可以等到他30s自动回复了

根保护(在根交换机上配置)

针对对象:普通端口
作用原理:
如果一个接口没有开启边缘端口,那么这个接口就无法使用BPDU保护,
那么就只能使用根保护功能。根保护功能可以将一个端口强制为DP接口,防止周围交换机成为根桥。当一个接口开启根保护后,一旦收到了更优的BPDU时,那么接口角色不变,接口状态变为discarding
注意:根保护只能保护DP接口,不能保护RP接口:

解析:
配置完后,他的接口会被成阻塞状态,虽然能收到另一个交换机的BPDU,但是不理他

恢复:当接口不再收到更优的BPDU之后,将会进入正常的STP收敛过程。理论上这个恢复时间为2个转发时延

保护的目的都是为了不让根桥变动,从而发生网络动荡

环路保护(了解)

现象:
在已经形成环路的交换网络中,由于光纤链路出现单通故障,导致RP接口无法收到根桥发来的BPDU,那么老化时间超时后,RP接口将变成DP接口,AP接口变成RP接口并且快速进入转发状态。此时DP接口将会由discarding状态经过2个转发时延后进入到forwarding状态,此时将会导致一个方向的环路问题。
作用:为了防止出现这种环路,对根端口开启环路保护后,在无法收到上游发来的BPDU后,根端口会变为DP角色并且保持discarding状态不会在变化。
环路保护可以在RP和AP接口上开启
命令:
stp loop-protection//在该接口开启环路保护功能,一旦链路恢复通畅,将立刻恢复正常的STP收敛结果。恢复。

TC-BPDU保护(限制):
现象:运营STP的交换机,在默认接收到TC-BPDU后会删除MAC地址表项和ARP表项作用:防止TC-BPDU泛洪。命令:
//接口下开启TC-BPDU限制功能[HUAWEI-GigabitEthernet0/0/1l stp tc-restriction enable//全局开启TC-BPDU保护单位时间[HUAWEI] stp tc-protection interval 10HUAWEI ]//全局开启Tc-BPD单位时间内的接收报文数量值stp tc-protectionthreshold 5综上:以上三条命令配合使用,实现该接口在10秒钟内最多只能接收5个TC-BPDU,超限接收则丢弃

MSTP

在这里插入图片描述

由于生成树会进行破环,将一条链路进行阻塞(备份)
因此会产生一些问题:
问题1:次优路径
问 题2:链路不能负载分担
问题3:部分VLAN链路不同

华为中,STP和RSTP都跑在一颗生成树上(另外一颗会被阻塞掉),所以MSTP生成树随之诞生

[LSW3]stp mode mstp						//stp调整为MSTP
[SW1]stp region-configuration			//进入MSTP域配置视图
[SW1-mst-region]region-name HUAWEI		//配置MST的域名,如果没有配置,缺省会使用桥MAc地址代替
[LSW1-mst-region]revision-level 12		 //配置修订级别 如果没有配置,缺省为0
[SW1-mst-region]instance 10 vlan 10		//将vlan10加入实例10
[SW1-mst-regionlinstance 20 vlan 20		//将v1an20加入实例20
[LSW1-mst-region]active region-configuration//激活以上配置(必须激活才会生效,每增加新配置,都要重新激活)

交换机都要加上以上配置

[SW1]stp instance 10 root primary	//将交换机1配置为实例10的主根(作用就是实例10的优先级配置为0)
[SW2]stp instance 20 root primary	//将交换机2配置为实例20的主根(作用就是实例20的优先级配置为0)
[SW2]stp instance 10 root secondary 		//将交换机2配置为实例10的备份根桥,一旦sw1挂了,sw2将成为实例10的根桥 
[SW1lstp instance 20 root secondary		//将交换机1配置为实例20的备份根桥,一旦sw2挂了,sw1将成为实例20的根桥


常用查看命令:
1[SW1]display stp instance xx 			//查看当前实例详细信息
2[SW1ldisplay stp region-configuration 	//查看当前MST域内的详细配置

这时候就可以解决阻塞问题,实现负载均衡

vrrp协议

但是如果一个交换机挂了的话,就不行了(因为vlanif三层挂了,vlan10无法通信),所以需要VRRP协议(虚拟路由器冗余协议(共有协议))

VRRPv2仅适用于IPv4网络,VRRPV3适用于IPv4和IPv6两种网络.
VRRP协议报文:
只有一种报文:Advertisement报文;其目的IP地址是224.0.0.18,目的MAC地址是01-00-5e-00-01-12,协议号是112。

虚拟的路由器的MAC地址为0000-5e00-01XX(16进制)
XX代表vrrp的组编号(vrid ?)为1则是0101,为2就是102

在这里插入图片描述
authentication-mode:发送Advertisement报文(两边都配置。如果密码一致,则是同一个vrrp组)
preempt-mode:抢占(自动开启)
priority:优先级(默认100,1-254,越大越优)
timer:控制报文的发送间隔(1s一次)
track:做联动的
version-3:版本(-3对应IPV6)
virtual-ip:VRRP(虚拟)的ip号

在这里插入图片描述

如果公司不想浪费多余的ip地址,就得减少一个ip地址的使用
把虚地址和真实地址使用同一个(如LSW1的地址更改vrrp的ip地址)。这样的话,LSW1就必须成为master路由器,不能成为备份路由器(只在华为中可以生效)这时候就算把LSW2优先级调高也无法成为master了

这时候要是还想把备份调整为主路由器,就只能调换二者的真实ip地址

抢占的细节:
Master和backup在配置抢占时需要注意:
1.backup要配置立即抢占,因为一旦master故障后,backup要立即承接master的流量。(华为的vrrp默认抢占)
2.master要配置抢占延时,因为master故障恢复后上游协议可能还未完成收敛,会导致短暂的流量黑洞

//配置抢占延时60s,即故障60s后才恢复过来(给上游协议一些缓冲的机会,不然会导致短暂的流量黑洞)
vrrp vrid 1preempt-mode timer delay 60

Advertisement报文:这是VRRP中最主要的报文类型,用于路由器之间的状态通告。Master路由器会定期发送Advertisement报文到组播地址224.0.0.18,以宣告其状态和优先级。Backup路由器通过监听这些报文来判断Master路由器的状态。Advertisement报文包含了虚拟路由器的优先级、虚拟MAC地址、虚 拟IP地址等信息。

在这里插入图片描述
track做联动的(常跟bfd链路检测和nqa):
一般用于联动一个设备,用于检测这条链路是否断了,如果断了的话,就把vrrp的主变成备份的路由器。就主备进行一个切换

在这里插入图片描述

[LSW1]int vlanif 30
[LSW1-vlanif30]ip ad 192.168.30.2 24
[AR1]ip ad 192.168.30.1 24 				//在g0/0/0接口上配置ip地址
[LSW1]vrrp vrid 1 virtual-ip 192.168.10.254
[LSW1]vrrp vrid 1 priority 105
[LSW1]vrrp vrid 1 preempt-mode timer delay 60//配置抢占延时6es

//配置链路检测
[SW1lbfd 1 bind peer-ip 192.168.30.1 source-ip 192.168.30.2 auto
[SW1-bfd-session-1]commit
[AR1]bfd 1 bind peer ip 192.168.30.2 source-ip 192.168.30.1 auto
[AR-bfd-session-1]commit


//查看bfd
[SWl]display bfd session all

[SWl]interface Vlanif 10
//与BFD进行联动,当BFD会话down以后,默认将优先级减少
[Swl-Vlanif10]vrrp vrid 1 track bfd-session 1 reduced
//不写联动,默认值就是减10


在这里插入图片描述
increased:增加优先级
reduced:减少优先级
本来他是105,没必要增加了,所以只需要减少
让他变成备份交换机,让原先的备份成为主交换机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值