天天看點

案例實戰交換機Trunk隧道技術應用

場景描述:VLAN建立的問題

  

  某平面廣告公司原有20多名員工,共有19個用戶端計算機接入了公司的交換機。廣告公司公司規模較小,并且沒有配網絡管理者,公司的網絡由內建商組建後一直比較穩定的運作着。由于業務的拓展,公司從平面廣告業務發展到影視制作等多種媒介資源的為一體的企業。各個部門都招聘了員工,人員從20多名增加到40多名,用戶端計算機的數量也翻了一倍,原有的24口交換機已經不能滿足現在的需求。

  

  公司新購置了一台24口交換機,一位網絡技術相對較好的老員工被安排負責此項工作。這位老兄在之前的網絡內建時就負責本公司和內建商的配合工作,此次他按照原來留下的配置文檔再新交換機上也敲了一遍。

  

  第1步:建立VLAN

    Switch2#vlan database

    Switch2(vlan)#vlan 2 name meijie  //建立媒介部VLAN

    Switch2(vlan)#vlan 3 name shangwu  //建立商務部VLAN

    Switch2(vlan)#vlan 4 name caiwu  //建立财務部VLAN

  第2步:把端口配置設定到VLAN

    Switch2(config)#interface range fastEthernet 0/5 – 8

    Switch2(config-if)#Switchport access vlan 2  //将5至8端口放入VLAN2中

    Switch2(config)#interface range fastEthernet 0/9 – 11

    Switch2(config-if)#Switchport access vlan 3     //9至11端口放入VLAN3中

    …後續步驟省略

    

  應該注意,interface range fastEthernet X/X –X是應用在Cisco IOS軟體12.1以上的版本,如果你使用的是Cisco IOS軟體12.1以前的釋出的版本的話,應該用指令:Switchport access vlan vlanID,把端口加入VLAN。

  

  完成上述步驟後,将所有用戶端從配線架上用跳線接入到交換機的不同端口,并用一條跳線連接配接了Switch1的fastEthernet 0/2和Switch2的fastEthernet 0/1端口。本以為這項工作就這樣順利完成了,但不同交換機中同一部門的用戶端就是無法通信。

  

  起初以為是IP位址配置的問題,但檢查用戶端之後,發現同一台交換機中(同一VLAN)的用戶端通信一點問題也沒有。在嘗試了一切可能的辦法之後,還無法解決問題,是以隻能求助原理負責系統內建那家公司前來幫忙。

  

  工程師到達廣告公司之後,首先在新交換機上檢查了VLAN的配置,發現VLAN的配置沒有問題。在特權模式下使用指令用show vlan來檢查是否将端口配置設定給正确的VLAN:

      VLAN Name       Status  Ports

      ==== =============== ====== =======================

      1   default       active Fa0/2, Fa0/4, Fa0/16, Fa0/17

                        Fa0/18, Fa0/19, Fa0/20,

                        Fa0/22, Fa0/23, Fa0/24,

                        Gi0/1            Gi0/2

      2   meijie         active Fa0/5, Fa0/6, Fa0/7, Fa0/8

      3   shangwu        active Fa0/9, Fa0/10, Fa0/11

      4   caiwu         active Fa0/12, Fa0/13, Fa0/14, Fa0/15

      1002  fddi-default     active

      1003  token-ring-default  active

      1004  fddinet-default    active

      1005  trnet-default     active

    

  既然已經配置設定了正确的VLAN名稱和接口,為什麼在兩台交換機之間無法通信呢?要得出新交換機的用戶端和原有交換機不能通信的真正原因,還要從VLAN工作的原理中找出答案。

Trunking 技術的實作

  

  在“7.1.2 VLAN的實作原理”部分看到,要傳輸多個VLAN的通信,就需要用專門的協定封裝或者加上标記(tag),以便接收裝置能區分資料所屬的VLAN。VLAN辨別從邏輯上定義了,資料包使用哪種協定進行封裝。而最常用到的是IEEE 802.1Q和CISCO私有的ISL協定。

  

  除IEEE 802.1Q、ISL協定外還有兩種封裝技術:IEEE 802.10和ATM LAN仿真(LANE)。IEEE 802.10常用于光纖分布接口(FDDI)幀内傳達VLAN的資訊。而LANE則用于異步傳輸模式(ATM)網絡中傳輸VLAN。下面介紹IEEE 802.1Q和ISL協定,以替代ISL的動态中繼協定。

  

  1.ISL(交換機間鍊路)

  是一種CISCO專用的協定,用于連接配接多個CISCO交換機。使用ISL後,每個資料幀頭部都會被附加26位元組的“ISL標頭(ISL Header)”,并且在幀尾攜帶上包括ISL標頭在内的整個資料幀進行計算後得到的4位元組CRC值。換而言之,就是總共增加了30位元組的資訊,如圖7-5所示。在使用ISL的環境下,當資料幀離開彙聚鍊路時,隻要簡單地去除ISL標頭和新CRC就可以了。由于原先的資料幀及其CRC都被完整保留,是以無須重新計算CRC。ISL有如用ISL標頭和新CRC将原資料幀整個包裹起來,是以也被稱為“封裝型VLAN(Encapsulated VLAN)”。圖7-8中顯示了ISL的資料幀。

圖7-8  ISL的資料幀

    2.IEEE 802.1Q(虛拟橋接區域網路标準)

  

  IEEE 802.1Q,俗稱“Dot One Q”,正式名稱是虛拟橋接區域網路标準,用在不同的産家生産的交換機之間。一個IEEE 802.1Q幹道端口同時支援加标簽和未加标簽的流量。一個802.1Q幹道端口被指派了一個預設的端口Vlan ID(PVID),并且所有的未加标簽的流量在該端口的預設PVID上傳輸。一個帶有和外出端口的預設PVID相等的Vlan ID的包發送時不被加标簽。所有其他的流量發送是被加上Vlan标簽的。

  

  IEEE 802.1Q所附加的VLAN識别資訊,位于資料幀中“發送源MAC位址”與“類别域(Type Field)”之間。具體内容為2位元組的TPID和2位元組的TCI,共計4位元組。在資料幀中添加了4位元組的内容,那麼CRC值自然也會有所變化。這時資料幀上的CRC是插入TPID、TCI後,對包括它們在内的整個資料幀重新計算後所得的值。

  

  而當資料幀離開彙聚鍊路時,TPID和TCI會被去除,這時還會進行一次CRC的重新計算。TPID的值,固定為0x8100。交換機通過TPID,來确定資料幀内附加了基于IEEE 802.1Q的VLAN資訊。基于IEEE 802.1Q附加的VLAN資訊,就像在傳遞物品時附加的标簽。是以,它也被稱作“标簽型VLAN(Tagging VLAN)”。圖7-9中顯示了IEEE 802.1Q的資料包。

圖7-9  IEEE 802.1Q的資料幀

    不論是IEEE 802.1Q的“Tagging VLAN”,還是ISL的“Encapsulated VLAN”,都不是很嚴密的稱謂。不同的書籍與參考資料中,上述詞語有可能被混合使用,是以需要大家在學習時格外注意。

  

  3.動态中繼協定

  動态中繼協定DTP,是 VLAN 組中思科的私有協定,主要用于協商兩台裝置間鍊路上的中繼過程及中繼封裝 802.1Q 類型。DTP的用途是取代動态ISL(Dynamic ISL,DISL)。

  

  下列是DTP可以配置的幾種不同的狀态:

    * Access:使某個接口無條件進入Access模式,無DTP功能。

    * Trunk:使某個接口無條件進入trunk模式并進行trunk鍊路協商,無論其鄰居接口處于何種模式。

    * Nonegotiate:指定DTP協商封包不允許在二層接口上發送。非協商狀态,使接口成為永久的中繼接口。由于接口不使用DTP資訊幀進行通信,是以不會有協商發生。如果與非交換機裝置相連的交換機接口存在DTP問題,那麼在使用trunk之後可以使用nonegotiate,使得接口可以繼續中繼,但不會發送任何DTP資訊。

    * Dynamic desirable:使某個接口既主動發送DTP封包,也允許對DTP封包進行響應,這是以太網接口的預設狀态。如果鄰居接口是中繼接口,并且被設定為on,desirable或auto,那麼希望desirable狀态下的這個接口成為中繼接口。

    * Dynamic auto:使某個接口可以響應DTP封包,但不允許主動發送DTP封包。隻有在相鄰接口要求該接口成為中繼接口時才會成為中繼接口。這是所有交換機接口的預設配置。auto接口不會主動要求對方,如果兩個接口都被配置成auto狀态,那麼這兩個接口都不會成為中繼端。

    * On:無論對端配置如何,該接口始終為中繼接口。使用on狀态時,必須指明幀的标記方式,因為此狀态下接口不與對端進行協商。

    * Off:該拉口永遠是非中繼接口。

  隧道技術的用途

  

  在前面已經出現了很多次Trunk這個詞彙,但并沒有詳細的進行解答。我們知道交換機的接口可以運作在Access模式(Access Mode)或者幹道模式(Trunk Mode)。交換機接口所連接配接的鍊路也被相應地稱為接傳入連結路和trunk鍊路。在Access模式下,接口屬于且僅屬于一個VLAN。

  

  而Trunk(幹道)是一種封裝技術,它是一條點到點的鍊路,主要功能就是僅通過一條鍊路就可以連接配接多個交換機進而擴充已配置的多個VLAN,如圖7-10所示。

    同時trunk鍊路可以連接配接一台交換機或者路由器或者伺服器(特殊網卡),還可以采用通過trunk技術和上級交換機級聯的方式來擴充接口的數量,可以達到近似堆疊的功能,節省了網絡硬體的成本。

  

  提示:trunk鍊路不屬于任何一個VLAN,它隻是在網絡中起到了管道的作用。Trunk承載的VLAN範圍,預設下是1~1005,可以修改,但必須有1個Trunk協定。使用Trunk時,兩台交換機連接配接接口上的協定要一緻。配置為Trunk鍊路的接口,通常都是交換機上支援最大帶寬的帶寬口。

  表7-6列出了和Trunk操作有關的指令。

    表7-6  在基于IOS的交換機上配置trunk

步    驟 命    令 解    釋
1 Switch#configure terminal 進入全局配置模式
2 Switch(config)# interface interface-id 進入要配置設定的接口
3 Switch(config-if)#switchport mode trunk 将端口設定為trunk模式
3(1) Switch(config-if)#switchport mode dynamic desirable 在僅支援802.1Q封裝,但支援DTP功能的交換機上主動嘗試轉換為trunk模式
3(2) Switch(config-if)#switchport mode dynamic auto 在僅支援802.1Q封裝,但支援DTP功能的交換機上轉換為trunk模式,由鄰居接口決定
3(3) Switch(config-if)#switchport nonegotiate 在僅支援802.1Q封裝,但支援DTP功能的交換機上将接口永久設定為trunk模式,但禁止産生DTP幀
4 Switch(config-if)#switchport trunk encapsulation {isl | dot1q} 配置接口是使用ISL或者802.1Q封裝,兩端鍊路必須采用相同的封裝格式
5 Switch(config-if)#switchport trunk allowed vlan remove vlan-list 要限制trunk傳送的VLAN,從允許的VLAN 清單中去除某些VLAN
6 Switch(config-if)#end (Ctrl+Z) 傳回到特權模式
7 Switch#show interface interface-id Switchport 對配置進行檢驗。一定要加上Switchport關鍵字,否則會出現show interface輸出結果
8 Switch#copy running-config startup-config 儲存配置

    在預設狀态下,Trunk接口允許所有VLAN的發送和接口傳輸。當然,根據需要,我們也可以将拒絕某些VLAN通過Trunk傳輸,進而将該VLAN限制與其他交換機的通信,或者拒絕某些VLAN對敏感資料的通路。需要注意的是,不能從Trunk中移除預設的VLAN1。

  

  Switch(config-if)# switchport trunk allowed vlan {add | all | except | remove} vlan-list要限制trunk傳送的VLAN,從允許的VLAN 清單中去除某些VLAN。如執行Switch2(config-if)#switchport trunk allowed vlan remove 10 之後,VLAN 10的将不被傳遞。

  

  配置Trunk上允許的VLAN清單。使用add(添加)、all(所有)、except(除外)和remove(移除)關鍵字,可以定義允許在Trunk上傳輸的VLAN。VLAN清單既可以是一個VLAN,也可以是一個VLAN組。當同時指定若幹VLAN時,不要在“,”或“-”間使用空格。

利用Trunk解決問題

  

  當多台交換機同時被劃分為兩個或兩個以上VLAN時,需要建立Trunk,使不同交換機之間的VLAN能夠借助于一鍊路進行通信,否則,VLAN将被限制在交換機内,無法與其他交換機進行通信。預設狀态下,第二層接口自動處于動态的Switchport模式,當相鄰接口(即借助于雙絞線或光纖連接配接在一起的兩個接口)支援Trunk,并且配置為Trunk或動态比對模式,該連結将作為Trunk。

  

  1.建立Trunk隧道

  工程師在排除問題的過程中,對Switch1的fastEthernet 0/2和Switch2的fastEthernet 0/1接口分别設定為Trunk,并在每一個接口都采用dot1q協定進行幹道封裝。

  下面是Switch2的配置:

    Switch2(config)# interface fastEthernet 0/1

    Switch2(config-if)#Switchport mode trunk    //設定接口為Trunk模式

    Switch2(config-if)#Switchport trunk encapsulation dot1q  //設定封裝的類型

  對于Switch1上的fastEthernet 0/2接口,請和上面的Switch2交換機配置相同的封裝協定,這樣可以避免很多Trunk不比對的問題。

  

  需要注意的是,Trunk 端口預設情況下會傳送所有的VLAN的通信。要檢視Trunk接口的資訊和允許通過此接口的VLAN,可以使用指令:show interfas interface-id switchport輸出結果:

    Name: Fa0/1

    Switchport: Enabled

    Administrative Mode: trunk

    Operational Mode: trunk

    Administrative Trunking Encapsulation: dot1q

    Operational Trunking Encapsulation: dot1q

    Negotiation of Trunking: On

    Access Mode VLAN: 1 (default)

    Trunking Native Mode VLAN: 1 (default)

    Trunking VLANs Enabled: ALL

    Pruning VLANs Enabled: 2-1001

    

    Protected: false

    Unknown unicast blocked: disabled

    Unknown multicast blocked: disabled

    Voice VLAN: none (Inactive)

    Appliance trust: none

  

  2.測試連通性

  工程師在調試完兩邊的Trunk封裝之後,在Switch2交換機VLAN2中有一台主機Host A将IP位址設定為:192.168.0.1/24,在Switch1交換機的VLAN2中也有一台主機Host B其IP位址設定為:192.168.0.2/24,如果在連接配接Host A可以Ping通,對Host B的話,就可以證明隧道配置沒有問題,并已經起到了作用。

  

  但是如果在這兩台交換機之中,兩個工作站分别在不同的VLAN之中,則互相Ping對方的話,是不能通信的。

  

  進而說明:不同交換機之間的工作站通過Trunk相連接配接,隻有這些工作站在同一個VLAN之中才可以互相通信,而不同VLAN中的工作站是不能通過Trunk來通信的。VLAN技術将一個大的區域網路劃分為若幹個小的虛拟子網,進而使每一個子網都成為一個單獨的廣播域,子網之間進行通信必須通過三層裝置。當VLAN在交換機上劃分後,不同VLAN間的裝置就如同是被實體地分割。也就是說,連接配接到同一交換機、然而處于不同VLAN的裝置,就如同被實體地連接配接到兩個位于不同網段的交換機上一樣,彼此之間的通信一定要經過路由裝置;否則,他們之間将無法得知對方的存在,将無法進行任何通信。

繼續閱讀