动态Trunking协议(DTP)
封装类型
Trunk通过在标准的以太网帧上增加临时的标记(在一条链路)来实现跨设备的VLAN,这样就可以在一条链路上传送多个VLAN的信息。也确保了在交换机之间隔离每个VLAN的广播域。在交换机内部使用内容地址存储(CAM)表来维护VLAN和帧之间的对应关系。Trunking在很多二层网络中都支持,如ATM LANE、FDDI 802.10和以太网等,本文只讨论以太网中的Trunk。

802.1Q运行机制
IEEE 802.1Q标准除封装格式外,还定义了如生成树增强、通用VLAN注册协议(GARP)、802.1p QOS标记更等更多的内容。802.1Q帧格式中保留了原始的以太网帧中的源地址和目的地址;但为因为802.1Q将在帧头中增加一个长为4字节的标记,这样以太网帧长度达到1522字节,就仍然需要交换机处理能够处理大帧。对于access模式的端口,启用了802.1p用户特权标记的情况下,也需要能够处理1522字节的帧。802.1Q可以支持4096个VLAN。
在trunk链路上除了native VLAN(该VLAN中的数据对于交换机入口来说是隐式标记了的)外其它所有VLAN中的数据帧都将打上802.1Q帧标记,native vlan上发出的帧永远是不打标记的。
802.1Q/801.1p帧格式:

 041140_04_908
建议
由于所有的新硬件都支持802.1Q(一部分硬件如Catalyst4000系列和CSS11000系列只支持802.1Q),Ultra建议在所有的的新网络中都使用802.1Q标准,老的网络也应该逐步从ISL迁移到802.1Q、 

IEEE标准可以在不同厂商的设备间实现互操作一,这使得Cisco环境中和支持802.1p的网卡和设备之间的互操作成为可能。虽然ISL和802.1Q都是很成熟的技术,但做为IEEE标准将有更多的第三方产品的支持。
因为交换机之间的封装类型通过DTP进行协商,在缺省情况下,如果双方都支持ISL,ISL将成为首选,要使用802.1Q,需要使用以下的使用进行手工设置:
set trunk dot1q
如果在trunk链路上clear了VLAN1,虽然所有的用户数据帧均无法传送或接收,但网络管理处理器(NMP)上的控制流量如CDP或VTP将继续在VLAN1上传送。 CDP、VTP和PAgP包将永远在Trunk链路上的VLAN1中传输,如果交换机的native VLAN被改变了,这些控制帧将打上VLAN1标记。如果这个dot1Q链路的对端是一台路由器,在native vlan改变的情况下,路由器上的需要将一个子接口放到VLAN1中以接收标记过的CDP帧。
注:router上修改native vlan需要12.1(3)T及以上版本的IOS支持。
对于native VLAN的隐式标记将导致一个潜在的安全风险,它将可能导致不通过路由器就可以将帧转发到其它的VLAN中,Cisco强烈建议将vlan1用做native VLAN,把处于access模式的端口都放到其它的VLAN
Trunking模式
DTP是一个第二代的DISL(动态ISL)协议,用来确保一个trunk链路两端的ISL或802.1Q帧参数不会出现不一致的情况,如封装类型、native VLAN和硬件兼容性等。也可以通过确保端口两端状态的一致性来帮助避免出现在非Trunk链路上发现标记过的帧这样一个潜在的安全风险。
运行机制
DTP是一个用于协商一条链路的配置参数的一个二层协议,它使用一个SNAP协议类型为0x2004的组播MAC地址(01-00-0c-cc-cc-cc),参数如下表所示:

041140_04_908

041140_04_908

下面的该协议的一些注意事项:
DTP假定是一个点到点连接,Cisco设备只有在点到点连接的情况下支持802.1Q trunk.
在进行DTP协商的同时,端口将不参加STP计算,只有当端口成为三个DTP状态(Access、ISL或802.1Q)之一后,该端口才参加STP计算(如果配置了PAgP,PAgP处理程序将在STP计算前进行)。
如果端口是处于ISL trunk模式,DTP包在VLAN1上发出,在其它情况下(802.1Q或非trunk口),DTP包在native VLAN上发出。
在desirable模式下, DTP包传送VTP域名 (在一个trunk链路启动前,两端必须相符)。
在协商过程中,每秒发出一个消息,协商完后,每30秒发出一个消息。
必须相当明确\"on,\" \"nonegotiate,\"和\"off\"这三个模式的最终转换状态,错误的配置将导致出现相当严重的后果。
处于\"on,\" \"auto,\"或\"desirable\"模式的端口周期性的发出DTP帧,如果一个处于auto或desirable模式的端口在5分钟内没收到DTP包,它将切换为非trunk状态。
建议
Cisco在一条链路的两端均配置为\"desirable\"模式,在这种模式下,管理员可以通过syslog server和命令行状态信息清楚地看到一个端口up并切换到trunk状态,不象\"on\"模式,它可以使一个端口就算是在对方处于错误配置状态时这会出现up信息。 另外,\"desirable\"模式的trunk在链路的一端无法成为trunk或从trunk状态掉下来的情况下提供了一定的健壮性,使用如下使用来配置为desirable模式:

set trunk desirable
注意: 将所有的非trunk端口都配置为\"trunk off\"模式,这有助于连接主机的端口尽快处于up状态,更详细的信息可以参见本文的STP一节。可以使用set port host命令或如下命令进行配置:
set trunk off
其它选项
更为普通的一种配置模式是只在分布层使用\"desirable\"模式,而在接入层使用缺省的auto模式。这样可以简化配置。在对端设备不支持通过DTP进行Trunk协商时(如一些Catalyst 2900XL之类的基于IOS的交换机,或其它厂商的交换机),这样就需要使用\"nonegotiate\"模式来将端口无条件地配置为trunk模式,使用如下命令进行配置:
set trunk nonegotiate
由于在处理桥接时,从处于\"on\"模式的端口收到的DTP帧将有可能发回这个trunk端口,这将引起交换机进行不必要的重新协商(这意味着端口的trunk将不停地在trunk down/up状态之间切换)Cisco建议将连接到IOS路由器的trunk口设置为\"nonegotiate\"模式,在这种模式下,交换机不会发送DTP帧。
Cisco不支持DTP的交换机:
Catalyst 2900XL/3500XL
IOS版本早于12.1(6)EA2的Catalyst 2950/3550系列

(未完,待续。下节:STP)