[環境搭建]SDN網絡感知服務與最短路徑應用

  • 1.安裝python模塊networkx

pip install networkx

Image(49)

  • 2.給Network_Awareness.py加修改權限

chmod 777 Network_Awareness.py

  • 3.下載安裝ryu

git clone git://github.com/osrg/ryu.git

cd ryu sudo python

./setup.py install

#若已安裝ryu,刪了再裝, pip uninstall ryu

  • 4.修改“***/ryu/ryu/flags.py"文件,在實例“CONF”調用的方法“register_cli_opts”的字典里添加:

CONF.register_cli_opts([

# k_shortest_forwarding

cfg.IntOpt('k-paths', default=1, help='number for k shortest paths'),

cfg.StrOpt('weight', default='hop',

help='weight type of computing shortest path.')])

如圖:

  • Image(50)

  • 5.修改文件"/ryu/ryu/topology/switches.py",在“PortData”類的初始化方法中添加了實例變量“self.delay”:

self.delay = 0

Image(51)

  • 在“@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)”下添加:

def packet_in_handler(self, ev):

# add code for getting LLDP packet receiving timestamp

recv_timestamp = time.time()

if not self.link_discovery:

return

msg = ev.msg

try:

src_dpid, src_port_no = LLDPPacket.lldp_parse(msg.data)

except LLDPPacket.LLDPUnknownFormat as e:

# This handler can receive all the packtes which can be

# not-LLDP packet. Ignore it silently

return

dst_dpid = msg.datapath.id

if msg.datapath.ofproto.OFP_VERSION == ofproto_v1_0.OFP_VERSION:

dst_port_no = msg.in_port

elif msg.datapath.ofproto.OFP_VERSION >= ofproto_v1_2.OFP_VERSION:

dst_port_no = msg.match['in_port']

else:

LOG.error('cannot accept LLDP. unsupported version. %x',

msg.datapath.ofproto.OFP_VERSION)

# get the lldp delay, and save it into port_data.

for port in self.ports.keys():

if src_dpid == port.dpid and src_port_no == port.port_no:

send_timestamp = self.ports[port].timestamp

if send_timestamp:

self.ports[port].delay = recv_timestamp - send_timestamp

    • Image(52)

  • 6.重新編譯安裝ryu

cd ***/ryu

python setup.py install

  • 7.啟動ryu控制器

ryu-manager shortest_forwarding.py --observe-links --k-paths=2 --weight=bw

  • 8.開啟mininet并連接控制器

mn --controller=remote,ip=192.168.1.197,port=6653

注:“ip”填寫的是啟動ryu控制器的那臺主機的ip

轉載于:https://www.cnblogs.com/ownhp/p/9094912.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277944.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277944.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277944.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我需要別人承認才快樂嗎?

關于生命的感悟兩個故事第一個故事,一個尖子生考上了麻省理工學院,在那里所有同學都很優秀,競爭非常強烈,她發現再也不能出類拔萃,在各方面贏過別人,于是覺得生活看不到希望,郁郁寡歡&#xff0…

Teams Bot開發系列:Activity和Turn

這篇文章我們來說一下Activity和Turn這兩個bot framework中最重要的兩個概念,同時也介紹一下TurnContext和BotAdapter Activity 一個activity是聊天雙方的一個信息載體,它可以是一條消息,也可以是一個動作。比如用戶給bot發送一條文字消息&…

ubuntu16.04下安裝opencv出現libgtk2.0-dev配置失敗問題解決方法

第一次在ubuntu下安裝opencv,遇到很多問題,特別是libgtk2.0-dev總是配置失敗的問題,在網上也看到一些解決方法,自己也遇到一些比較奇葩的問題,故整理于此。 網上大部分的解決方案就是更改下載源,我看到一些…

03|模型I/O:輸入提示、調用模型、解析輸出

03|模型I/O:輸入提示、調用模型、解析輸出 從這節課開始,我們將對 LangChain 中的六大核心組件一一進行詳細的剖析。 模型,位于 LangChain 框架的最底層,它是基于語言模型構建的應用的核心元素,因為所謂 …

selenuim自動化爬取汽車在線谷米愛車網車輛GPS數據爬蟲

#為了實時獲取車輛信息,以及為了后面進行行使軌跡繪圖,寫了一個基于selelnium的爬蟲爬取了車輛gps數據。 #在這里發現selenium可以很好的實現網頁解析和處理js處理 #導包 import timefrom selenium import webdriverfrom selenium.webdriver.support.wai…

Teams Bot開發系列:Activity處理流程

上篇文章介紹了什么是Activity,Turn,TurnContext和BotAdapter,這篇文章我們看看這些東西是如何竄起來的,他們是如何處理用戶發給bot的消息的。 我們以一個最簡單的bot,echo bot為例子,所謂的echo bot就是用…

寫單元測試的好處(轉)

許多開發者都有個習慣,常常不樂意去寫個簡單的單元測試程序來驗證自己的代碼。對自己的程序一直非常有自信,或存在僥幸心理每次運行通過后就直接扔給測試組測試了。然而每次測試組的BUG提交過來后就會發現自己的程序還存在許多沒有想到的漏洞。但是每次修…

linux下搭建go環境--問題記錄

記錄自己在linux上搭建go環境的經歷。(因為各種版本,linux系統問題掙扎了幾天) 安裝vmware-tools,把我要運行代碼拷進來。這個網上方法很多,我的電腦抽風不能安裝,后面重裝的虛擬機確定Ubuntu版本、位數。很重要&#…

Teams Bot開發系列:Teams的Activity處理

上一篇文章講了activity處理的流程,我們bot的核心處理邏輯放在ActivityHandler的子類里,通過重載OnMessageActivityAsync()方法來實現。 這篇文章我來講一下對于Teams的bot來說,整個處理的邏輯會有哪些不同點。 通過之前的文章,…

取球博弈

兩個人玩取球的游戲。一共有N個球,每人輪流取球,每次可取集合{n1,n2,n3}中的任何一個數目。 如果無法繼續取球,則游戲結束。 此時,持有奇數個球的一方獲勝。 如果兩人都是奇數,則為平局。 假設雙方都采用最聰明的取法…

MySQL修改字符集

MySQL數據庫修改字符集,介紹一下修改的方法 1)系統工具iconv #file filename #mysqldump --default-character-setutf8 >20180523xxx.sql #file 20180523xxx.sql #iconv -t utf8mb4 -c 20180523xxx.sql>20180523xxxutf8mb4.sql #file 20180523xxxutf8mb4.sql…

Teams Bot開發系列:Bot驗證

我們今天來說一下authentication,authentication一直是一個復雜的問題。bot里的authentication也不簡單。我們先來看一個概念:Bot Framework Token Service,根據官方定義,這個token service主要是: Facilitating the u…

堆排序

目錄 一、定義二、算法分析三、代碼地址一、定義 1.1 堆 ? 此處的堆,指數據結構中的堆。而不是內存中的那種內存堆,內存堆是基于數據結構的一種實現。堆的數據結構是一棵完全二叉樹,它有如下特點:(具體參考下文鏈接&a…

Teams Bot開發系列:Middleware

middleware是目前一些framework比較流行的概念,通常一個開發框架需要提供一些可擴展可定制化的功能。所以middleware這種pattern就很實用。 熟悉asp.net core的開發可能第一個想到的就是asp.net core的middleware,如下圖: 當一個http reques…

如何獲取租戶中所有的Team

大家在使用Graph API開發Teams App的時候,有時候會需要獲取某個租戶Tenant的所有team,在寫這篇文章的時候Graph API并沒有提供這么一個功能,沒有一個類似于”GET /teams”的api。 在Micorsoft Graph官方文檔的已知問題中,也提到了…

mysql常用快速查詢修改操作

mysql常用快速查詢修改操作 一、查找并修改非innodb引擎為innodb引擎 # 通用操作 mysql> select concat(alter table ,table_schema,.,table_name, engineinnodb;) from information_schema.tables where table_schema not in (information_schema,mysql,performance_schem…

ElasticSearch教程——自定義分詞器(轉學習使用)

一、分詞器 Elasticsearch中,內置了很多分詞器(analyzers),例如standard(標準分詞器)、english(英文分詞)和chinese(中文分詞),默認是standard. s…

使用Azure Serverless來開發Teams App

Azure Function可以說比較早期的一個serverless服務,隨著這些年云服務的大行其道,Serverless在概念越來越火,什么叫serverless? Serverless computing (or serverless for short), is an execution model where the cloud provide…

Angular之RouterModule的forRoot與forChild

Angular 提供了一種方式來把服務提供商從模塊中分離出來,以便模塊既可以帶著 providers 被根模塊導入,也可以不帶 providers 被子模塊導入。 區別: forRoot creates a module that contains all the directives, the given routes, and the r…

關于 someone could be eavesdropping on you right now (man-in-the-middle attack) ssh的解決辦法

關于 someone could be eavesdropping on you right now (man-in-the-middle attack) ssh的解決辦法 記錄工作中遇到的問題 someone could be eavesdropping on you right now (man-in-the-middle attack) ssh  由于遠程機器或者重組或者更新了ssh server導致本地記錄的驗證信…