HCNA Routing&Switching之GVRP
前文我们了解了不同vlan间路由相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15110336.html,今天我们来聊一聊vlan动态注册相关话题;
首先在说GVRP之前我们先来了解下GARP;GARP是Generic Attribute Registration Protocol的首字母缩写,通用属性注册协议;它是一种协议规范,主要作用是用来在交换机间分发、传播、注册某种信息(VLAN属性、组播地址等),主要用于大中型网络中,用来提升交换机的管理效率;而GVRP是GARP的一种具体实现,GARP VLAN Registration Protocol,VLAN注册协议;主要用于维护设备动态VLAN属性;通过GVRP协议,一台交换机的vlan会迅速传播至整个交换网络;GVRP实现了VLAN属性的动态分发,注册和传播,从而减少了管理员的工作量,也能保证VLAN配置的正确性;
技术背景
实验:如下拓扑,实现相同VLAN的pc互通
分析:上述实验拓扑要想实现pc1 和pc3 通讯,pc2和pc4通讯,我们只需要在sw1和sw2上创建vlan 10 和vlan 20,然后把对应的端口加入到对应的vlan里,然后把各交换机相互连接的端口设置为trunk即可;
sw1的配置
sys sys sw1 vlan batch 10 20 int g0/0/1 p l a p d v 10 int g0/0/3 p l a p d v 20 int g0/0/2 p l t p t a v 10 20
验证:查看sw1上的vlan信息
sw2的配置
sys sys sw2 int g0/0/1 p l t p t a v all int g0/0/2 p l t p t a v all
验证:查看sw2的端口vlan信息
提示:可以看到g0/0/1和g0/0/2两个接口都是trunk,并允许所有vlan通过;
sw3的配置
sys sys sw3 vlan batch 10 20 int g0/0/1 p l a p d v 10 int g0/0/3 p l a p d v 20 int g0/0/2 p l t p t a v 10 20
验证:查看sw3的vlan信息
验证:pc1 ping pc3或者pc2ping pc4看看是否能通?
提示:可以看到pc1现在ping不通pc3,同样pc2也ping不通pc4;
在sw2的g0/0/1口上抓包看看,看看对应pc1pingpc2的包是否过去了?
提示:可以看到pc1发送到arp广播到达了sw2,但是没有回复;
在sw2的g0/0/2口抓包,看看对应arp是否通过了g0/0/2?
提示:可以看到在sw2口g0/0/2口抓包,并没有抓到pc1发送到arp广播,这说明pc1发送的数据在sw2就被丢弃了;这是为什么呢?其实原因很简单,在pc1发送arp广播时,在sw1收到以后,它会被打伤vlan10的标签,然后从sw1的g0/0/2口发送出去,在sw2收到了sw1发送到带有vlan10的标签的数据包时,虽然sw2的trunk都允许所有vlan的数据包通过,但是sw2上并没有vlan10 和vlan20,所以sw2并没有任何一个端口是在vlan10 和vlan20 ,所以当sw2收到带有vlan10 或vlan20标签的数据,它根据就泛洪不出去(交换机泛洪是在同vlan端口下泛洪,默认都是vlan1);
解决上述问题的方式很简单,就是在sw2上面创建vlan10 或vlan20即可;
验证:在sw2上创建vlan10,看看pc1是否能够ping通pc3呢?
提示:可以看到当sw2上创建vlan10以后,对应g0/0/1和g0/0/2口会自动加入到这个vlan里(原因是trunk允许vlan列表里包含vlan10);此时如果sw2收到带有vlan10的标签广播,就可以从g0/0/1和g0/0/2口泛洪出去;
验证:pc1 ping pc3 看看是否能通?
提示:可以看到此时pc1就能ping通pc3了;从上面的实验我们可以总结一点,如果同vlan跨设备通讯,沿途链路所有交换机必须要有对应的vlan,数据包才能从该交换机通过,仅仅是trunk允许对应vlan,没有对应vlan,数据包是泛洪不出去的;
GVRP主要就是解决上述类似问题,上面实验拓扑比较简单,我们是手动创建vlan就解决了问题,当现网拓扑环境复杂,vlan较多,人工手动管理vlan很容易出错,为了方便管理员配置和动态的管理vlan,GVRP可以实现动态的注册、注销vlan,让其他交换机动态的学习vlan,并自动将对应端口加入到对应vlan里;
GVRP的应用
1、接收来自其它交换机的VLAN注册信息,并动态更新本地的VLAN注册信息,包括当前的VLAN、VLAN成员等。
2、将本地的VLAN注册信息向其它交换机传播,以便使同一交换网内所有支持GVRP特性的设备的VLAN信息达成一致。
3、交换机可以静态创建VLAN,也可以动态通过GVRP获取VLAN信息。手动配置的VLAN是静态VLAN,通过GVRP创建的VLAN是动态VLAN。GVRP传播的VLAN注册信息包括本地手工配置的静态注册信息和来自其它交换机的动态注册信息。
GARP消息类型
提示:当一个交换机希望其他交换机注册自己的属性,它会对外发送join消息;当一个交换机希望其他交换机注销自己的属性信息时,它会对外发送leave消息;当交换机发送leave all消息时,收到该消息的其他交换机会注销所有的属性;
实验:还是上述实验拓扑,各交换机在对应接口开启GVRP,然后在sw1上静态创建vlan20,看看其他交换机上的vlan变化
sw1的g0/0/2口开启gvrp
sw2的g0/0/1和g0/0/2口开启gvrp
sw3的g0/0/2口开启gvrp
提示:开启GVRP必须要在系统模式下现全局开启gvrp,然后进入端口模式再开启gvrp才行,其次gvrp只能在trunk口上开启,非trunk口开启不了;
验证:查看sw2上是否学习到vlan20?
提示:可以看到在sw2上,通过gvrp学习到了vlan20,并把g0/0/1口和g0/0/2口都加入到vlan20里;这里说明一点,gvrp的注册和注销都是单向,只有收到gvrp消息的端口才能学习并加入到对应vlan里;对于注销也是单向的,只有收到对应gvrp的leave消息,对应端口才会从对应vlan里删除;
GVRP单向注册
实验:在上述实验环境中,在sw1上创建vlan100,看看sw2和sw3那些端口可以加入到vlan100?
提示:这里需要注意一点,我们创建的vlan必须是对应trunk允许列表里的vlan,对应vlan才会被发送出去,让其他交换机学习注册;
验证:查看sw2上的vlan信息
提示:可以看到在sw2上,动态的创建了vlan100,并且g0/0/1口加入到vlan100里,g0/0/2口并没有加入到vlan 100里,其原因是g0/0/2口并没有收到交换机1的join消息;
验证:查看sw3上的vlan信息
提示:可以看到sw3上并没有学习到vlan100,其原因是vlan100没有在sw3的trunk口的允许列表里,所以sw3没有学习到vlan100;
验证:修改sw3trunk的允许列表为允许所有vlan,看看sw3是否能够学习到vlan100 呢?
提示:可以看到当把sw3的g0/0/2口的允许vlan列表修改为允许所有vlan通过后,对应sw3就学习到vlan100并且g0/0/2口也加入到vlan100里(原因是g0/0/2口能够收到sw2转发的join消息);
GVRP单向注销
实验:在上述实验环境中,在sw3上删除vlan20,看看sw2上的vlan信息会有什么变化?
提示:可以看到在sw3上删除了vlan20以后,对应vlan20从原来的静态变为了动态,并且对应g0/0/2口加入其中,这说明这个动态的vlan20是从g0/0/2口收到的,即从sw2学习到的vlan20;
验证:查看sw2上的vlan信息
提示:从上面的截图可以看到,在sw3上删除vlan20之前,sw2上g0/0/1和g0/0/2口都加入到vlan20;在sw3上删除vlan20以后,对应g0/0/2口就从vlan20里删除,g0/0/1口还在vlan20里;这里的原因和单向注册是一样的,因为g0/0/1收到了sw3的leave消息,所以g0/0/2从vlan20里删除,而g0/0/1并没有收到sw3的leave消息,所以它还会在vlan20里;
验证:查看sw1上的vlan信息,看看有什么变化没有?
提示:在sw1上查看vlan信息,对应vlan20并没有什么变化,原因是在sw1上vlan20是我们手动创建的,静态创建的vlan优先级要比动态学习的优先级高,所以即便sw1收到sw2转发的leave信息,sw1上的vlan20也不会被删除,对应端口也不会从vlan20里删除;通过上述的实验,我们可以总结一点,GVRP的注册和注销都是单向的,只有收到对应消息的端口才会加入对应的vlan或者从对应vlan里删除;其次静态优先级高于动态;
GVRP的注册模式
GVRP的注册模式有三种,分别是normal,fixed,forbidden模式;默认开启gvrp时就是normal模式;
1、normal模式:默认模式,允许对应端口静态和动态vlan注册,注销,同时会发送动态和静态vlan的声明消息(即,端口为normal模式,它会接收和发送其他交换机发送的动态和静态的vlan注册或注销消息);
2、fixed模式:不允许动态vlan在端口上注册或注销,且只发送静态vlan的声明消息;(我们可以理解为fixed模式只能发送静态vlan的注册或注销,不学习动态vlan,如果之前学习的有,随之删除,它只限制本交换机对应端口学习和发送动态vlan信息)
3、forbidden模式:不允许动态vlan在端口上注册或注销,同时删除端口上除vlan1外的所有vlan;即不学习动态VLAN,同时将对应端口之前学习到的vlan全部清空,保留VLAN1;
验证:查看sw1的gvrp的注册模式
验证:上述实验,在sw1上将g0/0/2的注册模式修改为forbidden模式,看看对应vlan会有什么变化?
提示:可以看到在sw1上将注册模式修改为forbidden以后,对应g0/0/2在所有除vlan1以外的所有vlan里被删除了;
验证:查看sw2和sw3上的vlan,看看有什么变化?
提示:可以看到在sw2上和sw3之前在sw1上学习的vlan20也随之被注销;
验证:在sw3上创建vlan1000,看看sw1是否会学习呢?
在sw3上创建vlan1000
在sw1上查看,是否学习到sw3上的vlan1000呢?
提示:可以看到在sw3上创建vlan 1000,在sw1上并没有学习;说明把注册模式修改为forbidden以后,对应链路上的动态vlan对于该端口来说,它不会学习,同时它会向外发送注销所有vlan消息,让其他交换机删除从该端口学习到的动态vlan;即该模式下对应端口即不发送动态或静态注册消息,也不接受别的交换机发送的注册或注销消息,同时它只会发送leave all消息给其他交换机;
验证:将上述实验中sw3的g0/0/2口注册模式修改为fixed,看看对应vlan有什么变化?
提示:可以看到在sw3上把g0/0/2修改为fixed模式,对应sw3来说,vlan信息并没有什么变化,其原因是在sw3上的所有vlan都是静态的;
验证:在sw2上创建vlan500,看看sw3是否能够学习到呢?
提示:我们在sw3的g0/0/2口修改注册模式为fixed,对应sw2上的vlan信息也没有变化,vlan1000还是可以从sw3学习到;
在sw3上查看对应vlan500是否学习到?
提示:可以看到在sw3上并没有学习到vlan500;通过上述实验我们可以看到fixed注册模式,只是限制了对应端口动态学习别的交换机的vlan信息,当并不影响自己向其他交换机发送自己的vlan信息,也不影响别的交换机学习自己的vlan信息,和forbidden模式相比,fixed模式只限制自己学习别的交换机的vlan信息(如果之前有动态学习到的vlan,会随之被删除,从该端口转发的动态vlan给其他交换机,其他交换机上对应的vlan信息也会被删除,即该端口只有静态vlan,没有动态vlan,动态vlan从该端口也过不去,只有静态vlan从该端口出去),并不限制其他交换机学习自己的vlan信息;而forbidden模式,它即限制了自己学习别的交换机vlan信息,同时也限制了别的交换机学习自己的vlan信息;