1.技术背景
如图:
三个交换机,sw1和sw3都属于vlan10;sw2允许所有vlan;交换机之间都配的是trunk链路;
但sw1依然无法ping通sw3;
因为sw2并没有创建vlan10;
根据vlan的数据转发规则,在检查lsw2的允许列表之前,需要lsw2先创建了目标vlan;

也就是说,中间的交换机lsw2创建的vlan必须和两边的路由器同步才行;
这使得中间的交换机的vlan,需要根据两边的vlan情况要动态维护;
为了解决这一问题,引入了一个标准:GARP;
2.GARP:Generic Attribute Regisration Protocol 通用属性注册协议

garp标准的作用:
- 在交换机间分发、传播、注册某种信息(VLAN属性、组播地址等)
- 主要用于大中型企业网络中,用来提升管理交换机的效率
- 一种协议规范
翻译成人话就是:
两边的交换机告诉中间的交换机,我添加了一个vlan10,你给我学习;或者我删掉了vlan10,你也给我删掉;
GVRP(GARP vlan 注册 协议):
GARP只是一种标准,具体实现这种标准的协议为GVRP协议;

3.GARP的作用机制
garp通过在交换机之间发送数据包来起作用;

GARP定义了三种数据包类型:
类型 | 备注 |
Join | 加入,端口加入VLAN |
Leave | 注销,端口退出VLAN |
Leave | 注销所有 |
1)join包
例如:交换机SWA给其它交换机发送join包,其它交换机收到后会创建vlan;

2)leave包
交换机SWA给其它交换机发leave包,其它交换机收到后删掉目标vlan;

3)leave all 包
其它交换机收到leave all包后删掉所有vlan,除了默认的vlan1

4.GVRP:GARP VLAN Registration Protocol VLAN注册协议
GVRP基于GARP的工作机制,是GARP的一种应用,传递VLAN信息

当配置小型网络时,由于交换机数量较少,可以手动维护vlan;
但如果是大型网络,交换机多,手动维护vlan很复杂,最好用GVRP;

1)GVRP的作用机制
- 接收来自其他交换机的VLAN注册信息,并动态的更新本地的VLAN信息同步
- 将本地的VLAN注册信息向其他交换机传播,以便同一交换网内所有支持GVRP的设备VLAN信息同步
- 手动配置的VLAN是静态VLAN,通过GVRP创建的VLAN是动态VLAN
- GVRP传播的VLAN注册信息包括静态创建的VLAN信息和动态学习的VLAN信息
交换机如果开启了gvrp,当创建新的vlan时,会给其它交换机发送join包;
例如:
交换机创建了vlan20,会给其它交换机发送gvrp包;
用wireshark抓gvrp包,可以看到消息内容为:请加入vlan20;

其它交换机想学到vlan必须也开启gvrp;
通过gvrp协议学到的vlan为动态vlan;
VLAN分为常规(静态)和动态VLAN;
用命令dis vlan查看目标接口的vlan信息:
dis vlan
可以看到:
该交换机创建了2个vlan,vlan10和vlan20;
vlan10是手动创建的,类型为common;
vlan20是通过gvrp学到的,类型为dynamic;
2)gvrp的应用
1】单向注册
如上图:
交换机SWA手动创建了一个静态的vlan2;
swa的g0/0/1接口开启了gvrp,通过该接口发送gvrp的join包;
交换机SWB,的g0/0/1接口也开启了gvrp,g0/0/1接口收到join包,学到了vlan2;
swb的g0/0/2接口也开启可gvrp,g0/0/2接口给交换机swc发送join包
但g0/0/2接口没学到vlan2,因为只有收到join消息才学到vlan,分发不会学习vlan;
swc的g0/0/1接口收到join消息,学到vlan2;
最终,swb的1接口和swc的1接口通过gvrp学到了vlan2,而swb的2接口没学到vlan2;
导致的结果是,从swa过来的vlan2的流量能到达swc,而从swc发送的vlan2流量无法到达swa,因为g0/0/2接口没注册vlan2;
一般为了双向通信,会使用双向注册,让swb的两个接口都能学到vlan2,具体实现为:swa和swc都配置一个静态的vlan2;
2】单向注销

单向注销机制和单向注册差不多;
3)GVRP注册模式:
有三种注册模式:normal(默认)、forbidden、fixed
1】normal
Normal正常模式是默认模式 创建静态和动态都会发送VLAN注册;
如上图:

swa的g0/0/1接口是gvrp的normal模式,当创建了静态的vlan2和动态的vlan3时,都会向其它交换机发送join包
2】forbidden
Forbidden禁止模式 不会接收动态VLAN注册,同时删除所有学习到的VLAN (除VLAN1)

例如:

交换机2的g0/0/1接口注册静态的vlan10,并且动态学到了vlan20、30、40、50

将g0/0/1接口的改为forbidden模式

用命令:dis vlan查看,可以看到交换机lsw2的g0/0/1接口只和vlan1关联了;(与lsw2的另外一个接口g0/0/2无关)

此时如果在lsw2中手动创建一个vlan88:
lsw2的g0/0/1接口是forbidden,因此不会关联vlan88;
并且也不会从该口发送vlan88的注册信息给lsw1,导致lsw1的g0/0/1接口无法学到vlan88;
但lsw2的g0/0/2接口还是normal,g0/0/2接口会关联vlan88,并且发送join消息给lsw3,导致lsw3的g0/0/1接口学到vlan88

交换机lsw2手动创建的vlan88只和接口2有关:

lsw2的2号接口会发送join消息让lsw3的1号接口学到vlan88:

3】fixed
fixed固定模式 不会发送和接收动态的注册信息,只会发送静态注册消息
例如:
如果上图中的swa的g0/0/1接口是fixed,则只会给其它交换机发送静态的vlan2的join包,而不会发送动态的vlan3的join包;
如果交换机swb的g0/0/1接口也是fixed,则不会接受sw1发来的vlan2的join包;

4)GVRP配置:
命令 | 配置 |
Gvrp | 全局开启GVRP,默认关闭 |
Gvrp | 接口开启GVRP,接口类型必须是Trunk |
Gvrp registration fixed/ forbidden/normal | 配置GVRP注册模式 |
Display gvrp status | 查看GVRP状态 |
示例:
给swa的g0/0/1接口开启gvrp,并且配置注册模式为fixed

















