2

我和我的朋友试图重现这个 mininet-test 实验:https ://github.com/mininet/mininet-tests/tree/master/dctcp

我们自己创建了一个 VM,并在内核版本 3.18.9 的 ubuntu 上安装了 Mininet 2.2,其中包括 dctcp 和 tcp_probe 功能。

由于作者建议内核版本 3.0.1 不支持我们在 Mininetnet 中需要的那些功能。我们只是简单地更改了 dctcp.py 中的一些函数名称,例如:add_host更改为addHostadd_switch更改为addSwitchadd_link更改为addLink

我们还导入了一些我们需要的python函数,例如:python-matplotlibpython-termcolorbwm-ng

但是我们在绘制图形的时候还是会遇到以下问题——cwnd.png。

我们是否缺少一些重要的库或任何代码需要更改?

    .Traceback (most recent call last):
      File "dctcp.py", line 250, in <module>
        main()
      File "dctcp.py", line 244, in main
        net.stop()
      File "build/bdist.linux-x86_64/egg/mininet/net.py", line 514, in stop
      File "build/bdist.linux-x86_64/egg/mininet/link.py", line 479, in stop
      File "build/bdist.linux-x86_64/egg/mininet/link.py", line 472, in delete
      File "build/bdist.linux-x86_64/egg/mininet/link.py", line 199, in delete
      File "build/bdist.linux-x86_64/egg/mininet/link.py", line 64, in cmd
      File "build/bdist.linux-x86_64/egg/mininet/node.py", line 350, in cmd
      File "build/bdist.linux-x86_64/egg/mininet/node.py", line 269, in sendCmd
    AssertionError
    s1
    s1-eth1
    s1-eth2
    s1-eth3
    total
    ['tcp-n3-bw100/qlen_s1-eth1.txt']
4

3 回答 3

2

我也遇到了这个问题,发现如果你看一下:https ://github.com/bigswitch/mininet/blob/master/mininet/node.py并且在monitor()函数部分你会看到这个函数设置等待标志 = False。

所以代码可以

h1.sendCmd(startbackground_service)
h2.cmd(something_else)
h3.cmd(use_h1_service)
.....
#at some point end h1's background service, naturally or unnaturally
h1.monitor() # will check the service, and set waiting=False
于 2015-08-17T21:23:53.287 回答
1

对我来说h1.monitor(),没有在类似的情况下工作,mininet 2.3.0所以我替换了sendCmd()withpopen()然后使用了该terminate()功能。

使用上面的示例,我将其更改为:

p1 = h1.popen(startbackground_service)
h2.cmd(something_else)
h3.cmd(use_h1_service)
.....

p1.terminate()
于 2021-05-23T05:57:46.920 回答
0

该代码似乎waiting在调用结束时设置了一个标志,该标志在每次运行该方法时都会sendCmd()被检查。False当收到命令的结果时,它似乎被重置。

因此,在收到第一个命令的响应之前,您无法发送第二个命令。这可能只是一个竞争条件,但恕我直言,图书馆应该以更聪明和透明的方式处理这种情况。

于 2015-03-22T06:34:34.953 回答