云计算实验5-Mininet基本操作
Mininet简介
Mininet是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。
Mininet可以很方便地创建一个支持SDN的网络:host就像真实的电脑一样工作,可以使用ssh登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。
Mininet的特性
- 可以简单、迅速地创建一个支持用户自定义的网络拓扑,缩短开发测试周期
- 可以运行真实的程序,在Linux上运行的程序基本上可以都可以在Mininet上运行,如Wireshark
- Mininet支持Openflow,在Mininet上运行的代码可以轻松移植到支持OpenFlow的硬件设备上
- Mininet可以在自己的电脑,或服务器,或虚拟机,或者云(例如Amazon EC2)上运行
- Mininet提供python API,简单易用
- Mininet是开源项目,源代码在这里:https://github.com/mininet
实验内容
学习使用mininet基本命令
mininet命令参数分为三大类:
- 用于创建网络拓扑结构的命令参数;
- 用于查看现有(或创建好的)网络拓扑中的各个节点(设备)的网络状态(ip地址、连通性等信息);
- 用于修改当前网络拓扑,对已有的设备进行增删改查操作。
实验1. 查看现有网络拓扑中的节点网络状态的命令参数
1.0 启动 openvswitch
1 | # service openvswitch-switch start |
1.1 net
查看链路信息,两个设备之间的之间连线,称为一个链路,链路是双向的
1 | # mn |
1.2 nodes
查看有哪些可用节点
1 | mininet> nodes |
1.3 links
检测链路是否正常工作
1 | mininet> links |
1.4 pingall
检测各个主机之间的连通性
1 | mininet> pingall |
1.5 pingpair
检测前两个主机的连通性
1 | mininet> pingpair |
1.6 dump
查看节点信息
1 | mininet> dump |
1.7 exit
退出mininet命令模式
1 | mininet> exit |
实验2. 创建网络拓扑结构的命令参数
1 –topo
可以创建具有一定规则的网络拓扑结构,也可以创建自定义的网络拓扑结构。
1.1 single topo:
1 | # mn --topo=single,3 |
表示创建单个交换机3个主机的拓扑网络结构,如下图:
links用于查看链路连通性
1 | mininet> links |
dump查看节点信息
1 | mininet> dump |
exit 退出 mininet 命令模式
1 | mininet> exit |
1.2 linear topo
1 | # mn --topo=linear,5 |
表示创建一个如下图所示的网络拓扑:
links用于查看链路连通性
1 | mininet> links |
dump查看节点信息
1 | mininet> dump |
exit 退出 mininet 命令模式
1 | mininet> exit |
1.3 tree topo
1 | # mn --topo=tree,depth=2,fanout=3 |
表示创建了一个如下图所示的网络拓扑:
links用于查看链路连通性
1 | mininet> links |
dump查看节点信息
1 | mininet> dump |
exit 退出 mininet 命令模式
1 | mininet> exit |
2. –switch
定义网络拓扑要使用的交换机。
后面可以接的参数有:ovsk、ovsbr、ivs、lxbr、user,前面三种均为OVS型交换机,后面两种分别为内核型(linux bridge)和用户型(user)交换机。
交换机分类3类:用户型、内核型和OVS型,其中内核型和OVS型的吞吐量比用户性大很多,因此一般采用后两种。可以测试三者的TCP bandwidth(区别UDP bandwidth):
内核型吞吐量测试
1 | # mn --test iperf |
OVS型吞吐量测试
1 | # mn --switch ovsk --test iperf |
3. –mac
使用这个参数可以让MAC地址从小到达排列,使得复杂的网络更清晰,容易辨识各个组件的MAC地址。不使用这个参数的话,复杂的网络容易混乱。
实验3. 修改当前网络拓扑的命令参数
1. link
禁用/开启两个节点之间的链路
1 | # mn |
2. iperf
测试两个主机之间的TCP带宽
1 | mininet> iperf |
3. iperfudp
测试两个主机之间的UDP带宽
1 | mininet> iperfudp |
4. dpctl
对所有交换机操作流表,包括流表的显示、添加、修改、删除,具体用法,参考
5. xterm
如xterm h1打开主机h1的操作窗口