我使用带mininet的POX控制器。 为了检测拓扑,我正在收听许多事件并成功获取链接和切换信息。
现在我想知道如何获取所有主机信息(连接到交换机的主机端口和主机ID等...
我尝试了主机跟踪器模块,但我只获得了Mac和IP地址。
答案 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。