Mininet+Ryu安装教程

这篇具有很好参考价值的文章主要介绍了Mininet+Ryu安装教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近要做一个Mininet的网络环境,网络设备由Mininet来模拟,SDN控制器用Ryu来做,为了避免每次重新做再去翻查资料,我在这里系统地整理一遍

硬件需求

我在 VMWare Workstation 16 Player虚拟机上运行的Ubuntu 22.04.1

硬件 需求
内存 至少4G以上,我分配了8个G
CPU 至少2个核心,我分配了4个
硬盘 30G以上,我分配了100G

版本需求

软件 版本
Ubuntu 22.04.1
Mininet 2.3.0
Ryu 4.34
Python 3.8
Ovs 2.9.8
Openflow 1.3

软件安装

这两句随时准备着,出问题的时候先尝试一下

sudo apt update 
sudo apt upgrade

Mininet安装

sudo apt-get install git
git clone https://github.com/mininet/mininet
cd mininet
git tag 
git checkout -b mininet-2.3.0 2.3.0 
cd ..
mininet/util/install.sh -a

第一个问题,端口拒绝访问:
Cloning into 'openflow'... fatal: unable to connect to github.com: github.com[0: 20.27.177.113]: errno=Connection refused

git config --global url.https://github.com/.insteadOf git://github.com/
mininet/util/install.sh -a

安装完毕后测试:

sudo mn --switch ovsbr --test pingall

测试成功:
Mininet+Ryu安装教程

Ryu安装

接下来这几步我只是为了说明python3.10中运行Ryu的困难,我搞了一整天,甚至不小心删除了python3.10搞崩了Ubuntu,也没有搞定这些问题,嫌麻烦的同学直接跳到下载python3.8的部分

sudo apt install gcc libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev -y
sudo pip install ryu
cd ryu
sudo pip install -r tools/pip-requires

查看Ryu4.34安装与测试运行:

 sudo pip show ryu 
 sudo ryu-manager

第一个问题,eventlet版本太新:
ImportError: cannot import name 'ALREADY_HANDLED' from 'eventlet.wsgi' (/home/jzjs/.local/lib/python3.10/site-packages/eventlet/wsgi.py)

sudo pip uninstall eventlet
sudo pip install eventlet==0.30.2

第二个问题,Python版本太新:
TypeError: cannot set 'is_timeout' attribute of immutable type 'TimeoutError'

解决办法:下载python3.8,并启用虚拟环境ryu-venv,重新安装Ryu,注意有些地方不能用sudo:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.8 python3.8-venv python3.8-dev
python3.8 -m venv ryu-venv
source ryu-venv/bin/activate
pip install ryu
cd ryu
pip install -r tools/pip-requires
pip uninstall eventlet
pip install eventlet==0.30.2

重新查看Ryu4.34安装,这次确实是安装在python3.8/site-packages当中了:

pip show ryu 
ryu-manager

测试成功:
Mininet+Ryu安装教程

随时进入和关闭虚拟环境:

source ryu-venv/bin/activate
deactivate

要是关闭后忘记了路径就敲下面的命令:

find ~/ -name "activate"

Ryu GUI安装

Ryu GUI所需要的webob和routes库已经在下面的命令中安装完毕:

pip install -r tools/pip-requires

测试Ryu的GUI,注意,你的路径和我的不一样:

cd /home/jzjs/ryu/ryu-venv/lib/python3.8/site-packages/ryu/app/gui_topology
sudo ryu-manager --observe-links --verbose gui_topology.py

浏览器打开http://0.0.0.0:8080后,发现有如下问题:
OSError: Path does not exist or is not directory: '/home/jzjs/ryu/ryu-venv/lib/python3.8/site-packages/ryu/app/gui_topology/html/'

Ryu的GUI找不到所需文件,为了解决这个问题,手动创建所需的目录并将GUI应用程序的源代码复制到那里:

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

mkdir -p /home/jzjs/ryu/ryu-venv/lib/python3.8/site-packages/ryu/app/gui_topology/html/

cp -r ryu/ryu/app/gui_topology/html/* /home/jzjs/ryu/ryu-venv/lib/python3.8/site-packages/ryu/app/gui_topology/html/

sudo ryu-manager --observe-links --verbose gui_topology.py

成功打开:
Mininet+Ryu安装教程

Mininet和Ryu联动

继续在上面的路径里,运行openflow1.3的交换机:

ryu-manager --observe-links ryu/ryu/app/gui_topology/gui_topology.py ryu/ryu/app/simple_switch_13.py

另外打开一个终端,输入Mininet的语句:

sudo mn --controller remote,ip=127.0.0.1 --topo linear,3 --mac --switch ovsk --link tc

刷新一下浏览器,可以看到下面的界面便大功告成:
Mininet+Ryu安装教程文章来源地址https://www.toymoban.com/news/detail-498797.html

到了这里,关于Mininet+Ryu安装教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计一个LRU(最近最少使用)缓存

    约束和假设 我们正在缓存什么? 我们正在缓存Web Query的结果 我们可以假设输入是有效的,还是需要对其验证? 假设输入是有效的 我们可以假设它适应内存吗? 对 编码实现

    2024年01月24日
    浏览(67)
  • 2023-05-25 最近的一个客户POC的反思

    最近在遇到一个客户的POC的问题,其中经历诸多有意思的事情, 有必要记录一下,以作为后续创业所要避免的地方。 查询SQL中, 存在给查询到的列属性赋值的情况 给属性的赋值的数据类型,和列属性的数据类型,不匹配,比如给整形的属性赋值字符串 在所做的项目中,数据库

    2024年02月07日
    浏览(64)
  • AutoGPT最近火出圈,却透露一个给我们的重要机会

    在AutoGPT和其他类似的人工智能技术越来越普遍的时代,许多人可能会担心潜在的失业和各种任务的自动化趋势。然而,虽然人工智能确实可以替代许多繁琐和重复性的工作,但重要的是要记住,AI无法真正复制的一个关键方面是人类的创造力。 创造力是人类经验的重要组成部

    2023年04月17日
    浏览(45)
  • 【设计并实现一个满足 LRU (最近最少使用) 缓存约束的数据结构】

    LRU是Least Recently Used的缩写,意为最近最少使用。它是一种缓存淘汰策略,用于在缓存满时确定要被替换的数据块。LRU算法认为,最近被访问的数据在将来被访问的概率更高,因此它会优先淘汰最近最少被使用的数据块,以给新的数据块腾出空间。 如图所示: 先来3个元素进入

    2024年01月24日
    浏览(46)
  • 【设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构】

    LRU是Least Recently Used的缩写,意为最近最少使用。它是一种缓存淘汰策略,用于在缓存满时确定要被替换的数据块。LRU算法认为,最近被访问的数据在将来被访问的概率更高,因此它会优先淘汰最近最少被使用的数据块,以给新的数据块腾出空间。 如图所示: 先来3个元素进入

    2024年01月21日
    浏览(57)
  • 无涯教程-KNN算法 - 寻找最近邻居

    K最近邻(KNN)算法是一种监督的ML算法,可用于分类以及回归预测问题,但是,它主要用于行业中的分类预测问题。以下两个属性将很好地定义KNN- 惰性学习算法    -  KNN是一种惰性学习算法,因为它没有专门的训练阶段,并且在分类时将所有数据用于训练。 非参数学习算法

    2024年02月11日
    浏览(38)
  • 推荐一个最近刚出的比较全面的多模态综述:Multimodal Deep Learning

    标题:Multimodal Deep Learning 网址:https://arxiv.org/abs/2301.04856 收录于:arxiv 2023   与其说这是一篇论文,倒不如说这是一本“书”。全文共 239 页,这其中还不包括封面、目录、参考文献等等的篇幅。   本书是一个研讨会的成果,在这个研讨会中,我们回顾了多模态方法,并

    2023年04月26日
    浏览(46)
  • 最近很流行Copilot ,今天我们用它来创作一个AI数字人视频

    这是AI数字人用HeyGen合成 提示词》形象》配音》视频 1.利用ChatGPT 和 OPS 生成提示词。 2.使用Midjourney 制作数字人形象。 3.IIElevenLabs 制作口播配音 4.最后将数字人形象和口播配音上传到,HeyGen 今天我就把全部教给大家希望对你们有用 第一步打开ChatGPT把描述数字人人物形象翻译

    2024年02月02日
    浏览(102)
  • 最近超火的AI生成坤坤图片教程

    前段时间不是来了一期SD AI绘画教程吗,相信不少小伙伴已经能熟练掌握技巧了。 什么?一点没看,那也没事≖‿≖✧ 本期教程和那个相差不大,可以在线食用免费的SD应用。不过为了省一下口袋里的几个硬币还是建议看看我之前的SD教程,毕竟装好了可以无限食用。 原SD教

    2024年02月12日
    浏览(65)
  • 给定一个非负整数a,返回>=a,并且离a最近的,2的某次方(java)

    给定一个非负整数num,如何不用循环语句,返回=num,并且离num最近的,2的某次方 题目交代不能用循环,我们可以用位运算解决这题. 举个例子. 7 的 二进制是 0000 0111 第一步 先减一,n = 0000 0110 第二步,上面减一得到的结果n 或上n 右移一位. n |= n 1; 第三步.n 在 或 n 右移2位. n |=

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包