我用mininet的POX控制器。为了检测拓扑,我正在收听许多事件,并成功获取链接和切换信息。
现在我想知道如何获取所有主机信息(…
使用Host Tracker,您可以获得所需的信息。添加模块
import pox.host_tracker
比你添加一个监听器 的 在里面 强> `
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,您应该使用。启动mininet拓扑 --mac ARG。这样主机的mac地址就像 00:00:00:00:01 最后2个数字代表主机的ID。
--mac
00:00:00:00:01