华为交换机VLAN基础知识(四)
华为交换机VLAN基础知识(三) https://www.wlgly.net/post-167.html
18、GVRP(通用属性注册协议)
适用于交换网络数量较大,VLAN较多的时候,原理是只需在一台设备上划分VLAN,然后通过自动注册功能在网络中其他交换机中自动创建所需的VLAN。
GVRP注册功能只能在设备之间Trunk端口上使能,用户计算机连接端口不能通过GVRP自动加入到所需VLAN中,只能手工配置。
GARP协议主要用于建立一种属性传递扩散的机制,以保证协议实体能够注册和注销该属性。GARP作为一个属性注册协议的载体,可以用来传播属性。将GARP协议报文的内容映射成不同的属性即可支持不同上层协议应用。
GVRP是GARP的一种应用,用于注册和注销VLAN属性。GARP协议通过目的MAC地址区分不同的应用。在IEEE Std 802.1Q中将01-80-C2-00-00-21分配给VLAN应用,即GVRP。
如果需要为网络中的所有设备都配置VLAN,就需要网络管理员在每台设备上分别进行手工添加。
图16 GVRP应用组网图
如上图16所示,SwitchA上有VLAN2,SwitchB和SwitchC上只有VLAN1,三台设备通过Trunk链路连接在一起。为了使SwitchA上VLAN 2的报文可以传到SwitchC,网络管理员必须在SwitchB和SwitchC上分别手工添加VLAN2。
对于上面的组网情况,手工添加VLAN很简单,但是当实际组网复杂到网络管理员无法短时间内了解网络的拓扑结构,或者是整个网络的VLAN太多时,工作量会非常大,而且非常容易配置错误。在这种情况下,用户可以通过GVRP的VLAN自动注册功能完成VLAN的配置。
GVRP基于GARP机制,主要用于维护设备动态VLAN属性。通过GVRP协议,一台设备上的VLAN信息会迅速传播到整个交换网。
GVRP实现动态分发、注册和传播VLAN属性,从而达到减少网络管理员的手工配置量及保证VLAN配置正确的目的。
图17 GVRP应用实体
在设备上,每一个参与协议的端口可以视为一个应用实体。当GVRP在设备上启动的时候,每个启动GVRP的端口对应一个GVRP应用实体,如上图17所示。
2、GVRP VLAN的注册和注销
GVRP协议可以实现VLAN属性的自动注册和注销。VLAN的注册:指的是将端口加入VLAN。VLAN的注销:指的是将端口退出VLAN。GVRP协议通过声明和回收声明实现VLAN属性的注册和注销。
当端口接收到一个VLAN属性声明时,该端口将注册该声明中包含的VLAN信息(端口加入VLAN);当端口接收到一个VLAN属性的回收声明时,该端口将注销该声明中包含的VLAN信息(端口退出VLAN)。
图18 VLAN的注册和注销
GVRP协议的属性注册和注销仅仅是对于接收到GVRP协议报文的端口而言的。
3、GVRP消息类型
GARP应用实体之间的信息交换借助于消息的传递来完成,主要有三类消息起作用,分别为Join消息、Leave消息和LeaveAll消息。
3.1、Join消息:
当一个GARP应用实体希望其它设备注册自己的属性信息时,它将对外发送Join消息;当收到其它实体的Join消息或本设备静态配置了某些属性,需要其它GARP应用实体进行注册时,它也会向外发送Join消息。
Join消息分为JoinEmpty和JoinIn两种,区别如下:JoinEmpty:声明一个本身没有注册的属性。JoinIn:声明一个本身已经注册的属性。
3.2、Leave消息:
当一个GARP应用实体希望其它设备注销自己的属性信息时,它将对外发送Leave消息;当收到其它实体的Leave消息注销某些属性或静态注销了某些属性后,它也会向外发送Leave消息。
Leave消息分为LeaveEmpty和LeaveIn两种,区别如下:LeaveEmpty:注销一个本身没有注册的属性。LeaveIn:注销一个本身已经注册的属性。
3.3、LeaveAll消息:
每个应用实体启动后,将同时启动LeaveAll定时器,当该定时器超时后应用实体将对外发送LeaveAll消息。
LeaveAll消息用来注销所有的属性,以使其它应用实体重新注册本实体上所有的属性信息,以此来周期性地清除网络中的垃圾属性(例如某个属性已经被删除,但由于设备突然断电,并没有发送Leave消息来通知其他实体注销此属性)。
4、GVRP定时器
GARP协议中用到了四个定时器,下面分别介绍一下它们的作用。
4.1:Join定时器:
Join定时器是用来控制Join消息(包括JoinIn和JoinEmpty)的发送的。
为了保证Join消息能够可靠的传输到其它应用实体,发送第一个Join消息后将等待一个Join定时器的时间间隔,如果在一个Join定时器时间内收到JoinIn消息,则不发送第二个Join消息;如果没收到,则再发送一个Join消息。每个端口维护独立的Join定时器。
4.2、Hold定时器:
Hold定时器是用来控制Join消息(包括JoinIn和JoinEmpty)和Leave消息(包括LeaveIn和LeaveEmpty)的发送的。
当在应用实体上配置属性或应用实体接收到消息时不会立刻将该消息传播到其它设备,而是在等待一个Hold定时器后再发送消息,设备将此Hold定时器时间段内接收到的消息尽可能封装成最少数量的报文,这样可以减少报文的发送量。如果没有Hold定时器的话,每来一个消息就发送一个,造成网络上报文量太大,既不利于网络的稳定,也不利于充分利用每个报文的数据容量。
每个端口维护独立的Hold定时器。Hold定时器的值要小于等于Join定时器值的一半。
4.3、Leave定时器:
Leave定时器是用来控制属性注销的。
每个应用实体接收到Leave或LeaveAll消息后会启动Leave定时器,如果在Leave定时器超时之前没有接收到该属性的Join消息,属性才会被注销。
这是因为网络中如果有一个实体因为不存在某个属性而发送了Leave消息,并不代表所有的实体都不存在该属性了,因此不能立刻注销属性,而是要等待其他实体的消息。
例如,某个属性在网络中有两个源,分别在应用实体A和B上,其他应用实体通过协议注册了该属性。当把此属性从应用实体A上删除的时候,实体A发送Leave消息,由于实体B上还存在该属性源,在接收到Leave消息之后,会发送Join消息,以表示它还有该属性。
其他应用实体如果收到了应用实体B发送的Join消息,则该属性仍然被保留,不会被注销。只有当其它应用实体等待两个Join定时器以上仍没有收到该属性的Join消息时,才能认为网络中确实没有该属性了,所以这就要求Leave定时器的值大于2倍Join定时器的值。
每个端口维护独立的Leave定时器。
4.4、LeaveAll定时器:
每个GARP应用实体启动后,将同时启动LeaveAll定时器,当该定时器超时后GARP应用实体将对外发送LeaveAll消息,随后再启动LeaveAll定时器,开始新的一轮循环。
接收到LeaveAll消息的实体将重新启动所有的定时器,包括LeaveAll定时器。在自己的LeaveAll定时器重新超时之后才会再次发送LeaveAll消息,这样就避免了短时间内发送多个LeaveAll消息。
如果不同设备的LeaveAll定时器同时超时,就会同时发送多个LeaveAll消息,增加不必要的报文数量,为了避免不同设备同时发生LeaveAll定时器超时,实际定时器运行的值是大于LeaveAll定时器的值,小于1.5倍LeaveAll定时器值的一个随机值。
一次LeaveAll事件相当于全网所有属性的一次Leave。由于LeaveAll影响范围很广,所以建议LeaveAll定时器的值不能太小,至少应该大于Leave定时器的值。
每个设备只在全局维护一个LeaveAll定时器。
5、GVRP注册模式
手工配置的VLAN称为静态VLAN,通过GVRP协议创建的VLAN称为动态VLAN。GVRP有三种注册模式,不同的模式对静态VLAN和动态VLAN的处理方式也不同。GVRP的三种注册模式分别定义如下:
Normal模式:允许动态VLAN在端口上进行注册,同时会发送静态VLAN和动态VLAN的声明消息。
Fixed模式:不允许动态VLAN在端口上注册,只发送静态VLAN的声明消息。
Forbidden模式:不允许动态VLAN在端口上进行注册,同时删除端口上除VLAN1外的所有VLAN,只发送VLAN1的声明消息。
图19 VLAN属性的单向注册
在SwitchA上创建静态VLAN2,通过VLAN属性的单向注册,将SwitchB和SwitchC的相应端口自动加入VLAN2。
在SwitchA上创建静态VLAN2后,Port1启动Join定时器和Hold定时器,等待Hold定时器超时后,SwitchA向SwitchB发送第一个JoinEmpty消息,Join定时器超时后再次启动Hold定时器,再等待Hold定时器超时后,发送第二个JoinEmpty消息。
SwitchB上接收到第一个JoinEmpty后创建动态VLAN2,并把接收到JoinEmpty消息的Port2加入到动态VLAN2中,同时告知Port3启动Join定时器和Hold定时器,等待Hold定时器超时后向SwitchC发送第一个JoinEmpty消息,Join定时器超时后再次启动Hold定时器,Hold定时器超时之后,发送第二个JoinEmpty消息。SwitchB上收到第二个JoinEmpty后,因为Port2已经加入动态VLAN2,所以不作处理。
SwitchC上接收到第一个JoinEmpty后创建动态VLAN2,并把接收到JoinEmpty消息的Port4加入到动态VLAN2中。SwitchC上收到第二个JoinEmpty后,因为Port4已经加入动态VLAN2,所以不作处理。
此后,每当LeaveAll定时器超时或收到LeaveAll消息,设备会重新启动LeaveAll定时器、Join定时器、Hold定时器和Leave定时器。SwitchA的Port1在Hold定时器超时之后发送第一个JoinEmpty消息,Join定时器超时后再次启动Hold定时器,再等待Hold定时器超时后,发送第二个JoinEmpty消息,SwitchB向SwitchC发送JoinEmpty消息的过程也是如此。
图20 VLAN属性的双向注册
通过上述VLAN属性的单向注册过程,端口Port1、Port2、Port4已经加入VLAN2,但是Port3还没有加入VLAN2(只有收到JoinEmpty消息或JoinIn消息的端口才能加入动态VLAN)。为使VLAN2流量可以双向互通,需要进行SwitchC到SwitchA方向的VLAN属性的注册过程。
VLAN属性的单向注册完成后,在SwitchC上创建静态VLAN2(将动态VLAN转换成静态VLAN),Port4启动Join定时器和Hold定时器,等待Hold定时器超时后,SwitchC向SwitchB发送第一个JoinIn消息(因为Port4已经注册了VLAN2,所以发送JoinIn消息),Join定时器超时后再次启动Hold定时器,Hold定时器超时之后,发送第二个JoinIn消息。
SwitchB上接收到第一个JoinIn后,把接收到JoinIn消息的Port3加入到动态VLAN2中,同时告知Port2启动Join定时器和Hold定时器,等待Hold定时器超时后,向SwitchA发送第一个JoinIn消息,Join定时器超时后再次启动Hold定时器,Hold定时器超时之后,发送第二个JoinIn消息;SwitchB上收到第二个JoinIn后,因为Port3已经加入动态VLAN2,所以不作处理。
SwitchA上接收到JoinIn之后,停止向SwitchB发送JoinEmpty消息。此后,当LeaveAll定时器超时或收到LeaveAll消息,设备重新启动LeaveAll定时器、Join定时器、Hold定时器和Leave定时器。SwitchA的Port1在Hold定时器超时之后就开始发送JoinIn消息。
SwitchB向SwitchC发送JoinIn消息。
SwitchC收到JoinIn消息后,由于本身已经创建了静态VLAN2,所以不会再创建动态VLAN2。
图21 VLAN属性的单向注销
当设备上不再需要VLAN2时,可以通过VLAN属性的注销过程将VLAN2从设备上删除。
在SwitchA上删除静态VLAN2,Port1启动Hold定时器,等待Hold定时器超时后,SwitchA向SwitchB发送LeaveEmpty消息。LeaveEmpty消息只需发送一次。
SwitchB上接收到LeaveEmpty,Port2启动Leave定时器,等待Leave定时器超时之后Port2注销VLAN2,将Port2从动态VLAN2中删除(由于此时VLAN2中还存在端口Port3,所以不会删除VLAN2),同时告知Port3 启动Hold定时器和Leave定时器,等待Hold定时器超时后,向SwitchC发送LeaveIn消息。由于SwitchC的静态VLAN2还没有删除,Port3在Leave定时器超时之前仍然能够收到Port4发送的JoinIn消息,所以SwitchA和SwitchB上仍然能够学习到动态的VLAN2。
SwitchC上接收到LeaveIn后,由于SwitchC上存在静态VLAN2,所以Port4不会从VLAN2中删除。
图22 VLAN属性的双向注销
为了彻底删除所有设备上的VLAN2,需要进行VLAN属性的双向注销。
在SwitchC上删除静态VLAN2,Port4启动Hold定时器,等待Hold定时器超时后,SwitchC向SwitchB发送LeaveEmpty消息。
SwitchB接收到LeaveEmpty消息后,Port3启动Leave定时器,等待Leave定时器超时之后Port3注销VLAN2,将Port3从动态VLAN2中删除并删除动态VLAN2,同时告知Port2启动Hold定时器,等待Hold定时器超时后,向SwitchA发送LeaveEmpty消息。
SwitchA接收到LeaveEmpty消息后,Port1启动Leave定时器,等待Leave定时器超时之后Port1注销VLAN2,将Port1从动态VLAN2中删除并删除动态VLAN2。
说明:为什么默认配置下通过GVRP创建和删除VLAN时CPU占用率高。
交换机支持通过两端设备配置VLAN,网络内使能GVRP,GVRP协议通告动态VLAN,通过两个方向的VLAN通告,全部中间设备动态创建和删除VLAN。动态维护VLAN,可以避免大量的手工配置量。
满规格4K动态VLAN频繁创建和删除,会触发大量报文通信,接受报文和下发动态VLAN会占用大量的CPU。因此,在实际组网中,GVRP的定时器需要按照推荐值进行调整。
建议用户将GVRP定时器配置为以下的推荐值:GARP Hold定时器:100厘秒(1秒钟);GARP Join定时器:600厘秒(6秒钟);GARP Leave定时器:3000厘秒(30秒钟);GARP LeaveAll定时器:12000厘秒(2分钟)当动态VLAN超过100个时,需将定时器配置为推荐值。当动态VLAN数增加时,定时器的时间也需要相应的增加。
华为交换机VLAN基础知识(五):https://www.wlgly.net/post-170.html
发表评论