同时使用iperf和ping mininet

问题描述

我刚开始学习计算机网络课程,我的第一份作业为我提供了一个简单的星形拓扑的mininet脚本,并要求我在h1和h2之间进行iperf测量。在iperf运行时,我应该测试h3和h4之间的ping。

我的问题是,如何使iperf测量在后台运行的数据,以便测试ping,因为iperf运行时无法输入,也无法为mininet打开新终端。

解决方法

您有两个选择:

1-使用python API

2-从CLI运行并行进程

由于您正在使用CLI进行实验,因此我将解释第二种选择。

第一步:使用单星型拓扑运行Mininet。

giuseppe@raspberrypi:~ $ sudo mn --topo single,4
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 h4
*** Adding switches:
s1
*** Adding links:
(h1,s1) (h2,s1) (h3,s1) (h4,s1)
*** Configuring hosts
h1 h2 h3 h4
*** Starting controller
c0
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet>

如果要从h1-> h2中创建一个iperf,则需要h2的IP,可以使用ifconfig找到它

mininet> h2 ifconfig
h2-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.2  netmask 255.0.0.0  broadcast 10.255.255.255
        inet6 fe80::b87a:eaff:fec1:64a0  prefixlen 64  scopeid 0x20<link>
        ether ba:7a:ea:c1:64:a0  txqueuelen 1000  (Ethernet)
        RX packets 98  bytes 14845 (14.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11  bytes 866 (866.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在h2中启动服务器,并将stdout结束stderr记录在h2.log文件中

mininet> h2 iperf -s &> h2.log &

将iperf客户端从h1运行到h2(ip = 10.0.0.2)并将输出保存在h1.log文件中(在这种情况下,我将其运行120秒,但是您可以对其进行调整)

mininet> h1 iperf -t 120 -c 10.0.0.2 &> h1.log &

现在,当iperf在后台执行时,您可以运行ping

mininet> h3 ping h4

您可以检查打开另一个外壳或完成实验后的日志

mininet> h3 ping h4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=30.7 ms
64 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=1.84 ms
64 bytes from 10.0.0.4: icmp_seq=3 ttl=64 time=0.393 ms
64 bytes from 10.0.0.4: icmp_seq=4 ttl=64 time=0.387 ms
^C
--- 10.0.0.4 ping statistics ---
4 packets transmitted,4 received,0% packet loss,time 73ms
rtt min/avg/max/mdev = 0.387/8.327/30.692/12.925 ms
mininet> exit
*** Stopping 1 controllers
c0
*** Stopping 4 links
....
*** Stopping 1 switches
s1
*** Stopping 4 hosts
h1 h2 h3 h4
*** Done
completed in 473.135 seconds
giuseppe@raspberrypi:~ $
giuseppe@raspberrypi:~ $ ls
h1.log  h2.log
,

您可以使用xterm:

xterm h1 h2 h3 h4

每个节点将获得四个xterm终端。然后,您可以在h1和h2之间运行iperf,并在h3和h4之间运行ping。

在h1上,运行: iperf -s &

在h2上,运行: iperf -s 10.0.0.1 -i 10 -t 60连接到h1。

在h3上,运行:ping 10.0.0.4 -c 10来ping h4, 或在h4上,运行ping 10.0.0.3 -c 10 ping h3。

Here is an example