了解交換器如何傳遞封包
胡凱捷
交換器是網路中一個相當重要的設備,肩負著將網路封包送到正確目的地的任務。本文將講述交換器的主要功能、各種傳送Frame的運作模式以及如何學習來源端MAC位址等等,並且說明交換器在虛擬區域網路內的運作原理。
網路交換器(Switch)設備在網路中負責傳遞網路封包。在傳遞網路封包之前,交換器必須先知道目的地在哪裡、網路封包應該要從哪一個埠傳送出去。為了達到這樣的功能,交換器必須學習並且記錄哪個埠可以到達哪些網路位置,而這個學習過程牽扯到傳遞網路封包的方式。
接著,還會介紹更複雜的環境:虛擬區域網路(VLAN)。交換器若處於多個VLAN的情況時,如何傳遞資料呢?畢竟有VLAN的環境和沒有VLAN的環境還是不一樣,而VLAN剛好又是交換器一個很重要的功能。因此,本文會詳細說明交換器網路設備在不同的網路環境中如何傳遞網路封包。
交換器的主要功能
用於乙太網路中的交換器能夠增加網路的可用頻寬,同時也能根據發送過來的網路封包,分析其中的來源端與目的端的MAC位址,製作出MAC位址表,並藉由這樣的MAC位址表正確地轉發網路封包。
交換器雖然都是運作在網路七層架構當中的第二層,但是由於交換器擁有較高速的內部結構以及擁有比較多的埠介面,所以與傳統的閘道器(Bridge)比較起來,交換器能夠提供更多的網路流量。
關於MAC位址的學習,交換器會從它們的埠上監聽所傳進來的Frame(經過交換器的網路封包稱之為Frame),檢測這些資料的來源端MAC位址,並且把MAC位址與埠號的對應關係記錄下來,儲存在本地端的MAC資料庫內,而這份MAC資料庫通常稱之為MAC Address Table或是Content-addressable Memory (CAM) Table。
當交換器再次收到Frame時,會先到MAC資料庫中查看從哪個埠出去可以到達這個目的地MAC位址所指定的機器,如果目的端的MAC位址能夠在MAC資料庫內被找到,則這個Frame就只會從學習到的埠號轉發出去。
倘若在MAC資料庫中找不到這樣的對應關係,這個Frame就會從所有其他的埠轉發出去(來源埠除外)。這裡所指的Frame,有人用中文稱它為「幀」,但是筆者建議還是使用原有英文來指稱會比較好。
交換器網路設備傳送Frame的模式
交換器在傳送Frame時,有「Store and Forward」、「Cut Through」、「Fragment-Free」三種可用的運作模式,以下分別加以介紹。
Store and Forward模式
在Store and Forward模式下,交換器會先把Frame完整地接收下來,然後才進行轉發的動作。因為在這個模式下,整個Frame都會被讀取,所以來源端及目的端的MAC位址都能夠被讀取。
另外,CRC(Cyclic Redundancy Check)的錯誤檢查動作也會被執行,並採用相關的篩選動作,之後才會進行轉發。如果CRC的檢查失敗,這個Frame就會被遺棄。這種轉送模式雖然能夠確保Frame中資料的正確性,但是也比較費時,其所需要的延遲時間與Frame的資料長度有關。
Cut-Though模式
在Cut-Through轉送模式中,就不會像Store and Forward模式這樣的麻煩,一旦接收到Header之後,看到目的端的MAC位址,就會馬上執行Frame的轉送動作。
因此,Cut-Though模式比Store and Forward模式快上許多,而且Cut-Though模式所需要的時間,並不會因為Frame的長度變長就跟著變多,因為閘道器及交換器只想取得目的端的MAC位址,而目的端的MAC位址都一定會存放在Frame資料內最前面的Header之內。
不過,雖然有些交換器在這種模式下只想讀取MAC位址,但還是有某些交換器會讀取CRC值並記錄下錯誤數目,不過一旦有錯誤發生,在這種模式下,是不會將這個Frame遺棄,而是針對設定值自動或手動切換成Store and Forward模式。
這種可以允許切換的Cut-Though又稱為Adaptive Cut-Though模式,此種模式結合了Cut-Though模式與Store and Forward模式的優點。
Fragment-Free模式
在Fragment-Free模式中,交換器只會讀取Frame的前64個bytes(這也是乙太網路中Frame最小的資料單位),而最主要原因是,在乙太網路中碰撞幾乎都是發生在前64個bytes之中,因此一旦發生碰撞,就會產生小於64個bytes的Frame資料。所以,交換器經由讀取前64個bytes資料,就可以初步篩選經由碰撞所產生的Frame資料。
Fragment-Free模式的速度比Cut-Though更快,而且一旦發現有錯誤的Frame,將會把這樣的Frame丟棄,這是與Cut-Though模式不同的地方。這個模式也稱為Modified Cut-Though模式。
接著,還會介紹更複雜的環境:虛擬區域網路(VLAN)。交換器若處於多個VLAN的情況時,如何傳遞資料呢?畢竟有VLAN的環境和沒有VLAN的環境還是不一樣,而VLAN剛好又是交換器一個很重要的功能。因此,本文會詳細說明交換器網路設備在不同的網路環境中如何傳遞網路封包。
交換器的主要功能
用於乙太網路中的交換器能夠增加網路的可用頻寬,同時也能根據發送過來的網路封包,分析其中的來源端與目的端的MAC位址,製作出MAC位址表,並藉由這樣的MAC位址表正確地轉發網路封包。
交換器雖然都是運作在網路七層架構當中的第二層,但是由於交換器擁有較高速的內部結構以及擁有比較多的埠介面,所以與傳統的閘道器(Bridge)比較起來,交換器能夠提供更多的網路流量。
關於MAC位址的學習,交換器會從它們的埠上監聽所傳進來的Frame(經過交換器的網路封包稱之為Frame),檢測這些資料的來源端MAC位址,並且把MAC位址與埠號的對應關係記錄下來,儲存在本地端的MAC資料庫內,而這份MAC資料庫通常稱之為MAC Address Table或是Content-addressable Memory (CAM) Table。
當交換器再次收到Frame時,會先到MAC資料庫中查看從哪個埠出去可以到達這個目的地MAC位址所指定的機器,如果目的端的MAC位址能夠在MAC資料庫內被找到,則這個Frame就只會從學習到的埠號轉發出去。
倘若在MAC資料庫中找不到這樣的對應關係,這個Frame就會從所有其他的埠轉發出去(來源埠除外)。這裡所指的Frame,有人用中文稱它為「幀」,但是筆者建議還是使用原有英文來指稱會比較好。
交換器網路設備傳送Frame的模式
交換器在傳送Frame時,有「Store and Forward」、「Cut Through」、「Fragment-Free」三種可用的運作模式,以下分別加以介紹。
Store and Forward模式
在Store and Forward模式下,交換器會先把Frame完整地接收下來,然後才進行轉發的動作。因為在這個模式下,整個Frame都會被讀取,所以來源端及目的端的MAC位址都能夠被讀取。
另外,CRC(Cyclic Redundancy Check)的錯誤檢查動作也會被執行,並採用相關的篩選動作,之後才會進行轉發。如果CRC的檢查失敗,這個Frame就會被遺棄。這種轉送模式雖然能夠確保Frame中資料的正確性,但是也比較費時,其所需要的延遲時間與Frame的資料長度有關。
Cut-Though模式
在Cut-Through轉送模式中,就不會像Store and Forward模式這樣的麻煩,一旦接收到Header之後,看到目的端的MAC位址,就會馬上執行Frame的轉送動作。
因此,Cut-Though模式比Store and Forward模式快上許多,而且Cut-Though模式所需要的時間,並不會因為Frame的長度變長就跟著變多,因為閘道器及交換器只想取得目的端的MAC位址,而目的端的MAC位址都一定會存放在Frame資料內最前面的Header之內。
不過,雖然有些交換器在這種模式下只想讀取MAC位址,但還是有某些交換器會讀取CRC值並記錄下錯誤數目,不過一旦有錯誤發生,在這種模式下,是不會將這個Frame遺棄,而是針對設定值自動或手動切換成Store and Forward模式。
這種可以允許切換的Cut-Though又稱為Adaptive Cut-Though模式,此種模式結合了Cut-Though模式與Store and Forward模式的優點。
Fragment-Free模式
在Fragment-Free模式中,交換器只會讀取Frame的前64個bytes(這也是乙太網路中Frame最小的資料單位),而最主要原因是,在乙太網路中碰撞幾乎都是發生在前64個bytes之中,因此一旦發生碰撞,就會產生小於64個bytes的Frame資料。所以,交換器經由讀取前64個bytes資料,就可以初步篩選經由碰撞所產生的Frame資料。
Fragment-Free模式的速度比Cut-Though更快,而且一旦發現有錯誤的Frame,將會把這樣的Frame丟棄,這是與Cut-Though模式不同的地方。這個模式也稱為Modified Cut-Though模式。