# 1、VTP协议介绍
# Cisco交换机一旦通过某种方式激活了干线(Trunk),这些交换机会通过通告报文来指示哪些VLAN是可用的,并且会维持这些VLAN的相关信息,这种功能就叫做VTP(Vlan Trunking Protocol,VLAN中继协议)。VTP是思科私有的协议,但大多数交换机都支持该协议。

# 2、VTP的作用
# 使用VTP可以将一台交换机配置成VTP Server,将其余的交换机配置成VTP Client,那么作为VTP Client的交换机会自动同步VTP Server交换机上面配置的VLAN信息,这样就不需要在每一台交换机上配置相同的VLAN信息;对VTP Server上VLAN的添加和删除重命名等操作会自动同步到VTP Client,确保了整个网络配置的一致性。

# 3、VTP的特点
# VTP是一种消息协议,使用第二层帧,通过VLAN 1传输;可以用VTP管理网络的VLAN范围从1到1005,VTP不能管理扩展的VLAN(大于1005)。VTP协议使用VTP通告(VTP advertisements)在交换机间交互VLAN信息,VTP通告只能在Trunk(主干)链路上上互交信息。

IOU1#sh vtp statu
VTP Version capable             : 1 to 3   # 表示这台交换支持两种VTP版本(1、2、3),这里显示的3,不代表默认运行的版本是 Version 3,只代表支持几种版本。
VTP version running             : 1                        # 默认运行的是版本1,
VTP Domain Name                 : cisco                    # VTP域名,没有配置的时候为空。
VTP Pruning Mode                : Disabled                 # 是否开启了VTP裁剪功能,默认没有开启。
VTP Traps Generation            : Disabled                 # Trap主要用来为SNMP服务器发送消息,默认没有开启。
Device ID                       : aabb.cc00.0100           # 发送VTP信息的端口IP地址,可以手动指定发送VTP信息的端口。
Configuration last modified by 0.0.0.0 at 8-31-17 14:53:56 # 最后配置改变的时间。
Local updater ID is 0.0.0.0 (no valid interface found)

Feature VLAN:
--------------
VTP Operating Mode                : Server
Maximum VLANs supported locally   : 1005    # 表示交换机最大可配置的VLAN数量是1005个,这个值和交换机的型号有关。
Number of existing VLANs          : 9    # 当前已经有9个VLAN,交换机默认VLAN就是5个(VLAN1、VLAN1002-1005)。
Configuration Revision            : 4    # 配置修正号是4,交换机上VLAN配置信息发生改变时,配置修正号自动加1,配置修正号暗示了交换机VLAN配置信息的新旧。
MD5 digest                        : 0x44 0x23 0x1E 0xD1 0x1A 0xC3 0xB7 0xE5 
                                    0xF6 0xD6 0xDE 0x3B 0xEF 0x46 0x62 0x62 
# 4、什么是VTP域名
# VTP协议允许在一台交换机上集中配置,所做的配置会被自动传播到网络中所有其他的交换机上,前提是这些交换机都在一个VTP域中;同一个域中的交换机拥有相同的VTP域名;默认的域名为空,此时交换机不会向外传播VTP通告,并且一个交换机只能加入一个VTP域。
# 注意,当VTP域名被改变或删除闪存中的VLAN配置文件"vlan.dat",重启后配置修正号会自动归零;另外,当交换机处于Transparent模式时,因为不需要和其他交换机同步VTP信息,配置修正号始终为0;当网络中的交换机配置修正号都为0的时候,他们之间不会同步VLAN配置信息。
# 在同一个域中,如果没有设置VTP密码,只要域名相同,配置修正号大的交换机的VLAN配置将覆盖配置修正号小的交换机的VLAN配置,这样非常不安全,可以通过下面的命令配置一个VTP密码,只有域名和密码都相同的情况下,才会互交VLAN配置信息:
# 5、删除VTP domain
# 删除vlan.dat可以让域名变成空的,可是,别的交换机给你发一个vtp通告,你的交换机会自动把vtp域名改成这个通告里的名字

IOU1#delete vlan.dat-00005
Delete filename [vlan.dat-00005]? 
Delete unix:/vlan.dat-00005? [confirm]
IOU1#sh vtp stat
VTP Version capable             : 1 to 3
VTP version running             : 1
VTP Domain Name                 : NULL
VTP Pruning Mode                : Disabled
VTP Traps Generation            : Disabled
Device ID                       : aabb.cc00.0500
Configuration last modified by 0.0.0.0 at 9-1-17 11:39:28
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          : 9
Configuration Revision            : 1
MD5 digest                        : 0x53 0x4C 0x99 0x60 0x77 0x26 0xD2 0x73 
                                    0x3A 0xDE 0x36 0x34 0xF4 0x2E 0xE5 0x17
# 6、VTP协议协商
# 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域名发生变化时(获取相同域名的vlan信息)、交换机收到一个汇总通告,通告中的配置修正号高于本交换机的配置修正号、因为某些原因子集通告丢失、交换机重启。




# Summary Advertisement 汇总通告
Frame 257: 103 bytes on wire (824 bits), 103 bytes captured (824 bits) on interface 0
Ethernet II, Src: aa:bb:cc:00:0d:11 (aa:bb:cc:00:0d:11), Dst: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)
    Destination: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)    # VTP帧以组播的方式发送,目的MAC是保留的MAC地址"01-00-0C-CC-CC-CC"
    Source: aa:bb:cc:00:0d:11 (aa:bb:cc:00:0d:11)
    Type: 802.1Q Virtual LAN (0x8100)
802.1Q Virtual LAN, PRI: 0, CFI: 0, ID: 1                # VTP被封装在802.1Q或ISL帧中
    000. .... .... .... = Priority: Best Effort (default) (0)
    ...0 .... .... .... = CFI: Canonical (0)
    .... 0000 0000 0001 = ID: 1        
    Length: 85
Logical-Link Control
    DSAP: SNAP (0xaa)
    SSAP: SNAP (0xaa)
    Control field: U, func=UI (0x03)
    Organization Code: Cisco (0x00000c)    
    PID: VTP (0x2003)
VLAN Trunking Protocol
    Version: 0x01
    Code: Summary Advertisement (0x01)
    Followers: 1
    Management Domain Length: 5
    Management Domain: cisco                # VTP domain
    Configuration Revision Number: 1        # VTP修正号
    Updater Identity: 0.0.0.0
    Update Timestamp: 17-09-02 12:43:18
    MD5 Digest: 396e186d1f15d232fa7f29739891fc52
    
# Subset Advertisements    子集通告
Frame 247: 290 bytes on wire (2320 bits), 290 bytes captured (2320 bits) on interface 0
Ethernet II, Src: aa:bb:cc:00:0d:11 (aa:bb:cc:00:0d:11), Dst: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)
    Destination: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)
    Source: aa:bb:cc:00:0d:11 (aa:bb:cc:00:0d:11)
    Type: 802.1Q Virtual LAN (0x8100)
802.1Q Virtual LAN, PRI: 0, CFI: 0, ID: 1
    000. .... .... .... = Priority: Best Effort (default) (0)
    ...0 .... .... .... = CFI: Canonical (0)
    .... 0000 0000 0001 = ID: 1
    Length: 272
Logical-Link Control
    DSAP: SNAP (0xaa)
    SSAP: SNAP (0xaa)
    Control field: U, func=UI (0x03)
    Organization Code: Cisco (0x00000c)
    PID: VTP (0x2003)
VLAN Trunking Protocol
    Version: 0x01
    Code: Subset Advertisement (0x02)
    Sequence Number: 1
    Management Domain Length: 4
    Management Domain: NULL
    Configuration Revision Number: 1
    VLAN Information                    # VLAN信息
        VLAN Information Length: 20
        Status: 0x00
        VLAN Type: Ethernet (0x01)
        VLAN Name Length: 7
        ISL VLAN ID: 0x0001             # 默认 vlan 1
        MTU Size: 1500
        802.10 Index: 0x000186a1
        VLAN Name: default
    VLAN Information
        VLAN Information Length: 20
        Status: 0x00
        VLAN Type: Ethernet (0x01)
        VLAN Name Length: 8
        ISL VLAN ID: 0x000a             # vlan 10
        MTU Size: 1500
        802.10 Index: 0x000186aa
        VLAN Name: VLAN0010
    VLAN Information
        VLAN Information Length: 20
        Status: 0x00
        VLAN Type: Ethernet (0x01)
        VLAN Name Length: 8
        ISL VLAN ID: 0x0014
        MTU Size: 1500
        802.10 Index: 0x000186b4
        VLAN Name: VLAN0020

# Advertisement Request 查询通告
Frame 2973: 64 bytes on wire (512 bits), 64 bytes captured (512 bits) on interface 0
Ethernet II, Src: aa:bb:cc:00:0c:11 (aa:bb:cc:00:0c:11), Dst: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)
    Destination: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)
    Source: aa:bb:cc:00:0c:11 (aa:bb:cc:00:0c:11)
    Type: 802.1Q Virtual LAN (0x8100)
802.1Q Virtual LAN, PRI: 0, CFI: 0, ID: 1
    000. .... .... .... = Priority: Best Effort (default) (0)
    ...0 .... .... .... = CFI: Canonical (0)
    .... 0000 0000 0001 = ID: 1
    Length: 46
Logical-Link Control
    DSAP: SNAP (0xaa)
    SSAP: SNAP (0xaa)
    Control field: U, func=UI (0x03)
    Organization Code: Cisco (0x00000c)
    PID: VTP (0x2003)
VLAN Trunking Protocol
    Version: 0x01
    Code: Advertisement Request (0x03)
    Management Domain Length: 4
    Management Domain: NULL
    Start Value: 0x0000

# 思科交换机可以被配置成3种VTP模式:
# Server模式:Server模式是思科交换机默认的VTP模式,在这种模式下的交换机可以创建、修改、删除VLAN,VTP Server交换机通告自己的VLAN信息给同一个域中的其他交换机,同时也与收到的VTP通告同步VLAN信息,VLAN的配置信息保存在闪存的vlan.dat文件中。

# Client模式:工作在这种模式下的交换机不可以创建、修改、删除VLAN,当工作在这种模式下的交换机重启时,它发送一个查询通告给VTP Server,请求更新的VLAN信息。这种模式下的交换机VLAN配置信息也保存在闪存的vlan.dat文件中。
# IOU2(config)#vlan 50
# VTP VLAN configuration not allowed when device is in CLIENT mode.

# Transparent模式:工作在这种模式下的交换机可以创建、修改、删除VLAN,但所做的修改只影响当前交换机。在这种模式下,交换机可以转发收到的VTP通告给网络中的其他交换机,但只是转发,Transparent模式下的交换机并不发送自己的VTP信息给其他交换机,也不与网络中的其他交换机同步信息。这种模式下的交换机的VLAN配置信息保存在running-config中,并非保存在vlan.dat中。
# 7、VTP Pruning
# VTP修剪(VTP PRUNING)是VTP的一个功能,它能减少中继端口上不必要信息量.在CISCO交换上,VTP修剪功能缺省是关闭的.
减少广播,组播,单播,保留带宽.VTP pruning只在trunk link上发送广播.默认情况,VTP pruning在所有的switches上是没有启用的.当你在VTP服务器上启用了VTP pruning,整个VTP域就启用了VTP pruning,默认只能在VLAN2到VLAN1005,VLAN1是管理VLAN。

# VTP加入消息(VTP join message):一旦你将交换机端口与一个VLAN相关联,join消息就会宣告VLAN成员关系。此消息用于通知交换机的邻居,此交换机希望接收发往与配置接相关联的VLAN通信。邻接的交换机利用这个信息决定泛洪通信是否需要通过这个trunk。只有在某个trunk链路上收到了适当的join消息,vlan通信才会在此trunk上传送

# join 消息
Frame 5486: 192 bytes on wire (1536 bits), 192 bytes captured (1536 bits) on interface 0
Ethernet II, Src: aa:bb:cc:00:0d:11 (aa:bb:cc:00:0d:11), Dst: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)
    Destination: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)
    Source: aa:bb:cc:00:0d:11 (aa:bb:cc:00:0d:11)
    Type: 802.1Q Virtual LAN (0x8100)
802.1Q Virtual LAN, PRI: 0, CFI: 0, ID: 1
    000. .... .... .... = Priority: Best Effort (default) (0)
    ...0 .... .... .... = CFI: Canonical (0)
    .... 0000 0000 0001 = ID: 1
    Length: 174
Logical-Link Control
VLAN Trunking Protocol
    Version: 0x01
    Code: Join/Prune Message (0x04)
    Management Domain Length: 4
    Management Domain: NULL
    First VLAN ID: 0
    Last VLAN ID: 1007
    Advertised active (i.e. not pruned) VLANs
        VLAN: 1
        VLAN: 10
        VLAN: 30
        VLAN: 40
        VLAN: 50
# vtp pruning 有啥作用?