Я хочу рассчитать пропускную способность потока, когда сообщение 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?