SDN 網路中的路由規則(二)

2021-07-09 04:26:40 字數 2185 閱讀 1665

因為畢業設計的緣故,準備向計算機方向讀研的我偶然結識了sdn與openflow這兩個神奇的傢伙。

sdn的中文名稱為軟體定義網路,然而它的英文拼寫除了正規的文獻和專業人員,幾乎很少被正確地表示出來。

其實我一開始也是這麼以為的(甚至一開始我的解讀是 software definition network),不過玩文字遊戲實在是沒什麼意思:請大家以後不要再拼錯了,sdn的全稱是:software-defined networking!這是來自wikipedia和sdn官方**的定義。

sdn中controller擁有至高無上的許可權,就如同linux中root身份一樣,可以改這改那,無所不能。每當一條流來到openflow交換機時,交換機都會查自己的流表,看是否對這一種流(即根據流的頭部域進行區分和識別)有相應的處理動作(修改/**/傳至多級流表下一級/丟棄等),如果有,就按照處理動作進行處理,如果沒有,就通過openflow通道與openflow控制器互動,有控制器計算和規劃該條流的走向,並將相應的處理動作下發至這一交換機。

我們稱:openflow交換機中的針對某條流的處理動作(一條流表項中的一部分)及控制器計算後下發給交換機的處理動作為(路由)規則放置。如何找到乙個行之有效的路由規則演算法,來滿足實際網路運營中操作者的高階目標(可以模型化為乙個最優化問題函式),這正是我在畢業設計所研究的課題。

可以看到,規則放置其實是乙個很大很寬的橫向領域課題,它至少涉及到:預設路由規則問題,openflow控制器放置問題,openflow協議工作原理,路由演算法問題,路由規則聚合問題,流量均衡問題,以及對各種網路拓撲結構的理解(資料中心網路,網際網路服務提供商網路等)。

事實上,我也沒辦法同時發力去試**決以上的所有問題,只能固定其他問題的原型或假設來專門地研究其中乙個或兩個方面。比如,流量均衡是我的研究目標,預設路由規則和openflow控制器放置是我的研究基礎,路由演算法則是要攻克的核心難關。

雖然以上隱隱約約談了規則放置問題涉及的諸多放麵,但是我們還沒有對以下問題給出乙個足夠清晰的答案:研究規則放置到底要去解決什麼?

在正面回答以上問題之前,請容我再囉嗦幾句:sdn是對傳統網路的革新,是對傳統裝置商的挑戰,那它本身就沒有任何問題麼?

sdn架構也存在亟待解決的重要問題:

可擴充套件性(流表規模化):因為所有的控制許可權被交給了控制器,當網路規模增大時,控制器負荷增加,穩定性難以得到保證,多控制器機制勢在必行,但是如何合理放置多個控制器以及控制器間同步成為了乙個不小的挑戰,傳統網路恰恰沒有這個問題。

流量工程(流量均勻化):無論是現在還是從前,這都是乙個業內業外的行家必爭之地:如何分配流量使鏈路流量不過載,如何分配路由使每個交換機都能安裝不大於其儲存容量的路由表項。

區分服務(流等級約束):不是每條流都很重要,重要的流重要等級也不能一概而論,所以要對不同性質的流進行區分,做出相對應的合適的處理。

所以,我要研究規則放置,無非就是針對以上三個方面的痛點找到一些解決方案而已。

openflow交換機的tcam表**昂貴,容量有限,因此對流的(路由)規則分發不是無條件的,這就涉及到預設規則的問題(可以這樣認為:預設規則不占用有限的交換機流表容量,它對任何流都一視同仁,只執行預設動作)和規則放置高效化。

所以我們做如下兩方面的考慮:

第一,如果在所有交換機上都只安裝預設規則,那麼不久大大節省了交換機記憶體了麼?

答曰:這樣想是不對的,我們要知道,流根據預設規則**的時候控制器是不參與的,而每個交換機都不會對全網的拓撲有任何認識,所以就相當於是盲人摸象,有很大概率會被錯傳,同時占用了寶貴的鏈路資源。而如果預設規則是一條**給控制器的路徑,那麼這時流的尋路就由控制器來計算,並將按照某種演算法(這正是我的工作之一)計算出的路由規則下發給相關交換機(即實際上還是占用了交換機記憶體的,因為控制器計算後要在交換機上安裝針對該流的規則)。

第二,如果完全不考慮預設規則,每條流過來,都現在交換機中檢視是否有符合它的**規則,如果沒有,就由控制器直接計算,按照某種演算法(比如最短路演算法)為它分配唯一的一條規則。這樣做可不可以呢?

答曰:可以,但實際上在描述過程中就已經存在預設規則這樣的東西了。當交換機不能匹配一條流的規則時,就會要求控制器計算規則,這其實就是預設規則的一種。

所以,規則放置問題基於預設規則(預設規則不侷限於**到控制器,還有**給預設埠,預設的權威交換機等等),但是不能完全依賴預設規則,還要考慮如何充分利用已有資源(交換機記憶體,鏈路限制等),滿足相應目標(時延,流收益等)。

本篇對於研究問題的描述就到此為止,在第三篇會開始進行數學建模的討論,列出乙個最優化問題和優化目標,當然,也會或多或少設計到前人的研究。

SDN網路中的路由規則(四)

因為畢業設計的緣故,準備向計算機方向讀研的我偶然結識了sdn與openflow這兩個神奇的傢伙。sdn的中文名稱為軟體定義網路,然而它的英文拼寫除了正規的文獻和專業人員,幾乎很少被正確地表示出來。其實我一開始也是這麼以為的 甚至一開始我的解讀是 software definition network...

kohana中的路由規則

kohana的路由規則是非常強大的。首先必須確認的是路由的匹配原則是有順序,當一條路由規則匹配成功時,就停止匹配,也就是說在其後面定義的路由規則將不再被執行,因此最後的一條路由規則幾乎可以匹配所有的路由規則,它常常類似於下面這樣 在bootstrap.php檔案中 route set default...

CAN網路中的路由

現在汽車快速發展,車上的ecu數目已經達到幾十個,乘用車可能會更多,商用車雖然少些,但是也有二三十個之多,雖然sae j1939協議中對定了使用遮蔽雙絞線最多一路can上可以使用30個ecu,但是在實際使用過程中考慮網路負載和報文延時,一路can上並不會使用太多的節點,一般一路can網路最多也就十個...