1. mininet基本操作
Mininet是一个网络仿真器,它在单个Linux内核上运行一组终端主机,交换机,路由器和链接。它使用轻量级虚拟化使单个系统看起来像一个完整的网络,运行相同的内核,系统和用户代码。 Mininet主机的行为就像真机一样;你可以ssh到它并运行任意程序。你运行的程序可以通过看似真正的以太网接口发送数据包,具有给定的链接速度和延迟。数据包会通过一定数量的真实以太网交换机,路由器或中间盒进行处理。详见mininet
1.1 mininet命令(mininet CLI环境)
在终端输入sudo mn
,打开mininet进入CLI交互窗口。
- 基本命令:
在CLI环境下输入help
便可以获取可执行命令的信息,在2.3版本中有以下28个命令:
EOF gterm iperfudp nodes pingpair py switch
dpctl help link noecho pingpairfull quit time
dump intfs links pingall ports sh x
exit iperf net pingallfull px source xterm
输入:help command
便可以获取该命令的详细帮助信息。下面介绍几组常用命令:
mininet>nodes 查看全部节点信息
mininet>net 查看链路信息
mininet>dump 查看各节点详细信息
mininet>pingall 测试所有结点是否连通
mininet>pingpair 两个主机将互 ping
mininet>link s1 h2 up/down 启用/禁用s1跟h2之间的链路
mininet>links 报告所有链路状态
mininet>iperf h1 h2 两个节点之间用指定简单的 TCP 测试
mininet>iperfudp 10M h1 h2 两个节点之间用指定简单 udp 进行测试,10M指自己设置的带宽
mininet>time [command] 测量命令所执行的时间
mininet>xterm/gterm s1 打开某结点控制终端
mininet>sh [cmd args] 运行外部 shell 命令
mininet>px/py 执行 python 语句
mininet>source <file> 从输入文件读入命令
mininet>exit/quit/EOF 退出 mininet 命令行
- 在节点执行系统命令:
前面提到mininet采用轻量级的虚拟化技术,使得其模拟的每台主机和交换机都是独立的,所以可以像在真实主机的终端中执行命令一样,在模拟的主机或交换机上执行任何系统命令。在CLI环境中执行的格式为:node command
,command 格式和用法同Linux主机,如:
mininet>h1 ifconfig 查看h1节点网络信息
mininet>h1 ping -c 4 h2 实现两主机互连测试
mininet>h1 ifconfig h1-eth0 10.108.126.3 netmask 255.255.255.0 修改虚拟的主机的ip以及mask地址
还可以运行python脚本,比如在主机建立web服务器,并获取HTTP请求:
mininet> h1 python -m SimpleHTTPServer 80 & #在主机 h1 开启 Web 服务
mininet> h2 wget -O - h1 #在主机 h2 获取网页内容
这种用法和运行xterm node为节点打开单独的终端,在单独终端中运行系统命令一样。
1.1 dpctl 流表操作:
dpctl 和 ovs-ofctl 都是命令行的OpenFlow交换机管理工具,可以用来操作和管理流表。在CLI中管理流表的用法如下:
mininet>dpctl command [arg1] [arg2] 在所有交换机上运行 dpctl 或 ovs-ofctl 命令
1.2 mininet可视化界面
2.2.0以后版本的mininet支持可视化,在/home/mininet/mininet/examples目录下提供miniedit.py脚本,切换到相应目录下,在终端中执行:
sudo python miniedit.py
便会弹出Min