GVRP配置
1.1 GVRP简介
GVRP(GARP VLAN Registration Protocol,GARP VLAN注册协议)是GARP(Generic Attribute Registration Protocol,通用属性注册协议)的一种应用。下面首先介绍一下GARP的相关内容。
1.1.1 GARP简介
GARP提供了一种机制,用于协助同一个局域网内的交换成员之间分发、传播和注册某种信息(如VLAN、组播信息等)。
GARP本身不作为一个实体存在于设备中,遵循GARP协议的应用实体称为GARP应用,GVRP就是GARP的一种应用。当GARP应用实体存在于设备的某个端口上时,该端口对应于一个GARP应用实体。
1. GARP消息和定时器
(1) GARP消息
GARP成员之间的信息交互借助于消息的传递来完成,主要有三类消息起作用,分别为Join消息、Leave消息和LeaveAll消息。
l 当一个GARP应用实体希望其它设备注册自己的属性信息时,它将对外发送Join消息;当收到其它实体的Join消息或本设备静态配置了某些属性,需要其它GARP应用实体进行注册时,它也会向外发送Join消息。
l 当一个GARP应用实体希望其它交换机注销自己的某属性信息时,它将对外发送Leave消息;当收到其它实体的Leave消息注销某些属性或静态注销了某些属性后,它也会向外发送Leave消息。
l 每个GARP应用实体启动后,将同时启动LeaveAll定时器,当该定时器超时后GARP应用实体将对外发送LeaveAll消息,LeaveAll消息用来注销所有的属性,以使其它GARP应用实体重新注册本实体上所有的属性信息。
Leave消息、LeaveAll消息与Join消息配合确保属性的注销或重新注册。
通过消息交互,所有待注册的属性信息可以传播到同一局域网内开启了GARP功能的所有设备上。
(2) GARP定时器
GARP消息发送的时间间隔是通过定时器来实现的,GARP定义了四种定时器,用于控制GARP消息的发送周期:
l Hold定时器:当GARP应用实体接收到其它设备发送的注册信息时,不会立即将该注册信息作为一条Join消息对外发送,而是启动Hold定时器。当该定时器超时后,GARP应用实体将此时段内收到的所有注册信息放在同一个Join消息中向外发送,从而节省带宽资源。
l Join定时器:GARP应用实体可以通过将每个Join消息向外发送两次来保证消息的可靠传输,在第一次发送的Join消息没有得到回复的时候,GARP应用实体会第二次发送Join消息。两次Join消息发送之间的时间间隔用Join定时器来控制。
l Leave定时器:当一个GARP应用实体希望注销某属性信息时,将对外发送Leave消息,接收到该消息的GARP应用实体启动Leave定时器,如果在该定时器超时之前没有收到Join消息,则注销该属性信息。
l LeaveAll定时器:每个GARP应用实体启动后,将同时启动LeaveAll定时器,当该定时器超时后,GARP应用实体将对外发送 LeaveAll消息,以使其它GARP应用实体重新注册本实体上所有的属性信息。随后再启动LeaveAll定时器,开始新的一轮循环。
& 说明:
l GARP定时器的值将应用于所有在同一局域网内运行的GARP应用(如GVRP)。
l Hold定时器、Join定时器和Leave定时器的值可以在每个以太网端口单独进行设置;而LeaveAll定时器只需在设备的全局进行设置即可,设置完成后,该值将在设备的所有端口上生效。
l 在全网有多台设备的情况下,各个设备的LeaveAll定时器的取值可能不相同,但各设备都将以全网时间段最小的LeaveAll定时器为准发送 LeaveAll消息。因为每次发送LeaveAll消息时,其它设备接收到之后都会清零LeaveAll定时器,因此即使全网存在很多不同的 LeaveAll定时器,也只有时间段最小的那个LeaveAll定时器起作用。
2. GARP运行过程
通过GARP机制,一个GARP成员上的配置信息 会迅速传播到整个局域网。GARP成员可以是终端工作站或网桥。GARP成员通过声明或回收声明来通知其它的GARP成员注册或注销自己的属性信息,并根 据其它GARP成员的声明或回收声明来注册或注销其它GARP成员的属性信息。当端口接收到一个属性声明时,该端口将注册该属性,如果端口接收到回收属性 的声明,该端口将注销该属性。
GARP应用实体的协议数据报文以特定的组播MAC地址为目的MAC。设备在接收到GARP应用实体的报文后,会根据其目的MAC地址加以区分并交给不同的GARP应用(如GVRP)去处理。
3. GARP的报文格式
GARP的报文格式如下图所示。
图1-1 GARP报文格式
各个字段的说明如表1-1所示。
表1-1 各个字段的说明
字段 | 含义 | 取值 |
---|---|---|
Protocol ID | 协议ID | 取值为1 |
Message | 消息,每个Message由Attribute Type、Attribute List构成 | - |
Attribute Type | 属性类型,由具体的GARP的应用定义 | 对于GVRP,属性类型为0x01,表示属性取值为VLAN ID |
Attribute List | 属性列表,由多个属性构成 | - |
Attribute | 属性,每个属性由Attribute Length、Attribute Event、Attribute Value构成 LeaveAll Attribute由Attribute Length、LeaveAll Event构成 | - |
Attribute Length | 属性长度 | 2~255,单位为字节 |
Attribute Event | 属性描述的事件 | 0:LeaveAll Event 1:JoinEmpty Event 2:JoinIn Event 3:LeaveEmpty Event 4:LeaveIn Event 5:Empty Event |
Attribute Value | 属性取值 | GVRP的属性取值为VLAN ID,但LeaveAll属性的Attribute Value值无效 |
End Mark | 结束标志、GARP的PDU(协议数据单元)的结尾标志 | 以0x00取值表示 |
1.1.2 GVRP简介
GVRP是GARP的一种应用。它基于GARP的工作机制,用来维护设备中的VLAN动态注册信息,并传播该信息到其它交换机。
设备启动GVRP特性后,能够接收来自其它设备的 VLAN注册信息,并动态更新本地的VLAN注册信息,包括当前的VLAN成员、这些VLAN成员可以通过哪个端口到达等。而且设备能够将本地的VLAN 注册信息向其它设备传播,以使同一局域网内所有设备的VLAN信息达成一致。GVRP传播的VLAN注册信息既包括本地手工配置的VLAN静态注册信息, 也包括来自其它设备的VLAN动态注册信息。
GVRP的端口注册模式有三种:Normal、Fixed和Forbidden,各模式描述如下。
l Normal模式:允许该端口动态注册、注销VLAN,传播动态VLAN以及静态VLAN信息。
l Fixed模式:禁止该端口动态注册、注销VLAN,只传播静态VLAN信息,不传播动态VLAN信息。该端口只允许静态VLAN通过,即只对其它GARP成员传播静态VLAN信息。
l Forbidden模式:禁止该端口动态注册、注销VLAN。该端口只允许缺省VLAN(即VLAN1)通过,即只对其他GARP成员传播VLAN1的信息。
1.1.3 协议规范
GVRP在IEEE 802.1Q标准文本中有详细的表述。
1.2 GVRP配置
1.2.1 GVRP配置任务简介
表1-2 GVRP配置任务简介
配置任务 | 说明 | 详细配置 |
---|---|---|
启动GVRP | 必选 | 1.2.2 |
配置GVRP定时器 | 可选 | 1.2.3 |
配置GVRP注册模式 | 可选 | 1.2.4 |
1.2.2 启动GVRP
1. 配置准备
需要启动GVRP的端口已经配置为Trunk端口。
2. 配置步骤
表1-3 启动GVRP
操作 | 命令 | 说明 |
---|---|---|
进入系统视图 | system-view | - |
开启全局GVRP | gvrp | 必选 缺省情况下,全局GVRP处于关闭状态 |
进入以太网端口视图 | interface interface-type interface-number | - |
开启端口GVRP | gvrp | 必选 缺省情况下,端口GVRP处于关闭状态 |
& 说明:
Trunk端口上使能GVRP后,交换机不允许用户改变端口的Trunk类型为其他类型。
1.2.3 配置GVRP定时器
表1-4 配置GVRP定时器
操作 | 命令 | 说明 |
---|---|---|
进入系统视图 | system-view | - |
配置LeaveAll定时器 | garp timer leaveall timer-value | 可选 缺省情况下,LeaveAll定时器为1000厘秒 |
进入以太网端口视图 | interface interface-type interface-number | - |
配置Hold定时器、Join定时器和Leave定时器 | garp timer { hold | join | leave }timer-value | 可选 缺省情况下,Hold定时器为10厘秒,Join定时器为20厘秒,Leave定时器为60厘秒 |
需要注意的是:
l 各定时器的取值必须是5厘秒的倍数。
l 各定时器的取值范围会由于与它相关的定时器取值的改变而改变。如果用户想要设置的定时器的值不在当前可以设置的取值范围内,可以通过改变相关定时器的取值实现。
各个定时器的取值范围之间的关系如表1-5所示。
表1-5 各个定时器的取值范围之间的关系
定时器 | 取值下限 | 取值上限 |
---|---|---|
Hold定时器 | 10厘秒 | 上限小于等于1/2 Join定时器的值,可以通过改变Join定时器的取值改变 |
Join定时器 | 下限大于等于2倍Hold定时器的值,可以通过改变Hold定时器的取值改变 | 上限小于1/2 Leave定时器的取值,可以通过改变Leave定时器的取值改变 |
Leave定时器 | 下限大于2倍Join定时器的值,可以通过改变Join定时器的取值改变 | 上限小于LeaveAll定时器的值,可以通过改变LeaveAll定时器的取值改变 |
LeaveAll定时器 | 下限大于所有端口Leave定时器的值,可以通过改变Leave定时器的取值改变 | 32765厘秒 |
& 说明:
在实际组网中,建议用户将GVRP定时器配置为以下的推荐值:
l GARP Hold定时器:100厘秒(1秒钟)
l GARP Join定时器:600厘秒(6秒钟)
l GARP Leave定时器:3000厘秒(30秒钟)
l GARP LeaveAll定时器:12000厘秒(2分钟)
1.2.4 配置GVRP注册模式
表1-6 配置GVRP注册模式
操作 | 命令 | 说明 |
---|---|---|
进入系统视图 | system-view | - |
进入以太网端口视图 | interface interface-type interface-number | - |
配置GVRP端口注册模式 | gvrp registration { fixed | forbidden | normal} | 可选 缺省情况下,GVRP端口注册模式为Normal |
1.3 GVRP显示和维护
在完成上述配置后,在任意视图下执行display命令可以显示配置后GARP、GVRP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除GARP的统计信息。
表1-7 GVRP显示和维护
操作 | 命令 | 说明 |
---|---|---|
显示GARP统计信息 | displaygarp statistics [ interface interface-list ] | display命令可以在任意视图下执行 |
显示GARP定时器的值 | displaygarp timer [ interface interface-list ] | |
显示GVRP统计信息 | display gvrp statistics [interfaceinterface-list ] | |
显示GVRP的全局状态信息 | display gvrp status | |
清除GARP统计信息 | reset garp statistics [ interface interface-list ] |
1.4 GVRP典型配置举例
1.4.1 GVRP典型配置举例
1. 组网需求
l 为了使SwitchC和SwitchE上的VLAN配置能够应用到整个交换网络,需要在各交换机上启动GVRP,从而达到动态注册和更新VLAN信息的目的。
l 用户可以通过以太网端口注册模式的改变,实现交换网内部分VLAN的互通。
2. 组网图
图1-2 配置GVRP组网图
3. 配置步骤
(1) 配置SwitchA
# 开启全局GVRP。
<SwitchA> system-view
[SwitchA] gvrp
# 将以太网端口GigabitEthernet1/0/1配置为Trunk端口,并允许所有VLAN通过。
[SwitchA] interface GigabitEthernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan all
# 在以太网端口GigabitEthernet1/0/1上开启GVRP。
[SwitchA-GigabitEthernet1/0/1] gvrp
[SwitchA-GigabitEthernet1/0/1] quit
# 将以太网端口GigabitEthernet1/0/2配置为Trunk端口,并允许所有VLAN通过。
[SwitchA] interface GigabitEthernet 1/0/2
[SwitchA-GigabitEthernet1/0/2] port link-type trunk
[SwitchA-GigabitEthernet1/0/2] port trunk permit vlan all
# 在以太网端口GigabitEthernet1/0/2上开启GVRP。
[SwitchA-GigabitEthernet1/0/2] gvrp
[SwitchA-GigabitEthernet1/0/2] quit
# 将以太网端口GigabitEthernet1/0/3配置为Trunk端口,并允许所有VLAN通过。
[SwitchA] interface GigabitEthernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] port link-type trunk
[SwitchA-GigabitEthernet1/0/3] port trunk permit vlan all
# 在以太网端口GigabitEthernet1/0/3上开启GVRP。
[SwitchA-GigabitEthernet1/0/3] gvrp
[SwitchA-GigabitEthernet1/0/3] quit
(2) 配置SwitchB
# 配置过程可参见SwitchA的配置。
(3) 配置SwitchC
# 开启GVRP功能可参见SwitchA的配置。
# 配置VLAN5。
[SwitchC] vlan 5
[SwitchC-vlan5] quit
(4) 配置SwitchD
# 开启GVRP功能可参见SwitchA的配置。
# 配置VLAN8。
[SwitchD] vlan 8
[SwitchD-vlan8] quit
(5) 配置SwitchE
# 开启GVRP功能可参见SwitchA的配置。
# 配置VLAN5和VLAN7。
[SwitchE] vlan 5
[SwitchE-vlan5] quit
[SwitchE] vlan 7
[SwitchE-vlan7] quit
(6) 显示SwitchA、SwitchB和SwitchE上动态注册的VLAN信息。
# 显示SwitchA上的动态VLAN信息。
[SwitchA] display vlan dynamic
Total 3 dynamic VLAN exist(s).
The following dynamic VLANs exist:
5, 7, 8,
# 显示SwitchB上的动态VLAN信息。
[SwitchB] display vlan dynamic
Total 3 dynamic VLAN exist(s).
The following dynamic VLANs exist:
5, 7, 8,
# 显示SwitchE上的动态VLAN信息。
[SwitchE] display vlan dynamic
Total 1 dynamic VLAN exist(s).
The following dynamic VLANs exist:
8
(7) 配置SwitchE的以太网端口GigabitEthernet1/0/1的注册模式为fixed,显示SwitchA、SwitchB和SwitchE上动态注册的VLAN信息。
# 配置SwitchE的以太网端口GigabitEthernet1/0/1的注册模式为fixed。
[SwitchE] interface GigabitEthernet 1/0/1
[SwitchE-GigabitEthernet1/0/1] gvrp registration fixed
# 显示SwitchA上的动态VLAN信息。
[SwitchA] display vlan dynamic
Total 3 dynamic VLAN exist(s).
The following dynamic VLANs exist:
5, 7, 8,
# 显示SwitchB上的动态VLAN信息。
[SwitchB] display vlan dynamic
Total 3 dynamic VLAN exist(s).
The following dynamic VLANs exist:
5, 7, 8,
# 显示SwitchE上的动态VLAN信息。
[SwitchE-GigabitEthernet1/0/1] display vlan dynamic
No dynamic vlans exist!
(8) 配置SwitchE的以太网端口GigabitEthernet1/0/1的注册模式为forbidden,显示SwitchA、SwitchB和SwitchE上动态注册的VLAN信息。
# 配置SwitchE的以太网端口GigabitEthernet1/0/1的注册模式为forbidden。
[SwitchE-GigabitEthernet1/0/1] gvrp registration forbidden
# 显示SwitchA上的动态VLAN信息。
[SwitchA] display vlan dynamic
Total 2 dynamic VLAN exist(s).
The following dynamic VLANs exist:
5, 8,
# 显示SwitchB上的动态VLAN信息。
[SwitchB] display vlan dynamic
Total 2 dynamic VLAN exist(s).
The following dynamic VLANs exist:
5, 8,
# 显示SwitchE上的动态VLAN信息。
[SwitchE] display vlan dynamic
No dynamic vlans exist!