| Hi! Now, I’m trying to implement the match field after doing the actions. I have done all the actions and they work greats. However, for the match field I got an issue. The flow got installed on the switch but the deserialization from the stats of the match fields fails. It does not find the key of the deserializer. Does someone have any idea? Here is the REST request: VERB: PUT URL: http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/2/flow/1234 BODY: <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<flow xmlns="urn:opendaylight:flow:inventory">
<barrier>false</barrier>
<cookie>10</cookie>
<cookie_mask>10</cookie_mask>
<flags>SEND_FLOW_REM</flags>
<flow-name>FooXf1</flow-name>
<hard-timeout>0</hard-timeout>
<id>1234</id>
<idle-timeout>0</idle-timeout>
<installHw>false</installHw>
<match>
<extension-list xmlns="urn:opendaylight:openflowplugin:extension:general">
<extension-key xmlns:nxNB="urn:opendaylight:openflowplugin:extension:noviflow:match">nxNB:nxm-nfx-match-ip-payload-key
</extension-key>
<extension>
<nxm-nfx-match-ip-payload xmlns="urn:opendaylight:openflowplugin:extension:noviflow:match">
<payload>11</payload>
<mask>11</mask>
</nxm-nfx-match-ip-payload>
</extension>
</extension-list>
</match>
<instructions>
<instruction>
<apply-actions>
<action>
<order>0</order>
<nfx-action-set-payload-ip xmlns="urn:opendaylight:openflowplugin:extension:noviflow:action">
<payload_size>1</payload_size>
<payload_offset>0</payload_offset>
<hasmask>0</hasmask>
<data>9</data>
</nfx-action-set-payload-ip>
</action>
</apply-actions>
<order>0</order>
</instruction>
</instructions>
<priority>2</priority>
<strict>false</strict>
<table_id>2</table_id>
</flow> It fails with the following error: 2017-05-01 18:33:58,205 | WARN | entLoopGroup-9-1 | OFDecoder | 285 - org.opendaylight.openflowjava.openflow-protocol-impl - 0.9.0.SNAPSHOT | Message deserialization failed java.lang.IllegalStateException: Deserializer for key: msgVersion: 4 objectClass: org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry msgType: 65535 oxm_field: 2 experimenterID: 4278190082 was not found - please verify that all needed deserializers ale loaded correctly at org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializerRegistryImpl.getDeserializer(DeserializerRegistryImpl.java:70)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at org.opendaylight.openflowjava.protocol.impl.util.ListDeserializer.deserializeList(ListDeserializer.java:52)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at org.opendaylight.openflowjava.protocol.impl.util.MatchDeserializer.deserialize(MatchDeserializer.java:53)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at org.opendaylight.openflowjava.protocol.impl.util.MatchDeserializer.deserialize(MatchDeserializer.java:30)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at org.opendaylight.openflowjava.protocol.impl.deserialization.factories.MultipartReplyMessageFactory.setFlow(MultipartReplyMessageFactory.java:301)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at org.opendaylight.openflowjava.protocol.impl.deserialization.factories.MultipartReplyMessageFactory.deserialize(MultipartReplyMessageFactory.java:198)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at org.opendaylight.openflowjava.protocol.impl.deserialization.factories.MultipartReplyMessageFactory.deserialize(MultipartReplyMessageFactory.java:148)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializationFactory.deserialize(DeserializationFactory.java:55)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at org.opendaylight.openflowjava.protocol.impl.core.OFDecoder.decode(OFDecoder.java:49)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at org.opendaylight.openflowjava.protocol.impl.core.OFDecoder.decode(OFDecoder.java:26)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)[144:io.netty.codec:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[142:io.netty.transport:4.1.8.Final] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)[144:io.netty.codec:4.1.8.Final] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)[144:io.netty.codec:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[142:io.netty.transport:4.1.8.Final] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)[144:io.netty.codec:4.1.8.Final] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)[144:io.netty.codec:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[142:io.netty.transport:4.1.8.Final] at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287)[146:io.netty.handler:4.1.8.Final] at org.opendaylight.openflowjava.protocol.impl.core.IdleHandler.channelRead(IdleHandler.java:39)[285:org.opendaylight.openflowjava.openflow-protocol-impl:0.9.0.SNAPSHOT] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:642)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:565)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:479)[142:io.netty.transport:4.1.8.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:433)[142:io.netty.transport:4.1.8.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)[141:io.netty.common:4.1.8.Final] at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)[141:io.netty.common:4.1.8.Final] at java.lang.Thread.run(Thread.java:745)[:1.8.0_121] Here is how I define the deserializer key in the codec: private static final int NXM_FIELD_CODE = 0b0000010; public static final MatchEntryDeserializerKey DESERIALIZER_KEY = new MatchEntryDeserializerKey( EncodeConstants.OF13_VERSION_ID, OxmMatchConstants.EXPERIMENTER_CLASS, NXM_FIELD_CODE); I can provide any other part of the code modified to support the match. I have attached the log file with log level set to debug to org.opendaylight.openflowplugin.impl |
karaf.log.bz2
Description: BZip2 compressed data
Any help on what I’m doing wrong will be greatly appreciated. Thanks, Yann Bourdeau, M.Ing. Senior Software Developer 438-499-4607 |
_______________________________________________ openflowplugin-dev mailing list [email protected] https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev
