Контроллер SDN Pox: ARP_TYPE, IP_TYPE, но не ICMP_TYPE - PullRequest
0 голосов
/ 28 января 2019

У меня есть приложение SDN на основе Pox, которое прослушивает PacketIns для контроллера.Я хотел бы проверить, является ли пакет для контроллера ICMP.Документы Pox предоставляют пример проверки, является ли PacketIn ARP , как показано в следующем коде.

def _handle_PacketIn (self, event):
packet = event.parsed
if packet.type == packet.ARP_TYPE: # packet.ARP_TYPE is const equal to 2054
    # do something neat with the packet
    pass

Но я не могу использовать ту же логику для проверки сообщений ICMP:

def _handle_PacketIn (self, event):
packet = event.parsed
if packet.type == packet.ICMP_TYPE:
    # do something neat with the packet
    pass

Последний код возвращает ошибку:

*** AttributeError: 'ethernet' object has no attribute 'ICMP_TYPE'

Нетpacket.ICMP_TYPE, который можно увидеть, проверив dir (packet).

Package.type равен числу, представляющему протокол, и где-то в коде pox эти числа, вероятно, аккуратно выложены помимопротоколы, которые они представляют - я понятия не имею, где это может быть.Например, я вижу, что package.type моего PacketIn имеет значение 2048, но я не знаю, какой протокол представляет или как узнать.

...