Mininet 相关命令总结
Mininet 是一个进程虚拟化网络仿真器,可以创建由一些虚拟的主机、交换机、控制器和链路的虚拟网络,其交换机支持OpenFlow协议,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美,考虑到后面还会用mininet做一些实验,故对相关命令做个总结。
我的新书《LangChain编程从入门到实践》 已经开售!推荐正在学习AI应用开发的朋友购买阅读!
网络构建启动参数
–topo
单一拓扑:整个网络拓扑中交换机只有一个,下面可以连接多个主机
sudo mn --topo=single,3
1
2
3
4
5
6
7+--+---+
+-------+ s1 +-------+
| +--+---+ |
| | |
+-+--+ +-+--+ +--+-+
| h1 | | h2 | | h3 |
+----+ +----+ +----+线性拓扑:可以有多个交换机,但是每个交换机下面只是连接一个主机
sudo mn -topo=linear,3
1
2
3
4
5
6
7+--+--+ +--+--+ +--+--+
| s1 +-----+ s2 +-----+ s3 |
+--+--+ +--+--+ +--+--+
| | |
+--+--+ +--+--+ +--+--+
| h1 | | h2 | | h3 |
+-----+ +-----+ +-----+树形拓扑:depth设置树的深度,fanout设置每个节点下的子树个数(广度)
sudo mn --topo=tree,depth=2,fanout=2
1
2
3
4
5
6
7
8
9
10
11
12+----+
+----+ s1 +-----+
| +----+ |
| |
+--+-+ +-+--+
+---+ s2 +-+ +-+ s3 +--+
| +----+ | | +----+ |
| | | |
| | | |
+-+--+ +--+-+ +-+--+ +--+-+
| h1 | | h2 | | h3 | | h4 |
+----+ +----+ +----+ +----+自定义拓扑(重点):
sudo mn --custom mytopo.py --topo mytopo
1
2
3
4
5
6
7
8
9
10from 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, 1, 1)
self.addLink(h2, s1, 1, 2)
topos = {'mytopo': (lambda: MyTopo())}
–switch
定义网络拓扑要使用的交换机,后面可以接的参数有:ovsk、ovsbr、ivs、lxbr、user,前面三种均为OVS型交换机,后面两种分别为内核型(linux bridge)和用户型(user)交换机,其中内核型和OVS型的吞吐量比用户型大很多,因此一般采用后两种。用下面的命令测试三者的TCP bandwidth
1 | sudo mn --test iperf 内核型 |
- –controller
定义要使用的控制器,如果没有指定则使用mininet中默认的控制器
1 | sudo mn --controller=remote,--ip=[controller IP],--port=[port] |
如果–ip和–port省略的话,则默认使用本地ip地址,端口默认使用6653或6633端口号
- –mac
设置设备的 MAC 地址
内部交互命令
查看网络设备状态
1 | net 查看链路信息,两个设备之间的之间连线,称为一个链路,链路是双向的 |
更改网络结构的命令
- py命令
执行Python表达式,添加网络设备等
1 | py net.addHost('h3') #给当前网络net添加新的主机h3 |
- link
设置链路状态,link s1 s2 down/up
禁用/开启s1和s2这两个节点之间的链路
- iperf
iperf h1 h2
测试两个主机h1和h2之间的TCP带宽
- iperfupd
iperfupd bw h1 h2
测试两个主机h1和h2之间的UDP带宽
- dpctl
对所有交换机操作流表,包括流表的显示、添加、修改、删除等
- xterm
如xterm h1
打开主机h1的操作窗口
mininet 可视化
从 Mininet2.2.0 开始内置了一个mininet可视化工具miniedit,位于mininet/mininet/examples目录下的miniedit.py脚本,执行脚本后将显示Mininet的可视化界面,在界面上可进行自定义拓扑和自定义设置。使用图形界面设置好拓扑后,可以将其保存为python脚本,以后直接运行python脚本即可重现拓扑。
参考链接
Mininet 相关命令总结