Dynamic Trunking Protocol (DTP) 动态中继协定

前言

Cisco 专利 Dynamic Trunking Protocol (DTP) 一般用於 Switch 与 Switch 之间建立 Trunk Link,其实蛮简单的,只要搞得懂 Trunk丶Dynamic Desirable丶Dynamic Auto 这几个模式,基本上就学完了。不过还是有一些要点很易被忽略,希望读者也花点时间看看,温故知新。

Access 与 Trunk

当我们把任何设备插进 Switch Port,如果没有做任何设定的话,Switch 都会把这个 Port 设成 Access,即只容许 1 个 VLAN 的 Traffic 传输这个 Port。但如果这个 Port 有需要容许多个 VLAN 进出的话,例如用於 Switch 与 Switch 之间的连接,则需设成 Trunk。关於 VLAN 的理论,在 Virtual LAN (VLAN) 一文中已经介绍过,在此不再重覆。

要在 Switch Port 设定 Trunk 或 Access,最简单的方法就是做一个 Static 的设定,硬性规定该 Port 跑 Access 还是 Trunk。值得一提的是,关於 DTP 的实验建议用实体 Switch 做,比较准。

我们知道 switchport mode access 可强制把 Port 设成 Access

SW1(config-if)#switchport mode access

 switchport mode trunk 则可强制把 Port 设成 Trunk,但在此之前必需先设定 trunk 的 encapsulation,否则会有错误讯息, encapsulation 可选 isl 或 dot1q,不过 isl 已经过时了,考试都不考了,现在一般都选 dot1q。

SW1(config-if)#switchport mode trunk
 Command rejected: An interface whose trunk encapsulation is "Auto" can not be configured to "trunk" mode.
 SW1(config-if)#switchport trunk encapsulation dot1q
 SW1(config-if)#switchport mode trunk

要确认一个 port 是在跑 Access 还是 Trunk,很简单,用 show interface <port> trunk 就可以。例如想看 FastEthernet 1/0/13 正在搞什麽?可用 show interface FastEthernet 1/0/13 trunk,如显示 status 为 trunking 则正在跑 Trunk,如颢示 non-trunking,则正在跑 Access。

SW1#show interfaces fastEthernet 1/0/13 trunk
 
 Port        Mode         Encapsulation  Status        Native vlan
 Fa1/0/13    on           802.1q         trunking      1
 
 Port        Vlans allowed on trunk
 Fa1/0/13    1-4094
 
 Port        Vlans allowed and active in management domain
 Fa1/0/13    1,11-20
 
 Port        Vlans in spanning tree forwarding state and not pruned
 Fa1/0/13    1,11-20

另外,如果 1 个 port 正在跑 Trunk,在 show vlan 是不会看到该 port 的 VLAN assignment。相反,如果自到,则该 Port 是 Access Port。

SW1#show vlan
 
 VLAN Name                             Status    Ports
 ---- -------------------------------- --------- -------------------------------
 1    default                          active    Fa1/0/2, Fa1/0/3, Fa1/0/4
                                                 Fa1/0/5, Fa1/0/6, Fa1/0/7
                                                 Fa1/0/8, Fa1/0/9, Fa1/0/10
                                                 Fa1/0/11, Fa1/0/12, Fa1/0/14
                                                 Fa1/0/15, Fa1/0/16, Fa1/0/17
                                                 Fa1/0/18, Fa1/0/19, Fa1/0/20
                                                 Fa1/0/21, Fa1/0/22, Fa1/0/23
                                                 Fa1/0/24, Gi1/0/1, Gi1/0/2
 1002 fddi-default                     act/unsup
 1003 token-ring-default               act/unsup
 1004 fddinet-default                  act/unsup
 1005 trnet-default                    act/unsup

<--Output Omitted-->

Dynamic Trunking Protocol (DTP)

终於入正题,我们试试用 Dynamic 的方法去建立 Trunk Link,即 Dynamic Trunking Protocol (DTP),DTP 会透过 DTP Message 尝试着帮 Switch Port 沟通并建立 Trunk Link,DTP 有两个模式,分别是 Desirable 和 Auto,幻想一下,Desirable 和 Auto 就像一对刚刚有了感觉的男女,就差一方表白便可幸福快乐地在一起 (变成 Trunk)!Desirable 是愿意做主动的一方,Auto 是被动的一方,感情这回事,只要一方肯作主动便水到渠成。所以,如果两个 Port 一端是 Desirable (主动 Send DTP Message),另一端是 Auto (收到 DTP Message 便会回应),则可成 Trunk。如果两边都是 Desirable,也可成 Trunk。但若两边都是 Auto,不可成 Trunk,回归 Access,孤独一生。

设定 DTP 可使用 switchport mode dynamic <desirable/auto> 指令。

SW1#show cdp neighbors
 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                   S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
 
 Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
 SW2              Fas 1/0/13        137           S I      WS-C3750- Fas 1/0/13
 SW1(config-if)#switchport mode dynamic desirable
SW2(config)#int fastEthernet 1/0/13
 SW2(config-if)#switchport mode dynamic desirable
SW1#show interfaces fastEthernet 1/0/13 trunk
 
 Port        Mode         Encapsulation  Status        Native vlan
 Fa1/0/13    desirable    802.1q         trunking      1
 
 <--Output Omitted-->

当设定 Desirable 後,Switch 会立刻发放 DTP Message,如对方回应後则可成 Trunk,而 Desirable 会每隔 30 秒发放 DTP Message 去维持这一段关系。可以用 show dtp 去确认一下。

SW1#show dtp
 Global DTP information
         Sending DTP Hello packets every 30 seconds
         Dynamic Trunk timeout is 300 seconds
         3 interfaces using DTP

如果两边都设成 Auto 的话,就变回 Access Port 了。

SW1(config)#int fastEthernet 1/0/13
 SW1(config-if)#switchport mode dynamic auto
SW2(config)#int fastEthernet 1/0/13
 SW2(config-if)#switchport mode dynamic auto
SW1#show int fastEthernet 1/0/13 trunk
 
 Port        Mode         Encapsulation  Status        Native vlan
 Fa1/0/13    auto         802.1q         not-trunking  1

<--Output Omitted-->
 有趣的是,其中一边就算用 switch mode trunk 来代替 Desirable,即是说 Trunk + Desirable 或是 Trunk + Auto 的组合,也可成 Trunk 的,因为 switch mode trunk 预设也会发放 DTP Message。
SW1(config)#int fastEthernet 1/0/13
 SW1(config-if)#switchport trunk encapsulation dot1q
 SW1(config-if)#switchport mode trunk
SW2(config)#int fastEthernet 1/0/13
 SW2(config-if)#switchport mode dynamic desirable
SW1#show interfaces fastEthernet 1/0/13 trunk
 
 Port        Mode         Encapsulation  Status        Native vlan
 Fa1/0/13    desirable    802.1q         trunking      1
 
 <--Output Omitted-->

那麽 Trunk Mode 和 Dynamic Desirable Mode 到底有什麽分别?

分别 1

Trunk Mode 可以关掉 DTP Message,但 Dynamic Desirable Mode 不可,如果想把 DTP Message 的 Bandwidth 都省掉的话,大可两边 Port 都用 Trunk Mode,然後两边都使用指令 switchport nonegotiate 去把 DTP Message 关掉。

分别 2

Dynamic Desirable Mode 如果遇到另一边是 Access Mode 的话,是会变成 Access 的。但如果 Trunk Mode 遇到 Access Mode 是没有相量馀地的,会坚持执行 Trunk,於是会出现一边 Trunk 而另一边是 Access 的现象,是不合理的。

相信大家都开始有点混乱,现在用以下对照表作一个小小总结。

Access Mode Trunk Mode ⭐ Dynamic Desirable Dynamic Auto
Access Mode Access 不合理 Access Access
Trunk Mode ⭐ 不合理 Trunk Trunk Trunk
Dynamic Desirable Access Trunk Trunk Trunk
Dynamic Auto Access Trunk Trunk Access

⭐不使用 switchport nonegotiate 的情况

DTP 与 VTP Domain

有件事一直很容易被忽略,就是以 Trunk Link 连接的两只 Switch 必需有相同的 VTP Domain,否则无论使用 Static 设定还是 Dynamic 设定都不可成 Trunk。关於 VTP 的说明,请参考 VLAN Trunking Protocol (VTP) 一文。

相關主題

发表回复

2021-07-22

Posted In: Layer 2 网络技术

Leave a Comment