С помощью 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
Как вы видите в комментарии, в отличие от прослушивателя событий коммутатора, который запускается при запуске, как только коммутатор подключается к контроллеру, для получения информации о хосте у нас должны быть данные, работающие в нашей сети. Выполните команду ping all в своей топологии mininet, чтобы получить всю информацию. Помните, если у вас есть собственный код контроллера для лавинной рассылки пакетов в начале, чтобы получить все хосты в вашей топологии.
Чтобы получить идентификаторы хостов, вы должны начать свою топологию мининета с аргументом --mac
. Таким образом, MAC-адреса хостов похожи на 00:00:00:00:01
, последние 2 цифры представляют собой идентификатор хоста.
person
SotirisTsartsaris
schedule
11.05.2017