Ask Your Question

Link discovery in Opendaylight not working

asked 2015-04-10 08:14:21 -0700

leclem gravatar image

updated 2015-04-23 00:48:14 -0700

Hi, I want to connect vbridges to opendaylight controller (to have the same result as I have in mininet, but without mininet)

My problem is that I get a topology like :

image description

but I want a topology like :

image description

I am connecting them to controller (doing this for all vbridges

ovs-vsctl addr-br ovs-br0

ovs-vsctl add-post ovs-br0 eth0

ovs-vsctl set controller IPCONTROLLER netmask NETMASK up

I works, vbridges are recognized, but I don't know how to set links between them. I don't understand why, I added the ports with :

ovs-vsctl add-post ovs-br0 eth1

The ports are saw in opendaylight, but opendaylight don't see the ethernet cable connection between them.

Does someone knows what I have to do ?


With L2Switch, the topology discovery works, because it installs a flow that redirects LLDP packets to controller. But with VTN, there is no such mechanism and since VTN is not compatible with L2switch, I don't know what to do.. I tried setting manually a flow that redirects LLDP packets, but the two hosts in VTN don't ping if I configure them like this : so maybe there is something more to do than just add a flow that redirects LLDP packets to controller.


edit retag flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted

answered 2015-04-23 05:19:29 -0700

leclem gravatar image

updated 2015-04-23 05:22:50 -0700

I found the solution to my problem. The only difference between mininet and my configuration was the Open vSwitch version. I tried to install the mininet version and everything worked fine.

So there is a bug in opendaylight (or in openvswitch) : Helium (first release, SR1, SR2 and SR3, I tried them all) doesn't work, for some reason, with Open vSwitch version 2.3.1 (but Hydrogen does). Instead, I had to install Open vSwitch version 2.0.2 in my switches to make my installation work.

edit flag offensive delete publish link more

answered 2015-04-10 08:40:32 -0700

jamoluhrsen gravatar image


I have seen this before and it was because the link learning process was not working. That happens via LLDP packets that the controller issues out of each port that it knows about. The controller also programs a flow in each switch to punt all LLDP packets the switch receives to the controller. So, when a packet-out sends the LLDP from one switch to the connected switch, the controller will get that LLDP and it can then know/learn that link.

to debug, in this order:

  • check that all the ports you expect are known to the controller. (a request to http://$CONTROLLER_IP:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1 will show you the ports for the switch "openflow:1")

  • check that your switches have the flow to punt LLDP packets to the controller (sudo ovs-ofctl dump-flows <switch name=""> -O OpenFlow13)</switch>

  • verify that the controller is sending packet-out with LLDP packets (tcpdump is how I would check)

  • verify that the switches are sending packet-ins for each received LLDP packet.

  • check the controller logs for any trouble (Exceptions, ERRORS, etc)

hope it helps figure it out

edit flag offensive delete publish link more


Thank you very much for your answer, it really helped me. The ports are recognized, and send LLDP packets when the switch is connected to the controller. But there is no flows to punt LLDP packets to controller : sudo ovs-ofctl dump-flows <switch name=""> -O OpenFlow13 OFPST_FLOW reply (OF1.3) (xid=0x2): Do you know how I could add one and the reason of such behavior ?

leclem ( 2015-04-13 02:23:50 -0700 )edit

Could you try to capture the openflow traffic between the controller and the switch when you first connect? Part of that transaction should be to program the LLDP punt flows. Maybe the switch is rejecting them? you might find a clue in the vswitch logs. The flows should be programmed by default.

jamoluhrsen ( 2015-04-13 11:26:19 -0700 )edit

Ok I think I just found a solution to my problem. I found it by looking at the controller traffic like you said, it never wrote the flows. The thing is that I didn't installed either l2switch or VTN to set up my network. In mininet, this wasn't necessary for opendaylight to discover the network links, but in my case it seemed necessary. In mininet, when I s1 ovs-ofctl dump-flows "s1" there is no flows installed either, so mininet has a special mechanism to advertise its links that doesn't need the LLDP mechanism... I installed l2switch, and the flows are installed and the links are discovered correctly. Next step is to try it with VTN, but for now my question is solved. Thank you very much and have a nice evening !

leclem ( 2015-04-14 07:14:29 -0700 )edit

OK now it is with the VTN manager. The l2switch app is in charge of topology discovery, but is not compatible with VTN manager, so I can't find a way to discover topology with VTN manager (I tried setting manually a flow that redirects LLDP packets, but the two hosts in VTN don't ping if I configure them like this : ) so maybe there is something more to do than just add a flow that redirects LLDP packets to controller

leclem ( 2015-04-23 00:43:33 -0700 )edit

Have you found a solution to this issue. If Yes Please share

nav ( 2016-03-22 09:01:42 -0700 )edit
Login/Signup to Answer

Question Tools

1 follower


Asked: 2015-04-10 08:14:21 -0700

Seen: 994 times

Last updated: Apr 23 '15