получить номер порта хоста с помощью контроллера Pox

Я использую контроллер POX с мининетом. Чтобы определить топологию, я прослушиваю множество событий, и мне удалось получить ссылки и информацию о переключении.

Теперь я хотел бы знать, как получить всю информацию о хосте (порт на хосте, который подключен к коммутатору, и идентификатор хоста и т. Д.).

Я попробовал модуль отслеживания хоста, но получаю только Mac и IP-адрес.


person engbarakat    schedule 11.05.2017    source источник


Ответы (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

Как вы видите в комментарии, в отличие от прослушивателя событий коммутатора, который запускается при запуске, как только коммутатор подключается к контроллеру, для получения информации о хосте у нас должны быть данные, работающие в нашей сети. Выполните команду ping all в своей топологии mininet, чтобы получить всю информацию. Помните, если у вас есть собственный код контроллера для лавинной рассылки пакетов в начале, чтобы получить все хосты в вашей топологии.

Чтобы получить идентификаторы хостов, вы должны начать свою топологию мининета с аргументом --mac. Таким образом, MAC-адреса хостов похожи на 00:00:00:00:01, последние 2 цифры представляют собой идентификатор хоста.

person SotirisTsartsaris    schedule 11.05.2017
comment
Большое спасибо. Но как мне получить идентификатор или имя хоста? Также порт здесь порт коммутатора или порт хоста? как я вижу в исходном коде хост-трекера, они прослушивают пакет в событии, что означает, что этот порт является in_port, который принадлежит коммутатору - person engbarakat; 12.05.2017
comment
Я отследил исходный код pox, и информация о порте здесь получена из события packageIn, перехваченного host_tracker.py, что означает, что он исходит от коммутатора. Также мне пришлось внести некоторые изменения в исходный код, чтобы получить IP-адрес в качестве события, запущенного перед обновлением информации об IP-адресе. - person engbarakat; 12.05.2017
comment
Я изменю свою схему, поэтому я не буду использовать порт хоста, так как я думаю, что он не может использоваться для маршрутизации и т. д. - person engbarakat; 12.05.2017