linux选择最短路径sdn,基于网络流量的SDN最短路径转发应用
原標題:基于網絡流量的SDN最短路徑轉發應用
網絡的轉發是通信的基本功能,其完成信息在網絡中傳遞,實現有序的數據交換。通過SDN控制器的集中控制,可以輕松實現基礎的轉發算法有二層MAC學習轉發和基于跳數的最短路徑算法。然而,網絡跳數并不是決定路徑優劣的唯一狀態。除了跳數以外,還有帶寬,時延等標準。本文將介紹如何通過SDN控制器Ryu開發基于流量的最短路徑轉發應用。
Forwarding Algorithm
目前基于流量的路由算法基本的解決思路有兩種:
(1) 首先基于跳數計算最優K條路徑,然后在這些路徑中選擇可用帶寬最大的路徑。
(2) 首先基于跳數計算最優路徑,歸一化路徑的評價分數,然后基于流量計算最優路徑,歸一化基于帶寬的評價;設置跳數和帶寬的權重,對基于跳數和帶寬的評分求其加權總和;按照加權求和值降序排序,取前K條作為最優評價路徑。
本文以第一種算法為例,介紹基于網絡流量的最短路徑轉發應用開發。第二種算法基于前者的基礎修改即可完成。
Network Awareness
首先我們需要編寫一個網絡感知應用,用于發現網絡的資源,包括節點,鏈路,終端主機等。并根據拓撲信息計算基于條數的最短路徑。開發此應用基本步驟如下:
創建繼承app_manager.RyuApp的應用network_awareness從topology.switches獲取拓撲信息,包括交換機節點信息,鏈路信息使用Networkx 創建拓撲圖的對象,用于存儲網絡拓撲使用Networkx的函數all_simple_paths(G, source, target, cutoff=None)計算K條最優路徑并存儲,該函數實現了Yen's algorithm
示例代碼可由muzixing/ryu/network_awareness獲取。
Note that: 以上的示例代碼中,拓撲信息的存儲并沒有使用networkx,所以讀者需要獨立完成基于networkx的存儲和算法調用部分。
Network Monitor
第二個應用是網絡流量監控應用。網絡流量監控應用完成網絡流量的實時監控,計算出實時的流量統計數據。基于本應用的數據,可以完成轉發算法的第二部分內容。示例代碼可由muzixing/ryu/network_monitor獲取。
為了讓其他模塊獲取到最新的流量信息,可在Ryu中自定義事件,具體教程請查看《基于Ryu打造自定義控制器》的自定義事件部分內容。不定義事件的情況下,需要將此模塊作為新模塊的CONTEXT。詳情可閱讀《Ryu:模塊間通信機制分析》的相關內容。
Forwarding Application
基于以上兩個模塊的數據,轉發應用模塊需要完成如下幾個步驟,從而完成基于流量的最優路徑轉發。
獲取network awareness和network monitor的數據將network monitor的數據整合到networkx存儲的網絡拓撲信息中比較最短K條路徑中各路徑的剩余帶寬,選擇最優路徑,剩余路徑為備份路徑和逃生路徑基于路徑信息,安裝流表項
整合流量信息代碼示例代碼如下, 其中,link2port為鏈路信息,bw_dict為network monitor模塊的流量數據。返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的linux选择最短路径sdn,基于网络流量的SDN最短路径转发应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux分区dh满了,python 在
- 下一篇: linux+网络根文件系统,认识Linu