使用Pox控制器获取主机端口号

时间:2017-05-11 18:28:46

标签: sdn mininet pox

我使用带mininet的POX控制器。 为了检测拓扑,我正在收听许多事件并成功获取链接和切换信息。

现在我想知道如何获取所有主机信息(连接到交换机的主机端口和主机ID等...

我尝试了主机跟踪器模块,但我只获得了Mac和IP地址。

1 个答案:

答案 0 :(得分:1)

使用Host Tracker,您可以获得所需的信息。添加模块

import pox.host_tracker

init `

中添加一个监听器
core.host_tracker.addListenerByName("HostEvent", self._handle_HostEvent)  # listen to host_tracker

以及稍后实现侦听器方法

def _handle_HostEvent(self, event):
        """
        Listen to host_tracker events, fired up every time a host is up or down
        To fire up we must issue a pingall from mininet cli. 
        Args:
            event: HostEvent listening to core.host_tracker
        Returns: nada
        """
        macaddr = event.entry.macaddr.toStr()
        port = event.entry.port
        # your code here

正如您在注释中看到的那样,与交换机连接到控制器时启动时启动的交换机事件监听器不同,要获取主机信息,我们必须在网络中运行数据。在您的mininet拓扑中发出ping全部信息以获取所有信息。记住,如果您有一个自定义控制器代码,可以在开始时泛洪数据包,以获取拓扑中的所有主机。

为了获取主机的ID,您应该使用--mac arg启动mininet拓扑。这样主机的mac地址就像00:00:00:00:01,最后2个数字代表主机的ID。