Mininet
优质
小牛编辑
134浏览
2023-12-01
Mininet 介绍
Mininet 是由斯坦福大学基于 Linux Container 架构开发的一个进程虚拟化网络仿真工具,可以创建一个含有主机、交换机、控制器的链路的虚拟网络,其交换机支持OpenFlow,具有高度灵活的自定义软件定义网络。
为OpenFlow应用程序提供一个简单、便宜的网络测试平台
启用复杂的拓扑测试,无需连接物理网络
具有拓扑感知和OpenFlow感知的CLI,用于调试或运行网络范围的测试
支持任意自定义拓扑,主机数可达4096,并包括一组基本的参数化拓扑
提供用于网络创建和实验的可扩展Python API
Mininet 安装
https://github.com/mininet/mininet/releases/
安装完成验证sudo mn --test pingall
Mininet 命令
--topo
单一(single)拓扑:整个网络拓扑中交换机有且只有一个,其下可挂一个或多个主机sudo mn --topo=single,3
线性(linear)拓扑:交换机连接呈线性排列,且每个交换机所连接的主机数目只有一个sudo mn --topo=linear,3
树形(tree)拓扑:交互机连接呈树形排列,且交换机所连接的主机一般都多个sudo mn --topo=tree,depth=2,fanout=2
depth - 交换机的深度
fanout - 每个交换机下挂的子交换机或主机数
sudo mn --custom file.py --topo mytopo
--switch
定义mininet要使用的交换机,默认使用ovsk,既OpenVSwitch交换机,常见参数,lxbr指内核态,user指用户态。
--controller
定义要使用的控制器,如果没有指定则使用mininet中默认的控制器。
连接远程控制器示例sudo mn --controller=remote,--ip=<IP>,--port=<PORT>
--mac
自定设置设备的MAC地址。
该参数目的是让 MAC 地址易读,既设置交换机的MAC,主机MAC及IP地址从小到大排序,且设置简单唯一,不仅让机器容易获取,也容易让肉眼很容易识别其ID。
使用示例sudo mn --topo=tree,depth=2,fanout=2,--mac
内部交互命令
help - 显示帮助信息mininet> help
net - 查看网络拓扑mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0
c0
links - 查看链路健壮性mininet> links
h1-eth0<->s1-eth1 (OK OK)
h2-eth0<->s1-eth2 (OK OK)
nodes - 查看可用节点mininet> nodes
available nodes are:
c0 h1 h2 s1
pingpair - 只验证前两个主机的连通性mininet> pingpair
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
pingall - 验证所有主机间的通信mininet> pingall
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
intfs - 查看网络接口信息mininet> intfs
h1: h1-eth0
h2: h2-eth0
s1: lo,s1-eth1,s1-eth2
c0:
dump - 查看节点信息mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=1551>
<Host h2: h2-eth0:10.0.0.2 pid=1553>
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=1558>
<Controller c0: 127.0.0.1:6653 pid=1544>
link - 禁用或开启节点间链路link s1 s2 up
link s1 s2 down
iperfudp - 两个节点间 UDP 带宽测试mininet> iperfudp bw h1 h2
*** Iperf: testing UDP bandwidth between h1 and h2
*** Results: ['bw', '11.8 Kbits/sec', '11.8 Kbits/sec']
iperf - 两个节点间 TCP 带宽测试mininet> iperf h1 h2
*** Iperf: testing TCP bandwidth between h1 and h2
.*** Results: ['2.45 Gbits/sec', '2.44 Gbits/sec']
dpctl - 所有交换机上流表的增、删、改、查dpctl dump-flows
xterm - 节点开启xterm 进入可视化操作界面xterm h1
py - 执行 Python 表达式py net.addSwitch("s3")
sh - 执行 BASH 表达式mininet> sh hostname
mininet-vm
Mininet 可视化 - MiniEdit
Mininet 可视化指直接在界面上编辑任意拓扑,生成Python自定义拓扑脚本,简单方便。
Mininet 2.2.0+ 内置MiniEdit,
玩转流表
**
**
**
**
**
**
**
**
**
**
**