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的统计