Thursday, April 26, 2012

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

了解交換器如何傳遞封包

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


交換器如何學習來源端MAC位址 

剛剛提到交換器會把Frame內來源端的MAC位址與埠的對應表記錄到MAC資料庫中,而這資料庫所能記錄的筆數和設備的型號有關,例如Cisco Catalyst Switch 2950系列就能記錄8,192筆。 

假設現在有一台Cisco交換器,其中四個埠分別接到不同的電腦,其各個電腦的MAC位址如下圖所示: 




當交換器第一次開機後,MAC位址資料庫是空的。也因此,當交換器收到Frame之後,一定會從所有其他的埠轉發出去,除了來源埠之外。這種轉發到除來源埠以外的其他埠的動作,稱為「Flooding」。用這種Flooding的動作來轉送Frame很沒有效率,因為會浪費很多網路頻寬。 

假設現在A發送一個Frame要送給D,如下圖所示,則這個Frame會經由E0介面傳送給中間這個Cisco交換器,假設這台Cisco交換器是使用Store and Forward模式,則這個Frame到了Cisco交換器之後會先存放在暫時緩衝區中。 




接著,因為這台交換器還沒有學到這個MAC位址應該要送往哪個埠,所以預設上就會採用Flooding的作法,透過其他的埠把這個Frame轉送出去,而在收到這個Frame的同時,這台交換器同時也學到一件事情:從E0這個埠出去可以到達A這台機器(因為交換器能夠經由E0介面收到由A這台機器的MAC位址所發送的Frame)。 

因此,這個新學習到的資訊就成為MAC資料庫的第一筆資料。此時MAC資料庫中可能就有以下這樣的資料: 




在MAC資料庫中的每一筆資料並非永遠存在,一旦某筆資訊在MAC位址資料庫中經過300秒沒有更新,就會被強制移除,除非這筆資料的MAC位址所對應的電腦在300秒內繼續發送Frame到交換器上,這筆資訊的計時器才會重新開始計算。 

假設接著C想發送Frame給A,如下圖所示。這個Frame會經由E4這個埠傳送到中間這個交換器。緊接著,Cisco交換器會去查看MAC位址資料庫中是否可以找到A這台機器的MAC位址資訊。 




因為剛才這台交換器已經學到可以透過E0這個埠找到A,所以這個Frame就只會經由E0這個埠傳送出去,這是因為C送給A而學習到C的MAC位址與E2的關係。 

此時,MAC資料庫中的資料就會存放以下的對應關係: 




這樣的學習模式會一直進行,等到所連接之網段上的所有MAC位址都被學習過,這台交換器就能夠完完全全做到智慧型的轉發動作(Intelligent Forwarding)。 

不僅如此,這樣的學習也有助於Frame的篩選動作,因為Frame只會發送到真正需要送往的埠而已,這樣就可以節省整體的網路頻寬,這種篩選動作稱為「Frame Filtering」。 

經由集線器的Frame篩選過程 

假設目前在Cisco交換器和一般PC端之間架設集線器(Hub)設備,而這台Cisco交換器已經學到A和B兩台電腦的MAC位址和埠的對應關係,如下圖所示。 




若A想送Frame給B,一開始,A會把Frame送給集線器,而集線器因為沒有辦法像交換器一樣可以學習MAC位址,所以為了能夠送達目的地,集線器就會把這個Frame做Flooding,送往所有的埠,用亂槍打鳥的心態傳送Frame。 

這樣一來,B在不需要Cisco交換器轉送Frame的情況下就可以收到由A發送過來的Frame,此時,Cisco交換器收到這個Frame後,將不會再經由原來的埠送回給集線器。 

廣播與群播的轉送過程 

即使交換器已經學習完整個網路中各個電腦的MAC位址與交換器的埠的對應關係,對於廣播與群播的封包而言,也都會用Flooding的方式來轉送,算是比較特別的案例。 

不過也是因為廣播與群播所代表的MAC位址,根本不可能存在於真正的網路中,例如廣播的MAC位址是FFFF.FFFF.FFFF,所以在找不到這個MAC位址的情況下,MAC資料庫內根本不知道廣播與群播的MAC位址要送往哪裡,因為無從學習起,所以就會用Flooding的方式來解決。
Related Posts Plugin for WordPress, Blogger...