如图所示,这是一个简单的由交换机所连接成的拓扑。在搭建这个拓扑的同时,我还提前构建好了GVRP所需的环境。然后我在左边的交换机上创建了静态vlan10,vlan20,根据协议的规则,我们知道中间的交换机的g0/0/1端口和右边的交换机的g0/0/1端口会被注册到左边交换机创建的动态vlan当中。但是这个时候左边的交换机的G0/0/1这个端口上的情况又是如何呢?根据测试我发现,在GVRP环境搭建之后,若我们在交换机上创建一个静态的vlan,那么开启gvrp的端口就会自动的被注册到相对应的vlan当中。
如上图所示,此时的vlan的状态的是这样的:
VID Type Ports
--------------------------------------------------------------------------------
1 common UT:GE0/0/1(U) GE0/0/4(U) GE0/0/5(D) GE0/0/6(D)
GE0/0/7(D) GE0/0/8(D) GE0/0/9(D) GE0/0/10(D)
GE0/0/11(D) GE0/0/12(D) GE0/0/13(D) GE0/0/14(D)
GE0/0/15(D) GE0/0/16(D) GE0/0/17(D) GE0/0/18(D)
GE0/0/19(D) GE0/0/20(D) GE0/0/21(D) GE0/0/22(D)
GE0/0/23(D) GE0/0/24(D)
10 common UT:GE0/0/2(U)
TG:GE0/0/1(U)
20 common UT:GE0/0/3(U)
TG:GE0/0/1(U)
当我们创建一个静态vlan30之后,我们可以发现其变化:
VID Type Ports
--------------------------------------------------------------------------------
1 common UT:GE0/0/1(U) GE0/0/4(U) GE0/0/5(D) GE0/0/6(D)
GE0/0/7(D) GE0/0/8(D) GE0/0/9(D) GE0/0/10(D)
GE0/0/11(D) GE0/0/12(D) GE0/0/13(D) GE0/0/14(D)
GE0/0/15(D) GE0/0/16(D) GE0/0/17(D) GE0/0/18(D)
GE0/0/19(D) GE0/0/20(D) GE0/0/21(D) GE0/0/22(D)
GE0/0/23(D) GE0/0/24(D)
10 common UT:GE0/0/2(U)
TG:GE0/0/1(U)
20 common UT:GE0/0/3(U)
TG:GE0/0/1(U)
30 common TG:GE0/0/1(U)
可以发现该交换机开启了GVRP功能的端口,就直接被规划到这个vlan下了。
同时我们可以进一步的探索GVRP转发802.1q数据包的凭据。 、
还是这张图,各个端口的注册情况如图所示,请注意,此时中间的交换机的G0/0/2的端口仅仅注册了vlan10,那么现在假设左边所处vlan20的主机ping右边vlan10的主机,那么首先它肯定需要arp去获取右边主机的mac地址,那么这个arp广播的在传输过程中肯定也是被打上vlan标签的,现在问题来了,这个arp的广播包会在哪个链路上出现,又在哪个链路上不出现呢?
经过测试,广播包仅仅在左边的交换机链路之间出现,右边就不出现了,所以我们可以知道。GVRP的传输数据的凭据是端口上注册的vlan,中间的交换机上注册的vlan仅仅只有vlan10,而其他的交换机上的开启gvrp功能的端口所注册的vlan都是vlan10和vlan20,那么这个数据传输到中间交换机的G0/0/2的端口上就停止了传输。
根据上述实验我们也可以得知,即便我们在之间搭建GVRP环境的时候设置让trunk口可以通过所有的vlan,但是通过GVRP的协调。在链路上传递的802.1q帧,仅仅是对端需要的,它帮助我们消去了对端不需要的vlan帧。
GVRP总共有三个接口模式
1、normal
2、fixed
3、forbidden
别的资料说,限制了vlan注册信息的传递啥的,但是我觉得这个角度反而更难理解。其实可以这么理解,我们在trunk口上开启了GVRP之后,链路上可传递的vlan帧都是依靠端口注册的vlan,只有这个端口注册了某个vlan,对应的vlan帧才能通过。
如果我们开启的是normal,那么假设我们的拓扑都开启了gvrp的功能,那么这个端口就可以接受别的交换机的注册信息,同时也可以向别人发送自己的静态vlan的注册信息(如果该交换机上以已经有了该静态vlan,则不会理会动态vlan的注册信息)
fixed模式则只会向别人发送自己的静态vlan的注册信息,但是不接受别人的vlan注册信息。
forbidden是既不接受vlan注册信息也不发送自己的静态vlan注册信息。
我们来讨论一下各个端口开启这些模式之后所产生的影响。
如果我们仅仅是开启了normal的端口模式,其实就等于说将这个交换机加入了一个大家庭,各个交换机之间相互知道对端的所需的vlan帧是哪些,会起到流量控制的作用,不会发送对端没有的vlan帧。
如果我们开启的是fixed模式,那么它仅仅发送,自己有的静态vlan的信息,别人的注册信息它是不会理会,也不会转发的,那么就相当于说,我可以告诉你的我的静态vlan,但是别人的静态vlan我不想关心,我也不会去转发。别人知不知道是别人的事。这样就导致了一个问题,就是开启GVRP功能的端口上能够发送转发的vlan帧,仅仅局限于只有当该帧的vlan号与该交换机本地的某个静态vlan号相同才行。
所以可以用这么一句话去总结就是,开启fixed模式的端口仅仅接收转发自己本地的静态vlan帧。
开启了forbidden模式的端口就如它的名字所言,它禁止了别人知道自己拥有的静态vlan,同时也不会去接受别人的vlan注册信息。我们举个具体的例子来说明它的影响
假设中间的交换机的两个trunk口都开启了forbidden的功能,那么各个端口的vlan注册情况就变为如下:
中间的交换机拒绝接收和转发左边交换机的GVRP注册信息,导致右边的交换机被孤立,这就导致右边的交换机的G0/0/1的端口上的注册vlan仅仅只有自己的静态vlan10,而左边的交换机的g0/0/1的端口的注册vlan也只有自己的静态vlan,vlan10和vlan20。这就导致了整个链路上能够传递的vlan帧只有vlan1的帧。(vlan1是默认创建的,所以各个交换机的各个开启了GVRP的端口都是注册了vlan1的,我在图上没有体现)。