Thursday, April 26, 2012

了解交換器如何傳遞封包-3

了解交換器如何傳遞封包

胡凱捷
交換器是網路中一個相當重要的設備,肩負著將網路封包送到正確目的地的任務。本文將講述交換器的主要功能、各種傳送Frame的運作模式以及如何學習來源端MAC位址等等,並且說明交換器在虛擬區域網路內的運作原理。


交換器在VLAN之中的傳輸封包方式 

一般來說,若在眾多的交換器之間架設VLAN,則只有在同一個VLAN中的電腦才可以互相傳遞資料。在交換器內部,事實上是透過限制資料的轉送來達到這種VLAN的資料傳遞過程。 

剛提到當交換器收到資料之後,會根據學習過的MAC位址對應表來決定資料要送往哪個埠,如果沒有學習過的話,則預設會Flooding到所有的埠,這是因為預設上所有的埠都是屬於預設的VLAN中,換句話說,所有的埠都屬於同一個VLAN,因此這樣的Flooding動作不會有什麼問題。 

但如果有分割VLAN的話,就不能這樣做,因為這樣做就會把某個VLAN的資料送往其他的VLAN,因此在這種情況下,交換器會了解哪些埠是屬於哪個VLAN,而會限制Flooding的時候只能送往同一個VLAN之中。 

而當VLAN的資料要跨越多個交換器傳遞到其他交換器所連接的同一個VLAN時,就必須使用Trunk技術。因為交換器之間只會用一條網路線連接起來,而這條網路線必須要能傳遞承載所有VLAN的資料。為了達到這種需求,在設定這種交換器之間的連線時,就必須設定成Trunk類型。 

Trunk的分類 

Trunk主要分成兩種協定:802.1Q協定和ISL協定。簡單來說,Trunk會在資料中增加一個標籤,也就是Tag,用來表示目前這份資料是屬於哪一個VLAN。 

貼上標籤之後,再把這份資料傳到另一台設備,另一台設備收到之後,再根據這個標籤得知這份資料是屬於哪個VLAN,然後把這份資料送往所屬的VLAN。這就是Trunk主要的工作。 

所以,這個Trunk必須要能夠傳送所有VLAN的資料,反正也不會搞混,因為都會在資料上貼上標籤。接著,就分別針對這兩種Trunk協定探討它們之間的不同之處。 

802.1Q協定 IEEE 802.1Q協定通常在VLAN中用來連接多個交換器與路由器(Router)設備,而Cisco的設備在Fast Ethernet和Gigabit Ethernet的介面上都支援IEEE 802.1Q協定。 

基本上,每一個套用802.1Q協定的埠都會被指定成Trunk類型,而所有在Trunk上的埠都隸屬於native VLAN當中,預設上,是這樣沒錯,但是管理者還是可以指定到不同的VLAN中。 

而native VLAN是設備上預設的VLAN,一開始拿到Cisco交換器時,所有的埠都會被指派到native VLAN中,所以全部的埠都可以互相通訊,因為都是屬於同一個VLAN。 

native VLAN有一個作用,就是所有沒有被貼上標籤的資料都會被送往這個native VLAN。每個VLAN都會有一個ID,用來區分各個VLAN,而native VLAN的預設ID就是VLAN 1。 

還有一點值得注意的是,只有802.1Q協定才有native VLAN,ISL並沒有native VLAN。也因為沒有貼上標籤的資料都會在native VLAN上遊走,所以交換器設備也不會在native VLAN內所傳遞的資料中貼上標籤了。 

接著來看看下面這個範例,就可以參透native VLAN的所有觀念。 

假設現在要架設三個VLAN,其VLAN ID分別是VLAN 1、VLAN 2及VLAN 3,其中,VLAN 1是native VLAN,之間用兩台Cisco交換器連接著,在Cisco交換器中間有一台集線器,如下圖所示: 




其中IP為10.1.*.*是處於VLAN 1中,而IP為10.2.*.*則是處於VLAN 2中,IP為10.3.*.*則被分派於VLAN 3內。因為10.1.1.1和10.1.1.3都屬於native VLAN,所以由10.1.1.1和10.1.1.3互相傳遞的資料都不會被貼上標籤,因此這樣的資料也可以被10.1.1.2收到。 

至於資料封包的標籤位置,則是置放在封包中間。一個標準的IP封包依序包含以下各個欄位: 

1. 目的端位址資訊,占封包的6個位元組。
2. 來源端位址資訊,占封包的6個位元組。
3. 用來指明資料長度或乙太網路種類的資訊,占封包的2個位元組。
4. 資料本身,占封包的46∼1,500個位元組。
5. FCS,占封包的4個位元組。 

貼上標籤後,整個資料封包會變成: 

1. 目的端位址資訊,占封包的6個位元組。
2. 來源端位址資訊,占封包的6個位元組。
3. 802.1Q協定專用標籤,占封包的4個位元組。
4. 用來指明資料長度或是乙太網路種類的資訊,占封包的2個位元組。
5. 資料本身,占封包的46∼1,500個位元組。
6. FCS,占封包的4個位元組。 

由上面可以看出,802.1Q協定會把標籤插在資料封包的中間位置,並增加4個位元組的空間,因此,整個資料長度最長會是1,522個位元組。而標籤中的內容包含乙太網路類型、PRI值、Token Ring專屬封裝用的Flag以及VLAN ID。 

ISL協定 
另外一種協定就是ISL,ISL是Inter-Switch Link的縮寫。ISL協定是Cisco設備專用的,但也不是每一款Cisco設備都有支援,只有某幾款Cisco設備才支援ISL協定。 

ISL協定運作於OSI網路七層架構的第二層,作法就是在前面增加一段表頭,並在最後面新增一段CRC。由於ISL協定與任何協定無關,因此ISL協定能夠封裝任何種類的上層協定資料。 

ISL協定所新增的表頭大小為26個位元組,而最後面新增的CRC大小為4個位元組。在前面的表頭中包含VLAN ID和BPDU資訊,當然還有包含很多其他的資訊,例如埠的ID、SA的前三個位元組等等,由於過於繁雜,這裡就不一個個詳細介紹。 

若要使用ISL協定,網路中每一台設備都必須做好正確的ISL設定才行,因為ISL協定所使用的資料封包長度超過乙太網路所能接受的長度,所以一旦不支援ISL協定的設備收到這樣的封包,會認為是錯誤的封包而直接遺棄。乙太網路的正確封包大小是64到1,518個位元組。
Related Posts Plugin for WordPress, Blogger...