Событие FlowRemoved в SDN контроллера Pox - PullRequest
0 голосов
/ 16 октября 2019

Я хочу рассчитать пропускную способность потока, когда сообщение FlowRemoved отправляется коммутатором на контроллер. Но я не могу найти, когда это срабатывает. Я попытался с помощью добавления прослушивателей для события FlowRemoved в функции запуска, но функция не запускается. Код:

def _handle_PacketIn (self, event):

    """
    Handles packet in messages from the switch.
    """
    print "PacketIn handle."
    packet = event.parsed # This is the parsed packet data.
    if not packet.parsed:
      log.warning("Ignoring incomplete packet")
      return

    packet_in = event.ofp # The actual ofp_packet_in message.

    # Comment out the following line and uncomment the one after
    # when starting the exercise.
    # self.act_like_hub(packet, packet_in)
    self.act_like_switch(packet, packet_in)


  def _handle_flow_removal (self, event):
    print"Flow Removed"

def launch ():
  """
  Starts the component
  """
  def start_switch (event):
    print("Called Listener Start Switch")
    log.debug("Controlling %s" % (event.connection,))
    Tutorial(event.connection)
  def flow_removal (event):
    print("Called listener flow removed.")
    log.debug("Controlling %s" % (event.connection,))
    Tutorial(event.connection)
  core.openflow.addListenerByName("ConnectionUp", start_switch)
  core.openflow.addListenerByName("FlowRemoved", flow_removal)

Ниже приведено сообщение, отображаемое при выполнении файла контроллера pox (pox.py) с приведенным выше кодом. Вызывается Listener Start Switch :: Print оператор в функции start_switch. PacketIn :: Print Заявление в методе _handle_PacketIn.

POX 0.2.0 (carp) / Copyright 2011-2013 James McCauley, et al.
INFO:core:POX 0.2.0 (carp) is up.
INFO:openflow.of_01:[00-00-00-00-00-01 1] connected
Called Listener Start Switch
PacketIn handle.
PacketIn handle.

Используемая топология является линейной топологией с 4 хостами. Затем я пинговал h3, используя h1, и отображается сообщение с дескриптором PacketIn.

mininet> h1 ping h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=3.89 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=30.9 ms
--- 10.0.0.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 3.895/17.405/30.916/13.511 ms

У меня два вопроса:1. Почему прослушиватель FlowRemoved не является шагом и handle_flow_removal не запускается после истечения потоков (время простоя = 60). 2. Приведенный выше код предназначен для изучения коммутатора. Почему в ping для одного потока получено два сообщения PacketIn?

...