POX 组件监听事件
POX component listen to events
我想发现 mininet 使用 POX 组件模拟的网络拓扑。我发现我需要编写自己的组件,它正在监听 LinkEvents。类似于:
someObject.addListenerByName("LinkEvent", someFunction)
但我实际上并不知道我应该在什么样的对象上执行此操作。
如果我将其执行为
core.openflow_discovery.addListenerByName("LinkEvent", someFunction)
如 openflow.discovery 模块所述,它抛出以下错误:
AttributeError: 'openflow_discovery' not registered
使用名为"gephi"的pox模块更容易做到这一点,它应该在misc目录下,只需将此方法添加到"class GephiTopo"中的"gephi_topo.py":
def get_gephi_topology (self):
switchesAndLinksAndHosts=[self.switches,self.links, self.hosts]
return switchesAndLinksAndHosts
然后在你的 pox 控制器中的任何地方使用它,例如:
topo=gephi_topo.GephiTopo.get_gephi_topology(core.GephiTopo)
switches= topo[0]
links=topo[1]
hosts=topo[2]
通过从 launch()
.
中调用 addListenerByName
修复了它
我想发现 mininet 使用 POX 组件模拟的网络拓扑。我发现我需要编写自己的组件,它正在监听 LinkEvents。类似于:
someObject.addListenerByName("LinkEvent", someFunction)
但我实际上并不知道我应该在什么样的对象上执行此操作。
如果我将其执行为
core.openflow_discovery.addListenerByName("LinkEvent", someFunction)
如 openflow.discovery 模块所述,它抛出以下错误:
AttributeError: 'openflow_discovery' not registered
使用名为"gephi"的pox模块更容易做到这一点,它应该在misc目录下,只需将此方法添加到"class GephiTopo"中的"gephi_topo.py":
def get_gephi_topology (self):
switchesAndLinksAndHosts=[self.switches,self.links, self.hosts]
return switchesAndLinksAndHosts
然后在你的 pox 控制器中的任何地方使用它,例如:
topo=gephi_topo.GephiTopo.get_gephi_topology(core.GephiTopo)
switches= topo[0]
links=topo[1]
hosts=topo[2]
通过从 launch()
.
addListenerByName
修复了它