精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品天堂| 久久久精品视频在线| 99蜜月精品久久91| 亚洲欧洲中文日韩久久av乱码| 不卡一区二区三区四区五区| 国产成人在线视频观看| 久久亚洲精品中文字幕蜜潮电影| 日韩写真欧美这视频| 黄色片一级视频| av片哪里在线观看| 久久人人爽人人爽| 91久久国产综合久久蜜月精品| 69精品久久久| 欧美好骚综合网| 日韩大片在线观看视频| 国产高清av片| 国产一区一一区高清不卡| 亚洲综合一区二区三区| 亚洲人成影视在线观看| 特黄视频在线观看| 国产一区二区三区免费观看| 国产精品27p| 日操夜操天天操| 亚洲五月综合| 中文字幕av一区中文字幕天堂 | 日本欧美一区二区在线观看| 欧美人与性动交| www.日本高清视频| 亚洲激情播播| 亚洲精品电影在线| 欧美一区二区三区影院| 欧美视频第一| 欧美在线免费播放| 国产成人无码一二三区视频| 日本不卡影院| 亚洲精品自拍动漫在线| 亚洲日本理论电影| 成人性生交大片免费看午夜| 成年人网站91| 国产精品yjizz| av中文字幕在线免费观看| 精品一区二区三区的国产在线播放| 日本久久91av| 一级黄色在线视频| 久久久久.com| 欧美主播福利视频| 成人免费视频毛片| 亚洲在线视频| 欧美孕妇性xx| 久久久久久久久久久影院| 在线综合视频| 欧美在线亚洲一区| 国产成人无码av| 久久亚洲精选| 国产精品一区二区性色av| 亚洲av综合一区| 日本aⅴ亚洲精品中文乱码| 国产成人aa精品一区在线播放| 西西44rtwww国产精品| 亚洲每日在线| 午夜精品蜜臀一区二区三区免费 | 美女久久久久久久久久| 免费成人三级| 亚洲欧美日韩爽爽影院| 一级片视频免费看| 欧美日韩有码| xxxx性欧美| 国语对白在线播放| 亚洲一级电影| 欧美在线视频a| 在线观看免费中文字幕| 国产一区二区视频在线| 97人人澡人人爽| 欧美一区二区在线观看视频| 91小视频免费观看| 亚洲精品8mav| 色帝国亚洲欧美在线| 亚洲成av人片| 久久婷婷国产91天堂综合精品| 777午夜精品电影免费看| 欧美精品久久久久久久久老牛影院| 亚洲天堂av一区二区三区| 网站一区二区| 亚洲热线99精品视频| 日韩av片在线免费观看| 欧美三级乱码| 日韩av色综合| 99久久久久成人国产免费| 丁香婷婷深情五月亚洲| 日韩精品第一页| 91精品久久久久久粉嫩| 日韩欧美极品在线观看| www.com操| 老牛影视av一区二区在线观看| 亚洲欧美日韩网| 欧美三级日本三级| 久久高清国产| 99一区二区三区| 国产乱视频在线观看| 亚洲精品国久久99热| 精品人妻一区二区三区四区在线 | 欧美另类一区| av理论在线观看| 在线观看中文字幕不卡| xxxxwww一片| 青青草综合网| 欧美亚洲视频一区二区| 国产精品无码专区av免费播放| 99精品国产一区二区三区不卡| 综合一区中文字幕| 久久久久久久| 亚洲国模精品一区| 欧美成人片在线观看| 日产欧产美韩系列久久99| 国产精品美女久久久久av福利| av小片在线| 欧美日韩综合视频| 岛国av免费观看| 亚洲男女av一区二区| 国产精品嫩草影院久久久| 手机在线观看毛片| 一区二区三区久久久| www.com久久久| 精品国产一区一区二区三亚瑟| 久久久久国产精品一区| av网站免费大全| 亚洲视频免费观看| 五月天激情视频在线观看| 久久av资源| 91精品国产91| 免费国产黄色片| 亚洲精品成人在线| 搡的我好爽在线观看免费视频| 精品国产91| 日本电影亚洲天堂| 亚洲 国产 欧美 日韩| 亚洲一级二级在线| 少妇高潮一69aⅹ| 欧美高清日韩| 亚洲直播在线一区| 中文字幕在线播放网址| 正在播放亚洲一区| 午夜精品一区二区三级视频| 秋霞影院一区二区| 日韩精品电影网站| 黄页免费欧美| www国产精品com| av网站在线免费看| 亚洲一区视频在线| 制服丝袜在线第一页| 狠狠综合久久| 精品九九九九| 亚洲精品mv| 亚洲性av在线| 亚洲无码久久久久久久| 中文字幕亚洲在| 一本之道在线视频| 激情丁香综合| 欧美美乳视频网站在线观看| 成人va天堂| 色999日韩欧美国产| av中文字幕第一页| 亚洲成av人影院在线观看网| 国产老熟女伦老熟妇露脸| 亚洲欧美日韩精品一区二区| 欧美视频观看一区| 亚洲日韩中文字幕一区| 欧美猛少妇色xxxxx| 人人妻人人澡人人爽人人欧美一区| 亚洲超碰97人人做人人爱| 免费成人蒂法网站| 日本网站在线观看一区二区三区| 亚洲精品乱码久久久久久蜜桃91| 欧美91在线|欧美| 欧美精品一区二区三区国产精品| 老熟妇高潮一区二区高清视频| 精品久久中文字幕久久av| 国产精品美女高潮无套| 国产原创一区二区| av免费播放网址| 日韩三级在线| 国产精品v欧美精品v日韩| 欧美羞羞视频| 欧美www在线| 天堂v视频永久在线播放| 欧美性大战久久久久久久蜜臀| 国产精品白丝喷水在线观看| 99久久精品国产毛片| 视频在线观看免费高清| 一区在线视频观看| 亚洲欧美成人一区| 久久97久久97精品免视看秋霞| 国产精品高潮呻吟久久av野狼| 菠萝蜜视频国产在线播放| 日韩成人在线电影网| 国产美女永久免费| 日韩欧美黄色动漫| 青青草精品在线视频| 久久日一线二线三线suv| 天堂av.com| 石原莉奈在线亚洲二区| 日韩精品在线观看av| 色婷婷色综合| 麻豆传媒一区| 亚洲精品黑牛一区二区三区| 国产精品久久婷婷六月丁香| 爱情岛论坛亚洲品质自拍视频网站 | 99草草国产熟女视频在线| 欧美视频二区| 一本色道久久综合亚洲精品婷婷 | 在线观看中文字幕亚洲| 高清毛片aaaaaaaaa片| 在线电影一区二区三区| 无码无套少妇毛多18pxxxx| 亚洲第一福利一区| 紧身裙女教师波多野结衣| 国产日韩精品视频一区| 岛国精品资源网站| 国产a视频精品免费观看| 潘金莲激情呻吟欲求不满视频| 国产午夜久久| 久久久久久人妻一区二区三区| 久久美女视频| 日韩视频在线播放| 久久99精品久久久久久园产越南| 国产日韩在线一区二区三区| 欧美影院在线| 91久久在线播放| 性欧美video另类hd尤物| 国产成人激情视频| 91精品韩国| 日韩av手机在线观看| 午夜久久中文| 欧美一区二三区| 久草在线资源站手机版| 欧美精品videofree1080p| 91高清在线观看视频| 久久午夜a级毛片| 免费网站成人| 久久久精品视频成人| 老司机福利在线视频| 色偷偷888欧美精品久久久| 在线免费av电影| 自拍偷拍亚洲欧美| av色图一区| 精品国产一区二区三区四区在线观看| 成人在线播放视频| 中文国产成人精品| 午夜小视频在线| 在线观看中文字幕亚洲| 日本综合在线| 久久影院资源网| 在线看福利影| 久久久爽爽爽美女图片| 国产传媒在线| 日本一区二区不卡| 巨胸喷奶水www久久久| 国产欧美久久一区二区| 久久伊人影院| 国内精品久久久久久久果冻传媒| 欧美黄色网视频| 日韩电影在线播放| 97在线精品| www.男人天堂网| 国产日韩视频| 亚洲黄色小视频在线观看| 九九国产精品视频| 精品久久久久久无码人妻| www.视频一区| 久久午夜精品视频| 亚洲精品高清视频在线观看| 国产成人无码精品| 欧美怡红院视频| www.久久久久久| 日韩久久免费视频| 日本在线免费| 久久久噜噜噜久噜久久| 欧美特黄aaaaaaaa大片| 91色在线观看| 全国精品免费看| 欧美 日韩 国产 在线观看| 国产综合久久| 成人性做爰aaa片免费看不忠| 精品一区二区三区视频在线观看 | 亚洲人精品午夜| 特级毛片www| 欧美一区二区三区男人的天堂| 人妻少妇精品无码专区| 中文在线不卡视频| 久草在线资源福利站| 成人精品在线视频| 综合伊思人在钱三区| 国产香蕉一区二区三区| 麻豆九一精品爱看视频在线观看免费| 在线黄色免费观看| 99精品桃花视频在线观看| www深夜成人a√在线| 欧美性高跟鞋xxxxhd| 91亚洲精品国偷拍自产在线观看 | 美女黄毛**国产精品啪啪| 68国产成人综合久久精品| 自慰无码一区二区三区| 国产一区二区日韩精品| 日韩精品卡通动漫网站| 一区二区三区精品久久久| 中文字幕 日韩有码| 亚洲精品国产精品国自产观看浪潮 | 久久精品男人天堂av| 久久网一区二区| 欧美日本国产一区| 国产特黄在线| 欧美一区二区三区免费视| 亚洲精品不卡在线观看| 一区二区三区精品国产| 久久久久久久欧美精品| 91精品啪在线观看国产| 综合电影一区二区三区| 欧美人一级淫片a免费播放| 亚洲激情在线观看| 污视频网站在线免费| 国产三级精品网站| 不卡在线一区| 北条麻妃在线视频| 2020国产精品久久精品美国| 欧美日韩三级在线观看| 91精品国产综合久久香蕉麻豆| 69av在线| 国产美女主播一区| 欧美日韩第一| 欧美自拍小视频| 国产偷国产偷亚洲高清人白洁| 日韩毛片在线播放| 亚洲高清久久网| 超碰中文在线| 国产精品毛片va一区二区三区| 狠狠入ady亚洲精品| av天堂一区二区| 亚洲成人一区二区| 少妇人妻偷人精品一区二区| 欧美精品电影免费在线观看| 欧洲大片精品免费永久看nba| av电影一区二区三区| 国产资源在线一区| 无码黑人精品一区二区| 欧美一区二区三区视频| av毛片在线免费看| www.久久久| 亚洲毛片播放| 欧美成人午夜精品免费| 日韩欧美亚洲成人| 成人在线播放视频| 国产欧美婷婷中文| 亚洲精品888| 久久精品aⅴ无码中文字字幕重口| 一区二区不卡在线视频 午夜欧美不卡在| 99热这里只有精品在线观看| 欧美成人中文字幕在线| 日韩一区二区三区高清在线观看| 免费的一级黄色片| 成人av在线资源| 中文字幕亚洲精品在线| 亚洲视频在线播放| 成人午夜亚洲| 一二三四中文字幕| www.av亚洲| 91porny九色| y97精品国产97久久久久久| 欧州一区二区三区| 欧美v在线观看| 国产精品久久777777| 国产精品福利电影| 国产+人+亚洲| 日韩激情图片| 黑森林av导航| 欧美综合一区二区三区| 黄av在线免费观看| 精品一卡二卡三卡四卡日本乱码 | 91精品国产91久久久久游泳池| 91在线观看免费网站| 亚洲精品一二| 无码少妇精品一区二区免费动态| 777久久久精品| 国产伦久视频在线观看| 一区二区三区视频| 成人福利视频网站| 中文字幕在线观看免费| 欧美国产中文字幕| 日韩欧美大片| 50一60岁老妇女毛片| 欧美日韩精品系列| av在线视屏| 超碰免费在线公开| 91视视频在线观看入口直接观看www| 99re国产在线| 欧美丰满少妇xxxx| 日韩理论电影大全| 特级西西人体4444xxxx| 欧美一区二区精品久久911| 成人爽a毛片免费啪啪| 激情图片qvod|