Cisco交换机一旦通过某种方式激活了干线,这些交换机会通过通告报文来指示哪些VLAN是可用的,并且会维持这些VLAN的相关信息,这种功能就叫做VTP(Vlan Trunking Protocol,VLAN中继协议)。VTP是思科私有的协议,但大多数交换机都支持该协议。
使用VTP可以将一台交换机配置成VTP Server,将其余的交换机配置成VTP Client,那么作为VTP Client的交换机会自动同步VTP Server交换机上面配置的VLAN信息,这样就不需要在每一台交换机上配置相同的VLAN信息;对VTP Server上VLAN的添加和删除重命名等操作会自动同步到VTP Client,确保了整个网络配置的一致性。
VTP是一种消息协议,使用第二层帧,通过VLAN1传输;可以用VTP管理网络的VLAN范围从1到1005,VTP不能管理扩展的VLAN(大于1005)。VTP协议使用VTP通告(VTP advertisements)在交换机间交互VLAN信息,VTP通告只能在Trunk(主干)链路上上互交信息。
一台思科交换机的默认VTP信息大致如下,可以通过下面的命令来查看:
Switch#show vtp status
VTP Version : 2
Configuration Revision : 0
Maximum VLANs supported locally : 255
Number of existing VLANs : 5
VTP Operating Mode : Server
VTP Domain Name :
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x7D 0x5A 0xA6 0x0E 0x9A 0x72 0xA0 0x3A
Configuration last modified by 0.0.0.0 at 0-0-00 00:00:00
Local updater ID is 0.0.0.0 (no valid interface found)
Switch#
/*
* "VTP Version:2" 表示这台交换支持两种VTP版本(1和2),默认运行的是版本1,
* 这里显示的2,不代表默认运行的版本是 Version 2,只代表支持几种版本。
*
* "Configuration Revision:0" 配置修正号是0,
* 交换机上VLAN配置信息发生改变时,配置修正号自动加1,
* 配置修正号暗示了交换机VLAN配置信息的新旧。
*
* "Maximum VLANs supported locally:255"
* 表示交换机最大可配置的VLAN数量是255个,这个值和交换机的型号有关。
*
* "Number of existing VLANs:5" 当前已经有5个VLAN,
* 交换机默认VLAN就是5个(VLAN1、VLAN1002-1005)。
*
* "VTP Operating Mode:Server" 交换机当前的VTP模式是VTP Server。
*
* "VTP Domain Name" VTP域名,没有配置的时候为空。
*
* "VTP Pruning Mode:Disabled" 是否开启了VTP裁剪功能,默认没有开启。
*
* "VTP V2 Mode:Disabled" VTP版本2没有开启,所以默认是使用版本1,
* 可以使用下面这条命令修改VTP使用的版本:
* Switch(config)#vtp version 1或2。
*
* "VTP Traps Generation" Trap主要用来为SNMP服务器发送消息,默认没有开启。
*
* "MD5 digest" 从VTP计算得出的散列值,如果VLAN信息发生改变该值也会改变。
*
* "Configuration last modified" 最后配置改变的时间。
*
* "Local updater ID" 发送VTP信息的端口IP地址,可以手动指定发送VTP信息的端口。
*/
VTP协议允许在一台交换机上集中配置,所做的配置会被自动传播到网络中所有其他的交换机上,但是前提是这些交换机都在一个VTP域中;同一个域中的交换机拥有相同的VTP域名;默认的域名为空,此时交换机不会向外传播VTP通告,并且一个交换机只能加入一个VTP域。
可以使用下面的命令更改VTP域名:
/*修改VTP域名为"ccna_VTP_name"*/
Switch(config)#vtp domain ccna_VTP_name
Changing VTP domain name from NULL to ccna_VTP_name
Switch(config)#end
Switch#
/*再次查看VTP状态,可以看到域名已经修改*/
Switch#show vtp status
VTP Version : 2
Configuration Revision : 0
Maximum VLANs supported locally : 255
Number of existing VLANs : 5
VTP Operating Mode : Server
VTP Domain Name : ccna_VTP_name
....
Switch#
注意,当域名被改变或者删除闪存中的VLAN配置文件vlan.dat并且重启时配置修正号会自动归零;另外,当交换机处于Transparent模式时,因为不需要和其他交换机同步VTP信息,配置修正号始终为0;当网络中的交换机配置修正号都为0的时候,他们之间不会同步VLAN配置信息。
在同一个域中,如果没有设置VTP密码,只要域名相同,配置修正号大的交换机的VLAN配置将覆盖配置修正号小的交换机的VLAN配置,这样非常不安全,可以通过下面的命令配置一个VTP密码,只有域名和密码都相同的情况下,才会互交VLAN配置信息:
Switch(config)#vtp password ccna
在后面的综合试验中会演示到这些命令。
1,VTP帧结构
VTP被封装在802.1Q或ISL帧中(交换机间主干链路的封装协议),VTP帧以组播的方式发送,目的MAC是保留的MAC地址”01-00-0C-CC-CC-CC”。
VTP帧包括帧头和信息内容:
VTP帧头中包含了VTP域名、域名长度、VTP版本、VTP配置修正号、VTP信息类型(包含了三种信息类型,总汇、子集、查询)等。
VTP信息内容包括MD5散列值、帧的格式(ISL或802.1Q)、每个VLAN的配置信息(配置信息中包括:VLAN ID、VLAN名称、类型、状态等)。
2,VTP通告类型
VTP通告有三种类型:
汇总通告(Summary Advertisements):汇总通告包含VTP域名、配置修正号以及配置的一些细节。汇总通告有两种发送方式:周期性发送,每隔5分钟被VTP Server或VTP Client发送。触发发送,如果VTP配置发生变化VTP通告立即发送。
子集通告(Subset Advertisements):在创建或删除VLAN、挂起或激活VLAN、更改VLAN名称、改变VLAN UTM时会发送子集通告。
查询通告(Request Advertisements):当VTP Server收到一个查询通告时,VTP Server会发送一个VTP汇总通告和一个VTP子集通告。下面这些情况会发送查询通告:VTP域名发生变化时、交换机收到一个汇总通告,通告中的配置修正号高于本交换机的配置修正号、因为某些原因子集通告丢失、交换机重启。
思科交换机可以被配置成3种VTP模式:
Server模式:Server模式是思科交换机默认的VTP模式,在这种模式下的交换机可以创建、修改、删除VLAN,VTP Server交换机通告自己的VLAN信息给同一个域中的其他交换机,同时也与收到的VTP通告同步VLAN信息,VLAN的配置信息保存在闪存的vlan.dat文件中。
Client模式:工作在这种模式下的交换机不可以创建、修改、删除VLAN,当工作在这种模式下的交换机重启时,它发送一个查询通告给VTP Server,请求更新的VLAN信息。这种模式下的交换机VLAN配置信息也保存在闪存的vlan.dat文件中。
Transparent模式:工作在这种模式下的交换机可以创建、修改、删除VLAN,但所做的修改只影响当前交换机。在这种模式下,交换机可以转发收到的VTP通告给网络中的其他交换机,但只是转发,Transparent模式下的交换机并不发送自己的VTP信息给其他交换机,也不与网络中的其他交换机同步信息。这种模式下的交换机的VLAN配置信息保存在running-config中,并非保存在vlan.dat中。
这一部分用一个综合实验来演示一下上面提到的三种VTP模式、VTP密码和域名、VTP版本的选择等。需要注意的几点是,VTP的域名是区分大小写的,VTP版本1和版本2是不兼容的。
实验拓扑如下(实验在Cisco Packet Tracer 5.3模拟器中完成):
配置SW1为VTP Server,SW2和SW4为VTP Client,SW3为VTP Transparent,交换机和交换机之间配置成主干链路(前面理论部分说过,VTP通告只能在主干链路上发送):
1,将交换机之间的链路全部配置成主干链路 SW1配置: SW1(config)#int fa 0/1 SW1(config-if)#swi mod trunk SW1(config-if)#int fa 0/2 SW1(config-if)#swi mod trunk SW1(config-if)#end SW1# SW2配置: SW2(config)#int fa 0/2 SW2(config-if)#swi mod trunk SW2(config-if)#end SW2# SW3配置: SW3(config)#int fa 0/2 SW3(config-if)#swi mod trunk SW3(config-if)#int fa 0/3 SW3(config-if)#swi mod trunk SW3(config-if)#end SW3 SW4配置: SW4(config)#int fa 0/2 SW4(config-if)#swi mod trunk SW4(config-if)#end SW4# 2,首先配置网络中的VTP Transparent交换机 SW3配置: W3(config)#vtp mode transparent /*配置交换机VTP模式为Transparent*/ Setting device to VTP TRANSPARENT mode. SW3(config)#vtp domain ccna /*配置VTP域名为ccna,也可以配置成和VTP Server不同的任意名字*/ Changing VTP domain name from NULL to ccna SW3(config)#vlan 2 /*创建一个VLAN2*/ SW3(config-vlan)#name SW3vlan2 SW3(config-vlan)#int fa 0/1 /*将和PC2相连的接口接入VLAN2*/ SW3(config-if)#swi mod acc SW3(config-if)#swi acc vlan 2 SW3(config-if)#end SW3# SW3# 3,配置VTP Server交换机 SW1配置: SW1(config)#vtp mode server /*将交换机VTP模式配置成Server*/ Device mode already VTP SERVER. SW1(config)#vtp domain ccna /*配置VTP域名*/ Changing VTP domain name from NULL to ccna SW1(config)#vtp password ccna /*配置VTP密码*/ Setting device VLAN database password to ccna SW1(config)#vtp version 2 /*将VTP版本改成2*/ SW1(config)#end SW1# 4,配置VTP Client SW2配置: SW2(config)#vtp mode client /*配置VTP模式为Client*/ Setting device to VTP CLIENT mode. SW2(config)#vtp domain ccna /*域名ccna要和VTP Server相同*/ Domain name already set to ccna. SW2(config)#vtp password ccna /*密码也要和VTP Server上的相同*/ Setting device VLAN database password to ccna SW2(config)#end SW2# SW4配置: SW4(config)#vtp mode client Setting device to VTP CLIENT mode. SW4(config)#vtp domain ccna Domain name already set to ccna. SW4(config)#vtp password ccna Setting device VLAN database password to ccna SW4(config)#end SW4# 5,在VTP Server上测试新增VLAN,在其他交换机上查看是否同步成功 SW1配置: SW1(config)#vlan 2 SW1(config-vlan)#name vlan2 SW1(config-vlan)#vlan 3 SW1(config-vlan)#name vlan3 SW1(config-vlan)#end SW1# 下面是SW2、SW3、SW4的VTP以及VLAN显示信息: /* * 可以看到SW2上面的VTP信息发生了变化,同步了SW1的配置, * VLAN数也增加到了7,VTP版本也变成了版本2。 */ SW2#show vtp status VTP Version : 2 Configuration Revision : 5 Maximum VLANs supported locally : 255 Number of existing VLANs : 7 VTP Operating Mode : Client VTP Domain Name : ccna VTP Pruning Mode : Disabled VTP V2 Mode : Enabled VTP Traps Generation : Disabled MD5 digest : 0xC6 0x8E 0x52 0x80 0x59 0xF9 0x43 0x2F Configuration last modified by 0.0.0.0 at 3-1-93 00:25:40 /*SW2的VLAN信息和SW1保持同步*/ SW2#show vlan brief VLAN Name Status Ports ---- --------------------- --------- ------------------------------- 1 default active Fa0/1, Fa0/3, Fa0/4, Fa0/5 Fa0/6, Fa0/7, Fa0/8, Fa0/9 Fa0/10, Fa0/11, Fa0/12, Fa0/13 Fa0/14, Fa0/15, Fa0/16, Fa0/17 Fa0/18, Fa0/19, Fa0/20, Fa0/21 Fa0/22, Fa0/23, Fa0/24, Gig1/1 Gig1/2 2 vlan2 active 3 vlan3 active 1002 fddi-default active 1003 token-ring-default active 1004 fddinet-default active 1005 trnet-default active SW2# /* * 可以看到SW3配置成了Transparent模式,这种模式不和其他交换机同步VLAN信息, * 同时它的配置修正号也始终为0,VTP版本也是默认的版本1, * 但是它仍然转发SW1的VTP通告给SW4。 */ SW3#show vtp status VTP Version : 2 Configuration Revision : 0 Maximum VLANs supported locally : 255 Number of existing VLANs : 6 VTP Operating Mode : Transparent VTP Domain Name : ccna VTP Pruning Mode : Disabled VTP V2 Mode : Disabled VTP Traps Generation : Disabled MD5 digest : 0xE1 0x2A 0x13 0xE5 0xB3 0xA4 0x96 0xA4 Configuration last modified by 0.0.0.0 at 0-0-00 00:00:00 /*可以看到SW3的VLAN并没有和SW1同步*/ SW3#show vlan brief VLAN Name Status Ports ---- --------------------- --------- ------------------------------- 1 default active Fa0/4, Fa0/5, Fa0/6, Fa0/7 Fa0/8, Fa0/9, Fa0/10, Fa0/11 Fa0/12, Fa0/13, Fa0/14, Fa0/15 Fa0/16, Fa0/17, Fa0/18, Fa0/19 Fa0/20, Fa0/21, Fa0/22, Fa0/23 Fa0/24, Gig1/1, Gig1/2 2 SW3vlan2 active Fa0/1 1002 fddi-default active 1003 token-ring-default active 1004 fddinet-default active 1005 trnet-default active SW3# /*SW4的输出和SW2是一样的,这里就不列出了,大家可以在SW1上去添加删除VLAN,测试SW1和SW4是否会和SW1的VLAN信息同步。*/ 6,下面我们将PC1和PC3也加入到VLAN2中,并且测试PC1、PC2、PC3的通信是否能够成功 SW2(config)#int fa 0/1 SW2(config-if)#swi mod acc SW2(config-if)#swi acc vlan 2 SW2(config-if)#end SW2# SW4(config)#int fa 0/1 SW4(config-if)#swi mod acc SW4(config-if)#swi acc vlan 2 SW4(config-if)#end SW4# 最后发现,都能够Ping通,这一部分实验到此结束。
VTP Pruning(VTP裁剪),是VTP的一个重要功能,能够减少中继端口上不必要的信息量,默认情况下思科的VTP裁剪是关闭的。在下图中,SW1和SW2在没有开启VTP裁剪以前,在主干端口上会发送全部VLAN信息的VTP通告,如果开启了VTP裁剪,那么SW1发给SW2的VTP通告中将不会包含VLAN2的信息,因为SW2上面没有属于这个VLAN的接口,同理SW2发给SW1的通告中不会包含VLAN4的信息。
“Cisco Packet Tracer 5.3″不支持VTP裁剪命令,这个实验在GNS3中模拟,GNS3中VTP模式配置命令稍有不同,拓扑图如下:
1,将SW1和SW2之间的链路配置成主干 SW1配置: SW1(config)#int fa 0/15 SW1(config-if)#swi mode trunk SW2配置: SW2(config)#int fa 0/15 SW2(config-if)#swi mode trunk 2,将SW1配置成VTP Server(GNS3中仅支持在VLAN数据库配置模式下配置) SW1配置: SW1#vlan database /*进入VLAN数据库配置模式*/ SW1(vlan)#vtp domain ccna /*建议首先配置VTP域名,这里配置成ccna*/ Domain name already set to ccna . SW1(vlan)#vtp password ccna /*配置VTP密码为ccna*/ Password already set to ccna. SW1(vlan)#vtp server /*将SW1配置成Server*/ Device mode already VTP SERVER. SW1(vlan)#vtp v2-mode /*将默认的VTP版本改成版本2*/ V2 mode already enabled. SW1(vlan)#exit /*保存退出*/ APPLY completed. Exiting.... SW1# 3,将SW2配置成VTP Client SW2配置: SW2#vlan database SW2(vlan)#vtp domain ccna /*先配置VTP域名和VTP Server相同*/ Domain name already set to ccna . SW2(vlan)#vtp password ccna /*配置VTP密码*/ Setting device VLAN database password to ccna. SW2(vlan)#vtp client /*将SW2配置成VTP Client*/ Setting device to VTP CLIENT mode. SW2(vlan)#exit In CLIENT state, no apply attempted. Exiting.... SW2# 4,在SW1上增加VLAN,然后在SW1和SW2上划分端口到VLAN新增的VLAN中 SW1配置: /*在SW1上新增3个VLAN*/ SW1#vlan database SW1(vlan)#vlan 2 name vlan2 VLAN 2 added: Name: vlan2 SW1(vlan)#vlan 3 name vlan3 VLAN 3 added: Name: vlan3 SW1(vlan)#vlan 4 name vlan4 VLAN 4 added: Name: vlan4 SW1(vlan)#exit APPLY completed. Exiting.... /*将端口划分到VLAN中*/ SW1#conf t SW1(config)#int fa 0/0 SW1(config-if)#swi mod acc SW1(config-if)#swi acc vlan 2 SW1(config-if)#int fa 0/1 SW1(config-if)#swi mod acc SW1(config-if)#swi acc vlan 3 SW1(config-if)#end SW1# SW1配置: /* * 查看SW2上的VLAN信息,确保已经学习到SW1上的VLAN, * 交换模块查看VLAN的命令稍有不同。 */ SW2#show vlan-switch brief VLAN Name Status Ports ---- ------------------ --------- ------------------------------- 1 default active Fa0/0, Fa0/1, Fa0/2, Fa0/3 Fa0/4, Fa0/5, Fa0/6, Fa0/7 Fa0/8, Fa0/9, Fa0/10, Fa0/11 Fa0/12, Fa0/13, Fa0/14 2 vlan2 active 3 vlan3 active 4 vlan4 active 1002 fddi-default active 1003 trcrf-default active 1004 fddinet-default active 1005 trbrf-default active SW2# /*将端口划分到VLAN中*/ SW2(config)#int fa 0/0 SW2(config-if)#swi mod acc SW2(config-if)#swi acc vlan 3 SW2(config-if)#int fa 0/1 SW2(config-if)#swi mod acc SW2(config-if)#swi acc vlan 4 SW2(config-if)#end SW2# 5,在没有开启裁剪前查看主干链路信息 查看SW1主干链路信息: SW1#show interfaces trunk Port Mode Encapsulation Status Native vlan Fa0/15 on 802.1q trunking 1 Port Vlans allowed on trunk Fa0/15 1-1005 Port Vlans allowed and active in management domain Fa0/15 1-4 /*这一项显示了VTP裁剪情况,现在还没有VLAN被裁剪*/ Port Vlans in spanning tree forwarding state and not pruned Fa0/15 1-4 SW1# 6,开启裁剪后查看主干链路信息 在SW1上开启VTP裁剪(只需要在VTP Server上开启即可): SW1#vlan database SW1(vlan)#vtp pruning /*开启VTP裁剪*/ Pruning switched ON SW1(vlan)#exit APPLY completed. Exiting.... SW1# /*再次查看SW1主干信息*/ SW1#show interfaces trunk Port Mode Encapsulation Status Native vlan Fa0/15 on 802.1q trunking 1 Port Vlans allowed on trunk Fa0/15 1-1005 Port Vlans allowed and active in management domain Fa0/15 1-4 /* * 发现SW1的主干端口上面裁剪掉了VLAN2的信息, * 因为SW2上没有端口在VLAN2下。 */ Port Vlans in spanning tree forwarding state and not pruned Fa0/15 1,3-4 SW1# /*SW2上查看VTP信息*/ SW2#show vtp status VTP Version : 2 Configuration Revision : 3 Maximum VLANs supported locally : 256 Number of existing VLANs : 8 VTP Operating Mode : Client VTP Domain Name : ccna VTP Pruning Mode : Enabled /*VTP裁剪已经开启*/ VTP V2 Mode : Enabled VTP Traps Generation : Disabled MD5 digest : 0x9E 0x65 0x20 0x33 0xB6 0xC7 0x1B 0x55 Configuration last modified by 0.0.0.0 at 3-1-02 00:15:12 SW2# /*SW2上查看主干信息*/ SW2#show interfaces trunk Port Mode Encapsulation Status Native vlan Fa0/15 on 802.1q trunking 1 Port Vlans allowed on trunk Fa0/15 1-1005 Port Vlans allowed and active in management domain Fa0/15 1-4 /*可以看到这里裁剪了VLAN4,因为SW1上没有接口在VLAN4下*/ Port Vlans in spanning tree forwarding state and not pruned Fa0/15 1-3 SW2#
VTP版本1不兼容版本2。
确保同一个域中VTP密码要一致。
确保同一个域中VTP域名要一致。
VTP模式要配置正确,VTP域中至少要有一台VTP Server。
在一台交换机加入VTP域中时,最好先将它的配置修正号归零,方法就是随便给它配置一个域名,然后再将它的域名改成正确的域名,再将它连入域中。
vtp client同步server的原理
实验拓扑如下所示,现在有两条VTP server,我们vtp CLIENT 同步
由于配置很简单这里我就不写出了
1,VTP server Switch4 添加vlan会给revision值+1,给vlan起名也给revision值+1
Switch#show vtp status VTP Version : 2 Configuration Revision : 1 ................. Switch#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#vlan 44 Switch(config-vlan)#name 44 Switch(config-vlan)#exit Switch(config)#exit %SYS-5-CONFIG_I: Configured from console by console Switch#show vtp status VTP Version : 2 Configuration Revision : 3 // 添加vlan,给vlan起名之后revision的值增加了2 ................ Switch#conf terminal Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#vlan 55 Switch(config-vlan)#exit Switch(config)#exit Switch# %SYS-5-CONFIG_I: Configured from console by console Switch#show vtp status VTP Version : 2 Configuration Revision : 4 // 只添加vlan,但是没有给vlan起名子,这个时候revision的值增加了1 Maximum VLANs supported locally : 1005 ....................
二,VTP server Switch4删除vlan也会给revision值+1
Switch#show vtp status VTP Version : 2 Configuration Revision : 4 .......................... Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#no vlan 55 Switch(config)#do show vtp status VTP Version : 2 Configuration Revision : 5 //revision +1 .。。。。。
三,VTP server Switch5 没有做任何vlan的配置,由于没有做任何的配置,所以ta的revision值应该是0,我们来看看这个vtp server的vlan消息
Switch#show vtp status VTP Version : 2 Configuration Revision : 5 ........................... Switch#show vlan brief VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active Fa0/2, Fa0/4, Fa0/5, Fa0/6 Fa0/7, Fa0/8, Fa0/9, Fa0/10 Fa0/11, Fa0/12, Fa0/13, Fa0/14 Fa0/15, Fa0/16, Fa0/17, Fa0/18 Fa0/19, Fa0/20, Fa0/21, Fa0/22 Fa0/23, Fa0/24, Gig0/1, Gig0/2 2 VLAN0002 active 44 44 active 1002 fddi-default active 1003 token-ring-default active 1004 fddinet-default active 1005 trnet-default active
结果和我们想象的不一样,它的revision是5,这个值和VTP Server Switch4的revision值是一样的,而且vlan信息也是一样的,所以由此可见,vtp的同步时依靠revision来做依据的,revision值小的要同步revision值大的vlan信息,所以我们要慎重的添加和删除vlan消息,防止vlan信息被倒灌。