Tomas,

I ran the test again from scratch and captured the logs, here:

https://drive.google.com/file/d/0B20dtomeEJsVZno2SkFkc05XUkk/view?usp=sharing

Regards,

Brady

-----Original Message-----
From: Brady Allen Johnson 
<[email protected]<mailto:brady%20allen%20johnson%20%[email protected]%3e>>
To: [email protected] 
<[email protected]<mailto:%[email protected]%22%20%[email protected]%3e>>,
 [email protected] 
<[email protected]<mailto:%[email protected]%22%20%[email protected]%3e>>,
 [email protected] 
<[email protected]<mailto:%[email protected]%22%20%[email protected]%3e>>
Subject: Re: [openflowplugin-dev] Regression in OpenflowPlugin related to 
decoding NSH fields
Date: Wed, 26 Apr 2017 14:51:22 +0000


Ya, I added the code to create the flow match below in a previous email in the 
addMatchNshMdtype(MatchBuilder match, short mdType) and the void 
addExtension(...) functions.

I realized after sending you those logs that they werent exactly the same case. 
Even though I did a karaf clean, I didnt clean up everything in OVS. Even 
still, just creating a flow with that match and a simple drop or goto_table 
action should recreate it easily.

Would you like me to reproduce the situation exactly again, and send you the 
logs?

Thanks,

Brady


-----Original Message-----
From: Tomáš Slušný 
<[email protected]<mailto:%3d%3futf-8%3fq%3ftom%3dc3%3da1%3dc5%3da1_slu%3dc5%3da1n%3dc3%3dbd%3f%3d%20%[email protected]%3e>>
To: Brady Allen Johnson 
<[email protected]<mailto:brady%20allen%20johnson%20%[email protected]%3e>>,
 [email protected] 
<[email protected]<mailto:%[email protected]%22%20%[email protected]%3e>>,
 Jozef Bacigál 
<[email protected]<mailto:jozef%20%3d%3fiso-8859-1%3fq%3fbacig%3de1l%3f%3d%20%[email protected]%3e>>
Subject: Re: [openflowplugin-dev] Regression in OpenflowPlugin related to 
decoding NSH fields
Date: Wed, 26 Apr 2017 14:16:50 +0000


Can you also send us flow what are you adding? Because I tried with some random 
flow with extension and it looks like it is working properly. But from your 
karaf logs it seems that deserialization is failing on match entry because it 
have incorrect oxm class (from logs I see it is 1, what do not makes any sense, 
it should be either 32768 or 65535 for experimenter).


________________________________
Od: Brady Allen Johnson <[email protected]>
Odoslané: streda, 26. apríla 2017 14:55
Komu: [email protected]; Jozef Bacigál; Tomáš Slušný
Predmet: Re: [openflowplugin-dev] Regression in OpenflowPlugin related to 
decoding NSH fields


Ok, I stopped karaf. Changed the parameter to false and started karaf cleanly 
(bin/karaf clean) and didnt see the exceptions, but the flows are not created.

I did the same again, setting the value back to true, and now get the 
exceptions again. There are several log files, so I gzip tar'ed them all up 
into 1 file here:

https://drive.google.com/file/d/0B20dtomeEJsVeWM0aXBSLTUyb1k/view?usp=sharing

All you need to do is untar them somewhere and do this: "grep -i mdtype *" and 
you'll see the exceptions.

Like I said, Im using a distro built from the netvirt/vpnservice source code 
directory. Im installing this karaf feature "odl-netvirt-sfc".

Thanks,

Brady

-----Original Message-----
From: Jozef Bacigál 
<[email protected]<mailto:jozef%20%3d%3fiso-8859-1%3fq%3fbacig%3de1l%3f%3d%20%[email protected]%3e>>
To: Tomáš Slušný 
<[email protected]<mailto:%3d%3futf-8%3fq%3ftom%3dc3%3da1%3dc5%3da1_slu%3dc5%3da1n%3dc3%3dbd%3f%3d%20%[email protected]%3e>>,
 Brady Allen Johnson 
<[email protected]<mailto:brady%20allen%20johnson%20%[email protected]%3e>>,
 [email protected] 
<[email protected]<mailto:%[email protected]%22%20%[email protected]%3e>>
Subject: Re: [openflowplugin-dev] Regression in OpenflowPlugin related to 
decoding NSH fields
Date: Wed, 26 Apr 2017 12:43:06 +0000


The cfg file is only for you r information, it isn't working anymore on the 
fly. Correct me Tomas if I am wrong.


But yes try to set single-layer-serialization to false.


Jozef

________________________________
Od: Tomáš Slušný
Odoslané: streda, 26. apríla 2017 14:28:58
Komu: Brady Allen Johnson; [email protected]; Jozef 
Bacigál
Predmet: Re: [openflowplugin-dev] Regression in OpenflowPlugin related to 
decoding NSH fields


Hi Brady,


can you try this with single-layer-serialization set to false? But as you said, 
this issue do not makes much sense, that 2 patches by me that was merged should 
not have anything to do with this issue, so I am not really sure what caused 
this. Can you send also full karaf.log please?


Thanks,

Tomas

________________________________
Od: Brady Allen Johnson <[email protected]>
Odoslané: streda, 26. apríla 2017 14:21
Komu: [email protected]; Jozef Bacigál
Predmet: Re: [openflowplugin-dev] Regression in OpenflowPlugin related to 
decoding NSH fields


Jozef,

Thanks for the info.

Im using a karaf distro built locally from source code in the Netvirt project. 
By default, before starting karaf, I dont find that parameter anywhere. Once 
karaf starts, I find that param in:

netvirt/vpnservice/distribution/karaf/target/assembly/etc/org.opendaylight.openflowplugin.cfg


The file is created with that parameter commented out. I uncomment it and set 
the value to "true", and restarted karaf cleanly "bin/karaf clean".

I still see the exception, and it is thrown continuously like before, just 
filling up the logs.


The thing about the exception is, I can see why its complaining:


java.lang.ClassCastException:

org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.NshMdtypeCaseValueBuilder$NshMdtypeCaseValueImpl


cannot be cast to


org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.NshNpCaseValue

Somehow its trying to cast NshMdtypeCaseValueBuilder$NshMdtypeCaseValueImpl to 
NshNpCaseValue, which doesnt make sense as they are 2 very different things.

Thanks,

Brady

-----Original Message-----
From: Jozef Bacigál 
<[email protected]<mailto:jozef%20%3d%3fiso-8859-1%3fq%3fbacig%3de1l%3f%3d%20%[email protected]%3e>>
To: Brady Allen Johnson 
<[email protected]<mailto:brady%20allen%20johnson%20%[email protected]%3e>>,
 [email protected] 
<[email protected]<mailto:%[email protected]%22%20%[email protected]%3e>>
Subject: Re: [openflowplugin-dev] Regression in OpenflowPlugin related to 
decoding NSH fields
Date: Wed, 26 Apr 2017 11:02:53 +0000


Check for this:


use-single-layer-serialization config parameter is updated (false -> true)

________________________________
Od: Jozef Bacigál <[email protected]>
Odoslané: streda, 26. apríla 2017 12:23:15
Komu: Brady Allen Johnson; [email protected]
Predmet: Re: [openflowplugin-dev] Regression in OpenflowPlugin related to 
decoding NSH fields


Hi Brady,


there was only two patches merged lately (April 24 and 25) both from Tomas. 
Second change prevent change single layer on the fly and first one changes the 
way how you set up initial values into plugin. Assume you configuration using 
now different setting as it was before. Check it, especially the single layer 
setting.


Jozef

________________________________
Od: Brady Allen Johnson <[email protected]>
Odoslané: streda, 26. apríla 2017 12:10:21
Komu: [email protected]
Predmet: [openflowplugin-dev] Regression in OpenflowPlugin related to decoding 
NSH fields


Hello,

I started having problems with the OpenflowPlugin on Master today while trying 
to create an NSH (Network Services Header) related flow. This worked yesterday, 
April 25, but no longer works today.

This is the code to create the flow match, which seems to be the problematic 
field as seen below in the exception stack:


    public static void addMatchNshMdtype(MatchBuilder match, short mdType) {

        NxAugMatchNodesNodeTableFlow amMdtype = new 
NxAugMatchNodesNodeTableFlowBuilder()

                .setNxmNxNshMdtype(new 
NxmNxNshMdtypeBuilder().setValue(mdType).build()).build();

        addExtension(match, NxmNxNshMdtypeKey.class, amMdtype);

    }


    private static void addExtension(MatchBuilder match, Class<? extends 
ExtensionKey> extensionKey,

                                     NxAugMatchNodesNodeTableFlow am) {

        GeneralAugMatchNodesNodeTableFlow existingAugmentations = match

            .getAugmentation(GeneralAugMatchNodesNodeTableFlow.class);

        List<ExtensionList> extensions = null;

        if (existingAugmentations != null) {

            extensions = existingAugmentations.getExtensionList();

        }

        if (extensions == null) {

            extensions = new ArrayList<>();

        }


        extensions.add(new ExtensionListBuilder().setExtensionKey(extensionKey)

            .setExtension(new 
ExtensionBuilder().addAugmentation(NxAugMatchNodesNodeTableFlow.class, 
am).build())

            .build());


        GeneralAugMatchNodesNodeTableFlow generalAugMatchNodesNode = new 
GeneralAugMatchNodesNodeTableFlowBuilder()

            .setExtensionList(extensions).build();

        match.addAugmentation(GeneralAugMatchNodesNodeTableFlow.class, 
generalAugMatchNodesNode);

    }



I get this exception repeatadly:



2017-04-26 11:13:33,365 | WARN  | entLoopGroup-7-1 | OFDecoder                  
      | 294 - org.opendaylight.openflowjava.openflow-protocol-impl - 
0.10.0.SNAPSHOT | Message deserialization failed

java.lang.ClassCastException: 
org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.NshMdtypeCaseValueBuilder$NshMdtypeCaseValueImpl
 cannot be cast to 
org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.NshNpCaseValue

        at 
org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.NshNpConvertor.convert(NshNpConvertor.java:41)[316:org.opendaylight.openflowplugin.extension-nicira:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.NshNpConvertor.convert(NshNpConvertor.java:38)[316:org.opendaylight.openflowplugin.extension-nicira:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowplugin.openflow.md.core.extension.MatchExtensionHelper.processExtension(MatchExtensionHelper.java:199)[304:org.opendaylight.openflowplugin:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowplugin.openflow.md.core.extension.MatchExtensionHelper.injectExtension(MatchExtensionHelper.java:69)[304:org.opendaylight.openflowplugin:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.match.MatchDeserializer.deserializeEntry(MatchDeserializer.java:102)[305:org.opendaylight.openflowplugin.impl:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.match.MatchDeserializer.deserialize(MatchDeserializer.java:59)[305:org.opendaylight.openflowplugin.impl:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.match.MatchDeserializer.deserialize(MatchDeserializer.java:33)[305:org.opendaylight.openflowplugin.impl:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart.MultipartReplyFlowStatsDeserializer.deserialize(MultipartReplyFlowStatsDeserializer.java:88)[305:org.opendaylight.openflowplugin.impl:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart.MultipartReplyFlowStatsDeserializer.deserialize(MultipartReplyFlowStatsDeserializer.java:39)[305:org.opendaylight.openflowplugin.impl:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart.MultipartReplyMessageDeserializer.deserialize(MultipartReplyMessageDeserializer.java:43)[305:org.opendaylight.openflowplugin.impl:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart.MultipartReplyMessageDeserializer.deserialize(MultipartReplyMessageDeserializer.java:22)[305:org.opendaylight.openflowplugin.impl:0.5.0.SNAPSHOT]

        at 
org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializationFactory.deserialize(DeserializationFactory.java:55)[294:org.opendaylight.openflowjava.openflow-protocol-impl:0.10.0.SNAPSHOT]

        at 
org.opendaylight.openflowjava.protocol.impl.core.OFDecoder.decode(OFDecoder.java:49)[294:org.opendaylight.openflowjava.openflow-protocol-impl:0.10.0.SNAPSHOT]

        at 
org.opendaylight.openflowjava.protocol.impl.core.OFDecoder.decode(OFDecoder.java:26)[294:org.opendaylight.openflowjava.openflow-protocol-impl:0.10.0.SNAPSHOT]

        at 
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)[141:io.netty.codec:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)[141:io.netty.codec:4.1.8.Final]

        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)[141:io.netty.codec:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)[141:io.netty.codec:4.1.8.Final]

        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)[141:io.netty.codec:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287)[143:io.netty.handler:4.1.8.Final]

        at 
org.opendaylight.openflowjava.protocol.impl.core.IdleHandler.channelRead(IdleHandler.java:39)[294:org.opendaylight.openflowjava.openflow-protocol-impl:0.10.0.SNAPSHOT]

        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)[139:io.netty.transport:4.1.8.Final]

        at 
io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:1018)[144:io.netty.transport-native-epoll:4.1.8.Final]

        at 
io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:394)[144:io.netty.transport-native-epoll:4.1.8.Final]

        at 
io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:288)[144:io.netty.transport-native-epoll:4.1.8.Final]

        at 
io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)[138:io.netty.common:4.1.8.Final]

        at 
io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)[138:io.netty.common:4.1.8.Final]

        at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]


Thanks,

Brady


_______________________________________________
openflowplugin-dev mailing list
[email protected]<mailto:[email protected]>
https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev

_______________________________________________
openflowplugin-dev mailing list
[email protected]
https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev

Reply via email to