VTP(VLAN Trunking Protocal)

VTP协议简介
VLAN Trunking Protocal(VTP)是VLAN中继协议,也被称为虚拟局域网干道协议,是Cisco的私有协议,
主要用作VLAN管理。如果要在网络中加入一个新的VLAN,普通情况下则需要在该VLAN Traffic所要经过
的每一台交换机上都要创建此VLAN,如果网络规模庞大,无疑这是一个很大的工作量。使用VTP则可以实
现VLAN的集中管理,只需要在VTP Server上新建VLAN,VLAN配置会自动同步到其它Switch上而不需要在
每个Switch上重复操作。这大大简化了网络管理员的工作量。VTP是一个OSI参考模型第二层的通信协议,
主要作用就是管理在同一个域的网络范围内VLANs的建立、删除和重命名的工作。

VTP的角色分为VTP Server和VTP Client,VTP Server维护该VTP域中所有VLAN信息列表。当在一台VTP
Server上配置一个新的VLAN时,该VLAN的配置信息将自动传播到本域内的其他所有VTP Client交换机。
这些交换机会自动地接收这些配置信息,使其VLAN的配置与VTP Server保持一致,从而减少在多台设备上
配置同一个VLAN信息的工作量,而且保持了VLAN配置的统一性。VTP Client不能建立、删除或修改VLAN,
但可以转发通告,同步vlan配置。另外还有一种工作模式叫作VTP Transparent,VTP Transparent相当
于是一项独立的交换机,它不参与VTP工作,不从VTP Server学习VLAN的配置信息,而只拥有本设备上自
己维护的VLAN信息。VTP Transparent可以建立、删除和修改本机上的 VLAN信息,同时会转发通告并把配
置保存到NVRAM中。VTP版本分为Version1、Version2、Version3,当前广泛使用的是Version 3,V1与V2
版本中存在一些问题直到V3版本中才彻底解决,并支持MST,所以现在使用的VTP基本都是VTP Version 3。

VTP域
VTP域也称为VLAN管理域,有一个以上共享VTP域名互相连接的交换机组成。也就是说,VTP域是一组VTP域名
相同并通过中继链路相互连接的交换机。下面是VTP域的要求:
● 域内的每台交换机都必须使用相同的域名,不论是通过配置实现,还是由交换自动学到的。
● 交换机必须是相邻的,即相邻的交换机需要具有相同的域名。
● 在所有交换机之间,必须配置中继链路。
如果上述条件任何一项不满足,则VTP域不能联通,信息也就无法跨越分离部分进行传送。
实验拓扑
如下图是我们的实验拓扑,实验平台为GNS3
● 1 x L3/L2 Switch: CoreSW01
● 4 x L2 Switch: CoreSW02、CoreSW03、AccessSW01、AccessSW02
● 两个VTP域:分别使用VTP v2和VTP v3
● 创建相应的VLAN对VTP进行验证
● 这里我们只讨论VTP,所以这里我们不讨论EtherChannel和Spanning Tree
准备工作
1、首先我们来创建VLAN,在我的拓扑中,我禁用了Default VLAN 1,使用VLAN 2作为管理VLAN。在所有
交换机上执行以下操作。
CoreSW01(config)#interface vlan 1
CoreSW01(config-if)#shutdown
CoreSW01(config-if)# exit
CoreSW01(config)#interface vlan 2
CoreSW01(config-if)#ip address 192.168.99.1 255.255.255.0
CoreSW01(config-if)#no shut

2、管理IP规划如下
CoreSW01: 192.168.99.1/24
CoreSW02: 192.168.99.2/24
CoreSW03: 192.168.99.3/24
AccessSW01: 192.168.99.4/24
AccessSW02: 192.168.99.5/24
3、创建“启用”秘密密码,并配置VTY行以允许远程访问,在所有交换机上执行以下操作。
CoreSW01(config)#enable secret cisco
CoreSW01(config)#line vty 0 4
CoreSW01(config-line)#password cisco
CoreSW01(config-line)#login
4、要配置VTP,Switch之间首先要配置Trunk link(中继链路),并按规划将VLAN 666定义为 “Native” 
VLAN,注意这里端口请根据自己连线时使用的端口进行设置,这里我在CoreSW01中使用的端口为e0/0-3。
CoreSW01(config)#interface range ethernet 0/0 – 3
CoreSW01(config-if-range)#switchport trunk encapsulation dot1q
CoreSW01(config-if-range)#switchport trunk native vlan 666
CoreSW01(config-if-range)#switchport mode trunk
CoreSW01(config-if-range)#switchport trunk allowed vlan except 1,888
CoreSW01(config-if-range)#no shut

5、在CoreSW02, CoreSW03, AccessSW01 and AccessSW02上执行同样的操作配置Trunk link。
配置VTP v2
1、根据拓扑,我们将在CoreSW01 –> CoreSW02 –> AccessSW01设置VTP V2。所以这3台Switch中,必需
最少有一台Switch配置为VTP Server,其它Switch设置为VTP Client。VTP Server与 VTP Client 需要
配置相同的VTP Domain与VTP Password。我们在CoreSW01上执行以下操作将其设置为VTP Server。
CoreSW01(config)#vtp domain SWITCHLAB
CoreSW01(config)#vtp version 2
CoreSW01(config)#vtp mode server
CoreSW01(config)#vtp password cisco
2,按照规划,我们还需要在CoreSW01上创建更多的新vlan。
CoreSW01(config)#vlan 2
CoreSW01(config-vlan)#name *** MANAGEMENT ***
CoreSW01(config-vlan)#vlan 888
CoreSW01(config-vlan)#name *** UNUSED PORTS ***
CoreSW01(config-vlan)#state suspend
CoreSW01(config-vlan)#vlan 3
CoreSW01(config-vlan)#name *** SERVERS ***
CoreSW01(config-vlan)#vlan 4
CoreSW01(config-vlan)#name *** GUEST ***
CoreSW01(config-vlan)#vlan 5
CoreSW01(config-vlan)#name *** OFFICE ***
CoreSW01(config-vlan)#vlan 666
CoreSW01(config-vlan)#name * NATIVE_DON’T_USE *

3,注意,这里我将VLAN 888的状态设置为挂起(suspend)而不是关闭状态(Shutdown),挂起和关机都
将禁用这个Vlan,区别在于挂起模式下Vlan的信息是跨VTP执行的,而关闭状态只在本地执行,不会通过VTP
发送此信息。所以这里设置成挂起后,该VLAN信息也会在VTP域中同步。
4、配置完成后,查看switchport配置信息
sh int e0/0 switchport
5,在交换机CoreSW02 和 AccessSW01设置VTP V2,我们只在参与VTP version 2的这两个交换机上配置
“trunk”模式、“native vlan 666”和VTP version 2。注意,这里我们不再创建任何新的vlan,因为当
我们设置VTP域和VTP密码与第一个交换机CoreSW01上匹配时,应该会自动同步VTP。这就是我验证VTP是否
正常工作的方法。

CoreSW02:
vtp domain SWITCHLAB
vtp version 2
vtp mode client
vtp password cisco

AccessSW01:
vtp domain SWITCHLAB
vtp version 2
vtp mode client
vtp password cisco
6、在三台Switch中查看VLAN信息,如果我们前面在CoreSW01上创建的VLAN已经同步到了CoreSW02 和
AccessSW01,说明VTP V2配置成功。同样我们此时在CoreSW01上再创建一个VLAN 777,这时 CoreSW02
和 AccessSW01 就会自动同步此VLAN配置,而不需要再手动创建。
7、查看VTP状态
show vtp status
show vtp status | i version|Mode|VLANs|Revision
配置VTP v3
1、根据拓扑,我们将在CoreSW01 –> CoreSW03 –> AccessSW02设置VTP V3。前我们已经配置过了
CoreSW01,所以这里只需要把CoreSW01的VTP版本改成3即可。然后正常配置CoreSW03和AccessSW02。

CoreSW01
CoreSW01(config)# vtp version 3

CoreSW03
CoreSW03(config)#vtp domain SWITCHLAB
CoreSW03(config)#vtp version 3
CoreSW03(config)#vtp mode server
CoreSW03(config)#vtp password cisco

AccessSW02
AccessSW02(config)#vtp domain SWITCHLAB
AccessSW02(config)#vtp version 3
AccessSW02(config)#vtp mode server
AccessSW02(config)#vtp password cisco

2、注意,这里我们把CoreSW03和AccessSW02都配置成了VTP Server。那么这个VTP Domain里全部都是
VTP Server,在这种情况下,我们查看VTP域的状态时,会发现VLAN信息并没有同步,此时我们需要选举
一个Primary vlan来决定由谁来负责VLAN信息的同步。我们把CoreSW01配置为Primary vlan。
CoreSW01#vtp primary vlan
This system is becoming primary server for feature vlan
No conflicting VTP3 devices found.
Do you want to continue? [confirm]
CoreSW01#
3、在三台Switch中查看VLAN信息,如果我们前面在CoreSW01上创建的VLAN已经同步到了CoreSW03 和 
AccessSW02,说明VTP V3配置成功。同样我们此时在CoreSW01上再创建一个VLAN 555,这时 CoreSW03
和 AccessSW02 就会自动同步此VLAN配置,而不需要再手动创建。
4、此时你会发现,虽然VTP V3的信息同步成功了,但是在CoreSW01上,前面我们为VTP V2创建的VLAN 
777不见了。也就是说此时CoreSW01的VTP改为Version 3后,并没有同步Version 2的状态。 此时,我们
将CoreSW02和AccessSW01的VTP模式改为transparent,也就是透明模式。
CoreSW02(config)#vtp mode transparent
Setting device to VTP Transparent mode for VLANS.
CoreSW02(config)#vtp mode client

AccessSW01(config)#vtp mode transparent
Setting device to VTP Transparent mode for VLANS.
AccessSW01(config)#vtp mode client

5、此时,再查看每个交换机的VLAN信息,可以看到VLAN 555和777都同步到了每一台交换机上。
6、在CoreSW01上创建一个新的VLAN,如果在其它4台Switch上可以看于是此VLAN,说明当前VTP V3已经
可以同时在两个VTP Domain中同步VLAN配置信息。
CoreSW01(config)# vlan 1000
CoreSW01(config-vlan)# name ***VTP V2V3 TEST***
CoreSW01(config-vlan)# exit
CoreSW01(config)#

7、在每台Switch上查看VLAN同步状态,确认VLAN信息同步成功。到这里,VTP的实验就完成了,可以看到
VTP 版本3支持同时对VTP version 2和VTP version 3的Domain同步VLAN配置。
8,按规划,我们将没使用的端口放入前面我们配置的VLAN 888,该VLAN处于挂起状态,这样做可以避免意
外或错误的连线配置对当前网络拓扑和配置的破坏。实际环境中,这也是一种安全机制,避免非法接入的设
备所导致的安全风险。在每台交换机上对不使用的端口执行以下操作。
CoreSW01(config)#interface range ethernet 1/0 – 3, ethernet 2/0 – 3,
ethernet 3/0 – 3
CoreSW01(config-if-range)#switchport mode access
CoreSW01(config-if-range)#switchport access vlan 888
CoreSW01(config-if-range)#shutdown
CoreSW01(config-if-range)#exit

9、最后,所有配置完成后,记得保存配置。
CoreSW0#write memory
VTP状态详细介绍
1、VTP Version:
VTP的版本,包括V1/V2/V3,V1为最早期版本,V2中加入了对Token Ring的支持,不过现在基本见不到
Token Ring的网络了,V3中加入了对MST的支持,同时V3增加了对密码的加密,支持VLAN到4094。

2、VTP Domain Name
VTP 域的名子,要VLAN Database同步,相同名子的Switch处于同一个VTP域中。

3、VTP Operating Mode
说明交换机上运行的VTP模式,是Server还是Client,或者是Transparent Mode透明模式
● Server Mode
默认模式,本机VLAN Database可更改,将新的VLAN配置同步给其它Switch。
● Client Mode
本机VLAN Database不可更改,接收到的新的VLAN配置会更新VLAN Database并传递给其它Switch。
● Transparent Mode
本机VLAN Database可更改,收到新的VLAN配置不会更新VLAN Database但会同步给其它Switch。

4、VTP Pruning Mode
我们可以在Trunk Link上控制哪些VLAN可以通过,哪些不能,而Pruning则可进一步自动检测VLAN在网络
上的分布,从而知道Trunk Link需要什么VLAN Traffic,把不必要的Traffic自动拦截下来。减少带宽的
浪费。

5、Number of existing VLANs
本机中现有的VLAN的总数量。

6、Primary ID
Primary Server的设备ID,如下图中,Primary ID 与Device ID是相同的,因为这台Switch是Privary
Server。
VTP Pruning
1、开启VTP Pruning
CoreSW01# vtp pruning
CoreSW01# show vtp status
2、如上图,此时整个VTP Domain里的Switch就都会变成VTP Pruning Mode。此时我们新增加一台交换机
AccessSW03连接到CoreSW01,这台交换机没有加入到VTP域,并在此交换机上创建VLAN 999。
3、这时我们在CoreSW01上查看interface trunk信息,e3/2-3是连接到AccessSW03的端口。可以看到 
“Vlan in spanning tree forwarding state and not pruned”中,并没有包括AccessSW03上的VLAN
999,说明这个VLAN 999已经被VTP屏蔽掉了,因为VTP域中并不存在VLAN 999,这样就可以有效减少VTP
域中的带宽的浪费。
4、同样,在AccessSW03上查看,e0/0-1是与CoreSW01连接的端口,可以看到VTP域中的VLAN信息也没有
转发到这两个端口上。

发表评论