上一篇文章介紹了應用在路由器與交換機之轉發平面與控制平面的運作方式,這些知識是大家進而了解軟體定義網路(SDN)的基礎。接下來,本文將說明網路交換機的運作模式,並介紹應用在網路交換機上的OpenFlow協定。
學習來源端MAC位址的過程
剛剛提到網路交換機設備會把Frame中來源端的MAC位址與埠的對應表記錄到MAC資料庫內,而這資料庫所能記錄的筆數和設備的型號有關,例如Cisco Catalyst Switch 2950系列就能記錄8,192筆。
假設現在有一台Cisco網路交換機,其中四個埠分別接到不同的電腦,其各個電腦的MAC位址如圖1所示。
|
▲圖1 網路架構圖範例1。 |
當網路交換機設備第一次開機之後,MAC位址資料庫是空的。也因此,當網路交換機收到Frame之後,一定會從所有其他的埠轉發出去,除了來源埠之外。這種轉發到除了來源埠以外的其他埠的動作,稱之為「Flooding」。用這種Flooding動作來轉送Frame是很沒有效率的,因為會浪費很多網路頻寬。
如圖2所示,假設現在A發送一個Frame要送給D,則這個Frame會經由E0介面傳送給中間這個Cisco網路交換機設備,假設這台Cisco網路交換機設備是使用Store and Forward模式,則這個Frame到了Cisco網路交換機設備之後會先存放在暫時緩衝區中。
|
▲圖2 網路架構圖範例2。 |
接著,因為這台網路交換機還沒有學到這個MAC位址應該要送往哪個埠,所以預設上就會採用Flooding的作法,透過其他的埠把這個Frame轉送出去,而在收到這個Frame的同時,這台網路交換機設備同時也學到一件事情:從E0這個埠出去可以到達A這台機器(因為網路交換機設備能夠經由E0這個介面收到由A這台機器的MAC位址所發送的Frame)。因此,這個新學習到的資訊就成為MAC資料庫的第一筆資料。
這個時候,MAC資料庫內可能就有如表1所示這樣的資料。
表1 MAC位址與其對應埠號
在MAC資料庫內的每一筆資料並非一直永遠存在,一旦某筆資訊在MAC位址資料庫內經過300秒沒有更新,就會被強制移除,除非這筆資料的MAC位址所對應的電腦在300秒內繼續發送Frame到網路交換機設備,這筆資訊的計時器才會重新開始計算。
如圖3所示,假設接著C想發送Frame給A,這個Frame會經由E4這個埠傳送到中間這個網路交換機設備,然後Cisco網路交換機會去查看MAC位址資料庫內是否可以找到A這台機器的MAC位址資訊,而因為剛才這台網路交換機已經學到可以透過E0這個埠找到A,所以這個Frame就只會經由E0這個埠傳送出去。並且,這次也因為C送給A而學習到C的MAC位址和E2的關係。
|
▲圖3 網路架構圖範例3。 |
因此,此時MAC資料庫中的資料就會存放如表2所示這樣的對應關係。
表2 MAC位址與其對應埠號
這樣的學習模式會一直進行,等到所連接的網段上所有的MAC位址都被學習完之後,這台網路交換機設備就完完全全地能夠做到智慧型的轉發動作(Intelligent Forwarding)。不僅如此,這樣的學習也有助於Frame的篩選動作,因為Frame只會發送到真正需要送往的埠而已,這樣就可以節省整體的網路頻寬,這種篩選動作就稱為「Frame Filtering」。
OpenFlow協定介紹
OpenFlow是一種網路協定,運作於網路七層的第二層,也就是資料連結層(Data Link Layer)。這個網路協定主要允許遠端地去控制交換機(Switch)或是路由器(Router)的轉發平面(Forwarding Plane),改變網路封包轉送表格,進而遠端地改變網路封包的網路路徑。
目前各家廠商製作的交換機和路由器包含很多廠商特有(Proprietary)的技術,OpenFlow協定一個很重要的目的就是想把這些各種不同廠商的硬體中擷取出網路控制的部分,並且讓這些部分變成Open Source,而不被各個廠商所佔據。
目前已經有很多廠商宣稱支援OpenFlow協定,這些廠商包含Alcatel-Lucent、Big Switch Networks、Brocade Communications、Radisys、IBM、Huawei、Cisco、Juniper、NEC、HPE以及其他多家廠商。
OpenFlow協定第一個版本是在2011年2月推出,第一個版本號碼為OpenFlow 1.1,隔年2月繼續推出OpenFlow 1.2版本,目前最新版本是OpenFlow 1.4。
ONF非營利組織
OpenFlow網路協定目前由Open Networking Foundation基金會來維護管理,簡稱為ONF,是一個非營利組織,這個基金會成員包含德國電信、Yahoo、Facebook、Microsoft、Google以及Verizon等等。