仿真网络环境搭建(Mininet + Mini-nfv)
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
util/install.sh -a |
之后安装的是2.3.0版本的Mininet,可以用如下命令查看
sudo mn --version |
也可以用这个方法测试是否成功
sudo mn --test pingall |
之后安装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 |
没有出错的话,会出现一个可视化的界面
到这一步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 |
确保已安装 Python2
sudo apt update |
创建虚拟环境
# 安装virtualenv (virtualenv 可以为任意 Python 版本创建隔离环境) |
下面的仅作为python3时候的参考,可以略过
虚拟环境设置,由于笔者python版本在3.12
的时候出现了很多bug,所以这里建议创建虚拟环境的时候,将python版本设置为3.6-3.8
# Python3 可以这样使用,这里的内容仅仅保留作为参考 |
安装依赖项
pip install -r requirements.txt |
验证是否成功,找到自己克隆的地址(mini-nfv)
sudo $(which python) mininfv.py |
这会创建一个初始的网络拓扑
(tips:如果遇到端口如6653占用的情况,可以使用如下解决方案)
# 查找并终止占用端口 6653 的进程 |
也可以使用TOSCA 模板加载并部署 VNF
在 Mini-NFV CLI 中,运行以下命令
vnf_create --vnfd-file samples/vnfd/tosca-vnfd-hello-world.yaml vnfUD |