暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为交换技术_GVRP深入剖析

爱婷如命一生一世 2021-07-13
2981


       在中小企业中,vlan的划分方式都是基于手动来创建,当局域网中交换机数量很多时,众多的vlan数量又发生数量变化,这种技术含量低且简单重复劳动应该要避免,这时vlan的开发者想到了了一种自动的注册方式——GVRP协议能实现vlan信息的注册和注销,s1700系列不支持


说到Gvrp协议,不得不提到GARP(通用属性注册协议)通过它只需要在其中一个交换机上创建所需的vlan,通过自动注册功能使网络中其他的交换机学习到该创建的vlan,大大降低了网络管理员的工作量,减少了错误的出现
从思维导图中,可以明确看出GVRP是GARP的一种应用,可以理解成vlan中继。Gvrp基于Garp的机制,主要用于维护设备动态vlan信息,通过Gvrp协议,一台设备上的vlan信息会迅速的传播到整个交换网络中

                                       GVRP试验拓扑
       从拓扑中看到三台交换机所连接的链路是 trunk链路,原因在于GVRP注册功能仅可在trunk端口类型上使能,终端用户连接的端口是不能通过GVRP功能自动加入到所需的vlan之中,需要采取手动配置。

建议做之前,每台交换机通过配置命令关闭日志提示信息,避免中途弹出干扰。

[s3]info-center source DS channel 0 trap state off log state off 

所有参加gvrp的交换机的机联口的端口类型必须是trunk类型。(其余交换机的机联口也是这样配置)

[s2-GigabitEthernet0/0/24]port link-type trunk 

[s2-GigabitEthernet0/0/24]port trunk allow-pass vlan all 

视图模式下,每个交换机启用GVRP

[s1]gvrp 

每个交换机下的机连接口下启用GVRP

[s1-GigabitEthernet0/0/24]gvrp

目前为止,gvrp配置完成,并且每个交换机只有默认vlan1

在任意一条交换机上创建一条vlan13


观察其他两台交换机(在其他交换机上创建结果测试也一样。),发现其他交换机上存在了一条vlan13


观察vlan 类型

common:共同(本地创建的)

dynamic :动态(学习到的)

vlan1是默认vlan,因此vlan1也属于common类型。

被斩首的GVRP

拓扑中,将s2交换机的g0/0/24号关闭。

[S2-GigabitEthernet0/0/24]shutdown 

站在s1上就看不到s2的vlan15了,s1动态学习到的vlan15消失不见。

抹不掉GVRP的影子

当恢复端口之后,我站在s1上删除s2的vlan15,出现了如下提示

不能删除的根本原因就是该vlan是学习到的,不是本地建立的,只能在源头删除。

前文说过了,Gvrp就是Garp协议中一种应用,GARP作用传递属性,所以Gvrp就是用来传递vlan属性的!GVRP协议可以实现vlan信息的自动注册和注销!

深入剖析GVRP

对于GVRP是GARP的一种应用(GARP_通用属性注册协议,在抓取报文抓到GARP就不要奇怪了,IEEE规定了一个Mac地址0180-C200-0021

二层数据帧的目的mac如果是这个地址且交换机启用了GARP功能,交换机便可以通过这个地址来知晓vlanID。


GVRP的注册和注销

gvrp通过声明和回收声明来实现vlan信息的注册和注销

注意:GVRP协议的属性注册和注销仅仅是对于接收到GVRP协议报文的端口而言。

从这张图可以看出,s1学到s2的vlan15只在10号口中体现,15号口是压根没有vlan15的信息,但是s3有vlan15的信息,代表了s1向s3传播了vlan15的信息!



GARP消息类型  


Jion消息、Leave消息、LeaveAll 消息。  

     

jion加入消息分为两个消息:当一个GVRP应用实体希望其他设备注册自己的属性信息时,对外发送jion消息;当收到其他实体发来的jion消息,或本设备静态配置了某些属性,需要其他GARP应用实体进行注册时,也会向外发送jion消息。

jionempty消息:自己的vlan消息中,没有某一个vlan,新增vlan后,同步消息给其他交换机

jionin消息 (抓包无法抓取):其他交换价收到jion消息,得知新增vlan信息,若是自己没有,添加;若是本地存在,回应jionin消息


在抓取的报文的试验中,我用个最新版的c100的ENSP也没看到jion in的消息,在leavall 消息之后。连续出现了两个 jionempty的消息,属于ENSP模拟器的bug,从理论分析,第二个应该是jion in的消息,GARP工作原理,下文详细介绍。



Leave消息是删除vlan信息

分为leaveEmpty和LeaveIN,当一个Garp应用实体希望其他设备注销自己的某个属性时,他讲对外发送leave消息,当收到其他实体的leave消息注销某些属性,或静态注销了某些属性后,也会对外发送leave消息


leave all 

每个应用实体启动后,将同时启动LeaveALL定时器,当该定时器超时后将对外发送leaveALL消息,用来注销所有属性,周期性清除网络中的垃圾属性(例如某个属性已经被删除,,由于设备宕机,并没有发送leave消息)如下图:保持精准的属性信息


GARP定时器


Garp协议中用到了jion 、hold、leave、leaveall4个定时器




gvrp工作原理试验拓

抓取s1的10号端口和15号端口,

没有创建任何vlan之前,报文中可以看到周期性发送GARP报文的leavall 消息类型,但是不要被报文的表面所迷惑,这里面其实发送的是GARP报文,是通过vlan1发送的消息。

并且,GVRP消息中数据帧里的目的mac地址,就是之前提到的保留地址(IEEE规定)


在s1交换机上创建vlan15.

观察报文s2的10号端口报文发现,jion empty 消息中携带了vlan15的信息,要告诉给其他交换机,发送的同时启用jion,hold计时器(不是立马发送 jion empty消息,要等hold 计时器)

同样,在s1的15号端口中,也出现了报文消息类型

当你在s2交换机创建了vlan15的时候,你的24号口自动被加入到了vlan 15,我只做了vlan 15其他的并没有配置(只启用了gvrp,端口类型改为trunk,允许所有vlan通过)这个操作就是被gvrp完成。


站在s2交换机上,创建了vlan15,设备会启用jion/hold定时器,join定时器本身不发送任何消息(用于启动hlod定时器),具体逻辑关系如图

站在s1交换机上,设备的10和15号口被加入到了vlan15中,同样也是gvrp 做的!

那么收到的join empty消息后的交换机会做以下事情

按照拓扑:会继续传给其他交换机,以此类推,将创建好的vlan信息传遍整个网络。

注意一个问题,当都发送完毕之后,图中的中转的这台交换机10号口,可并没有加入到vlan15中。这里就是所谓的没有注册上。

这就需要下文继续分析返回确认的报文了


第一种返回确认方式

既然有发送的方向,那么分析下在动态学习完vlan信息后的交换机会做什么?

如图所示,以此类推,静默响应。

第二种返回确认方式

不过图中s3启动hold和jion定时器的意义有了区别。

s3就从24号口发送jion in的消息

当交换机s2的15号口收到jion in 消息做的动作

1.s1收到s2发来的jion in消息

2.停止发送join empty消息给s2


leave 注销消息

我删除s1里的vlan15信息,抓到leave注销信息,而且只能有一个,

s1的10号口和15号口会启动hold定时器发送leave empty消息,通过vlan1发送(VID0x01),里边携带了vlan15号信息,端口从而在vlan15中注销。

当s1删除vlan15后,s2收到后一定会回复 jion in消息表示确认,因此在leave all 消息后出现连个 jion empty是不对的!

当我删除vlan时候,工作原理如下

不要担心对端收不到,因为会有leave all消息户更新vlan信息的,

因此在拓扑中,当s1创建好一个vlan后,抓取的报文中,会发现leave all消息后面会有两个jion empty的消息,红色箭头标注的报文不应该是jion empty,应该 是 jion in 消息,用于回复消息,不让对端在发送jion empty消息,符合gvrp工作原理


接口注册模式

试验拓扑

GVRP的接口注册模式

接口的注册模式是否有效果,一定要关注在哪个接口下产生。

[s1-GigabitEthernet0/0/15]gvrp registration


将s1的g0/0/10端口注册模式调整fixed模式:禁止该接口动态注册或注销vlan,只传播静态vlan,不传播动态vlan

[s1-GigabitEthernet0/0/10]gvrp registration fixed


s2交换机再次创建一个vlan20  [S2]vlan 20

查看s1交换机内,无法学到vlan20,

,vlan20对于s2来说是本地vlan ,对于s1来说是动态vlan,S1的10号口设置fix,该端口就禁止注册,所以学不到s2的vlan20了,更何况s3交换机。

按照fix的属性,可以看出

s1本身的g0/0/10端口不存在注册一说,只存在撤销的概念,当s1的10号口注册模式变为fix ,s2的24号口本身不受影响,依旧加入了vlan20.

按照这个说法,保持该配置,我在s1上创建一个vlan 28,

[s1]vlan 28

在s2上观察vlan情况,发现s2上有了vlan 28,这就说明了对于S1来说,GVRP流入该10号端口后,才形成注册,但是s1的10号口根本不存在注册的概念,这个端口是存在于静态vlan之中的,而fix属性是可以传播静态vlan的

就是因为fix的属性不传播动态vlan ,因此s3是收不到s2本地的vlan 15的


forbidde

先undo掉s1的10号口,

[s1-GigabitEthernet0/0/10]undo gvrp registration fixed

设置s2的24号口

[S2-GigabitEthernet0/0/24]gvrp registration forbidden 

查看,s1交换机,发现s2本地的vlan 15是没有,s3也一样,证明静态vlan没有被传播,


从以上试验结果可以说明端口注册模式的重要性,增加了安全性和效率。

GVRP定时器修改

[S2]garp timer leaveall ?

默认时间是1000厘秒,相当于10秒。

生产场景中,leavaeall 改为12000,两分钟

[S2]garp timer leaveall 12000

不要改太小的值,影响带宽。


在实际的组网中,GVRP定时器推荐设置:

[S2-GigabitEthernet0/0/24]garp timer 

hold  默认10厘秒改为100厘秒。(1秒)

join  默认20厘秒改为600厘秒(6秒)。

leave 默认60厘秒改为3000厘秒。(30秒)

leaveALL 默认1000厘秒改为12000厘秒(2分钟)


文章转载自爱婷如命一生一世,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论