此篇文章將先介紹軟體定義網路,並說明與其相關的OpenFlow控制協定,接著以深入淺出的方式講解路由器的轉發平面與控制平面的運作方式。
路由器(Router)的轉發平面與控制平面完成了大部分路由器的工作,熟悉轉發平面對於了解OpenFlow有很大的幫助。OpenFlow是SDN最主要的控制協定,SDN全名為Software Defined Network,中文一般稱為「軟體定義網路」,是一種網路控制虛擬化的技術。
簡單來說,SDN將路由器的控制方式與路由器分離,允許網路管理人員用遠端的方式,透過撰寫的軟體來控制路由器,藉此規劃網路,控制網路流量,而且整個過程不需要更改硬體的規劃。而OpenFlow用於控制路由器的轉發平面,達到以軟體來定義網路的目的。
了解路由器運作方式
首先,必須先了解路由器和其運作的方式。路由器最主要的工作就是決定要將網路封包送往何處,而為了要達到這樣的目的,路由器至少必須做到以下這些事情:
1. 知道目的端的位址在哪裡。
2. 標示出來源端的位址,並且把它學習起來。
3. 尋找這個封包可能要送往的路徑有哪些。
4. 從可能的路徑中選出最佳路徑。
5. 維護並更新這些路由所需的資料。
一般網路架構中,免不了一定會有很多台路由器設備,如圖1所示。
為了讓圖1中的10.120.2.0與172.16.1.0能找到路徑互相傳遞資料封包,中間的路由器設備就必須互相「分享」所學習到的資料,加上可以得知本地端路由器設備所直接連接到的終端設備,就可形成一個表格,稱之為路由表(Routing Table),這個路由表即可收集並整理出所有路由所需的資訊。
如何建立這個路由表?如何維護與使用?是一門非常大的學問,也是路由協定主要的任務。但是這些部分目前並非此篇文章的主軸,所以就不多加敘述。
|
▲圖1 一般的網路架構。 |
何謂轉發平面
「轉發平面」,或者稱為「轉發介面」,就是Forwarding Plane。所謂的Forwarding Plane就是在路由器架構中處理送進來的網路封包,並且藉由查找路由表來決定接下來要把網路封包轉發到哪一個網路介面。
Forwarding Plane有時候也被稱為Data Plane或是User Plane。而這個轉發平面只會處理Inbound介面進來的網路封包。
針對Cisco路由器設備上的某個埠怎樣的情況稱為「Inbound」,而怎樣的情況又被稱為「Outbond」呢?
先來看圖2的情況,假設中間是Cisco路由器設備,左右各接上一個介面連到不同的網段,只要是從目前這台路由器設備流出去的網路封包都稱為「Outbound」,如同圖2中的箭頭所示。
|
▲圖2 Outbond示意圖。 |
相反地,如果是流向路由器設備方向的網路封包,則為「Inbound」,如圖3所示,這樣解釋應該就比較容易理解了,所以轉發平面會處理接收到的網路封包。
|
▲圖3 Inbound示意圖。 |
ICMP封包回應
剛才提到轉發平面會根據進來的網路封包的資料,擷取出目的地位址,然後根據路由表來決定接下來要轉發到哪一個網路介面,但有時候,路由器會安靜地直接丟棄網路封包而不處理,而會回應相對應的ICMP網路封包來當作回應。有時因為真的找不到目的地,有時則是因為安全性的考量,不讓攻擊者了解目的地的狀態。
ICMP協定最主要的目的,是用來了解網路封包或是分析路由的情況,大多都是透過傳回來的錯誤訊息來了解,而網路管理人員透過這個協定的工具來明瞭狀況,進而使用其他措施解決所遇到的問題。