我有一个在Mininet上运行的自定义拓扑,它有两个开关s1和s2。我用pox做控制器。我已经编写了一个python代码来识别开关,这是正确的方法吗?还有其他更好的方法我可以用吗?有人能提出其他的选择吗?
代码:
from pox.core import core
import pox.openflow.libopenflow_01 as of
from pox.lib.util import dpidToStr
log = core.getLogger()
s1_dpid=0
s2_dpid=0
def _handle_ConnectionUp (event):
global s1_dpid, s2_dpid
print "ConnectionUp: ",
dpidToStr(event.connection.dpid)
#remember the connection dpid for switch
for m in event.connection.features.ports:
if m.name == "s1-eth1":
s1_dpid = event.connection.dpid
print "s1_dpid=", s1_dpid
elif m.name == "s2-eth1":
s2_dpid = event.connection.dpid
print "s2_dpid=", s2_dpid
例如,要在mininet中查找开关“s1”dpid,可以使用:
但是,如果您想在POX中看到它,最好的方法是在类似Pycharm的IDE中运行您的组件,该IDE允许您在控制器运行时使用下面的代码调试POX组件:
此链接http://squarey.me/cloud-virtualization/pox-controller-learning-four.html 提供从所有交换机侦听ConnectionUp事件并获取dpid的POX组件的示例
1。在POX目录中使用组件脚本“connectionDown.py”:
2-(POX控制器xterm)使用自定义组件启动POX控制器
3-(mininet xterm)使用多个交换机启动mininet拓扑
4-返回POX控制器xterm,以下是在POX xterm中观察到的情况:
5-S#POX应对rhe开关的任何变化作出反应:
4-返回POX控制器xterm:
在函数中(每当交换机或路由器启动时调用):
启动的交换机/路由器的ID可以通过以下方式检索:
这些id通常按照从1到设备数量的顺序进行分配。
相关问题 更多 >
编程相关推荐