1.技术背景

如图:

    三个交换机,sw1和sw3都属于vlan10;sw2允许所有vlan;交换机之间都配的是trunk链路;

    但sw1依然无法ping通sw3;

    因为sw2并没有创建vlan10;

    根据vlan的数据转发规则,在检查lsw2的允许列表之前,需要lsw2先创建了目标vlan;

grafanazabbix交换机模板 giga 交换机_链路

也就是说,中间的交换机lsw2创建的vlan必须和两边的路由器同步才行;

这使得中间的交换机的vlan,需要根据两边的vlan情况要动态维护;

为了解决这一问题,引入了一个标准:GARP;


2.GARP:Generic Attribute Regisration Protocol 通用属性注册协议

grafanazabbix交换机模板 giga 交换机_grafanazabbix交换机模板_02

 

garp标准的作用:

 

  • 在交换机间分发、传播、注册某种信息(VLAN属性、组播地址等)
  • 主要用于大中型企业网络中,用来提升管理交换机的效率
  • 一种协议规范

翻译成人话就是:

    两边的交换机告诉中间的交换机,我添加了一个vlan10,你给我学习;或者我删掉了vlan10,你也给我删掉;

 

GVRP(GARP vlan 注册 协议):

    GARP只是一种标准,具体实现这种标准的协议为GVRP协议;

grafanazabbix交换机模板 giga 交换机_链路_03

 

 

3.GARP的作用机制

garp通过在交换机之间发送数据包来起作用;

 

grafanazabbix交换机模板 giga 交换机_双向通信_04

GARP定义了三种数据包类型:

类型

备注

Join

加入,端口加入VLAN

Leave

注销,端口退出VLAN

Leave

注销所有

1)join包

例如:交换机SWA给其它交换机发送join包,其它交换机收到后会创建vlan;

 

grafanazabbix交换机模板 giga 交换机_双向通信_05

2)leave包

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

 

grafanazabbix交换机模板 giga 交换机_grafanazabbix交换机模板_06

3)leave all 包

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

 

grafanazabbix交换机模板 giga 交换机_grafanazabbix交换机模板_07

4.GVRP:GARP VLAN Registration Protocol  VLAN注册协议

GVRP基于GARP的工作机制,是GARP的一种应用,传递VLAN信息

 

grafanazabbix交换机模板 giga 交换机_双向通信_08

当配置小型网络时,由于交换机数量较少,可以手动维护vlan;

但如果是大型网络,交换机多,手动维护vlan很复杂,最好用GVRP; 

 

grafanazabbix交换机模板 giga 交换机_链路_09

 

1)GVRP的作用机制

 

  • 接收来自其他交换机的VLAN注册信息,并动态的更新本地的VLAN信息同步
  • 将本地的VLAN注册信息向其他交换机传播,以便同一交换网内所有支持GVRP的设备VLAN信息同步
  • 手动配置的VLAN是静态VLAN,通过GVRP创建的VLAN是动态VLAN
  • GVRP传播的VLAN注册信息包括静态创建的VLAN信息和动态学习的VLAN信息

 

 

交换机如果开启了gvrp,当创建新的vlan时,会给其它交换机发送join包;

例如:

    交换机创建了vlan20,会给其它交换机发送gvrp包;

    用wireshark抓gvrp包,可以看到消息内容为:请加入vlan20;

grafanazabbix交换机模板 giga 交换机_链路_10

 

其它交换机想学到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】单向注销

grafanazabbix交换机模板 giga 交换机_grafanazabbix交换机模板_11

单向注销机制和单向注册差不多;

 

3)GVRP注册模式:

有三种注册模式:normal(默认)、forbidden、fixed

 

1】normal

Normal正常模式是默认模式 创建静态和动态都会发送VLAN注册;

如上图:

grafanazabbix交换机模板 giga 交换机_组播_12

    swa的g0/0/1接口是gvrp的normal模式,当创建了静态的vlan2和动态的vlan3时,都会向其它交换机发送join包

 

2】forbidden

Forbidden禁止模式 不会接收动态VLAN注册,同时删除所有学习到的VLAN (除VLAN1)

grafanazabbix交换机模板 giga 交换机_grafanazabbix交换机模板_13

 

例如:

grafanazabbix交换机模板 giga 交换机_链路_14

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

grafanazabbix交换机模板 giga 交换机_grafanazabbix交换机模板_15

 

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

grafanazabbix交换机模板 giga 交换机_链路_16

 

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

grafanazabbix交换机模板 giga 交换机_组播_17

 

此时如果在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

grafanazabbix交换机模板 giga 交换机_组播_18

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

grafanazabbix交换机模板 giga 交换机_组播_19

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

grafanazabbix交换机模板 giga 交换机_组播_20

 

3】fixed 

fixed固定模式 不会发送和接收动态的注册信息,只会发送静态注册消息

例如:

    如果上图中的swa的g0/0/1接口是fixed,则只会给其它交换机发送静态的vlan2的join包,而不会发送动态的vlan3的join包;

    如果交换机swb的g0/0/1接口也是fixed,则不会接受sw1发来的vlan2的join包;

 

grafanazabbix交换机模板 giga 交换机_链路_21

4)GVRP配置:

命令

配置

Gvrp

全局开启GVRP,默认关闭

Gvrp

接口开启GVRP,接口类型必须是Trunk

Gvrp registration fixed/ forbidden/normal

配置GVRP注册模式

Display gvrp status

查看GVRP状态

示例:

    给swa的g0/0/1接口开启gvrp,并且配置注册模式为fixed

 

 

grafanazabbix交换机模板 giga 交换机_组播_22