我使用带有 mininet 的 POX 控制器。为了检测拓扑,我正在监听许多事件,并成功获取了链接和切换信息。
现在我想知道如何获取所有主机信息(连接到交换机的主机端口和主机 ID 等...
我尝试了主机跟踪器模块,但我只得到 Mac 和 IP 地址。
使用 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 all 以获取所有信息。请记住,如果您有一个自定义控制器代码在开始时泛洪数据包以获取拓扑中的所有主机。
为了获取主机的 ID,您应该使用--mac
arg 开始您的 mininet 拓扑。这样主机的mac地址就像00:00:00:00:01
最后2个数字代表主机的ID。