Tips:如果Ubuntu内的python版本不是在3.6 —- 3.8之间的,可以参考一下这篇博客,安装一下旧版本的Python

搭建了一半,mini-nfv一直导入不了TOSCA配置文件,这个笔记先留着!!!

https://blog.csdn.net/ccgshigao/article/details/108212828

如果想要一劳永逸,强烈建议使用Ubuntu 20.04 LTS,这个版本也包含旧版本的python2.7.x !!!!!!!!!!!!!!!

这里记录一下安装Ubuntu 20.04遇到的问题

Mininet安装配置

Mininet 是一个轻量级的网络仿真工具,能够在单台机器(无论是虚拟机、云环境还是本地系统)上快速创建一个真实的虚拟网络。它运行真实的内核、交换机和应用程序代码,只需一个命令即可在几秒钟内完成部署。此外,Mininet 是开发、共享和实验软件定义网络(SDN)系统的理想平台,支持 OpenFlow 和 P4 等协议。

首先最好需要安装一个Ubuntu ,我的版本是20.04 LTS,在换完下载源后,执行如下命令

安装Git

sudo apt-get install git

获取 Mininet 源码

git clone http://github.com/mininet/mininet.git

进入 Mininet 目录并选择版本

cd mininet
# 列举出当前的 Mininet 版本
git tag
# 选择想要的版本进行下载
git checkout -b mininet-2.3.0 2.3.0

安装 Mininet

util/install.sh -a

之后安装的是2.3.0版本的Mininet,可以用如下命令查看

sudo mn --version

image-20250530171725936

也可以用这个方法测试是否成功

sudo mn --test pingall

image-20250530171950861

之后安装python3的软件包,方便使用Mininet内置的可视化工具MiniEdit

sudo apt-get install tcl-dev tk-dev python3-tk

添加软链接,之后就使用Python3了

这一步很关键,之前之前就是卡在这里了,会显示没有python环境,如果python版本没问题就不用改了

sudo ln -s /usr/bin/python3 /usr/bin/python

之后找到如下地址

cd /usr/share/doc/mininet/examples

运行

./miniedit.py

没有出错的话,会出现一个可视化的界面

image-20250528224529289

到这一步Mininet就算安装成功了,如果是虚拟机的话,可以用快照备份一下

Mininfv安装配置

Mini-nfv 是一个用于网络功能虚拟化(NFV)编排的框架,具备一个通用的虚拟网络功能(VNF)管理器,能够在 Mininet 上部署和操作虚拟网络功能(VNFs)以及网络服务。该框架基于 ETSI MANO 架构规范。Mini-nfv 管理虚拟网络功能(VNF)的整个生命周期,包括在 Mininet 上的部署、监控、扩展以及卸载。Mini-nfv 支持将 OASIS TOSCA 模板(V1.0 CSD 03)加载到 Mininet 中,遵循类似 OpenStack Tacker 的工作流程。在 Tacker 的文档中可以找到一份详尽的 VNF 描述符模板指南。

放在前面的话:这个最好使用python2.x版本,因为mininfv.py这个文件都是在python2.x的环境下编写的

此外,不要在虚拟环境里使用sudo,会导致虚拟环境中某些文件的属主被 root 占用,导致 pip 无法覆盖!!!

将整个虚拟环境的所有文件和目录权限恢复为你自己的用户权限。

sudo chown -R $USER:$USER ~/Software/mini-nfv/mininfv-env-py2/

首先找见mininfv官方文档

https://josecastillolema.github.io/mininfv/

将代码下载下来

git clone https://github.com/josecastillolema/mini-nfv.git
cd mini-nfv

确保已安装 Python2

sudo apt update
sudo apt install python2
# 检查安装是否成果
python2 --version

创建虚拟环境

# 安装virtualenv (virtualenv 可以为任意 Python 版本创建隔离环境)
sudo apt install python3-virtualenv
# 检查是否安装成功
virtualenv --version
# 创建虚拟环境
sudo virtualenv -p /usr/bin/python2 mininfv-env-py2
# 激活虚拟环境
source mininfv-env-py2/bin/activate
source ~/Software/mini-nfv/mininfv-env-py2/bin/activate
# 删除清除环境(仅记录)
sudo rm -rf mininfv-env-py2
# 退出虚拟环境
deactivate

下面的仅作为python3时候的参考,可以略过

虚拟环境设置,由于笔者python版本在3.12的时候出现了很多bug,所以这里建议创建虚拟环境的时候,将python版本设置为3.6-3.8

# Python3 可以这样使用,这里的内容仅仅保留作为参考
# 创建虚拟环境
python3 -m venv mininfv-env
# 进入虚拟环境
source mininfv-env/bin/activate
# 退出虚拟环境(仅仅记录一下)
deactivate

安装依赖项

pip install -r requirements.txt
pip install mininet openvswitch-testcontroller -y

验证是否成功,找到自己克隆的地址(mini-nfv)

sudo $(which python) mininfv.py

image-20250603160157660

这会创建一个初始的网络拓扑

(tips:如果遇到端口如6653占用的情况,可以使用如下解决方案)

# 查找并终止占用端口 6653 的进程
sudo fuser -k 6653/tcp
# 清理 Mininet 缓存
sudo mn -c

也可以使用TOSCA 模板加载并部署 VNF

在 Mini-NFV CLI 中,运行以下命令

vnf_create --vnfd-file samples/vnfd/tosca-vnfd-hello-world.yaml vnfUD
vnfd_create --vnfd-file samples/vnfd/tosca-vnfd-hello-world.yaml vnfd-helloworld