openflow - Ryu 控制器 - simple_switch_13_stp 在失败后不重新计算树?
问题描述
我正在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。我也不明白为什么?
你知道我做的两次观察是否正常吗?如果是的话,你知道如何纠正我的实验以获得预期的行为吗?
解决方案
推荐阅读
- java - 为什么我的程序不能正确循环?(爪哇)
- ios - 为什么 UIView 会填充 superView?
- reactjs - React Native 中单个图像组件上的多个 onPress 事件
- apache - 如果虚拟文档根不存在,如何设置默认文档根?
- laravel-5 - 当课程在vue js的文本区域中时调用方法
- java - 使用 JAVA 8 Stream API 查找嵌套类的多个属性的平均值
- php - 如何在 centOS 中使用 php 7.1 安装 memcached?
- angular - canActivate 返回不需要的值
- python - 使用python在多处理期间将数据写入JSON文件
- performance - Intel Advisor:检查方法,包括所有子方法