在 Mininet 中批量执行命令
Executing commands in batch inside Mininet
给定一个 Mininet 网络,我想模拟流,例如使用 iperf。为此,我可以 运行 以下操作:
h5 iperf3 -s -p 1337 &
h6 iperf3 -s -p 1338 &
h1 iperf3 -c h5 -n 10G -b 11M -p 1337 &
h2 iperf3 -c h6 -n 10G -b 11M -p 1338 &
在 Mininet CLI 中,h1
、h2
... 代表 Mininet 拓扑中的主机。如果 Mininet 命令以主机 ID 开头,则该命令将是 运行,就像在该主机上一样。为方便起见,以后出现的任何 ID 都将替换为其 IP 地址。
这些命令有效,但我还没有找到使它们自动化的方法。我可以 运行 一个可以调用 bash 命令的 python 脚本,但是上面的命令会中断,因为上下文无法理解 mininet ID。手动输入所有这些很烦人,即使是复制粘贴工作也是如此。
有没有办法向 mininet CLI 发送一批命令?
在 Mininet documentation 中,可以使用脚本 __init__
CLI 模式。脚本的每一行都将在 CLI 中执行,不会因用户输入而停止。粗略浏览本文档会发现 CLI 用于解释和执行命令的各个方法。
这是一个例子:
myScript = "genTraffic.sh"
CLI(net, script=myScript) # Batch mode script execution
CLI(net) # Send user in the CLI for additional manual actions
我使用的脚本与问题中发布的脚本相同,带有前置 Ping 以让网络控制器和 Mininet 有时间 "see" 彼此。
h1 ping h5 -c 3
h2 ping h6 -c 3
h5 iperf3 -s -p 1337 &
h6 iperf3 -s -p 1338 &
h1 iperf3 -c h5 -n 10G -b 11M -p 1337 &
h2 iperf3 -c h6 -n 10G -b 11M -p 1338 &
Host 和 Switch python 对象也有一个名为 cmd
的方法。这是在输入以例如开头的命令时使用的方法。 h1
或 s1
在 Mininet CLI 中。我相信使用对 cmd
的一系列调用等同于批处理脚本方法。
额外提示:如果您想在 CLI 中使用 h1
或 s1
之类的标记而不用相关的 IP 地址替换它,您可以转义令牌:\h1
给定一个 Mininet 网络,我想模拟流,例如使用 iperf。为此,我可以 运行 以下操作:
h5 iperf3 -s -p 1337 &
h6 iperf3 -s -p 1338 &
h1 iperf3 -c h5 -n 10G -b 11M -p 1337 &
h2 iperf3 -c h6 -n 10G -b 11M -p 1338 &
在 Mininet CLI 中,h1
、h2
... 代表 Mininet 拓扑中的主机。如果 Mininet 命令以主机 ID 开头,则该命令将是 运行,就像在该主机上一样。为方便起见,以后出现的任何 ID 都将替换为其 IP 地址。
这些命令有效,但我还没有找到使它们自动化的方法。我可以 运行 一个可以调用 bash 命令的 python 脚本,但是上面的命令会中断,因为上下文无法理解 mininet ID。手动输入所有这些很烦人,即使是复制粘贴工作也是如此。
有没有办法向 mininet CLI 发送一批命令?
在 Mininet documentation 中,可以使用脚本 __init__
CLI 模式。脚本的每一行都将在 CLI 中执行,不会因用户输入而停止。粗略浏览本文档会发现 CLI 用于解释和执行命令的各个方法。
这是一个例子:
myScript = "genTraffic.sh"
CLI(net, script=myScript) # Batch mode script execution
CLI(net) # Send user in the CLI for additional manual actions
我使用的脚本与问题中发布的脚本相同,带有前置 Ping 以让网络控制器和 Mininet 有时间 "see" 彼此。
h1 ping h5 -c 3
h2 ping h6 -c 3
h5 iperf3 -s -p 1337 &
h6 iperf3 -s -p 1338 &
h1 iperf3 -c h5 -n 10G -b 11M -p 1337 &
h2 iperf3 -c h6 -n 10G -b 11M -p 1338 &
Host 和 Switch python 对象也有一个名为 cmd
的方法。这是在输入以例如开头的命令时使用的方法。 h1
或 s1
在 Mininet CLI 中。我相信使用对 cmd
的一系列调用等同于批处理脚本方法。
额外提示:如果您想在 CLI 中使用 h1
或 s1
之类的标记而不用相关的 IP 地址替换它,您可以转义令牌:\h1