sudo mn --switch ovsbr --test pingall
测试成功:
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
测试成功:
随时进入和关闭虚拟环境:
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联动
继续在上面的路径里,运行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
刷新一下浏览器,可以看到下面的界面便大功告成:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
g)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
![img](https://img-blog.csdnimg.cn/img_convert/0ee9a76a2acf0101dfe38b16844ab782.jpeg)