Mininet 是一个用于快速构建软件定义网络(SDN)实验环境的轻量级仿真工具。以下从 安装 和 卸载 两个方面提供完整操作说明,覆盖主流操作系统及常见问题解决方案。
一、安装 Mininet
1. Ubuntu/Debian 系统安装(推荐)
方法 1:源码安装(灵活且最新)
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装依赖
sudo apt install git build-essential make python3-dev libffi-dev libssl-dev -y
# 克隆仓库并安装
git clone https://github.com/mininet/mininet
cd mininet
# 安装全部组件(包括 Mininet、Open vSwitch、控制器等)
sudo ./util/install.sh -a
# 验证安装
sudo mn --test pingall # 应显示 "0% dropped"
方法 2:APT 安装(快速但版本较旧)
sudo apt install mininet openvswitch-switch -y
方法 3:指定版本安装
cd mininet
git checkout -b 2.3.0 # 切换到指定版本
sudo ./util/install.sh -nV # 仅安装 Mininet,跳过 Open vSwitch
2. 其他操作系统
- Fedora:
sudo dnf install mininet openvswitch
sudo systemctl start openvswitch
- Mac/Windows:
- 使用 Mininet VM(VirtualBox 导入镜像)。
- 或通过 Docker:
docker pull mininet/mininet
docker run -it --privileged mininet/mininet
3. 自定义拓扑安装(Python API)
创建 custom_topo.py
:
from mininet.topo import Topo
class MyTopo(Topo):
def __init__(self):
Topo.__init__(self)
h1 = self.addHost('h1')
h2 = self.addHost('h2')
s1 = self.addSwitch('s1')
self.addLink(h1, s1, bw=10, delay='5ms')
self.addLink(h2, s1, bw=5, delay='10ms')
topos = {'mytopo': (lambda: MyTopo())}
运行自定义拓扑:
sudo mn --custom custom_topo.py --topo mytopo
二、卸载 Mininet
1. 源码安装的卸载
# 删除 Mininet 核心文件
sudo rm -f /usr/local/bin/mn
sudo rm -rf /usr/local/lib/python3*/dist-packages/mininet*
sudo rm -rf /usr/local/share/man/man1/mn.1
# 删除 Open vSwitch(如果通过脚本安装)
sudo systemctl stop openvswitch-switch
sudo rm -rf /usr/local/sbin/ovs-*
sudo rm -rf /usr/local/share/openvswitch
2. APT 安装的卸载
sudo apt remove --purge mininet openvswitch-switch openvswitch-common -y
sudo apt autoremove -y
3. 虚拟机/Docker 卸载
- VirtualBox:直接删除虚拟机镜像。
- Docker:
docker stop $(docker ps -aq --filter ancestor=mininet/mininet)
docker rmi mininet/mininet
4. 深度清理残留文件
# 删除配置和日志
sudo rm -rf /etc/openvswitch/
sudo rm -rf /var/log/openvswitch/
# 清理 Python 环境
pip3 uninstall mininet # 如果通过 pip 安装
三、验证操作结果
1. 验证安装成功
mn --version # 输出 Mininet 版本(如 2.3.0)
ovs-vsctl --version # 输出 Open vSwitch 版本
2. 验证卸载成功
which mn # 应返回 "mn not found"
ovs-vsctl --version # 应提示 "command not found"
四、常见问题解决
1. 安装时依赖错误
- 现象:
install.sh
报缺失依赖。 - 解决:
sudo apt install -y <缺失包名> # 根据提示安装
2. Open vSwitch 服务启动失败
- 现象:
ovs-vswitchd
无法启动。 - 解决:
sudo systemctl stop openvswitch-switch
sudo rm -rf /var/run/openvswitch/*
sudo systemctl start openvswitch-switch
3. 卸载后残留文件冲突
- 现象:重新安装时提示文件已存在。
- 解决:
sudo rm -rf /usr/local/bin/mn /usr/local/lib/python3*/dist-packages/mininet*
五、安装选项对比表
安装方式 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
源码安装 | 需要最新功能或自定义组件 | 灵活,支持最新版本 | 步骤复杂,依赖较多 |
APT 安装 | 快速验证基础功能 | 一键安装,无需编译 | 版本较旧 |
虚拟机镜像 | 跨平台使用(Windows/Mac) | 免配置,隔离环境 | 占用磁盘空间较大 |
Docker | 轻量级临时环境 | 快速启动,资源占用低 | 需熟悉 Docker 操作 |
六、总结
推荐安装方式:
- Ubuntu 用户:优先使用源码安装(
install.sh -a
),确保组件完整。 - 快速实验:使用 Docker 或虚拟机镜像。
- Ubuntu 用户:优先使用源码安装(
彻底卸载关键:
- 手动清理
/usr/local/
、/etc/openvswitch/
等目录。 - 使用
apt purge
或rm -rf
删除残留文件。
- 手动清理
故障排查:
- 查看日志:
/var/log/syslog
或journalctl -u openvswitch-switch
。 - 社区支持:Mininet GitHub Issues。
- 查看日志:
通过本指南,您应能完成 Mininet 的安装、自定义配置及彻底卸载,为 SDN 实验提供稳定环境。