[环境搭建]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.mzph.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导致本地记录的验证信…