同时使用iperf和ping mininet
Use iperf and ping at the same time mininet
我刚刚开始学习计算机网络课程,我的第一份作业为我提供了一个简单星形拓扑的 mininet 脚本,并要求我 运行 h1 和 h2 之间的 iperf 测量。虽然 iperf 是 运行ning,但我应该测试 h3 和 h4 之间的 ping。
我的问题是如何让 iperf 在后台测量数据到 运行 以便我可以测试 ping,因为当 iperf 运行ning 也无法打开时我无法输入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中启动服务器并在h2.log文件中记录stdout end stderr
mininet> h2 iperf -s &> h2.log &
运行 从 h1 到 h2(ip=10.0.0.2) 的 iperf 客户端并将输出保存在 h1.log 文件中(在这种情况下,我 运行 它为 120秒,但你可以调整它)
mininet> h1 iperf -t 120 -c 10.0.0.2 &> h1.log &
现在您可以 运行 ping,而 iperf 在后台执行
mininet> h3 ping h4
您可以打开另一个shell或完成实验后查看日志
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
我刚刚开始学习计算机网络课程,我的第一份作业为我提供了一个简单星形拓扑的 mininet 脚本,并要求我 运行 h1 和 h2 之间的 iperf 测量。虽然 iperf 是 运行ning,但我应该测试 h3 和 h4 之间的 ping。
我的问题是如何让 iperf 在后台测量数据到 运行 以便我可以测试 ping,因为当 iperf 运行ning 也无法打开时我无法输入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中启动服务器并在h2.log文件中记录stdout end stderr
mininet> h2 iperf -s &> h2.log &
运行 从 h1 到 h2(ip=10.0.0.2) 的 iperf 客户端并将输出保存在 h1.log 文件中(在这种情况下,我 运行 它为 120秒,但你可以调整它)
mininet> h1 iperf -t 120 -c 10.0.0.2 &> h1.log &
现在您可以 运行 ping,而 iperf 在后台执行
mininet> h3 ping h4
您可以打开另一个shell或完成实验后查看日志
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