Hi all,
I have been experiencing unexpected loss of LLDP packets when running
discovery.py in POX, for different tree topologies in Mininet.
The loss only starts to occur for a network size of more than ~20 switches, and
seems to happen between a pair of switches.
There is no other traffic on the network, and no other application running in
POX.
Below are some more details.
I have made a tree topology with depth 5 and fanout 2 which means that we have
31 switches and 32 host. As I understand, in discovery.py the controller sends
packet_out messages to all switches, instructing them to send a LLDP packet via
each of its ports. When an LLDP packet is received by a switch at the other end
of the link, the switch sends a packet_in message to the controller, and the
controller can detect a link between these two switches/ports.
Based on this, the controller should receive 2 packet_in messages for each link
in the network, one for each direction.
In my experiments, this works fine for small networks of < 20 switches.
However, for larger networks, I’m starting to see a lower than expected number
of packet_in messages received at the controller.
For example in our example tree topology, the controller should receive 60
packet_in messages during a single topology discovery round, but consistently
only gets 55-58.
I’ve used wireshark to investigate where the packet loss occurs, and it looks
like some LLDP packets are lost in transit between switches.
An example is shown below. The first example shows a case without packet loss,
i.e. we see the packet_out message, the corresponding LLDP packet at the sender
side and at the receiver side, and the corresponding packet_in message.
The case with both packet_out and In:
OFP+LLDP 133 Packet Out (CSM) (67B) => Chassis Id = dpid:19 Port Id = 1
TTL = 120
LLDP 43 Chassis Id = dpid:19 Port Id = 2 TTL = 120 (sender side)
LLDP 43 Chassis Id = dpid:19 Port Id = 2 TTL = 120 (reciever side)
OFP+LLDP 127 Packet In (AM) (61B) => Chassis Id = dpid:19 Port Id = 2
TTL = 120
The following example shows the same thing, with the difference that the LLDP
packet is sent but not received:
The case that packet_In lost:
OFP+LLDP 133 Packet Out (CSM) (67B) => Chassis Id = dpid:19 Port Id = 1
TTL = 120
LLDP 43 Chassis Id = dpid:19 Port Id = 2 TTL = 120 (sender side)
As mentioned, there is no other traffic, and the load on each link is only 2
LLDP packets, one in each direction, and links are configured to be reliable,
so as far as I understand, there should be no packet loss.
I’m using the following software:
Mininet version 2.0
POX version betta
My questions is: Has anybody experienced similar problems, or does anybody
have an idea of what the problem could be?
Any help would be greatly appreciated.
Best regards,
Farzaneh