我的问题可能有点模糊,因为我显然误解了很多,但无论如何我都会试一试:假设我在一个胖Tree topology中有7个交换机,最后四个交换机分别连接到两台主机。当我启动控制器时,我指示交换机发送LLDP数据包,这就是我学习拓扑的方式。此外,我还会计算一个生成树,以便在泛洪ARP请求之类的数据包时使用。
我的问题是:如何了解某台主机连接到哪台交换机?如果h1向h3发送一个第3层数据包,我知道如何路由数据包,因为我有一个生成树,但这可能不是最短的路由。我使用Dijkstra计算从每个交换机到所有其他交换机的最短路径,但是如果我想向h3发送消息,我不知道哪个交换机直接连接到它。
有什么想法吗?
发布于 2014-12-12 06:29:38
负责执行此操作的组件是Host_tracker。您需要在代码中侦听Host_tracker事件,如下所示:
from pox.core import core
import pox
import pox.lib.packet as pkt
from pox.lib.revent import *
from pox.openflow.discovery import Discovery
from pox.host_tracker import host_tracker
import pox.openflow.libopenflow_01 as of
class YourController(EventMixin):
def __init__ (self):
def startup ():
core.openflow.addListeners(self, priority=0)
core.openflow_discovery.addListeners(self)
core.host_tracker.addListeners(self)
""" Here is the place where is created the listener"""
core.call_when_ready(startup, ('openflow','openflow_discovery', 'host_tracker'))
def _handle_HostEvent (self, event):
""" Here is the place where is used the listener"""
print "Host, switchport and switch...", event.entry
def _handle_PacketIn(self, event):
""" Packet processing """
def launch():
from host_tracker import launch
launch()
core.registerNew(YourController)https://stackoverflow.com/questions/26066259
复制相似问题