(d)以上3中建立网络拓扑的方式,均是建立有规则的网络拓扑,如何自定义网络呢?语法如下:
mn --custom file.py --topo mytopo
具体使用请看下一篇:mininet自定义网络拓扑结构
(2)--switch 定义网络拓扑要使用的交换机,后面可以接的参数有:ovsk、ovsbr、ivs、lxbr、user,前面三种均为OVS型交换机,后面两种分别为内核型(linux bridge)和用户型(user)交换机。
交换机分类3类:用户型、内核型和OVS型,其中内核型和OVS型的吞吐量比用户性大很多,因此一般采用后两种。可以测试三者的TCP bandwidth(区别UDP bandwidth):
sudo mn --test iperf
sudo mn --switch user --test iperf
sudo mn --switch ovsk --test iperf
(3)--controller 一般我们不用mininet自带的控制器,而是自己制定一个远程控制器,代码如下:
mn --controller = remote,
--ip = [控制器的IP地址]
--port = [控制器的端口号]
如果--ip和--port省略的话,则默认使用本地ip地址,端口默认使用6653或6633端口号。
(4)--mac 使用这个参数可以让MAC地址从小到达排列,使得复杂的网络更清晰,容易辨识各个组件的MAC地址。不使用这个参数的话,复杂的网络容易混乱。
2.用户查看设备信息和状态的命令参数
这些命令在 mininet> 命令模式下使用,仅查看网络设备状态信息,不对网络结构进行改变
net 查看链路信息,两个设备之间的之间连线,称为一个链路,链路是双向的
nodes 查看有哪些可用节点
links 检测链路是否正常工作
pingall 检测各个主机之间的连通性
pingpair 检测前两个主机的连通性
dump 查看节点信息
3.更改网络结构的命令参数
(1)py命令
执行Python表达式,例如添加网络设备。下面举例说明:
在mininet自带的网络拓扑的基础上,我们想添加一个主机h3,并且让它和s1之间连通,且可以和其他两个主机h1和h2互相ping通。
代码如下:
py net.addHost('h3') #给当前网络net添加新的主机h3
py net.addLink(s1,h3) #为主机h3和交换机s1之间添加一条链路
py s1.attach('s1-eth3') #为交换机s1添加一个借口用于与h3相连
py h3.cmd('ifconfig h3-eth0 10.3') #为主机h3配置端口及改端口的IP地址
h1 ping h3 #重要!!h1知道h3的IP地址,而h3不知道h1的地址,因此需要h1告诉h3的地址
pingall #测试所有主机都是连通的
(2)link(和links不同),用法如下:
link s1 s2 down/up 禁用/开启s1和s2这两个节点之间的链路
(3)iperf
iperf h1 h2 测试两个主机h1和h2之间的TCP带宽
(4)iperfupd
iperfupd bw h1 h2 测试两个主机h1和h2之间的UDP带宽
(5)dpctl 对所有交换机操作流表,包括流表的显示、添加、修改、删除,具体用法,参考dpctl命令实践
(6)xterm 如xterm h1打开主机h1的操作窗口