[OPNFLWPLUG-685] Li-Plugin : Flow installation fails on OVS 2.4 switch Created: 10/May/16  Updated: 27/Sep/21  Resolved: 07/Jun/16

Status: Resolved
Project: OpenFlowPlugin
Component/s: General
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Anil Vishnoi Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 5867

 Description   

I am testing openflowpliugin-li plugin with net-virt project code and when i connect OVS 2.4 switch to the controller, flow installation fails and i see series of IllegalArgumentException "java.lang.IllegalArgumentException: Metadata not available for modification NodeModification"

Here is the full karaf log
https://gist.githubusercontent.com/vishnoianil/df4efe1b63bd4817bcf732261a5abcd1/raw/774b44f0a6fab305414aebe409c8a098e5809e3a/karaf.log

I am using the latest master and rebased luis's patch to switch the plugin. Here is my git log history

openflowplugin$ git log
commit 7464aa6aa13a8ef90a722829bec9f250432cfa33
Author: Jozef Bacigal <jbacigal@cisco.com>
Date: Wed May 4 14:43:07 2016 +0200

Bug-5523 Lifecycle conductor changes

  • changed lifecycle conductor from static thread safe singleton
    to singleton created in OpenFlowPluginImpl as are managers defined

Change-Id: I1bd21b2e3a842ce3152882a746a2b9efd3f2cb83
Signed-off-by: Jozef Bacigal <jbacigal@cisco.com>
Signed-off-by: Tomas Slusny <tomas.slusny@pantheon.sk>

commit be60232071d79bcb2f237d95f65f62bb5c83d0ce
Author: Jozef Bacigal <jbacigal@cisco.com>
Date: Tue Apr 26 14:49:03 2016 +0200

Bug-5523 CloseConnection changes

  • dependency of deviceContext removed from starting
  • lifecycle conductor thread safe now
  • role manager was not removing context from map
  • test update

Change-Id: Iadafdfb8f377326bfb76e9163ad66656b16c15f3
Signed-off-by: Jozef Bacigal <jbacigal@cisco.com>

commit 0ab4f7b6c3b033de6810dbfafc1907b8c3c724a6
Author: Jozef Bacigal <jbacigal@cisco.com>
Date: Fri Apr 15 13:13:57 2016 +0200

Bug-5523 RoleManager changes

  • all functionality moved to role manager
  • role context hold only information about status
  • life cycle conductor defined as listener to role change
  • able to register listener to start/stop master services
  • timer for initialization device disabled
  • added thrown exception when not able to write to transaction
  • added junit tests

Change-Id: I741cde5c8161dde8c45f27c6a2e1f99617a613bf
Signed-off-by: Jozef Bacigal <jbacigal@cisco.com>



 Comments   
Comment by Shuva Jyoti Kar [ 12/May/16 ]

is it something similar to ?

https://bugs.opendaylight.org/show_bug.cgi?id=4488

https://bugs.opendaylight.org/show_bug.cgi?id=2990

Comment by Anil Vishnoi [ 12/May/16 ]

I think this is related to ovs 2.4 table features.

Comment by Shuva Jyoti Kar [ 17/May/16 ]

on a single node the issue starts with TunIpv4SrcCodec as :
2016-05-17 07:18:16,536 | WARN | entLoopGroup-9-2 | OFDecoder | 285 - org.opendaylight.openflowjava.openflow-protocol-impl - 0.8.0.SNAPSHOT | Message deserialization failed
java.lang.ClassCastException: org.opendaylight.openflowjava.nx.codec.match.TunIpv4SrcCodec cannot be cast to org.opendaylight.openflowjava.protocol.api.extensibility.HeaderDeserializer

then it falls into

org.opendaylight.yangtools.yang.data.api.schema.tree.ModifiedNodeDoesNotExistException: Node /(urn:opendaylight:inventory?revision=2013-08-19)nodes/node/node[

{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:1}

]/AugmentationIdentifier

{childNames=[(urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-actions, (urn:opendaylight:flow:inventory?revision=2013-08-19)stale-group, (urn:opendaylight:flow:inventory?revision=2013-08-19)serial-number, (urn:opendaylight:flow:inventory?revision=2013-08-19)switch-features, (urn:opendaylight:flow:inventory?revision=2013-08-19)port-number, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-match-types, (urn:opendaylight:flow:inventory?revision=2013-08-19)table, (urn:opendaylight:flow:inventory?revision=2013-08-19)software, (urn:opendaylight:flow:inventory?revision=2013-08-19)ip-address, (urn:opendaylight:flow:inventory?revision=2013-08-19)meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-instructions, (urn:opendaylight:flow:inventory?revision=2013-08-19)hardware, (urn:opendaylight:flow:inventory?revision=2013-08-19)stale-meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)description, (urn:opendaylight:flow:inventory?revision=2013-08-19)group]}

/(urn:opendaylight:flow:inventory?revision=2013-08-19)table/table[

{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=51}

] does not exist. Cannot apply modification to its children.

and finally in the StatsgatheringUtils failed during write-to-tx step

Adding new flows also fails..

Comment by Shuva Jyoti Kar [ 24/May/16 ]

with the latest openflowplugin and netvirt, i donot see any errors from the datastore in the logs.

steps of reproduction
1. build ofplugin with Luis's patch
2. build netvirt
3. deploy karaf from netvirt
4. install odl-ovsdb-openstack
5. connect a ovs 2.4 switch

if i donot have log set as log:set ERROR org.opendaylight.openflowjava.protocol.impl.util

i see :

2016-05-24 11:39:40,974 | WARN | entLoopGroup-9-2 | ListDeserializer | 285 - org.opendaylight.openflowjava.openflow-protocol-impl - 0.8.0.SNAPSHOT | Problem during reading table feature property. Skipping unknown feature property: msgVersion: 4 objectClass: org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry msgType: 1 oxm_field: 31 experimenterID: null
java.lang.ClassCastException: org.opendaylight.openflowjava.nx.codec.match.TunIpv4SrcCodec cannot be cast to org.opendaylight.openflowjava.protocol.api.extensibility.HeaderDeserializer
at org.opendaylight.openflowjava.protocol.impl.util.ListDeserializer.deserializeHeaders(ListDeserializer.java:79)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.8.0.SNAPSHOT]
at org.opendaylight.openflowjava.protocol.impl.deserialization.factories.MultipartReplyMessageFactory.createTableFeaturesProperties(MultipartReplyMessageFactory.java:443)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.8.0.SNAPSHOT]
at org.opendaylight.openflowjava.protocol.impl.deserialization.factories.MultipartReplyMessageFactory.setTableFeatures(MultipartReplyMessageFactory.java:378)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.8.0.SNAPSHOT]
at org.opendaylight.openflowjava.protocol.impl.deserialization.factories.MultipartReplyMessageFactory.deserialize(MultipartReplyMessageFactory.java:231)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.8.0.SNAPSHOT]
at org.opendaylight.openflowjava.protocol.impl.deserialization.factories.MultipartReplyMessageFactory.deserialize(MultipartReplyMessageFactory.java:148)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.8.0.SNAPSHOT]
at org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializationFactory.deserialize(DeserializationFactory.java:59)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.8.0.SNAPSHOT]
at org.opendaylight.openflowjava.protocol.impl.core.OFDecoder.decode(OFDecoder.java:55)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.8.0.SNAPSHOT]
at org.opendaylight.openflowjava.protocol.impl.core.OFDecoder.decode(OFDecoder.java:28)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.8.0.SNAPSHOT]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89)[138:io.netty.codec:4.0.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)[137:io.netty.transport:4.0.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)[137:io.netty.transport:4.0.36.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:277)[138:io.netty.codec:4.0.36.Final]

else i find the connection to be extremely peaceful. and fresh flow provisioning also works now .
@

Comment by Icaro Camelo [ 06/Jun/16 ]

I've just tested it and it's working fine with the latest version on master.
Karaf log: http://pastebin.com/xPNVSaBp

Comment by Anil Vishnoi [ 07/Jun/16 ]

I also tested the latest openflowplugin master branch (Li design) with netvirt project and i was not able to recreate the issue. So this issue is fixed now.

Generated at Wed Feb 07 20:33:07 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.