精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于網絡流量的SDN最短路徑轉發應用

網絡
網絡的轉發是通信的基本功能,其完成信息在網絡中傳遞,實現有序的數據交換。通過SDN控制器的集中控制,可以輕松實現基礎的轉發算法有二層MAC學習轉發和基于跳數的最短路徑算法。然而,網絡跳數并不是決定路徑優劣的唯一狀態。除了跳數以外,還有帶寬,時延等標準。本文將介紹如何通過SDN控制器Ryu開發基于流量的最短路徑轉發應用。

網絡的轉發是通信的基本功能,其完成信息在網絡中傳遞,實現有序的數據交換。通過SDN控制器的集中控制,可以輕松實現基礎的轉發算法有二層MAC學習轉發和基于跳數的最短路徑算法。然而,網絡跳數并不是決定路徑優劣的唯一狀態。除了跳數以外,還有帶寬,時延等標準。本文將介紹如何通過SDN控制器Ryu開發基于流量的最短路徑轉發應用。

 [[158380]]

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模塊的流量數據。

  1. def create_bw_graph(self, graph, link2port, bw_dict): 
  2.     for link in link2port: 
  3.         (src_dpid, dst_dpid) = link 
  4.         (src_port, dst_port) = link2port[link] 
  5.   
  6.         if src_dpid in bw_dict and dst_dpid in bw_dict: 
  7.             bw_src = bw_dict[src_dpid][src_port] 
  8.             bw_dst = bw_dict[dst_dpid][dst_port] 
  9.             graph[src_dpid][dst_dpid]['bandwidth'] = min(bw_src, bw_dst) 
  10.         else
  11.             graph[src_dpid][dst_dpid]['bandwidth'] = 0 
  12.     return graph 

獲取最短K條路徑函數示例代碼如下所示。

  1. def k_shortest_paths(graph, src, dst): 
  2.     path_generator = nx.shortest_simple_paths(graph, source=src, 
  3.     target=dst, weight='weight'
  4.     return path_generator 

基于流量的***路徑比較算法示例代碼如下所示:

  1. def band_width_compare(graph, paths, best_paths): 
  2.     capabilities = {} 
  3.     MAX_CAPACITY = 100000 
  4.     for src in paths: 
  5.         for dst in paths[src]: 
  6.             if src == dst: 
  7.                 best_paths[src][src] = [src] 
  8.                 capabilities.setdefault(src, {src: MAX_CAPACITY}) 
  9.                 capabilities[src][src] = MAX_CAPACITY 
  10.                 continue 
  11.             max_bw_of_paths = 0 
  12.             best_path = paths[src][dst][0] 
  13.             for path in paths[src][dst]: 
  14.                 min_bw = MAX_CAPACITY 
  15.                 min_bw = get_min_bw_of_links(graph, path, min_bw) 
  16.                 if min_bw > max_bw_of_paths: 
  17.                     max_bw_of_paths = min_bw 
  18.                     best_path = path</p> 
  19.       best_paths[src][dst] = best_path 
  20.         capabilities.setdefault(src, {dst: max_bw_of_paths}) 
  21.         capabilities[src][dst] = max_bw_of_paths 
  22. return capabilities, best_paths 
  1. def best_paths_by_bw(graph, src=None, topo=None): 
  2.     _graph = copy.deepcopy(graph) 
  3.     paths = {} 
  4.     best_paths = {} 
  5.     # find ksp in graph. 
  6.     for src in _graph.nodes(): 
  7.         paths.setdefault(src, {src: [src]}) 
  8.         best_paths.setdefault(src, {src: [src]}) 
  9.         for dst in _graph.nodes(): 
  10.             if src == dst: 
  11.                 continue 
  12.             paths[src].setdefault(dst, []) 
  13.             best_paths[src].setdefault(dst, []) 
  14.             path_generator = k_shortest_paths(_graph, src, dst) 
  15. <pre><code>        k = 2 
  16.         for path in path_generator: 
  17.             if k &lt;= 0: 
  18.                 break 
  19.             paths[src][dst].append(path) 
  20.             k -= 1 
  21. # find best path by comparing bandwidth. 
  22. capabilities, best_paths = band_width_compare(_graph, paths, best_paths) 
  23. return capabilities, best_paths, paths 

安裝流表項函數示例代碼如下:

  1. def install_flow(datapaths, link2port, access_table, path, flow_info, buffer_id, data): 
  2.      ''' path=[dpid1, dpid2, dpid3...] 
  3.         flow_info=(eth_type, src_ip, dst_ip, in_port) 
  4.     ''
  5.     if path is None or len(path) == 0: 
  6.         LOG.info("PATH ERROR"
  7.         return 
  8.     in_port = flow_info[3] 
  9.     first_dp = datapaths[path[0]] 
  10.     out_port = first_dp.ofproto.OFPP_LOCAL 
  11.     reverse_flow_info = (flow_info[0], flow_info[2], flow_info[1]) 
  12. <pre><code>if len(path) &gt; 2: 
  13.     for i in xrange(1, len(path) - 1): 
  14.         port = get_link2port(link2port, path[i-1], path[i]) 
  15.         port_next = get_link2port(link2port, path[i], path[i + 1]) 
  16.         if port and port_next: 
  17.             src_port, dst_port = port[1], port_next[0] 
  18.             datapath = datapaths[path[i]] 
  19.             send_flow_mod(datapath, flow_info, src_port, dst_port) 
  20.             send_flow_mod(datapath, reverse_flow_info, dst_port, src_port) 
  21. if len(path) &gt; 1: 
  22.     # the last flow entry: tor -&gt; host 
  23.     last_dp = datapaths[path[-1]] 
  24.     port_pair = get_link2port(link2port, path[-2], path[-1]) 
  25.     if port_pair: 
  26.         src_port = port_pair[1] 
  27.     else
  28.         return 
  29.     dst_port = get_port(flow_info[2], access_table) 
  30.   
  31.     send_flow_mod(last_dp, flow_info, src_port, dst_port) 
  32.     send_flow_mod(last_dp, reverse_flow_info, dst_port, src_port) 
  33.   
  34.     # the first flow entry 
  35.     port_pair = get_link2port(link2port, path[0], path[1]) 
  36.     if port_pair: 
  37.         out_port = port_pair[0] 
  38.     else
  39.         return 
  40.     send_flow_mod(first_dp, flow_info, in_port, out_port) 
  41.     send_flow_mod(first_dp, reverse_flow_info, out_port, in_port) 
  42.   
  43.     send_packet_out(first_dp, buffer_id, in_port, out_port, data) 
  44.     # ensure the first ping success. 
  45.     # send_packet_out(last_dp, buffer_id, src_port, dst_port, data) 
  46. # src and dst on the same datapath 
  47. else
  48.     out_port = get_port(flow_info[2], access_table) 
  49.     send_flow_mod(first_dp, flow_info, in_port, out_port) 
  50.     send_flow_mod(first_dp, reverse_flow_info, out_port, in_port) 
  51.     send_packet_out(first_dp, buffer_id, in_port, out_port, data) 

讀者可以基于muzixing/ryu/shortest_route的代碼進行修改。該代碼是初始版本,質量欠佳,但是可以成功運行。

Note that: 以上的代碼均為示例代碼,不可直接運行,完整版代碼后續將發布。

Implementation and Test

啟動network_awareness, network_monitor,和寫好的forwarding模塊,再啟動一個簡單拓撲連接到控制器Ryu。拓撲中,h1, h2到h39有兩條路徑:[1,2,4]和[1,3,4]。每條鏈路的***帶寬為500Mbits/s。然后xterm到h1, h2 和還h39,并在h39之上啟動iperf服務端程序。先啟動h1上的iperf客戶端程序,向h39打流,等一個Monitor模塊的周期之后,啟動h2的iperf客戶端程序,向h39打流。此操作的原因在于需要等待控制器獲取流量信息和計算出***路徑。測試截圖如下圖所示。

上圖左上為控制器的顯示,路徑選擇了[1,2,4]和[1,3,4]。右側的數據為h1的流量信息,左下為h2的流量信息,可以發現h1和h2各自獨占一條路徑,都打滿了500Mbits。實驗成功。

Conclusion

本文介紹了在Ryu控制器中開發基于流量的***轉發的流程。不過內容僅僅涉及了解決思路,實際工程代碼的發布還需要等待一段時間。文中提到的第二種算法的解決方法與本文舉例類似,僅需加上歸一化數據,求加權求和評分步驟就可以完成新解決方案的工作。希望本文能給讀者帶來一些幫助。

責任編輯:何妍 來源: SDNLAB
相關推薦

2015-07-16 14:25:56

SDN網絡感知服務

2013-12-16 09:44:01

OpenDayLighSDN網絡轉發

2015-07-28 15:58:26

2011-03-31 09:37:48

2016-10-07 22:54:03

流量監控ossim

2011-05-17 13:58:37

最短路徑

2011-04-06 10:57:14

監控MRTG

2011-03-31 09:02:26

MRTGSNMP

2024-05-24 08:00:00

2012-11-29 09:59:02

網絡流量網絡安全

2013-12-27 09:55:56

2011-03-31 09:47:21

CACTI流量監控

2019-08-19 00:14:12

網絡測試帶寬網絡流量

2009-08-03 16:27:17

2022-04-14 08:21:48

微服務項目多模塊

2012-09-07 11:19:21

SNMPNetFlow虛擬網絡

2010-10-08 14:31:00

網絡流量監測

2022-09-26 14:24:18

Linux網絡流量審計

2009-01-03 09:13:00

2009-07-22 14:43:36

點贊
收藏

51CTO技術棧公眾號

www久久久com| 九九免费精品视频| 国内自拍亚洲| 亚洲夂夂婷婷色拍ww47| 久久久神马电影| 中文字幕码精品视频网站| 综合激情婷婷| 亚洲视频视频在线| 色姑娘综合天天| 性孕妇free特大另类| 国产精品三级视频| 国产98在线|日韩| 在线观看污污网站| 欧美日韩天堂| 中文字幕亚洲图片| 欧美成人精品一区二区综合免费| av有声小说一区二区三区| 亚洲人成网站色在线观看| 欧美18视频| 欧美少妇bbw| 精品一区二区免费看| 97精品国产97久久久久久| 色噜噜噜噜噜噜| 麻豆精品少妇| 欧美一区二区三区啪啪| 日韩欧美精品在线观看视频| 97超碰资源站在线观看| 日本一区二区三区dvd视频在线| 高清视频一区二区三区| 91精品国自产| 日韩高清不卡在线| 国语自产精品视频在线看| 亚洲 欧美 变态 另类 综合| 午夜先锋成人动漫在线| 日韩欧美一区在线| 黄大色黄女片18第一次| 自拍在线观看| 亚洲五码中文字幕| 国产911在线观看| 亚洲图片88| 国产日韩欧美精品电影三级在线| 狠狠色综合欧美激情| www国产在线| 国产精品 日产精品 欧美精品| 国产精品免费久久久| 无码人妻av免费一区二区三区| 一本久道久久综合狠狠爱| 欧美精品xxx| 国产a免费视频| 天天操夜夜操国产精品| 最近2019中文字幕mv免费看| 亚洲区免费视频| 精品国产欧美日韩| 在线观看日韩av| 男人的天堂av网| 久久不见久久见国语| 亚洲欧美999| 五月天综合视频| 成人a'v在线播放| 中文字幕亚洲第一| 亚洲综合久久av一区二区三区| 精品视频日韩| 日韩在线激情视频| 波多野结衣不卡视频| 午夜久久美女| 7777精品视频| 波多野结衣在线观看视频| 美女爽到高潮91| 亚洲综合精品一区二区| 精品人妻一区二区三区浪潮在线 | 免费黄频在线观看| 91精品国产一区二区在线观看| 在线不卡的av| wwwxxx色| 亚洲调教一区| 中文字幕亚洲国产| 国产女片a归国片aa| 国内精品福利| 茄子视频成人在线| 中文字幕在线播放不卡| 国产激情一区二区三区| 久久精品中文字幕一区二区三区| 成人欧美亚洲| 一二三四区精品视频| 男人添女人下面高潮视频| 天天免费亚洲黑人免费| 9191成人精品久久| 丰满岳乱妇一区二区 | 国产毛片精品国产一区二区三区| 成人在线看片| 国内av一区二区三区| 亚洲日本在线天堂| 91视频 -- 69xx| 久久av影院| 亚洲电影成人av99爱色| 国产美女免费网站| 欧美人与禽猛交乱配视频| 情事1991在线| 国产又粗又黄视频| 99国产精品99久久久久久| 一本色道久久综合亚洲二区三区| 狂野欧美性猛交xxxxx视频| 色94色欧美sute亚洲线路二| 国产老头和老头xxxx×| 精品影片在线观看的网站| 久久精品视频在线观看| 特级毛片www| 国产河南妇女毛片精品久久久| 欧美二区在线| 国精产品一区一区三区mba下载| 在线一区二区观看| 久久性爱视频网站| 欧美激情欧美| 57pao国产成人免费| 性色av蜜臀av| 国产精品家庭影院| 日本一本二本在线观看| caoporn成人| 久久久成人精品| 欧美男人天堂网| 91天堂素人约啪| 久久艹国产精品| www.久久草.com| 中文字幕免费国产精品| 三级视频在线观看| 成人综合婷婷国产精品久久| 手机成人av在线| 成人在线视频免费看| 亚洲男人的天堂在线| 日本一区二区三区免费视频| 国产一区二区三区综合| 亚洲一区三区| 全球中文成人在线| 中文在线不卡视频| 日韩中文字幕高清| 久久综合色鬼综合色| 欧美 日韩 国产 高清| 一区二区三区视频播放| 久久香蕉国产线看观看av| 国产九色91回来了| 欧美国产在线观看| 少妇黄色一级片| 天堂综合网久久| 97香蕉久久夜色精品国产| 国产 欧美 精品| 亚洲一区二区三区四区中文字幕| 亚洲精品在线网址| 天天精品视频| 亚洲精品免费网站| 特级毛片在线| 亚洲成在人线av| 国产情侣在线视频| 91麻豆123| 日韩手机在线观看视频| 蜜臀久久99精品久久一区二区| 青青久久aⅴ北条麻妃| 成人精品一区二区三区免费 | 亚欧美一区二区三区| 欧美不卡在线| 国产精品swag| 美女视频在线免费| 亚洲欧美另类国产| 中文字幕在线观看精品| 亚洲婷婷综合久久一本伊一区 | 97精品国产97久久久久久久久久久久| 国产aaa免费视频| 日韩精品免费一区二区夜夜嗨| 欧美亚洲伦理www| 蜜芽tv福利在线视频| 欧美怡红院视频| 美国黄色片视频| 成人久久久精品乱码一区二区三区| 岛国大片在线播放| 欧美禁忌电影网| 国产欧美精品xxxx另类| 国产视频在线播放| 精品国产免费人成电影在线观看四季 | 国内毛片毛片毛片毛片| 午夜精品一区二区三区免费视频 | 欧美亚洲国产精品| 成人三级黄色免费网站| 91超碰这里只有精品国产| 精品少妇爆乳无码av无码专区| 成人午夜av电影| 欧美综合在线观看视频| 91精品国产自产拍在线观看蜜| 成人国产一区二区| 日本综合视频| 欧美黄色片视频| 精品影院一区| 日韩欧美中文一区| 日韩黄色片网站| 洋洋成人永久网站入口| 无码一区二区三区在线| 国产在线视频精品一区| 奇米精品一区二区三区| 午夜欧美在线| 欧美主播一区二区三区美女 久久精品人| 999色成人| 国产成人av网| 毛片大全在线观看| zzijzzij亚洲日本成熟少妇| 亚洲色图21p| 91精品国产91久久久久久最新毛片| 亚洲天堂日韩av| 依依成人精品视频| 极品蜜桃臀肥臀-x88av| 成人免费毛片片v| 国产精品自在自线| 久久精品首页| 久久这里只有精品18| 国产精品99久久精品| 欧美午夜精品久久久久久蜜| japanese色系久久精品| 成人在线一区二区| 欧美free嫩15| 97在线观看视频国产| 中文字幕中文字幕在线中高清免费版| 亚洲欧美另类人妖| 天天操天天干天天操| 日韩你懂的在线播放| 一区二区三区播放| 日本韩国精品在线| 成年人免费高清视频| 亚洲国产精品久久一线不卡| 可以免费看av的网址| 久久精品亚洲一区二区三区浴池| 日本黄色免费观看| 不卡高清视频专区| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 大伊香蕉精品视频在线| 欧美在线免费| 在线一区高清| 成人精品中文字幕| 欧美人xxxxx| 色吊丝一区二区| 久久av一区二区三区漫画| 国产成人在线中文字幕| 成人黄动漫网站免费| 一区中文字幕| 国产精品果冻传媒潘| 91午夜精品| 国产91aaa| 欧美1区二区| 久久国产精品 国产精品| 日本久久成人网| 久久亚洲高清| 狠狠色狠狠色综合婷婷tag| 欧美午夜欧美| 日韩欧美视频专区| 中文字幕精品一区日韩| 久久精品欧美一区| 中文字幕超清在线免费观看| 亚洲一区二区日韩| 欧美一级黄色录像片| 欧美/亚洲一区| 欧美乱做爰xxxⅹ久久久| 国产精品红桃| 国产精品成人久久电影| 国产亚洲福利| 欧美婷婷精品激情| 国精品**一区二区三区在线蜜桃| 九一精品久久久| 国产成人精品一区二 | 国产精品成人免费在线| 一区二区国产精品精华液| 亚洲欧美另类小说| 69精品久久久| 色综合天天综合| 欧美日韩 一区二区三区| 欧美日产在线观看| 北条麻妃一二三区| 日韩av一卡二卡| 国产黄色片在线观看| 久久天天躁狠狠躁夜夜av| av黄色在线| 57pao精品| 亚洲福利影视| 九九热久久66| 四季av一区二区三区免费观看| 久久福利一区二区| 乱人伦精品视频在线观看| 超碰在线公开97| 丁香婷婷综合网| 韩国三级hd中文字幕| 亚洲欧美日韩在线播放| 欧美激情亚洲综合| 欧美日韩成人综合在线一区二区| 亚洲爱情岛论坛永久| 亚洲人成免费电影| 污污片在线免费视频| 国产91免费看片| 视频在线亚洲| 天堂精品视频| 国产精品vip| 日韩视频免费在线播放| 激情五月激情综合网| 亚洲精品第二页| 国产精品国产三级国产普通话蜜臀 | 都市激情亚洲色图| 国产精品女同一区二区| 日韩精品免费视频| 在线看三级电影| 国产精品扒开腿做| 国产精品白丝一区二区三区| 一区二区av| 麻豆成人精品| 熟妇高潮一区二区| 中文字幕一区免费在线观看 | 日韩视频二区| 91亚洲一区二区| 欧美国产丝袜视频| 毛片基地在线观看| 精品国产伦理网| 黄色成人影院| 国产精品永久免费在线| 神马午夜久久| 91九色丨porny丨国产jk| 狠狠色丁香婷综合久久| 国产精品国产三级国产专业不| 亚洲国产毛片aaaaa无费看| 国产孕妇孕交大片孕| 在线观看国产精品淫| 范冰冰一级做a爰片久久毛片| 国产传媒一区二区| 婷婷另类小说| 日本在线播放一区二区| 国产欧美日韩在线视频| 天天干天天干天天操| 日韩精品999| 大桥未久在线视频| 国产视频在线观看一区| 国内成人在线| 国产日韩视频一区| 亚洲午夜激情网站| 好吊色一区二区| 欧美激情成人在线视频| 中文字幕视频精品一区二区三区| 国产高清免费在线| 国产自产v一区二区三区c| 91无套直看片红桃在线观看| 欧美伊人久久久久久久久影院| 免费在线高清av| 国产盗摄xxxx视频xxx69| 亚洲瘦老头同性70tv| 久久精品香蕉视频| 久久精品夜色噜噜亚洲aⅴ| 亚洲精品中文字幕乱码三区91| 日韩精品极品在线观看播放免费视频 | 免费不卡中文字幕在线| 欧美精品第三页| 中文字幕免费在线观看视频一区| 国产日韩在线免费观看| 中文字幕在线精品| 亚洲网站三级| 男人草女人视频| 成人久久18免费网站麻豆| 好吊操这里只有精品| 亚洲欧美激情四射在线日| 精品亚洲美女网站| 一区二区三区av在线| 国产一区二区免费看| 久一视频在线观看| 日韩不卡在线观看| 免费在线观看一区| 最新视频 - x88av| 99久久99精品久久久久久| 影音先锋在线国产| 色妞在线综合亚洲欧美| 日韩成人在线看| 国产精品沙发午睡系列| 中文字幕乱码日本亚洲一区二区| 国产av无码专区亚洲av| 97视频在线看| 91亚洲成人| 中文字幕一区二区三区乱码不卡| 日本电影亚洲天堂一区| 老司机99精品99| 久久久久高清| 久久精品国产亚洲高清剧情介绍 | 熟女少妇内射日韩亚洲| 欧美日韩另类国产亚洲欧美一级| 亚洲制服国产| 欧美大陆一区二区| 激情五月激情综合网| 在线观看精品国产| 日韩视频―中文字幕| 日韩成人在线看| 激情五月婷婷久久| 亚洲综合无码一区二区| 国产精品久久久久一区二区国产| 91网站在线看| 久久久久久久尹人综合网亚洲| 欧美另类videoxo高潮| 日韩av在线网址| 超碰国产精品一区二页| www.玖玖玖| 一区二区三区中文字幕电影| 国产在线观看网站| 国产精品免费一区二区三区观看|