Ask Your Question

Controller does not send OpenFlow request to Switch

asked 2015-07-01 14:14:07 -0700

runamuck gravatar image

updated 2015-07-07 10:33:20 -0700

I sent a flow to my controller's config DataBase using a REST call using the correct node ID for the switch (not MiniNet). The controller returned a STATUS 200. I then did a GET to the same URL and the controller returned the flow.

Downstream, I have an OVS 2.3.1 switch connected to the controller via OpenFlow 1.3 on the standard port. When I do a TCP dump on the controller, I do not see the controller send anything to the switch. I do see the switch ( send my controller ( a "Echo Request" and my Controller replies:

image description

Any reason why my controller would not attempt to send the flow SouthBound?


I tried the approach jamoluhrsen wrote in the comments below. I used the stable Lithium release and only installed the odl-l2switch-switch-ui module. If I connect my switch to the controller, and then add a flow to the switch with ovs-vsctl, the controller can not see the added flow. I get this error:

015-07-07 13:16:47,250 | WARN  | entLoopGroup-6-2 | OFDecoder                        | 190 - org.opendaylight.openflowjava.openflow-protocol-impl - 0.6.0.Lithium | Message deserialization failed
java.lang.IllegalStateException: Deserializer for key: msgVersion: 4 objectClass: org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action msgType: 65535 experimenterID: 8992 was not found - please verify that all needed deserializers ale loaded correctly

If I kill the switch, and then start over and connect to the controller and ping everything, then the "first packets" of the pings go to the controller and the controller creates flows. But those flows have alien ID's:


========== Note this is the same lab scenario I have for:

edit retag flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted

answered 2015-07-07 09:59:53 -0700

jamoluhrsen gravatar image

that flow id looks like an alien ID which had some bugs that were recently fixed in Lithium. Are you using the recently released Lithium distribution? Also, when you start karaf, I tihnk you can just install one feature to get what you want "odl-l2switch-switch-ui".

edit flag offensive delete publish link more


That is right. However, if I want to install my own flows, should it also necessary to use odl-l2switch-switch-ui".?

aljoby ( 2016-01-06 22:55:17 -0700 )edit

answered 2015-07-06 15:14:31 -0700

jamoluhrsen gravatar image


my initial guess is that something is wrong with the flow internally to ODL. There are examples of flows that will post NB and exist in the config store, but do not pass internal checks and then the SB flow_mod will not be sent. One example, IIRC, is if you send a flow without a priority field.

You may find a clue in the file data/log/karaf.log Search for an exception around the time you push the flow to NB restconf.

One gotcha worth mentioning is that once the flow is in config store, sending it to NB again will not re-trigger a SB reaction. you need to first DELETE the flow via NB rest then re-send. so, typical debug workflow looks like this:

  1. PUT flow via NB rest
  2. check that it exists in config store
  3. check that it exists in operational and/or on switch

if 3 fails, check karaf.log, tcpdump, switch logs. then use DELETE on same rest call from 1 and repeat steps 1-3 changing whatever you think can help debug.

edit flag offensive delete publish link more


Thanks. When I push to the Config DB nothing happens on the karaf log. If I use this flow: with the Brocade controller, it works. Am I missing a module? Why would nothing be logged?

runamuck ( 2015-07-07 08:33:09 -0700 )edit

what features are you installing? is your switch showing up connected in the operational store?

jamoluhrsen ( 2015-07-07 09:12:12 -0700 )edit

I installed: odl-restconf-all odl-openflowplugin-all odl-l2switch-all odl-mdsal-apidocs odl-dlux-all. Also, my switch shows up in the operational store but the flows have weird names like: <flow> <id>#UF$TABLE*0-22</id>

runamuck ( 2015-07-07 09:22:53 -0700 )edit

OK, just did a Karaf Clean install, and installed that one module. Now I get an error... see edit above.

runamuck ( 2015-07-07 10:22:00 -0700 )edit

I'm having a hard time following this now, especially with two (or more) questions here on ask. Can you post *any* flow with the Lithium distribution or is it specific to this one flow using go-to-table?

jamoluhrsen ( 2015-07-07 14:46:37 -0700 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

[hide preview]

Question Tools

1 follower


Asked: 2015-07-01 14:14:07 -0700

Seen: 1,029 times

Last updated: Jul 07 '15