我正在mininet
使用Ryu controller
.
对于Ryu controller
我正在使用的命令:
ryu-manager simple_switch_stp_13.py
关于mininet
我使用文件中定义的拓扑Topo1.py
:
from mininet.topo import Topo
class Project( Topo ):
def __init__( self ):
# Initialize topology
Topo.__init__( self )
# Add hosts
h1 = self.addHost('h1')
h2 = self.addHost('h2')
# Add switches
s1 = self.addSwitch('s1')
s2 = self.addSwitch('s2')
s3 = self.addSwitch('s3')
s4 = self.addSwitch('s4')
# Add links
self.addLink(h1,s1)
self.addLink(s1,s2)
self.addLink(s2,s4)
self.addLink(s3,s1)
self.addLink(s3,s4)
self.addLink(h2,s4)
topos = { 'myTopo': ( lambda: Project() )}
然后我mininet
使用命令运行:
sudo mn --custom Topo1.py --topo=myTopo --switch ovsk --controller=remote --mac
他们之间的联系是完美的;我成功地从主机 1 到主机 2 运行 ping。我想要做的是切断与 s1 和 s2 的链接(不停止 h1 和 h2 之间的 ping)。
其次,我遇到的问题:根据https://osrg.github.io/ryu-book/en/Ryubook.pdf第 65 页,我使用了以下命令:
link s1 s2 down.
但是,我可以观察到使用控制器发送的wireshark,作为对请求交换机重新启动接口的Port_Mod
反应。Port_Status
交换机执行此操作,因此 ping 通过 s1 和 s2 之间的接口重新传递。我不明白为什么控制器会发送这个Port_Mod
?
在https://osrg.github.io/ryu-book/en/Ryubook.pdf第 65 页中,他们没有这个问题。
然后,我尝试了命令:
py net.delLinkBetween(s1, s2)
链接被完全删除,控制器通过端口状态通知,但根,根的成本......根本没有进化。然后,ping 不会重新启动,也不会经过 s3。我也不明白为什么?
你知道我做的两次观察是否正常吗?如果是的话,你知道如何纠正我的实验以获得预期的行为吗?