Ubuntu22.04中安装mininet,可视化miniedit以及ryu

本人纯小白,第一次接触这些软件,下面是我的安装过程以及碰到的一些问题,仅供大家参考,如有问题希望大家能够指出,感谢!

一、安装mininet

1. 打开终端,切换到管理员用户

sudo su -

2. 更新软件包列表以及升级已安装的软件包

sudo apt-get update
sudo apt upgrade

3. 安装mininet

sudo apt-get install mininet

4. 测试是否安装成功

sudo mn --version

5. 启动mininet,这时会默认创建一个由一台控制器、一台交换机和两台主机构成的网络。

sudo mn

在这里插入图片描述
安装成功。

二、miniedit可视化

在实现可视化时,遇到一些问题,后来发现miniedit.py必须在桌面版系统或支持X11的情况下使用,之前安装的系统不支持,重新下载桌面系统之后解决此问题。

1. 配置环境

在启动miniedit之前,要确保系统已安装好python环境,且必须使用管理员账户。
下面是我使用时遇到的一些问题,以及尝试的解决办法。
使用以下命令进入miniedit.py所在目录:

cd /usr/share/doc/mininet/examples

然后,使用以下命令启用miniedit.py。

python ./miniedit.py

此时,报错显示无“tkinter”模块。使用如下指令给系统默认python安装tkinter模块:

sudo apt-get update
sudo apt-get -y install python-tk

接着启用miniedit.py,仍旧显示无“tkinter”模块,使用以下指令确认已安装的包:

pip list

发现tkinter确实没有安装成功(此前我将系统默认python从python3.10改成了python3.7)。重新使用以下指令安装:

sudo apt-get update
sudo apt-get install python3-tk

测试之后依旧显示没有“tkinter”模块。在终端输入以下指令查看python3-tk的版本:

dpkg --list | grep python3-tk

输出如下:

ii python3-tk: amd64 3.10.8-1~22.04  amd64  Tkinter - Writing Tk applications with Python 3.x

这说明安装的python3-tk面向python3.10版本,因此重新将系统默认python版本改为python3.10。重新测试,发现tkinter导入成功。

2. 启用miniedit.py

我使用了两种启用方法,

第一种:

进入miniedit.py所在目录,此时为usr/share/doc/mininet/examples,使用以下指令启用miniedit.py

cd /usr/share/doc/mininet/examples
python ./miniedit.py

图形界面成功出现。

第二种

直接将miniedit.py文件复制到桌面,然后在Desktop文件下打开终端,使用以下指令即可启用miniedit:

sudo python ./miniedit.py

注:
在后续测试的时候,发现miniedit.py又无法打开了,报错如下:
在这里插入图片描述
之后确认问题在于:启动miniedit时没有检测到图形显示环境。
接下来,先确定本地是否安装X11:

Xorg -version

此时若输出对应版本,则说明系统支持X11;若报错,则可以尝试安装x11,尝试安装命令如下,我这里成功显示X11的版本,无需再安装。

sudo apt update
sudo apt install xorg  

(还有一点是X11需要和gnome或KDE一起工作,所以也需要确认是否安装gnome:

gnome-shell --version 

若输出相应版本,则无需重新安装。若没有安装,则可使用以下指令安装:

sudo apt update
sudo apt install ubuntu-gnome-desktop


之后,需要启用X11。我这里直接更改系统设置为:在启动时自动进入图形界面,命令如下:

sudo systemctl set-default graphical.target
sudo systemctl start graphical.target

重启系统之后,使用如下命令确认上述更改是否生效:

systemctl get-default

若输出为graphical.target,说明更改生效。

接着,我再次尝试使用上面两种方法启动miniedit.py,第二种成功启动,但是第一种仍旧报错(要崩溃了)。
最后发现,如果在有图形桌面的环境中运行,但仍然报错,可以手动设置DISPLAY变量。因此在进入 miniedit.py所在目录后,手动添加DISPLAY变量,指令如下:

cd /usr/share/doc/mininet/examples
export DISPLAY=:0
python miniedit.py

之后成功打开miniedit界面。

注意,在每次使用第一种方法打开miniedit时,都需要重新添加DISPLAY变量。还有,在关闭miniedit窗口时,最好点击quit,不要直接点❌,不然下次打开miniedit时可能会报错。如果报错的话可尝试下列指令清理配置操作,然后重新打开miniedit。

sudo mn -c

手动分割线,在后续使用miniedit时,我又发现在导出文件时报错:
a bytes-like object is required,not ‘str’
解决办法参考Mininet可视化网络虚拟编辑界面使用与导出python代码
首先打开miniedit.py源文件,然后对源代码进行如下修改,并保存。

  1. 将 使用二进制模式(wb)打开文件 全部修改为 以文本模式(w)打开,即:
f = open(fileName, 'w')

大概位置在1687行和1706行;

  1. 将第1452行左右的代码注释掉,更改为:
self.appPrefs.update(loadedTopology['application'])

之后再次导出文件,文件成功导出。

三、安装Ryu

下载软件之前首先更新apt和pip,使用管理员账户。
指令如下:

sudo apt-get update
sudo apt-get upgrade 
sudo apt install python3-pip

接着,获取ryu源码并安装

git clone https://gitclone.com/github.com/osrg/ryu
pip3 install ryu

进入ryu所在文件夹,安装所需的依赖。

cd ryu
sudo pip3 install -r tools/pip-requires
sudo python3 setup.py install

安装之后,检查ryu是否安装成功,如未报错,则成功。

sudo ryu-manager

注:
下面是安装时遇到的一些问题。
执行上述命令之后,第一次报错为:
在这里插入图片描述
结合博主的文章Ubuntu22.04安装mininet和ryu,将原本eventlet卸载,重新安装兼容版本,此问题解决。

sudo pip uninstall eventlet
sudo pip install eventlet==0.33.3

再次测试:

sudo ryu-manager

报错如下:
在这里插入图片描述

参考博客AttributeError: module ‘collections‘ has no attribute ‘MutableMapping,对源文件进行修改。不过文件修改需要更改文件权限,我参考了linux常用命令(7):chmod命令(给文件赋读写权限/chmod 777)Linux查看、修改文件读写权限,将文件权限修改为“其他用户拥有读和写的权限,指令如下。

ls -l 报错源文件所在的地址 #此指令是查看文件的权限
sudo su - 
chmod 666 需修改文件的地址

再次测试:

sudo ryu-manager

没有报错,安装成功,输出如下:

四、安装Ryu GUI

此处参考博客Ubuntu22.04安装mininet和ryu
首先找到 gui_topology.py 所在的目录,然后进入此目录打开终端,输入以下指令:

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

终端输出如下:
在这里插入图片描述
鼠标点击图片上网址+ctrl进入此网页,会发现为空白图像,接着,同时运行mininet和Ryu。步骤如下:

首先要找到simple_switch_13.py的所在目录,此为最基础的OpenFlow 1.3交换机应用程序。
然后在 gui_topology.py 所在的目录下新建一个终端,输入以下命令:

sudo ryu-manager --observe-links 地址1 地址2 
# 地址1为gui_topology.py的地址, 地址2为simple_switch_13.py的地址,二者之间有空格

每个人的文件地址不一样,需要按自己的输入。

接着,重新打开一个终端,输入以下命令启动mininet:

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

终端输出如下:
在这里插入图片描述
最后,刷新一下浏览器,即可得到下图:
在这里插入图片描述
至此安装完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值