目錄

前言
Access 與 Trunk
Dynamic Trunking Protocol (DTP)
DTP 與 VTP Domain

前言

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 ModeTrunk Mode ⭐Dynamic DesirableDynamic 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) 一文。