gpt4 book ai didi

python - Mininet 主机无法通过主机之间的多个链接进行连接

转载 作者:行者123 更新时间:2023-12-01 02:33:58 24 4
gpt4 key购买 nike

我正在尝试在 mininet 中创建拓扑,但是如果主机通过不同交换机有两条路径,则主机无法相互连接。

我是否缺少某种路由配置?我必须手动创建路径和路由吗?我以为 Controller 是自己做的。

我使用的代码是从示例文件夹中重新调整的,注释的代码是阻止主机相互访问的内容:

#!/usr/bin/python

"""
This example creates a multi-controller network from semi-scratch by
using the net.add*() API and manually starting the switches and controllers.

This is the "mid-level" API, which is an alternative to the "high-level"
Topo() API which supports parametrized topology classes.

Note that one could also create a custom switch class and pass it into
the Mininet() constructor.
"""


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

def multiControllerNet():
"Create a network from semi-scratch with multiple controllers."

net = Mininet( controller=Controller, switch=OVSSwitch )

info( "*** Creating (reference) controllers\n" )
c1 = net.addController( 'c1', port=6633 )

info( "*** Creating switches\n" )
sw1 = net.addSwitch('s1')
sw2 = net.addSwitch('s2')
sw3 = net.addSwitch('s3')
sw4 = net.addSwitch('s4')
sw5 = net.addSwitch('s5')

info( "*** Creating hosts\n" )
cl1 = net.addHost('c1')
cl2 = net.addHost('c2')

arca = net.addHost('arca')

ag1 = net.addHost('ag1')
ag2 = net.addHost('ag2')
ag3 = net.addHost('ag3')

tr1 = net.addHost('tr1')
tr2 = net.addHost('tr2')

info( "*** Creating links\n" )
net.addLink(cl1, sw1)
net.addLink(cl2, sw3)
net.addLink(arca, sw5)
# traffic generators
net.addLink(tr1, sw1)
net.addLink(tr2, sw5)
# aggregators
net.addLink(ag1, sw2)
net.addLink(ag2, sw2)
net.addLink(ag2, sw4)
net.addLink(ag3, sw4)

net.addLink(sw1, tr1)
net.addLink(sw5, tr2)

net.addLink(sw1, sw2)
#net.addLink(sw1, sw3)
net.addLink(sw2, sw3)
net.addLink(sw3, sw4)
#net.addLink(sw3, sw5)
net.addLink(sw4, sw5)

info( "*** Starting network\n" )
net.build()
c1.start()
sw1.start( [ c1 ] )
sw2.start( [ c1 ] )
sw3.start( [ c1 ] )
sw4.start( [ c1 ] )
sw5.start( [ c1 ] )

info( "*** Testing network\n" )
net.pingAll()

info( "*** Starting apps\n" )

info( "*** Running CLI\n" )
CLI( net )

info( "*** Stopping network\n" )
net.stop()

if __name__ == '__main__':
setLogLevel( 'info' ) # for CLI output
multiControllerNet()

我在这里缺少什么?

最佳答案

发生这种情况是因为 Mininet 不理想地支持网络模拟中的循环。阅读 this link生成树算法就是为了解决这个问题。另请参阅here .

关于python - Mininet 主机无法通过主机之间的多个链接进行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46458945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com