OpenFlow 軟體定義網路 SDN 網路 協定

軟體定義網路入門第一課 學會轉發平面與控制平面

2016-05-10
此篇文章將先介紹軟體定義網路,並說明與其相關的OpenFlow控制協定,接著以深入淺出的方式講解路由器的轉發平面與控制平面的運作方式。
ICMP協定是基於IP協定之上來運作的,不過主要不是用於點與點之間的傳輸。最常見的ICMP工具就是ping,Cisco設備上ping指令輸出結果中各種符號所代表的意義如表1所示。

表1 Cisco設備ping指令輸出結果中各種符號所代表的意義

以上都是可能收到的回應。當然除了處理ICMP封包回應以及轉發網路封包之外,路由器會順便將TTL值減1。TTL全名是Time To Live,用於表示希望網路封包最多可以經過多少路由器設備。但是,也有可能路由器會因為安全性的考量,而設定成直接把某些網路封包丟棄。

轉發平面所使用的資料來源

一般來說,轉發平面會使用路由表(Routing Table)中的資訊來決定如何轉發網路封包。路由表有時候也稱為RIB,也就是Routing Information Base。路由表是由Routing Control Plane來產生。而路由表中的資料本身就有很多不同的產生方式,簡單來說,可以分為靜態路由資料與動態路由資料。

靜態路由

靜態路由(Static Route)就是由網路管理人員手動一筆一筆去輸入,好處是速度很快,不需要經過學習,但缺點就是網路拓撲若有任何改變,管理人員就必須更新這些資料到路由器設備內,比較麻煩,很耗費人力,也必須有個很好的維護能力才行。這種方式比較適合幾乎不會有變動的網路拓撲。

一般來說,靜態路由會使用在連接Stub Network之間的連線,Stub Network指的是只能透過單一路由路徑連接的網路,因此有時候也稱Stub Network為Leaf Node。

此外,靜態路由也經常被使用在指定預設閘道上,讓不知道要送往哪裡的網路封包送到預設閘道。使用在這部分是因為這些設備的設定比較不容易變更,因此若使用靜態路由將可以節省不必要的學習過程。接著,以圖4這個網路架構圖為例說明靜態路由的設定方式。


▲圖4 靜態路由設定之網路架構。

在圖4的網路架構中,要在路由器A上設定讓路由器A知道可以透過路由器A的S0介面到達172.16.1.0的子網路,這裡準備要設定的是靜態路由的方式。

另外,也打算採用靜態路由的方式,在路由器B內設定要讓路由器B知道若要從172.16.1.0這個Stub Network連到外面的網路,可透過路由器A來達成。

首先,設定路由器A設備的靜態路由,其設定靜態路由的語法如下:


其中,靜態路由指令的關鍵字是ip route,後面的172.16.1.0代表這筆靜態路由之目的地的網路IP位址,接著255.255.255.0就是這個目的地子網路的網路遮罩,而最後的172.16.2.1則代表為了到達目的地而要經過的下一台路由器設備的IP位址,因為路由器A和路由器B位於同一個網路區段,所以對路由器A而言,路由器B的IP位址是172.16.2.1,而對於路由器A前往172.16.1.0網路區段來說,路由器B就是下一台路由器設備。因此,這裡要設定路由器B的IP位址。

這樣一來,當路由器A拿到一個要送往172.16.1.0子網路的封包時,路由器A就知道要把這個封包送給哪一個路由器設備來轉送了。

雖然對路由器A而言,要到達172.16.1.0子網路可能要經過很多很多台路由器設備,但是,當然不需要將每一台位於路途中的路由器設備記錄下來,因為事實上路由器A只要知道「下一台」是誰就好,至於接下來要再轉送給誰,那就是下一台路由器設備的責任。

必須注意一下,設定靜態路由是在Global Configuration模式下執行的,因為這個靜態路由資訊是針對整台路由器設備而言,所以並非在其他模式中設定。若要把這筆靜態路由設定成為「永久存在」,即使介面都關掉了,也要讓這筆靜態路由存在的話,可以在指令的最後面加上permanent關鍵字,如下所示:


靜態路由通常會用來做類似上面的用途,簡單來說,就是要針對那些並非直接連接到這台路由器設備的網路,手動增加這樣的路由資訊。但必須注意的是,針對這種單一連線(Uni-directional)的靜態路由,其設定必須是連線的兩端都要設定才行。

動態路由

動態路由(Dynamic Route)就不需要手動輸入,比較屬於Worry-Free的類型,一切的工作都交給路由器設備之間去協調,互相交換並學習這些資料,管理人員只要做Routing Protocol的設定即可,但是這種方式比較耗費系統資源,速度也稍微慢一些。

與靜態路由比較起來,動態路由複雜許多,因為動態路由是透過學習來取得所有的路由資訊,而這樣的學習方法與這些路由資訊的維護方式都定義在Routing Protocol內。Routing Protocol可能會包含:

1. 如何傳遞資訊的更新到其他路由器設備?
2. 什麼樣的資訊需要被傳遞?
3. 什麼時候要做資訊傳遞的動作?
4. 如何得知其他路由器設備已經取得由本地端傳遞出 去的更新資訊?

Routing Protocol與Routed Protocol不一樣,Routing Protocol指的是路由器設備之間互相溝通以便取得路由資訊並維護這些路由資訊的協定。Routed Protocol指的卻是當Routing Protocol發生效用之後,路由器設備要將網路封包拿來套用的網路協定。一般而言,Routed Protocol指的就是IP Protocol,而Routing Protocol就有很多種,例如RIP或是IGRP等等。

對於內部路由協定而言,其採用的演算法也不盡相同,這些演算法大致分為以下三種:

·Distance Vector
·Link State
·Balanced Hybrid

簡單來說,Distance Vector是用方向與所必須經過的設備數目(Hops)來決定路徑。而Link State則是使用最短路徑演算法(Shortest Path First)。至於Balanced Hybrid則是綜合Distance Vector和Link State兩種演算法。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!