我是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,反之亦然。
提前致谢。
答案 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])
这定义了开关连接到哪个控制器。希望这会有所帮助。