mininet使用python代码连接到远程ODL控制器

时间:2018-04-10 14:03:38

标签: sdn mininet opendaylight

我是mininet的新手,我想看看使用opendaylight(碳)控制器的网络拓扑。我试过命令:

sudo mn --topo linear,3 --mac \
    --controller=remote,ip=10.109.253.152,port=6633 \
    --switch ovs,protocols=OpenFlow13,stp=1

opendaylight可以成功显示整个拓扑。然后,我想通过单独使用python代码来显示相同​​的结果。但是,它没有用。

#!/usr/bin/python

from mininet.net import Mininet
from mininet.node import RemoteController, OVSSwitch
from mininet.log import info, setLogLevel
from mininet.cli import CLI

def RemoteCon():
    net = Mininet(controller=RemoteController, switch=OVSSwitch)

    c1 = net.addController('c1', ip='10.109.253.152',port=6633)
    h1 = net.addHost('h1')
    h2 = net.addHost('h2')
    s1 = net.addSwitch('s1')
    net.addLink(s1, h1)
    net.addLink(s1, h2)

    net.build()
    net.start()

    CLI(net)

    net.stop()

if __name__ == '__main__':
    setLogLevel('info')
    RemoteCon()

哦顺便问一下,交换机是否具有默认转发功能?有时,我有主机和交换机相互连接,主机可以在运行上面的代码时相互ping通,h1不能ping h2,反之亦然。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我假设你在OpenDaylight中使用了l2switch功能。

如果你搜索这个论坛,你会发现其他人抱怨不一致 使用l2switch时的连接。你可能会遇到错误,但是 重新启动OpenDaylight后,它可能没问题。默认情况下,使用l2switch 它应该学习拓扑的链接,并创建允许的流程 所有主机都要ping每个其他主机。

至于运行mininet的python脚本,我没有看到任何明显的东西。 你能看一下OpenDaylight karaf.log中的任何线索吗?或者检查一下 OVS记录其他线索?如果你只是没有看到任何东西 在拓扑查看器中,我的猜测是OVS没有连接 完全是OpenDaylight。

要仔细检查一件事。我不知道python脚本是如何决定的 要使用哪个openflow版本,但也许它使用的是1.0,那就是 与命令行有很大不同,命令行将其设置为1.3?

答案 1 :(得分:0)

我看到您错过了启动与控制器通信的开关的机会。尝试

s1.start([c1])

这定义了开关连接到哪个控制器。希望这会有所帮助。