VTP协议(VLAN Trunking Protocol)是思科私有的一种协议,通常用于交换机设备管理VLAN。
部署了VTP协议的一个或多个服务器节点在创建、修改、删除VLAN时,这些操作的VLAN信息将会通过Trunk链路同步到其他的交换机,使所有部署了VTP协议的交换机保持相同的VLAN信息。
上图就很好的解释了VTP协议的工作原理,以创建VLAN为例,当部署VTP技术后,Server节点创建了VLAN10/20/30,这些VLAN信息将会同步到所有其他的Client节点中,同理,Server节点的修改,删除VLAN等其它操作都会同步。
需要注意的是,VTP被组织管理成域 (VTP domain),处于相同域的交换机之间会共享VLAN信息,在部署VTP协议之前,服务器节点和客户端节点之间的链路必须为Trunk链路(因为VLAN信息的同步是基于Trunk链路的)。另外,在交换机上部署VTP协议时可以选择服务器和客户端两种模式:
了解VTP协议的工作原理后,接下来就是做动手做实验了。
首先,配置Server节点和Client节点的链路为Trunk链路,这里略过......
进入SW3交换机控制台,部署VTP协议成为Server节点,设置VTP管理域为TEST,密码为123456,配置如下:
SW3#
SW3#vlan database
SW3(vlan)#vtp server
Device mode already VTP SERVER.
SW3(vlan)#vtp domain TEST
Changing VTP domain name from NULL to TEST
SW3(vlan)#vtp password 123456
Setting device VLAN database password to 123456.
SW3(vlan)#exit
APPLY completed.
Exiting....
SW3#
通过show vtp status命令查看SW3交换机的vtp信息,SW3已经成为了Server节点,vtp信息如下:
SW3#show vtp status
VTP Version : 2
//vtp的配置版本信息
Configuration Revision : 0
Maximum VLANs supported locally : 256
Number of existing VLANs : 5
//表示成为Server节点了
VTP Operating Mode : Server
//域名为TEST
VTP Domain Name : TEST
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x28 0xC9 0x91 0xAC 0x29 0xD6 0x9D 0x9C
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)
SW3#
Configuration Revision:表示VTP配置版本号,由于Server节点此时没有VLAN信息,所以VTP配置版本号默认为0,每次VLAN信息的变动都会增加1,例如,创建,修改,删除等操作都会使vtp配置的版本号加1,配置版本号低的交换机会向配置版本号高的交换机自动同步VLAN信息。
Number of existing VLANs:本地存在的VLAN数目,因为此时还没有自定义创建的VLAN信息,所以只有系统默认的 5个VLAN信息,即VLAN1和1002到1005,并且这些系统VLAN是不能修改和删除。
VTP Domain Name:VTP域名,注意大小写敏感
VTP Operating Mode:VTP操作模式,一般有Server、Client、Transparent三种,默认情况下所有交换机都是Server模式。
SW1交换机部署vtp协议成为client节点并查看vtp信息,配置如下:
SW1#vlan database
SW1(vlan)#vtp client
Setting device to VTP CLIENT mode.
SW1(vlan)#vtp domain TEST
Changing VTP domain name from NULL to TEST
SW1(vlan)#vtp password 123456
Setting device VLAN database password to 123456.
SW1(vlan)#exit
In CLIENT state, no apply attempted.
Exiting....
SW1#
//show命令查看SW1交换机的vtp信息
SW1#show vtp status
VTP Version : 2
//client节点的vtp配置版本信息
Configuration Revision : 0
Maximum VLANs supported locally : 256
Number of existing VLANs : 5
//SW1交换机已经成为了client节点
VTP Operating Mode : Client
VTP Domain Name : TEST
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x28 0xC9 0x91 0xAC 0x29 0xD6 0x9D 0x9C
Configuration last modified by 0.0.0.0 at 0-0-00 00:00:00
SW1#
SW2交换机部署vtp协议成为client节点并查看vtp信息,配置如下:
SW2#vlan database
SW2(vlan)#vtp client
Setting device to VTP CLIENT mode.
SW2(vlan)#vtp domain TEST
Changing VTP domain name from NULL to TEST
SW2(vlan)#vtp password 123456
Setting device VLAN database password to 123456.
SW2(vlan)#exit
In CLIENT state, no apply attempted.
Exiting....
SW2#
SW2#
//show命令查看SW2交换机的vtp信息
SW2#show vtp status
VTP Version : 2
Configuration Revision : 0
Maximum VLANs supported locally : 256
Number of existing VLANs : 5
VTP Operating Mode : Client
VTP Domain Name : TEST
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x28 0xC9 0x91 0xAC 0x29 0xD6 0x9D 0x9C
Configuration last modified by 0.0.0.0 at 0-0-00 00:00:00
SW2#
现在Server节点上创建VLAN10,VLAN20,VLAN30,并使同一域(domain)下的所有部署了VTP协议的交换机学习到Server节点的VLAN信息:
SW3#
SW3#vlan database
SW3(vlan)#vlan 10 name VLAN10
VLAN 10 added:
Name: VLAN10
SW3(vlan)#vlan 20 name VLAN20
VLAN 20 added:
Name: VLAN20
SW3(vlan)#vlan 30 name VLAN30
VLAN 30 added:
Name: VLAN30
SW3(vlan)#vlan 40 name VLAN40
VLAN 40 added:
Name: VLAN40
SW3(vlan)#exit
APPLY completed.
Exiting....
SW3#
当exit命令退出,这些配置信息就会应用,然后Server节点就会通过Trunk链路把这些变动的VLAN信息通告给所有其他的Client节点的交换机。
当Server节点创建多个VLAN信息后,vtp配置版本号就会加1,此时我们再查看其他client节点的vtp信息:
SW1#show vtp status
VTP Version : 2
//vtp配置信息版本号加1
Configuration Revision : 1
Maximum VLANs supported locally : 256
//本地的VLAN数目为9
Number of existing VLANs : 9
VTP Operating Mode : Client
VTP Domain Name : TEST
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x34 0x8E 0xB7 0x6A 0x26 0x75 0x0F 0x27
Configuration last modified by 0.0.0.0 at 3-1-02 00:10:35
SW1#
因为Server节点的vtp版本号更高,所以其他Client节点都会从Server节点同步VLAN信息,Client1的VLAN信息如下:
SW1#show vlan-switch brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active 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, Fa0/15
10 VLAN10 active
20 VLAN20 active
30 VLAN30 active
40 VLAN40 active
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
SW1#
我们发现SW1交换机学习到了SW3交换机的VLAN信息,简单来理解就是:当其他Client节点发现是同一个域下,并且密码都是正确的,就会把这些更新的VLAN信息接收。
Client2的VLAN信息如下:
SW2#show vlan-switch brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active 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, Fa0/15
10 VLAN10 active
20 VLAN20 active
30 VLAN30 active
40 VLAN40 active
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
SW2#
部署VTP协议后,同一域(domain)下的交换机实现了VLAN信息同步。
1. 作为Server节点来说,它具备创建,修改,删除VLAN的权限;而Client节点正好相反,Client节点具备学习,转发权限。
如果你想在Client节点上删除vlan是无法完成的:
Client2(vlan)#
Client2(vlan)#no vlan 10
Deleting VLAN 10...
Client2(vlan)#exit
In CLIENT state, no apply attempted.
Exiting....
Client2#
Client2#show vlan-swi
Client2#show vlan-switch brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active 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, Fa0/15
10 VLAN10 active
20 VLAN20 active
30 VLAN30 active
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
Client2#
上面的提示中已经明确指出client节点是无法删除vlan信息的。
2. 无论是Server节点还是Client节点,域名和密码必须一致,否则无法实现同步。例如在Server节点修改域名为HAHA并删除vlan 40,配置如下:
SW3#vlan database
//修改Server的域名为HAHA
SW3(vlan)#vtp domain HAHA
Changing VTP domain name from TEST to HAHA
SW3(vlan)#
//删除了vlan 40
SW3(vlan)#no vlan 40
Deleting VLAN 40...
SW3(vlan)#exit
APPLY completed.
Exiting....
SW3#
查看Client节点,vtp信息如下:
SW1#show vtp status
VTP Version : 2
Configuration Revision : 2
Maximum VLANs supported locally : 256
Number of existing VLANs : 9
VTP Operating Mode : Client
VTP Domain Name : TEST
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x36 0x56 0x1A 0xE2 0x7A 0x14 0x16 0xED
Configuration last modified by 0.0.0.0 at 3-1-02 00:04:06
SW1#
由于Server和Client并不在同一域下,因此Client并未学习到Server的VLAN信息,还是保持原来的VLAN信息
3. 一般每次创建,修改,删除VLAN等这些操作都会使版本号加1,版本号低的设备会向版本号高的设备学习VLAN信息(注意:Server也可以向Client学习)
//Server节点创建了VLAN40
SW3#vlan database
SW3(vlan)#vlan 40 name VLAN40
VLAN 40 added:
Name: VLAN40
SW3(vlan)#exit
APPLY completed.
Exiting....
SW3#
//通过show命令查看Server节点,此时vtp配置版本信息增加为2
SW3#show vtp status
VTP Version : 2
Configuration Revision : 2
Maximum VLANs supported locally : 256
Number of existing VLANs : 9
VTP Operating Mode : Server
VTP Domain Name : TEST
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x36 0x56 0x1A 0xE2 0x7A 0x14 0x16 0xED
Configuration last modified by 0.0.0.0 at 3-1-02 00:04:06
Local updater ID is 0.0.0.0 (no valid interface found)
SW3#
show命令查看Client节点,因为Client的vtp配置版本号比Server的低,所以Client会从Server学习新的VLAN信息,新的vtp配置版本号。
SW1#show vtp status
VTP Version : 2
Configuration Revision : 2
Maximum VLANs supported locally : 256
Number of existing VLANs : 9
VTP Operating Mode : Client
VTP Domain Name : TEST
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x36 0x56 0x1A 0xE2 0x7A 0x14 0x16 0xED
Configuration last modified by 0.0.0.0 at 3-1-02 00:04:06
SW1#
Server和Client之间进行VLAN信息同步时会发送VTP数据分组,一般会有以下几种:
- 汇总通告
- 通告请求
- 子集通告
汇总通告分组如下所示:
对于汇总通告来说,该类型的分组主要是以每周期5分钟间隔向其他交换机通告本地的VTP信息,包括域,版本号这些信息,类似于之前学习的路由协议中的hello分组。
通告请求,即Client或者Server发起的触发请求,通常是用于在初始化的时候请求VLAN信息的,这种数据分组很少看到的。
当然,在这里我们重点关注子集通告这种类型的分组。如下所示:
可以看到在子集通告分组中携带了多个VLAN的信息
一般部署了VTP协议后,Client设备向Server设备学习,这意味着Client设备的版本号比Server设备要低。也就是说VTP协议是基于版本号的高低来决定向谁学习的。
现在假设这么一种情况:在现有的网络环境中,新加进来一台Client设备,但是Client的版本号比Server要高,那么就会出现Server向Client学习这样的情况,导致现有的网络VLAN信息被清空,显然这不是我们期望的,为了避免出现这种情况,Cisco提供了一种透明模式。
开启了透明模式后,新加入的交换机设备的版本号会设置为0,虽然可以创建,删除修改VLAN,但是无法与其他设备进行交互学习。
开启透明模式命令:
//进入vlan数据库
vlan database
//设置为透明模式
vtp transparent
实验环境:首先把所有设备的链路设置为Trunk链路,并部署VTP协议,设置SW1和SW2为Client模式,SW3为Server模式并创建VLAN10,20,30......
把SW1设备的接口全部关掉:
SW1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)#int ran
SW1(config)#int range f0/0 , f0/1
SW1(config-if-range)#sh
SW1(config-if-range)#shutdown
然后设置SW1设备为Server模式:
SW1#vlan database
SW1(vlan)#vtp Server
Setting device to VTP SERVER mode.
SW1(vlan)#vtp domain TEST
Domain name already set to TEST .
SW1(vlan)#vtp password 123456
Password already set to 123456.
SW1(vlan)#exit
APPLY completed.
Exiting....
SW1#
然后SW1成为Server后不断地修改VLAN信息:
SW1#
SW1#vlan database
SW1(vlan)#vlan 100
VLAN 100 added:
Name: VLAN0100
SW1(vlan)#vlan 200
VLAN 200 added:
Name: VLAN0200
SW1(vlan)#exit
APPLY completed.
Exiting....
SW1#
SW1#vlan database
SW1(vlan)#vlan 300
VLAN 300 added:
Name: VLAN0300
SW1(vlan)#exit
APPLY completed.
Exiting....
SW1#
SW1#vlan database
SW1(vlan)#vlan 400
VLAN 400 added:
Name: VLAN0400
SW1(vlan)#exit
APPLY completed.
Exiting....
此时再查看SW1设备,发现版本号已经增加到4了:
SW1#show vtp status
VTP Version : 2
Configuration Revision : 4
Maximum VLANs supported locally : 256
Number of existing VLANs : 12
VTP Operating Mode : Server
VTP Domain Name : TEST
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x21 0x98 0xDC 0x7F 0x0E 0xB8 0xCA 0xDB
Configuration last modified by 0.0.0.0 at 3-1-02 00:15:53
Local updater ID is 0.0.0.0 (no valid interface found)
SW1#
SW3作为server,vtp信息并没有发生改变:
SW3#show vtp status
VTP Version : 2
Configuration Revision : 1
Maximum VLANs supported locally : 256
Number of existing VLANs : 8
VTP Operating Mode : Server
VTP Domain Name : TEST
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0xAA 0xB5 0xA0 0xB5 0xDD 0x27 0xAA 0x4F
Configuration last modified by 0.0.0.0 at 3-1-02 00:07:23
Local updater ID is 0.0.0.0 (no valid interface found)
SW3#
然后把SW1设备设置为Client模式,并打开其接口,模拟新加入的设备:
SW1#vlan database
SW1(vlan)#vtp client
Setting device to VTP CLIENT mode.
SW1(vlan)#exit
In CLIENT state, no apply attempted.
Exiting....
SW1#
SW1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)#int range f0/0 , f0/1
SW1(config-if-range)#no shutdown
SW1(config-if-range)#exit
再次查看SW3设备,发现Server居然向新加入的Client学习vtp信息,导致自己原有的vtp信息被覆盖了:
SW3#show vtp status
VTP Version : 2
Configuration Revision : 4
Maximum VLANs supported locally : 256
Number of existing VLANs : 12
VTP Operating Mode : Server
VTP Domain Name : TEST
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x21 0x98 0xDC 0x7F 0x0E 0xB8 0xCA 0xDB
Configuration last modified by 0.0.0.0 at 3-1-02 00:15:53
Local updater ID is 0.0.0.0 (no valid interface found)
SW3#
为了避免发生这种情况,我们需要在新加入的SW1设备中设置为透明模式:
SW1#vlan database
SW1(vlan)#vtp transparent
Setting device to VTP TRANSPARENT mode.
SW1(vlan)#exit
APPLY completed.
Exiting....
另外,如果交换机设备设置为透明模式后,将不会同步和被同步其他节点的VLAN数据库信息。
关于VTP裁剪:用于修剪掉不需要广播流量,一般是在Server端开启prune功能。
以SW3为例,VTP裁剪配置如下:
SW3#vlan database
//在server端开启VTP裁剪
SW3(vlan)#vtp pruning
Pruning switched ON
SW3(vlan)#
查看SW3设备的状态:
SW3#show vtp status
VTP Version : 2
Configuration Revision : 5
Maximum VLANs supported locally : 256
Number of existing VLANs : 12
VTP Operating Mode : Server
VTP Domain Name : TEST
//Enabled表示开启了VTP裁剪技术
VTP Pruning Mode : Enabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x56 0xD9 0x23 0xD6 0x08 0x1F 0x00 0x86
Configuration last modified by 0.0.0.0 at 3-1-02 00:32:37
Local updater ID is 0.0.0.0 (no valid interface found)
SW3#
另外,其他的Client设备也会学习到。