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

2021-07-09 09:53:29 字數 2579 閱讀 8861

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

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

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

(1)圖演算法——網路拓撲可用圖表示,其中重點涉及到的有最短路徑演算法和遍歷演算法(深度優先和廣度優先);

(2)貪心演算法——構造啟發式演算法的首選,多用於求解最優化問題;

(3)動態規劃——將整個問題分解成若干子問題,子問題的最優解可匯出整體最優解;

(4)排序演算法——流的權重排序,流的頻寬排序等等;

(5)np問題(證明)——最優化問題是否是np-hard。

容易發現,許多文獻中的最優化問題都是np-hard問題,而求證np-hard的原理是退化法,即對模型一步步弱化變數因素,使之退化為乙個已知的np-hard問題。接下來就是證明我所處理的優化問題,可以退化為乙個已知的np-hard問題:ear。

重新列出第一優化目標如下: mi

n(ma

x(∑f

∈fpf

af,l

bl,l

∈l+)

) (1)

第一步退化:令pf

=1,b

l=c 為常數,則優化目標變成: mi

n(ma

x(∑f

∈faf

,l,l

∈l+)

) (2)

第二步退化:用min替換max,則優化目標變成: mi

n(mi

n(∑f

∈faf

,l,l

∈l+)

) (3)

稍微解釋一下這個目標的現實意義:最小化所有鏈路上頻寬最小的那條鏈路的頻寬(其實就是最小化為0)。問題(2)和(3)具有相同的複雜性,如果(2)可解,那麼(3)必定可解。反之,若(3)不可解,則(2)也不可解。

第三步退化:將目標(3)退化成ear問題: mi

n(∑l

∈l+x

l),xl=

0 if there is no flow running on link l (4)

簡單解釋一下ear問題:通過最大程度增加不佔據頻寬的鏈路數量,從而節約能源。它是乙個迭代的問題(3)。

當然,如果問題(4)可解,問題(3)當然也是可解的,因為問題(四)的複雜程度更高。

而根據以下這篇**,可知ear問題是乙個np-hard問題。

f. giroire, d. mazauric, j. moulierac, and b. onfroy. 「minimizing

routing energy consumption: from theoretical to practical results」.

in ieee/acm greencom, 2010

啟發式演算法的嚴格定義可以參照維基百科,鏈結如下:

啟發法-wikipedia

而針對我們要解決的問題,三個優化目標的自然語言描述為:

1.最小化頻寬利用率最大的鏈路上的頻寬利用率

2.最小化記憶體佔用率最大的交換機上的記憶體佔用率

3.最小化跳數最長的流的跳數

其中,第乙個目標為核心目標,另外兩個目標可作為輔助條件。

但是在構造啟發式演算法之前,我們要坐而論道,什麼道呢?

即是,我們為什麼要實現目標?或者,在怎樣的條件下,乙個目標才是值得考慮為優化問題的。

舉個簡單的例子:

假如乙個sdn網路上(某段時間內)流量很小,所有鏈路的頻寬利用率都不到30%,請問,這個時候,有必要去實現優化目標1麼?

再舉個極端的例子:

假如乙個小型的sdn網路所有的鏈路頻寬都比較小,資源十分受限,此時來了一些流,而流的包速率普遍比較快,以至於大部分流速率甚至大於大部分鏈路頻寬(也就意味著大部分流都不能通過該網路),現在該如何使最多的流通過網路呢?

為了方便解決我們提出的優化問題,針對以上兩個例子帶來的啟示,我必須做出如下兩個重要假設:

第一,只有當鏈路利用率超過規定值時才需要進行均衡(或者優化),假設此規定值為u;

第二,通過網路的流有大流(速率高)和小流(速率低),但所有流都能夠經過網路,並且必定存在鏈路過載(即鏈路利用率》u)。

這樣,我們就能夠既服從工程現實的需要,又服從整個優化問題了。

但是,似乎還有一些有價值的問題應當被考慮:

比如,大流和小流有什麼特點?如何區分?

我相信大部分人都聽過2/8定律,其正式名稱為帕累託法則,詳情可參閱維基百科,鏈結如下:

帕累託效應-wikipedia

那麼我們可以考慮,在一段(較長)時間內,通過網路的流,有20%的流承擔了80%的價值,20%的流占用80%的頻寬。那麼佔據80%頻寬的這20%的流就可以當成是大流,其餘流就是小流。

這樣一來我們就可以對大流和小流分別處理,或者是說針對它們涉及不同的演算法,以優化不同的目標。

對於大流來說,它耗得是頻寬;對於小流來說,它耗得是交換機記憶體。

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

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

kohana中的路由規則

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

CAN網路中的路由

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