08-GVRP配置
本章节下载: 08-GVRP配置 (258.84 KB)
GARP(Generic Attribute Registration Protocol,通用属性注册协议)作为一个属性注册协议的载体,可以用来传播属性。遵循GARP协议的应用实体称为GARP应用,GVRP(GARP VLAN Registration Protocol,GARP VLAN注册协议)就是GARP的应用之一,用于注册和注销VLAN属性。下面首先了解一下GARP的相关内容。
GARP提供了一种机制,用于协助同一局域网内各成员之间分发、传播和注册某种信息(如VLAN、组播地址等)。
设备上每一个参与协议的端口都可以视为一个应用实体,当GARP应用(如GVRP)在端口上启动之后,该端口就可视为一个GARP应用实体。
通过GARP机制,一个GARP应用实体上的配置信息会迅速传遍整个局域网。如图1-1所示,GARP应用实体通过发送声明或回收声明来通知其它GARP应用实体来注册或注销自己的属性信息,并根据其它实体发来的声明或回收声明来注册或注销对方的属性信息。
图1-1 GARP实现机制示意图
譬如,GVRP协议实现VLAN属性注册和注销的方式如下:
· 当端口收到一个VLAN属性的声明时,该端口将注册该声明中所包含的VLAN属性(即,该端口加入到该VLAN中)。
· 当端口收到一个VLAN属性的回收声明时,该端口将注销该声明中所包含的VLAN属性(即,该端口退出该VLAN)。
GARP应用实体之间的信息交换借助于传递各种消息来完成,主要包括Join消息、Leave消息和LeaveAll消息,它们通过互相配合来确保信息的注册或注销。由于GVRP基于GARP实现,因此,GVRP也是通过GARP消息进行信息交互的。
(1) Join消息
当一个GARP应用实体希望其它设备注册自己的属性信息时,它会发送Join消息;当收到来自其它实体的Join消息或由于本设备静态配置了某些属性而需要其它实体进行注册时,它也会发送Join消息。Join消息又分为JoinEmpty和JoinIn两种,二者的区别如下:
· JoinEmpty:用于声明一个本身没有注册的属性。
· JoinIn:用于声明一个本身已经注册的属性。
(2) Leave消息
当一个GARP应用实体希望其它设备注销自己的属性信息时,它会发送Leave消息;当收到来自其它实体的Leave消息注销某些属性或静态注销了某些属性后,它也会发送Leave消息。Leave消息又分为LeaveEmpty和LeaveIn两种,二者的区别如下:
· LeaveEmpty:用于注销一个本身没有注册的属性。
· LeaveIn:用于注销一个本身已经注册的属性。
(3) LeaveAll消息
每个GARP应用实体启动时都会启动各自的LeaveAll定时器,当该定时器超时后,GARP应用实体就会发送LeaveAll消息来注销所有的属性,从而使其它实体重新注册本实体上所有的属性信息。
GARP定义了四种定时器,用于控制各种GARP消息的发送。
· GARP定时器值的改变将应用于同一局域网内所有运行的GARP应用(如GVRP)上。
· 设备的每个端口上都独立维护自己的Hold定时器、Join定时器和Leave定时器,而每台设备则只在全局维护一个LeaveAll定时器。
· Hold定时器、Join定时器、Leave定时器和LeaveAll定时器的取值范围之间存在着相互制约的关系,具体情况请参见表1-5。
(1) Hold定时器
Hold定时器用来控制GARP消息(包括Join消息和Leave消息)的发送。当GARP应用实体的属性改变或收到来自其它实体的GARP消息时,不会立即将该消息发送出去,而是在Hold定时器超时后,将此时段内待发送的所有GARP消息封装成尽可能少的报文发送出去,这样就减少了报文的发送数量,从而节省了带宽资源。
(2) Join定时器
Join定时器用来控制Join消息的发送。为了保证Join消息能够可靠地传输到其它实体,GARP应用实体在发出Join消息后将等待一个Join定时器的时间间隔:如果在该定时器超时前收到了其它实体发来的JoinIn消息,它便不会重发该Join消息;否则,它将重发一次该Join消息。
并非每个属性都有自己的Join定时器,而是每个GARP应用实体共用一个。因此,Join定时器应该足够大,以保证所有属性能够在一次声明过程中全部发送出去。
(3) Leave定时器
Leave定时器用来控制属性的注销。当GARP应用实体希望其它实体注销自己的某属性信息时会发送Leave消息,收到该消息的实体将启动Leave定时器,只有在该定时器超时前没有收到该属性信息的Join消息,该属性信息才会被注销。
(4) LeaveAll定时器
每个GARP应用实体启动时都会启动各自的LeaveAll定时器,当该定时器超时后,GARP应用实体就会对外发送LeaveAll消息,从而使其它实体重新注册其属性信息。随后再重新启动LeaveAll定时器,开始新一轮的循环。收到LeaveAll消息的实体将重新启动所有的定时器,其中也包括LeaveAll定时器。
· 每一轮LeaveAll都相当于全网所有属性的一次注销。由于其影响范围很广,所以LeaveAll定时器的值不能太小,至少应大于Leave定时器的值。
· 尽管全网各设备上LeaveAll定时器的值有可能不同,但这些设备都将以LeaveAll定时器的全网最小值为周期来发送LeaveAll消息。这是由于各设备在收到LeaveAll消息后都会清零自己的LeaveAll定时器,而只有具备最小LeaveAll定时器值的设备才来得及将LeaveAll消息发出,因此实际上只有具备全网最小值的LeaveAll定时器才会生效。
图1-2 GARP协议报文封装格式
如图1-2所示,GARP协议报文采用IEEE 802.3 Ethernet封装格式,其中主要字段的说明如表1-1所示。
表1-1 GARP协议报文主要字段说明
字段 |
说明 |
GARP PDU |
封装在GARP协议报文中的GARP PDU(Protocol Data Unit,协议数据单元) |
Protocol ID |
协议编号,GARP PDU的协议编号为0x0001 |
Message |
属性消息,每个消息都由Attribute type和Attribute list两个字段构成 |
End mark |
结束标志,取值为0x00 |
Attribute type |
属性类型,由具体的GARP应用来定义。取值为0x01时表示VLAN ID,代表GVRP应用 |
Attribute list |
属性列表,由多个属性构成 |
Attribute |
属性,每个属性都由Attribute length、Attribute event和Attribute value这三个字段构成 |
Attribute length |
属性长度(包括本字段在内),取值范围为2~255,单位为字节 |
Attribute event |
属性所描述的事件,取值及含义如下: · 0x00:表示LeaveAll事件 · 0x01:表示JoinEmpty事件 · 0x02:表示JoinIn事件 · 0x03:表示LeaveEmpty事件 · 0x04:表示LeaveIn事件 · 0x05:表示Empty事件 |
Attribute value |
属性取值。GVRP应用的属性取值为VLAN ID,但当Attribute event字段的取值为0x00时(即LeaveAll事件),本字段无效 |
GARP协议报文以特定组播MAC地址为目的MAC,如GVRP的目的MAC地址为01-80-C2-00-00-21。当设备在收到GARP应用实体的报文后,会根据其目的MAC地址分发给不同的GARP应用进行处理。
GVRP是GARP应用的一种,它基于GARP的工作机制来维护设备中的VLAN动态注册信息,并将该信息向其它设备传播:当设备启动了GVRP之后,就能够接收来自其它设备的VLAN注册信息,并动态更新本地的VLAN注册信息,包括当前的VLAN成员、这些VLAN成员可通过哪个端口到达等;此外,设备还能够将本地的VLAN注册信息向其它设备传播,从而使同一局域网内所有设备的VLAN信息都达成一致。
GVRP传播的VLAN注册信息既包括本地手工配置的静态注册信息,也包括来自其它设备的动态注册信息。
我们将通过手工创建的VLAN称为静态VLAN,通过GVRP协议创建的VLAN称为动态VLAN。GVRP有三种注册模式,不同注册模式对静态VLAN和动态VLAN的处理方式也不同。
(1) Normal模式
该模式下的端口允许进行动态VLAN的注册或注销,并允许发送动态和静态VLAN的声明。
(2) Fixed模式
该模式下的端口禁止进行动态VLAN的注册或注销,且只允许发送静态VLAN的声明。也就是说,该模式下的Trunk端口,即使允许所有VLAN通过,实际通过的VLAN也只能是手工创建的那部分VLAN。
(3) Forbidden模式
该模式下的端口禁止进行动态VLAN的注册或注销,且只允许发送VLAN 1的声明。也就是说,该模式下的Trunk端口,即使允许所有VLAN通过,实际通过的VLAN也只能是VLAN 1。
与GVRP相关的协议规范有:
· IEEE 802.1Q:Virtual Bridged Local Area Networks
表1-2 GVRP配置任务简介
配置任务 |
说明 |
详细配置 |
配置GVRP功能 |
必选 |
|
配置GARP定时器 |
可选 |
对于GVRP的相关配置来说:
· 以太网接口视图下的配置只对当前端口有效;二层聚合接口视图下的配置只对当前接口有效;端口组视图下的配置对当前端口组中的所有端口有效。
· 聚合成员端口上的配置只有当该端口退出聚合组后才会生效。
在使能端口的GVRP功能之前,必须先全局使能GVRP功能。此外,GVRP功能只能配置在Trunk端口上,并且需要通过配置来保证所有动态注册的VLAN都能够从该端口通过。
表1-3 配置GVRP功能
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
全局使能GVRP功能 |
gvrp |
必选 缺省情况下,全局的GVRP功能处于关闭状态 |
|
进入相应视图 |
进入以太网或二层聚合接口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group manual port-group-name |
||
配置端口的链路类型为Trunk类型 |
port link-type trunk |
必选 缺省情况下,端口的链路类型为Access类型 |
|
允许所有VLAN都通过当前Trunk端口 |
port trunk permit vlan all |
必选 缺省情况下,Trunk端口只允许VLAN 1通过 |
|
使能端口上的GVRP功能 |
gvrp |
必选 缺省情况下,端口上的GVRP功能处于关闭状态 |
|
配置GVRP端口的注册模式 |
gvrp registration { fixed | forbidden | normal } |
可选 缺省情况下,GVRP端口的注册模式为Normal模式 |
· 有关port link-type trunk和port trunk permit vlan all命令的详细介绍,请参见“二层技术-以太网交换命令参考”中的“VLAN”。
· GVRP功能只能运行在MSTP的CIST实例上,并且CIST实例上被MSTP阻塞的端口不能收发GVRP协议报文。
· 建议不要同时启用远程端口镜像功能和GVRP功能,否则GVRP可能将远程镜像VLAN注册到不希望的端口上,此时在镜像目的端口就会收到很多不必要的报文。有关端口镜像的详细介绍,请参见“网络管理和监控配置指导”中的“端口镜像”。
· 在二层聚合接口上启用了GVRP功能后,会同时在二层聚合接口和对应的所有选中成员端口上进行动态VLAN的注册或注销。
在配置GARP定时器时:
· LeaveAll定时器的配置将对所有端口都生效;
· Hold定时器、Join定时器和Leave定时器的配置只对所配置的端口生效。
表1-4 配置GARP定时器
命令 |
说明 |
||
进入系统视图 |
system-view |
- |
|
配置LeaveAll定时器 |
garp timer leaveall timer-value |
可选 缺省情况下,LeaveAll定时器的值为1000厘秒 |
|
进入相关视图 |
进入以太网或二层聚合接口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group manual port-group-name |
||
配置Hold定时器 |
garp timer hold timer-value |
可选 缺省情况下,Hold定时器的值为10厘秒 |
|
配置Join定时器 |
garp timer join timer-value |
可选 缺省情况下,Join定时器的值为20厘秒 |
|
配置Leave定时器 |
garp timer leave timer-value |
可选 缺省情况下,Leave定时器的值为60厘秒 |
如表1-5所示,各GARP定时器的取值范围之间存在着相互制约的关系:
· 当配置某定时器时,如果配置值超出了该定时器当前有效的取值范围,则该配置无效。用户可以通过改变相关定时器的值来重新进行配置。
· 当用户欲恢复各定时器的值为缺省值时,须按照Hold定时器->Join定时器->Leave定时器->LeaveAll定时器的顺序依次恢复。
在完成上述配置后,在任意视图下执行display命令可以显示配置后GARP或GVRP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除GARP的统计信息。
表1-6 GVRP显示和维护
操作 |
命令 |
显示端口上GARP的统计信息 |
display garp statistics [ interface interface-list ] [ | { begin | exclude | include } regular-expression ] |
显示端口上各GARP定时器的取值 |
display garp timer [ interface interface-list ] [ | { begin | exclude | include } regular-expression ] |
显示端口上GVRP本地VLAN的信息 |
display gvrp local-vlan interface interface-type interface-number [ | { begin | exclude | include } regular-expression ] |
显示端口上指定VLAN内各GVRP状态机的信息 |
display gvrp state interface interface-type interface-number vlan vlan-id [ | { begin | exclude | include } regular-expression ] |
显示Trunk端口上GVRP的统计信息 |
display gvrp statistics [ interface interface-list ] [ | { begin | exclude | include } regular-expression ] |
显示GVRP的全局状态信息 |
display gvrp status [ | { begin | exclude | include } regular-expression ] |
显示端口上当前的动态VLAN操作信息 |
display gvrp vlan-operation interface interface-type interface-number [ | { begin | exclude | include } regular-expression ] |
清除端口上GARP的统计信息 |
reset garp statistics [ interface interface-list ] |
· Device A和Device B分别通过各自的端口GigabitEthernet1/0/1相连。
· 通过启用GVRP功能,并配置GVRP的注册模式为Normal模式,来实现Device A和Device B之间所有动态和静态VLAN的注册和注销。
图1-3 GVRP Normal注册模式配置组网图
(1) 配置Device A
# 全局使能GVRP功能。
<DeviceA> system-view
[DeviceA] gvrp
# 将端口GigabitEthernet1/0/1配置为Trunk端口,并允许所有VLAN通过。
[DeviceA] interface gigabitethernet 1/0/1
[DeviceA-GigabitEthernet1/0/1] port link-type trunk
[DeviceA-GigabitEthernet1/0/1] port trunk permit vlan all
# 在端口GigabitEthernet1/0/1上使能GVRP功能。
[DeviceA-GigabitEthernet1/0/1] gvrp
[DeviceA-GigabitEthernet1/0/1] quit
# 配置静态VLAN 2。
[DeviceA] vlan 2
[DeviceA-vlan2] quit
(2) 配置Device B
# 使能全局的GVRP功能。
<DeviceB> system-view
[DeviceB] gvrp
# 将端口GigabitEthernet1/0/1配置为Trunk端口,并允许所有VLAN通过。
[DeviceB] interface gigabitethernet 1/0/1
[DeviceB-GigabitEthernet1/0/1] port link-type trunk
[DeviceB-GigabitEthernet1/0/1] port trunk permit vlan all
# 在端口GigabitEthernet1/0/1上使能GVRP功能。
[DeviceB-GigabitEthernet1/0/1] gvrp
[DeviceB-GigabitEthernet1/0/1] quit
# 配置静态VLAN 3。
[DeviceB] vlan 3
[DeviceB-vlan3] quit
(3) 检验配置效果
通过使用display gvrp local-vlan命令可以查看端口上GVRP本地VLAN的信息,例如:
# 查看Device A的端口GigabitEthernet1/0/1上GVRP本地VLAN的信息。
[DeviceA] display gvrp local-vlan interface gigabitethernet 1/0/1
Following VLANs exist in GVRP local database:
1(default),2-3
由此可见,VLAN 1的信息、在本设备上创建VLAN 2的静态VLAN信息,以及在Device B上创建VLAN 3的动态VLAN信息都已通过GVRP协议进行了注册。
# 查看Device B的端口GigabitEthernet1/0/1上GVRP本地VLAN的信息。
[DeviceB] display gvrp local-vlan interface gigabitethernet 1/0/1
Following VLANs exist in GVRP local database:
1(default),2-3
由此可见,VLAN 1的信息、在本设备上创建VLAN 3的静态VLAN信息,以及在Device A上创建VLAN 2的动态VLAN信息都已通过GVRP协议进行了注册。
· Device A和Device B分别通过各自的端口GigabitEthernet1/0/1相连。
· 通过启用GVRP功能,并配置GVRP的注册模式为Fixed模式,来实现Device A和Device B之间所有静态VLAN的注册和注销。
图1-4 GVRP Fixed注册模式配置组网图
(1) 配置Device A
# 全局使能GVRP功能。
<DeviceA> system-view
[DeviceA] gvrp
# 将端口GigabitEthernet1/0/1配置为Trunk端口,并允许所有VLAN通过。
[DeviceA] interface gigabitethernet 1/0/1
[DeviceA-GigabitEthernet1/0/1] port link-type trunk
[DeviceA-GigabitEthernet1/0/1] port trunk permit vlan all
# 在端口GigabitEthernet1/0/1上使能GVRP功能,并配置其注册模式为Fixed模式。
[DeviceA-GigabitEthernet1/0/1] gvrp
[DeviceA-GigabitEthernet1/0/1] gvrp registration fixed
[DeviceA-GigabitEthernet1/0/1] quit
# 配置静态VLAN 2。
[DeviceA] vlan 2
[DeviceA-vlan2] quit
(2) 配置Device B
# 使能全局的GVRP功能。
<DeviceB> system-view
[DeviceB] gvrp
# 将端口GigabitEthernet1/0/1配置为Trunk端口,并允许所有VLAN通过。
[DeviceB] interface gigabitethernet 1/0/1
[DeviceB-GigabitEthernet1/0/1] port link-type trunk
[DeviceB-GigabitEthernet1/0/1] port trunk permit vlan all
# 在端口GigabitEthernet1/0/1上使能GVRP功能,并配置其注册模式为Fixed模式。
[DeviceB-GigabitEthernet1/0/1] gvrp
[DeviceB-GigabitEthernet1/0/1] gvrp registration fixed
[DeviceB-GigabitEthernet1/0/1] quit
# 配置静态VLAN 3。
[DeviceB] vlan 3
[DeviceB-vlan3] quit
(3) 检验配置效果
通过使用display gvrp local-vlan命令可以查看端口上GVRP本地VLAN的信息,例如:
# 查看Device A的端口GigabitEthernet1/0/1上GVRP本地VLAN的信息。
[DeviceA] display gvrp local-vlan interface gigabitethernet 1/0/1
Following VLANs exist in GVRP local database:
1(default), 2
由此可见,VLAN 1的信息以及在本设备上创建VLAN 2的静态VLAN信息已通过GVRP协议进行了注册,而在Device B上创建VLAN 3的动态VLAN信息并未通过GVRP协议进行注册。
# 查看Device B的端口GigabitEthernet1/0/1上GVRP本地VLAN的信息。
[DeviceB] display gvrp local-vlan interface gigabitethernet 1/0/1
Following VLANs exist in GVRP local database:
1(default), 3
由此可见,VLAN 1的信息以及在本设备上创建VLAN 3的静态VLAN信息已通过GVRP协议进行了注册,而在Device A上创建VLAN 2的动态VLAN信息并未通过GVRP协议进行注册。
· Device A和Device B分别通过各自的端口GigabitEthernet1/0/1相连。
· 通过启用GVRP功能,并配置GVRP的注册模式为Forbidden模式,来阻止Device A和Device B之间除VLAN 1以外所有VLAN的注册和注销。
图1-5 GVRP Forbidden注册模式配置组网图
(1) 配置Device A
# 全局使能GVRP功能。
<DeviceA> system-view
[DeviceA] gvrp
# 将端口GigabitEthernet1/0/1配置为Trunk端口,并允许所有VLAN通过。
[DeviceA] interface gigabitethernet 1/0/1
[DeviceA-GigabitEthernet1/0/1] port link-type trunk
[DeviceA-GigabitEthernet1/0/1] port trunk permit vlan all
# 在端口GigabitEthernet1/0/1上使能GVRP功能,并配置其注册模式为Forbidden模式。
[DeviceA-GigabitEthernet1/0/1] gvrp
[DeviceA-GigabitEthernet1/0/1] gvrp registration forbidden
[DeviceA-GigabitEthernet1/0/1] quit
# 配置静态VLAN 2。
[DeviceA] vlan 2
[DeviceA-vlan2] quit
(2) 配置Device B
# 使能全局GVRP。
<DeviceB> system-view
[DeviceB] gvrp
# 将端口GigabitEthernet1/0/1配置为Trunk端口,并允许所有VLAN通过。
[DeviceB] interface gigabitethernet 1/0/1
[DeviceB-GigabitEthernet1/0/1] port link-type trunk
[DeviceB-GigabitEthernet1/0/1] port trunk permit vlan all
# 在端口GigabitEthernet1/0/1上使能GVRP功能,并配置其注册模式为Forbidden模式。
[DeviceB-GigabitEthernet1/0/1] gvrp
[DeviceB-GigabitEthernet1/0/1] gvrp registration forbidden
[DeviceB-GigabitEthernet1/0/1] quit
# 配置静态VLAN 3。
[DeviceB] vlan 3
[DeviceB-vlan3] quit
(3) 检验配置效果
通过使用display gvrp local-vlan命令可以查看端口上GVRP本地VLAN的信息,例如:
# 查看Device A的端口GigabitEthernet1/0/1上GVRP本地VLAN的信息。
[DeviceA] display gvrp local-vlan interface gigabitethernet 1/0/1
Following VLANs exist in GVRP local database:
1(default)
由此可见,除VLAN 1的信息外,在本设备上创建VLAN 2的静态VLAN信息,以及在Device B上创建VLAN 3的动态VLAN信息都未通过GVRP协议进行注册。
# 查看Device B的端口GigabitEthernet1/0/1上GVRP本地VLAN的信息。
[DeviceB] display gvrp local-vlan interface gigabitethernet 1/0/1
Following VLANs exist in GVRP local database:
1(default)
由此可见,除VLAN 1的信息外,在本设备上创建VLAN 3的静态VLAN信息,以及在Device A上创建VLAN 2的动态VLAN信息都未通过GVRP协议进行注册。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!