VTP
VTP(VLAN中继协议/虚拟局域网干道协议 VLAN Trunking Protocol),它是思科私有协议。在稍微大型一点的网络中,会有多个交换机,同时也会有多个VLAN,如果在每个交换机上分别把VLAN创建一遍,这会是一个工作量很大的任务。假设网络中有M个交换机,共划分了N个VLAN,则为了保证网络正常工作,需要在每个交换机上都创建N个VLAN,共M×N个VLAN,随着M和N的增大,这项任务将会枯燥而繁重。VTP协议可以帮助我们减少这些枯燥繁重的工作。管理员在网络中设置一个或者多个VTP Server,然后在Server上创建和修改VLAN,VTP协议会将这些修改通告其它交换机上,这些交换机更新VLAN信息(VLAN ID和VLAN Name)。VTP使得VLAN的管理自动化得多了。
VTP原理
VTP Domain(VTP域):
由需要共享相同VLAN信息的交换机组成,只有在同一个VTP域(即VTP域的名字相同)的交换机才能同步VLAN信息。
根据交换机在VTP域中的作用不同,VTP可以分为以下三种模式:
Server(服务器模式):在VTP服务器上能创建、修改和删除VLAN,同时这些信息会在Trunk链路上通告给域中的
其它交换机;VTP服务器收到其它交换机的VTP通告后会更改自己的VLAN信息,并进行转发。VTP服务器会把
VLAN信息保存在NVRAM(即flash:vlan.dat文件)中,就是重新启动交换机这些VLAN还会存在。默认情况下,
交换机是服务器模式。每个VTP域必须至少有1台服务器,当然也可以有多台。
Client(客户机模式):在VTP客户机上不允许创建、修改和删除VLAN,但它会监听来自其它交换机的VTP通告并
更改自己的VLAN信息,接收到的VTP信息也会在Trunk链路上向其它交换机转发,因此这种交换机还能充当
VTP中继;VTP Client把VLAN信息保存在RAM中,交换机重启动后这些信息会丢失。
Transparent(透明模式):的交换机不完全参与VTP。可以在这种模式的交换机上创建、修改和删除VLAN,但是
这些VLAN信息并不会通告给其它交换机,它也不接受其它交换机的VTP通告而更新自己的VLAN信息。然而,
它会通过Trunk链路转发收到的VTP通告从而充当了VTP中继的绝色,因此完全可以把该交换机看成是透明
的。VTP Transparent仅会把本交换机上的VLAN信息保存在NVRAM中。
说明:根据Cisco资料,VTP Client不会在flash:vlan.dat文件存放VLAN信息,然而多次试验并不是这样的。
VTP通告
VLAN信息的同步是通过VTP通告来实现的,VTP通告只能在Trunk链路上传输(因此交换机之间的链路必须成功配置Trunk)。VTP通告是以组播帧的方式发送的,VTP通告中有一个字段称为修订号(Revision),代表VTP帧的修订级别,它是一个32位的数字。交换机的默认修订号为0。每次添加或删除VLAN时,修订号都会递增。修订号用于确定从另一台交换机收到的VLAN信息是否比储存在本交换机上的信息更新。如果收到的VTP通告修订号更高,则本交换机将根据此通告更新自身的VLAN信息。如果交换机收到的修订号更低的通告,会用自己的VLAN信息反向覆盖。需要注意的是:高Revision的通告会覆盖低Revision的通告,而不管自己或者对方是Server还是Client。
VTP通告包含以下三种通告类型:
总结通告:
触发总结通告的情况:VTP服务器或客户机每300s发送一次给邻居交换机;执行配置操作后也会立即发送。
总结通告包含的信息:VTP域名、当前修订版号、VTP配置详细信息等。
子集通告:
触发子集通告的情况:创建或删除VLAN、暂停或激活VLAN、更改VLAN名称和更改VLAN的MTU。
子集通告包含的信息:VLAN信息。
请求通告:
当向VTP域中的VTP服务器发送请求通告时,VTP服务器的响应方式是:先发送总结通告,接着送出子集通告。
触发请求通告的情况:VTP域名变动、交换机收到的总结通告包含比自身更高的修订号、子集通告消息由于某些
原因丢失、交换机被重置。
VTP通告说明:
①使用组播发送,地址为01-00-0C-CC-CC-CC;
②只通过中继端口传递;
③VTP消息通过Native VLAN(默认Vlan 1)传送。
VTP修剪
VTP修剪功能会自动计算哪些链路应该修剪哪些VLAN的数据包,管理员只需要启用该功能即可。
实验
命令:
sw1#delete flah:vlan.dat
sw1#erase startup-config
sw1#reload
sw1(config)#vtp mode server //配置VTP为Server模式,默认即为Server
sw1(config)#vtp domain VTP-Test //配置VTP域名,默认为空
sw1(config)#vtp password cisco //配置VTP密码
sw1(config)#vtp version 2 //配置VTP版本,只需在Server上配置
sw1(config)#vtp pruning //启用VTP修剪,只需在Server上配置
sw2#delete flah:vlan.dat
sw2#erase startup-config
sw2#reload
sw2(config)#vtp mode transparent //配置VTP为Transparent模式
sw2(config)#vtp domain VTP-Test
sw2(config)#vtp password cisco
sw3#delete flah:vlan.dat
sw3#erase startup-config
sw3#reload
sw3(config)#vtp mode client //配置VTP为Client模式
sw3(config)#vtp domain VTP-Test
sw3(config)#vtp password cisco
说明:
①重启3台交换机的时间不能相差太长,要保证任何交换机重启之前另一交换机没有启动完毕,避免重新启动的
交换机从未重新启动的交换机上学到旧的VTP信息。
②VTP可以在全局模式下配置,也可以在vlan database模式下配置。
③VTP默认修订号为0,每当VLAN信息变化时修订号会增加1(当为Transparent时,修订号始终为0)。
④默认VTP信息:模式为Server,域名为空,版本1。
⑤在一个VTP域中可以有多个VTP Server,在任何一个VTP Server上都可以创建和修改VLAN信息,并通告到其它
交换机上;不同的VTP域之间是不能传播VLAN信息的。
⑥Transparent交换机上可以转发VTP通告,但是并不会根据VTP通告更新自己的任何信息,Transparent交换机上
也可以更改VLAN信息,但是这些VLAN信息并不会通告出去。
⑦Client交换机上不仅可以转发VTP通告,并且会根据VTP通告更新自己的VLAN信息。
⑧配置VTP的密码为了防止不明身份的交换机加入到域中,任何密码都是区分大小写的。
⑨VTP的版本只需要在Server上启用,其它交换机会自动学习并启用该功能,但是Transparen模式是不会学习到
的,Client模式是不能配置版本的。
⑩配置VTP修剪的时候只需在其中域中的一个Server上启用即可,其它交换机会自动学习并启用。
注意:
①当交换机的VTP域名为空时,如果它收到的VTP通告中带有域名,该交换机将把VTP域名自动更改为VTP通告中的
域名。即没有VTP域名的交换机能从邻居自动学习VTP域名;VTP域名不为空时交换机就不会学习了。
②如果相邻的交换机处于不同的VTP域中,将导致交换机之间的链路Trunk自动协商失败不能成为Trunk模式,并
会提示不匹配消息;除非强制Trunk模式,但仍会提示不匹配消息:
③在准备向网络添加非刚出厂的交换机时,应先把交换机的配置清除干净,否则有可能会使VLAN信息反向覆盖。
④***很容易在现有网络中接入一台交换机或者用软件模拟一台交换机,通告高修订号的VTP通告来破坏网络,
可以配置VTP密码防止***的破坏,但是VTP密码是不能被加密的。
sw1#delete flah:vlan.dat
sw1#erase startup-config
sw1#reload
sw1(config)#int f0/15
sw1(config-if)#switchport trunk encapsulation dot1q
sw1(config-if)#switchport mode trunk
sw1(config)#vtp mode server
sw1(config)#vtp domain VTP-Test
sw1(config)#vtp password cisco
sw1(config)#vlan 2
sw1(config-vlan)#name two
sw2#delete flah:vlan.dat
sw2#erase startup-config
sw2#reload
sw2(config)#int range f0/1 - 2
sw2(config-if-range)#switchport trunk encapsulation dot1q
sw2(config-if-range)#switchport mode trunk
sw2(config)#vtp mode transparent
sw2(config)#vtp domain VTP-Test
sw2(config)#vtp password cisco
sw3#delete flah:vlan.dat
sw3#erase startup-config
sw3#reload
sw3(config)#int f0/15
sw3(config-if)#switchport trunk encapsulation dot1q
sw3(config-if)#switchport mode trunk
sw3(config)#vtp mode client
sw3(config)#vtp domain VTP-Test
sw3(config)#vtp password cisco
sw1#show vtp status //查看VTP域的状态
sw1#show vtp password //查看VTP的密码
sw1#show vtp counters //查看VTP的统计