前言
全名为VLAN Trunking Protocol,Cisco 私有协议,用于修剪和同步交换机之间的VLAN信息。试想下如果你维护一个数千台交换机的网络,如果需要新增一个VLAN子网,在没有VTP这类自动同步的协议的背景下,你将会面临重复创建VLAN的繁琐性工作,重复性工作加上手工操作等于高几率出错。
顺带一提,国产设备也有类似的协议,比如华为就叫GVRP。
VTP 模式
VTP的工作模式简单上来讲就是在实行中央型管理,它定义了3个角色:Server(服务端)、Client(客户端)、Transparent(传输端),我们在Server角色的设备上创建的VLAN都会被同步到所有Client段上,Client段会被禁止创建任何VLAN只能被同步过来,Transparent可以创建,并且会被同步到其他VLAN,但是自己不会受到Server端的同步。
再顺带一提,VTP是在Trunk中传递的,所以要将交换机互联接口都设定成Trunk。
来尝试下帮这三台交换机配置:
现在SW1上配置成Server,由于是Server,所以要配置下VTP domain和VTP Password,完成后用使用show vtp status和show vtp password确认一下。
Switch(config)#vtp domain CCIE
Changing VTP domain name from NULL to CCIE
*Jan 7 08:06:16.358: %SW_VLAN-6-VTP_DOMAIN_NAME_CHG: VTP domain name changed to CCIE.
Switch(config)#vtp password CCIE
Setting device VTP password to CCIE
Switch(config)#end
Switch#show vtp stat
*Jan 7 08:06:28.596: %SYS-5-CONFIG_I: Configured from console by console
Switch#show vtp status
VTP Version capable : 1 to 3
VTP version running : 1
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0700
Configuration last modified by 0.0.0.0 at 1-6-21 07:22:30
Local updater ID is 0.0.0.0 (no valid interface found)
Feature VLAN:
--------------
VTP Operating Mode : Server
Maximum VLANs supported locally : 1005
Number of existing VLANs : 7
Configuration Revision : 2
MD5 digest : 0x14 0x9E 0xBC 0xC0 0x07 0x18 0xAF 0x80
0x4D 0x83 0x44 0x10 0xB2 0x97 0xED 0xB4
Switch#show vtp password
VTP Password: CCIE
Switch#
SW2除了要相同的配置Domain名和Password外,我们还将它设定成Client段
SW2(config)#vtp domain CCIE
Domain name already set to CCIE.
SW2(config)#vtp password CCIE
Setting device VTP password to CCIE
SW2(config)#vtp mode client
Setting device to VTP Client mode for VLANS.
SW2(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 1
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0100
Configuration last modified by 0.0.0.0 at 1-6-21 07:22:30
Feature VLAN:
--------------
VTP Operating Mode : Client
Maximum VLANs supported locally : 1005
Number of existing VLANs : 7
Configuration Revision : 2
MD5 digest : 0x14 0x9E 0xBC 0xC0 0x07 0x18 0xAF 0x80
0x4D 0x83 0x44 0x10 0xB2 0x97 0xED 0xB4
然后我们相同地为SW3进行配置,不同的是将它配置成Transparent。
SW3(config)#vtp domain CCIE
Changing VTP domain name from NULL to CCIE
*Jan 7 08:22:43.410: %SW_VLAN-6-VTP_DOMAIN_NAME_CHG: VTP domain name changed to CCIE.
SW3(config)#vtp password CCIE
Setting device VTP password to CCIE
SW3(config)#vtp mode transparent
Setting device to VTP Transparent mode for VLANS.
SW3(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 1
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0200
Configuration last modified by 0.0.0.0 at 0-0-00 00:00:00
Feature VLAN:
--------------
VTP Operating Mode : Transparent
Maximum VLANs supported locally : 1005
Number of existing VLANs : 5
Configuration Revision : 0
MD5 digest : 0x0C 0xF3 0x3A 0x7E 0x13 0x5B 0x17 0x29
0xEB 0xB1 0x2A 0x4C 0x9D 0x50 0x63 0xF9
挑出当中几个字段来说名下什么意思:
1.VTP version capable/VTP version running:
支持的VTP版本(1~3)和现在运行的VTP版本(3)
2.VTP Domain Name:
只有在配置相同的Domain下才会执行同步
3.VTP Pruning Mode
VLAN修剪,后面再说
4.VTP Operating Mode
运行模式
5.Maximum VLANs supported locally
最大支持VLAN数量,本地最大支持1005个。
6.Number of existing VLANs
当前有的VLAN数量
7.Configuration Revision
版本修订号,Server每发生一次变化就会增加1。
现在我们尝试下在SW1这个Server角色上增加VLAN,看看SW2和SW3的反应:
SW1(config)#vlan 10,20,30,1006
SW1(config-vlan)#vlan 10
SW1(config-vlan)#name blue
SW1(config-vlan)#vlan 20
SW1(config-vlan)#name red
SW1(config-vlan)#vlan 30
SW1(config-vlan)#name green
SW1(config-vlan)#vlan 1006
SW1(config-vlan)#name black
SW1(config-vlan)#exit
SW1(config)#do show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/2, Et0/3
10 blue active Et1/0, Et1/1
20 red active Et1/2, Et1/3
30 green active
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
1006 black active
SW1(config)#
然后使用show vlan brief查看下SW1和SW2:
SW2
SW2#show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/1, Et0/2, Et0/3
10 blue active
20 red active
30 green active
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
SW2#
SW3
SW3(config)#do show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/1, Et0/2, Et0/3
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
SW3(config)#
SW3(config)#
观察下结果,发现SW2的VLAN同样被创建了VLAN 10、20、30,但是没有VLAN 1006,那是因为VTP 版本1、版本2只支持最大1005个VLAN同步。而SW3却没有任何变化,那是因为作为Transparent角色是不会被Server所同步的。
然后我们尝试在SW2上创建VLAN:
SW2(config)#vlan 40
VTP VLAN configuration not allowed when device is in CLIENT mode.
SW2(config)#
它会返回提示由于你配置了CLIENT MODE,是不允许创建VLAN的。
那么看看SW3:
SW3(config)#vlan 40
SW3(config-vlan)#do wr
SW3(config-vlan)#name prue
SW3(config-vlan)#end
SW3#show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/1, Et0/2, Et0/3
40 prue active
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
结果是可以创建,我们到SW1和SW2上查看,也没有VLAN40,看来Transparent角色既不会同步对方,也不会被对方同步:
SW1(config)#do show vlan br
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/2, Et0/3
10 blue active Et1/0, Et1/1
20 red active Et1/2, Et1/3
30 green active
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
1006 black
那么,我们总结下VTP 3个角色的行为:
- Server
- 可以修改或者添加VLAN
- 主动发送VTP更新、通告
- Client
- 不能修改或者添加VLAN
- 只收不发
- Transparent
- 可以修改或者添加VLAN
- 不收不发
VTP版本
Cisco Catalyst交换机支持VTP 版本1到版本3,不同版本之间是无法通信的,虽然CCNP交换学习指南推荐使用1或者2,但是实际生产环境我还是建议是用版本3,而Cisco 交换机默认启用的VTP是版本1。
一些新版本特性:
- 与版本无关的Transparent模式:VTP版本1中,Transparent模式的设备会检查VTP报文的Domain和版本信息,只有当Domain和版本号一样才转发消息,由于Cisco ISO只支持一个VTP Domain,所以VTP 版本2会直接转发VTP报文,不再做检查行为。
- 一致性检查:VTP版本2中,会对VLAN名和VLAN编号做VLAN一致性检查。
- 支持令牌环:VTP版本2支持令牌环VLAN和交换,好家伙,老不死。
- 支持未识别TLV:不知道啥意思
- 支持扩展VLAN:版本3扩展到1006以上
- 域名不自动学习:VTP2版本会对接收到的VTP信息中的Domain进行学习,这个不安全,版本3被砍掉了要手动开启。
- 更优的安全性:使VTP password 加密存储和传输
- 更优的更新机制:只有主Server允许更新,而且每个VTP域内只有一台主Server。
- 支持多生成树(MSTP):VTP版本3加入了对MST进程通过的支持。
VTP版本1、2
VTP 版本默认启用是版本1,要修改的话使用vtp server命令。
SW1(config)#vtp version 2
SW1(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 2
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0700
Configuration last modified by 0.0.0.0 at 1-7-21 09:15:58
Local updater ID is 0.0.0.0 (no valid interface found)
Feature VLAN:
--------------
VTP Operating Mode : Server
Maximum VLANs supported locally : 1005
Number of existing VLANs : 8
Configuration Revision : 5
MD5 digest : 0x27 0x65 0xD7 0x62 0x5B 0x80 0x92 0x18
0x2D 0xA8 0x60 0xE8 0x76 0xDF 0x69 0x6D
VTP版本1和版本2的最大的问题是修订版本号会翻过来被更新的问题,当一台Client角色的版本修订号比现网的Server交换机的要高的时候,会进行逆更新,这种后果是不堪设想的。而VTP修订版本号是存在NVRAM中,就算清空交换机配置闭关重启都没发清零。
我们来试试实现这个逆更新行为:
我们将它互联接口shutdown掉后,在SW2切换成Server角色,并进行VLAN增删。
SW2(config)#vtp mo server
Setting device to VTP Server mode for VLANS.
SW2(config)#vlan 44
SW2(config-vlan)#exit
SW2(config)#no vlan 44
SW2(config)#
SW2(config)#
SW2(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 2
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0100
Configuration last modified by 0.0.0.0 at 1-7-21 09:22:12
Local updater ID is 0.0.0.0 (no valid interface found)
Feature VLAN:
--------------
VTP Operating Mode : Server
Maximum VLANs supported locally : 1005
Number of existing VLANs : 8
Configuration Revision : 7
MD5 digest : 0x3F 0xE4 0xFB 0x69 0x90 0x09 0x0F 0xAC
0xA2 0x5E 0xA8 0xFC 0x5A 0x72 0xE8 0x36
SW2(config)#no vlan 10,20,30
SW2(config)#
SW2(config)#do show vlan brief
这时候它的版本修订号是7,然后我们将它所有的VLAN删除掉
SW2(config)#no vlan 10,20,30
SW2(config)#
SW2(config)#do show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/0, Et0/1, Et0/2, Et0/3
1002 fddi-default act/unsup
1003 trcrf-default act/unsup
1004 fddinet-default act/unsup
1005 trbrf-default act/unsup
SW2(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 2
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0100
Configuration last modified by 0.0.0.0 at 1-7-21 09:22:29
Local updater ID is 0.0.0.0 (no valid interface found)
Feature VLAN:
--------------
VTP Operating Mode : Server
Maximum VLANs supported locally : 1005
Number of existing VLANs : 5
Configuration Revision : 8
MD5 digest : 0xC1 0x6D 0x2C 0x75 0x47 0xE9 0xA2 0x0A
0xD9 0xF8 0xC9 0x5D 0x3A 0xDA 0x64 0x1B
这时候它的版本修订号是8,并且已经没所有VLAN,而SW1的版本修订号是5
SW1(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 2
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0700
Configuration last modified by 0.0.0.0 at 1-7-21 09:15:58
Local updater ID is 0.0.0.0 (no valid interface found)
Feature VLAN:
--------------
VTP Operating Mode : Server
Maximum VLANs supported locally : 1005
Number of existing VLANs : 8
Configuration Revision : 5
MD5 digest : 0x27 0x65 0xD7 0x62 0x5B 0x80 0x92 0x18
0x2D 0xA8 0x60 0xE8 0x76 0xDF 0x69 0x6D
然后我们将SW2切换到Client,并恢复它们的互联接口
SW2(config)#vtp mode client
Setting device to VTP Client mode for VLANS.
SW2(config)#inter e0/0
SW2(config-if)#no shu
SW2(config-if)#
SW2(config-if)#
SW2(config-if)#
*Jan 7 09:24:27.270: %LINK-3-UPDOWN: Interface Ethernet0/0, changed state to up
*Jan 7 09:24:28.271: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/0, cha
nged state to up
SW2(config-if)#
我们查看SW1的VTP 状态,你会发现它的版本修订号也变成8了,并且VLAN都被删除了
SW1(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 2
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0700
Configuration last modified by 0.0.0.0 at 1-7-21 09:22:29
Local updater ID is 0.0.0.0 (no valid interface found)
Feature VLAN:
--------------
VTP Operating Mode : Server
Maximum VLANs supported locally : 1005
Number of existing VLANs : 5
Configuration Revision : 8
MD5 digest : 0xC1 0x6D 0x2C 0x75 0x47 0xE9 0xA2 0x0A
0xD9 0xF8 0xC9 0x5D 0x3A 0xDA 0x64 0x1B
SW1(config)#do show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/2, Et0/3
1002 fddi-default act/unsup
1003 trcrf-default act/unsup
1004 fddinet-default act/unsup
1005 trbrf-default act/unsup
1006 black active
SW1(config)#
这种行为如果发生在真是的生产环境中,肯定会导致网络中断,是很大的问题。而这点问题被版本3所修复,就如同它的新版本特性一样,有了更优的更新机制。但是如果你不想用VTP 版本3,可以将设备在Transparent模式中来回切,这样能清楚版本数。
SW2(config)#vtp mode transparent
Setting device to VTP Transparent mode for VLANS.
SW2(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 2
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0100
Configuration last modified by 0.0.0.0 at 1-7-21 09:22:29
Feature VLAN:
--------------
VTP Operating Mode : Transparent
Maximum VLANs supported locally : 1005
Number of existing VLANs : 5
Configuration Revision : 0
MD5 digest : 0xC1 0x6D 0x2C 0x75 0x47 0xE9 0xA2 0x0A
0xD9 0xF8 0xC9 0x5D 0x3A 0xDA 0x64 0x1B
你可以留意到切换到Transparent后,Revision为0,这时候再切回去Client即可。另外一个方法是改成别的Domain名,再修改会原来的VTP domain,这样效果也能清零。
VTP版本3
我们尝试下升级到版本3,拓扑图还是那个:
SW1(config)#vtp version 3
SW1(config)#
*Jan 7 09:53:52.977: %SW_VLAN-6-OLD_CONFIG_FILE_READ: Old version 2 VLAN configuration f
ile detected and read OK. Version 3
files will be written in the future.
VTP 版本3多了一些新Futures,比如MST
SW1(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 3
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0700
Feature VLAN:
--------------
VTP Operating Mode : Server
Number of existing VLANs : 5
Number of existing extended VLANs : 1
Maximum VLANs supported locally : 4096
Configuration Revision : 0
Primary ID : 0000.0000.0000
Primary Description :
MD5 digest :
Feature MST:
--------------
VTP Operating Mode : Transparent
Feature UNKNOWN:
--------------
VTP Operating Mode : Transparent
版本3还能对VTP password加密:
SW1(config)#VTP password CCIE HIdden
Setting device VTP password
SW1(config)#DO SHOW VTP PASSWORD
VTP Password: 621F5C1360325D70E1B404F1D48E270F
SW1(config)#
VTP定义了主Server的新特性,我们增删VLAN必须先将Server升级到主Server,每个Domain里只能有一个主Server。
SW1(config)#vlan 10
VTP VLAN configuration not allowed when device is not the primary server for vlan databas
e.
SW1(config)#
不用进特权模式,敲vtp primary vlan,然后再输入VTP 设定的密码。
SW1#vtp primary vlan
This system is becoming primary server for feature vlan
Enter VTP Password:
No conflicting VTP3 devices found.
Do you want to continue? [confirm]
SW1#
*Jan 7 10:04:38.714: %SW_VLAN-4-VTP_PRIMARY_SERVER_CHG: aabb.cc80.0700 has become the pr
imary server for the VLAN VTP feature
完成后,其他Domain内的设备也会收到通知你设定了主Server。
VTP Pruning
Pruning的中文意为修建,如同它的中文字面意思一样,就是帮你修建在Trunk中多余得放行的VLAN。你可能认为它在某些程度上和Allow VLAN操作有些相同,实际上不是的。Allow VLAN是设定允许通过Trunk链路的VLAN,而Pruning是不会直接影响到配置被允许通过VLAN的流量。
试想下,如果你配置根据物理位置来分配VLAN,VTP来帮你将所有VLAN都同步到其他交换机上,当分配了VLAN 10 给办公楼电脑,VLAN20给工业楼电脑,VTP同步后它们的交换机上都会有VLAN 10 和 20,如果这时候发生来之VLAN10的广播泛洪,由于你偷懒直接在Trunk 上Allow 了所有VLAN,将导致它们两台交换机(办公楼、工业楼交换机)都会收到广播报文,无论工业楼交换机下是否有VLAN10的机器。
这种多余的泛洪流量对于工业楼的交换机是多余了,它会浪费了我们Trunk链路的流量,虽然你可能认为小题大做,但我们现实的环境不单单只有ARP会产生广播,也不会只有寥寥可数的几台电脑,我们应该尽可能的优化网络。
或许你听我描述还是不是很能听懂,这里我使用拓扑图来描述会有助你更好理解。
如图,SW1作为VTP server 给SW2 SW3同步VLAN信息:
- 蓝色办公楼VLAN 10
- 红色工业楼VLAN 20
- Trunk 允许所有VLAN 通过
这时候,如果在没有开启VTP Pruning情况下,SW1 下挂的VPC4 发出ARP请求的话:
是的,就如同上述的图一样,明明SW3下就没有关于VLAN 10 的机器,广播包的ARP-Request却照样发给了SW3,这时候就需要VTP Pruning出动了。修建后的图我就不发了,简单的来说就是通过VTP 通知报告知VTP server:“我这边有些VLAN压根就没被接口归类到(Switchport access vlan XX),你直接帮我把来之这些VLAN的流量干掉吧”。当然VLAN 1包含了一些管理流量,特殊的它默认是不被修建的。
VTP Pruning开启的方式也很简单,只要在VTP Server端上敲下VTP pruning 就可以了,开启后整个VTP域的所有设备都会跟着开启该功能(Transparent mode 除外)。
SW1(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 2
VTP Domain Name : CCIE
VTP Pruning Mode : Enabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0700
Configuration last modified by 1.1.1.1 at 1-14-21 09:18:57
Local updater ID is 1.1.1.1 on interface Vl1 (lowest numbered VLAN interface found)
Feature VLAN:
--------------
VTP Operating Mode : Server
Maximum VLANs supported locally : 1005
Number of existing VLANs : 8
Configuration Revision : 5
MD5 digest : 0x79 0xB5 0x24 0x51 0x54 0xBD 0x14 0xB9
0xA3 0xAE 0xCF 0x80 0x7F 0x2A 0x5D 0xE8
SW2(config)#do show vtp status
VTP Version capable : 1 to 3
VTP version running : 2
VTP Domain Name : CCIE
VTP Pruning Mode : Disabled
VTP Traps Generation : Disabled
Device ID : aabb.cc80.0100
Configuration last modified by 1.1.1.1 at 1-14-21 09:18:07
Feature VLAN:
--------------
VTP Operating Mode : Transparent
Maximum VLANs supported locally : 1005
Number of existing VLANs : 8
Configuration Revision : 0
MD5 digest : 0xB4 0xFD 0xF7 0x39 0x3B 0xE6 0x94 0xFF
0xE9 0x07 0xA7 0xC7 0x7C 0x10 0xBB 0x43
使用show interface pruning 查看修建结果,或者用show interface trunk也可以。
可以发现SW1的E0/0,E0/1都被修剪了:
SW1#show inter pruning
Port Vlans pruned for lack of request by neighbor
Et0/0 10,30
Et0/1 20,30
Port Vlan traffic requested of neighbor
Et0/0 1,10
Et0/1 1,20
再看看SW2和SW3:
SW2(config-if)#do show inter pru
Port Vlans pruned for lack of request by neighbor
Et0/0 10,20,30
Port Vlan traffic requested of neighbor
Et0/0 1,10
SW2#show inter trunk
Port Mode Encapsulation Status Native vlan
Et0/0 on 802.1q trunking 1
Port Vlans allowed on trunk
Et0/0 1-4094
Port Vlans allowed and active in management domain
Et0/0 1,10,20,30
Port Vlans in spanning tree forwarding state and not pruned
Et0/0 1,20
SW3(config-if)#DO SHOW INTER PRU
Port Vlans pruned for lack of request by neighbor
Et0/0 10,30
Port Vlan traffic requested of neighbor
Et0/0 1,20
就是这样,VTP Pruning的效果就出来了,那么笔记就到这里。