This message can be ignored.   I believe I discovered the root of my issue.  
The IPv6 Destination address was erroneously included in the packet data which 
caused the builder to fail to construct the layer3 match data.

Allain

Allain Legacy, Software Developer, Wind River
direct 613.270.2279  fax 613.492.7870 skype allain.legacy
350 Terry Fox Drive, Suite 200, Ottawa, Ontario, K2K 2W5

 


> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of
> Legacy, Allain
> Sent: Saturday, January 06, 2018 4:30 PM
> To: [email protected]
> Subject: [openflowplugin-dev] malformed builder exception for ipv6-nd-
> target
> 
> Hi,
> I am having some difficulty debugging an issue that we are seeing with a
> PACKET_IN message being received at the controller (stable/nitrogen) and
> being reported as malformed.    A packet is hitting a rule in table 45 which 
> is
> matching a IPv6 Neighbor Solicitation message and sending that packet up to
> the controller.  The rule which is being matched, the debug logs, and the
> wireshark output is included at the end of this message.
> 
>  This is the error being reported:
> 
> 2018-01-06 19:27:12,719 | WARN  | entLoopGroup-7-3 | OFDecoder
> | 369 - org.opendaylight.openflowplugin.openflowjava.openflow-protocol-
> impl - 0.5.1 | Message deserialization failed
> java.lang.IllegalArgumentException: Match:
> org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.
> MatchBuilder@55ed6a53 is malformed,
> org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.
> MatchBuilder@55ed6a53#layer3Match#ipv6NdTarget contains invalid data.
> 
> 
> The bytes associated to the OFPXMT_OFB_IPV6_ND_TARGET which can be
> found in the OFDecoder log (below) are as follows:
> 
> 80 00 3e 10 20 01 61 00 00 00 00 00 00 00 00 00 00 00 00 01
> 
> As far as I can tell that is a properly formatted ipv6-nd-target OXM field.   
>  Any
> ideas what could be the issue or how to go about debugging this?
> 
> 
> Wireshark output:
> =====
> 
> Frame 81: 442 bytes on wire (3536 bits), 442 bytes captured (3536 bits)
> Ethernet II, Src: PcsCompu_15:f8:5c (08:00:27:15:f8:5c), Dst:
> PcsCompu_23:ef:3e (08:00:27:23:ef:3e) Internet Protocol Version 4, Src:
> 192.168.204.187, Dst: 128.224.186.45 Transmission Control Protocol, Src Port:
> 59743, Dst Port: 6653, Seq: 18227, Ack: 773, Len: 376 OpenFlow 1.3
>     Version: 1.3 (0x04)
>     Type: OFPT_PACKET_IN (10)
>     Length: 376
>     Transaction ID: 1912168690
>     Buffer ID: OFP_NO_BUFFER (4294967295)
>     Total length: 86
>     Reason: OFPR_ACTION (1)
>     Table ID: 45
>     Cookie: 0x0000000004000000
>     Match
>         Type: OFPMT_OXM (1)
>         Length: 257
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0000 000. = Field: OFPXMT_OFB_IN_PORT (0)
>             .... ...0 = Has mask: False
>             Length: 4
>             Value: 271
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0000 010. = Field: OFPXMT_OFB_METADATA (2)
>             .... ...1 = Has mask: True
>             Length: 16
>             Value: 8000071389000000
>             Mask: 0000000000000000
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0000 011. = Field: OFPXMT_OFB_ETH_DST (3)
>             .... ...1 = Has mask: True
>             Length: 12
>             Value: IPv6mcast_ff:00:00:01 (33:33:ff:00:00:01)
>             Mask: 00:00:00_00:00:00 (00:00:00:00:00:00)
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0000 100. = Field: OFPXMT_OFB_ETH_SRC (4)
>             .... ...1 = Has mask: True
>             Length: 12
>             Value: fa:16:3e:d8:0b:e9 (fa:16:3e:d8:0b:e9)
>             Mask: 00:00:00_00:00:00 (00:00:00:00:00:00)
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0000 101. = Field: OFPXMT_OFB_ETH_TYPE (5)
>             .... ...0 = Has mask: False
>             Length: 2
>             Value: IPv6 (0x86dd)
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0000 110. = Field: OFPXMT_OFB_VLAN_VID (6)
>             .... ...0 = Has mask: False
>             Length: 2
>             ...0 .... .... .... = OFPVID_PRESENT: False
>             .... 0000 0000 0000 = Value: 0
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0001 010. = Field: OFPXMT_OFB_IP_PROTO (10)
>             .... ...0 = Has mask: False
>             Length: 1
>             Value: ICMPv6 (58)
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0011 010. = Field: OFPXMT_OFB_IPV6_SRC (26)
>             .... ...1 = Has mask: True
>             Length: 32
>             Value: 2001:6100::8
>             Mask: ::
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0011 011. = Field: OFPXMT_OFB_IPV6_DST (27)
>             .... ...1 = Has mask: True
>             Length: 32
>             Value: ff02::1:ff00:1
>             Mask: ::
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0011 101. = Field: OFPXMT_OFB_ICMPV6_TYPE (29)
>             .... ...0 = Has mask: False
>             Length: 1
>             Value: 87
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0011 110. = Field: OFPXMT_OFB_ICMPV6_CODE (30)
>             .... ...0 = Has mask: False
>             Length: 1
>             Value: 00
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0011 111. = Field: OFPXMT_OFB_IPV6_ND_TARGET (31)
>             .... ...0 = Has mask: False
>             Length: 16
>             Value: 20016100000000000000000000000001
>         OXM field
>             Class: OFPXMC_OPENFLOW_BASIC (0x8000)
>             0100 000. = Field: OFPXMT_OFB_IPV6_ND_SLL (32)
>             .... ...0 = Has mask: False
>             Length: 6
>             Value: fa:16:3e:d8:0b:e9 (fa:16:3e:d8:0b:e9)
>         OXM field
>             Class: OFPXMC_NXM_1 (0x0001)
>             0000 000. = Field: 0
>             .... ...0 = Has mask: False
>             Length: 4
>             Unknown OXM body.
>                 [Expert Info (Note/Undecoded): Unknown OXM body.]
>                     [Unknown OXM body.]
>                     [Severity level: Note]
>                     [Group: Undecoded]
>         OXM field
>         OXM field
>             Class: OFPXMC_NXM_1 (0x0001)
>             0000 010. = Field: 2
>             .... ...0 = Has mask: False
>             Length: 4
>             Unknown OXM body.
>                 [Expert Info (Note/Undecoded): Unknown OXM body.]
>                     [Unknown OXM body.]
>                     [Severity level: Note]
>                     [Group: Undecoded]
>         OXM field
>             Class: OFPXMC_NXM_1 (0x0001)
>             0000 011. = Field: 3
>             .... ...0 = Has mask: False
>             Length: 4
>             Unknown OXM body.
>                 [Expert Info (Note/Undecoded): Unknown OXM body.]
>                     [Unknown OXM body.]
>                     [Severity level: Note]
>                     [Group: Undecoded]
>         OXM field
>             Class: OFPXMC_NXM_1 (0x0001)
>             0000 100. = Field: 4
>             .... ...0 = Has mask: False
>             Length: 4
>             Unknown OXM body.
>                 [Expert Info (Note/Undecoded): Unknown OXM body.]
>                     [Unknown OXM body.]
>                     [Severity level: Note]
>                     [Group: Undecoded]
>         OXM field
>             Class: OFPXMC_NXM_1 (0x0001)
>             0000 101. = Field: 5
>             .... ...0 = Has mask: False
>             Length: 4
>             Unknown OXM body.
>                 [Expert Info (Note/Undecoded): Unknown OXM body.]
>                     [Unknown OXM body.]
>                     [Severity level: Note]
>                     [Group: Undecoded]
>         OXM field
>             Class: OFPXMC_NXM_1 (0x0001)
>             0000 110. = Field: 6
>             .... ...0 = Has mask: False
>             Length: 4
>             Unknown OXM body.
>                 [Expert Info (Note/Undecoded): Unknown OXM body.]
>                     [Unknown OXM body.]
>                     [Severity level: Note]
>                     [Group: Undecoded]
>         OXM field
>             Class: OFPXMC_NXM_1 (0x0001)
>             0000 111. = Field: 7
>             .... ...0 = Has mask: False
>             Length: 4
>             Unknown OXM body.
>                 [Expert Info (Note/Undecoded): Unknown OXM body.]
>                     [Unknown OXM body.]
>                     [Severity level: Note]
>                     [Group: Undecoded]
>         Pad: 00000000000000
>     Pad: 0000
>     Data
>         Ethernet II, Src: fa:16:3e:d8:0b:e9 (fa:16:3e:d8:0b:e9), Dst:
> IPv6mcast_ff:00:00:01 (33:33:ff:00:00:01)
>         Internet Protocol Version 6, Src: 2001:6100::8, Dst: ff02::1:ff00:1
>         Internet Control Message Protocol v6
>             Type: Neighbor Solicitation (135)
>             Code: 0
>             Checksum: 0x32ba [unverified] [fragmented datagram]
>             [Checksum Status: Unverified]
>             Reserved: 00000000
>             Target Address: 2001:6100::1
>             ICMPv6 Option (Source link-layer address : fa:16:3e:d8:0b:e9)
>                 Type: Source link-layer address (1)
>                 Length: 1 (8 bytes)
>                 Link-layer address: fa:16:3e:d8:0b:e9 (fa:16:3e:d8:0b:e9)
> 
> 
> 
> 
> 
> 
> Debug Logs:
> =====
> 
> 2018-01-06 19:27:12,719 | DEBUG | entLoopGroup-7-3 | OFFrameDecoder
> | 369 - org.opendaylight.openflowplugin.openflowjava.openflow-protocol-
> impl - 0.5.1 | length of actual message: 376
> 2018-01-06 19:27:12,719 | DEBUG | entLoopGroup-7-3 | OFFrameDecoder
> | 369 - org.opendaylight.openflowplugin.openflowjava.openflow-protocol-
> impl - 0.5.1 | OF Protocol message received, type:10
> 2018-01-06 19:27:12,719 | DEBUG | entLoopGroup-7-3 | OFVersionDetector
> | 369 - org.opendaylight.openflowplugin.openflowjava.openflow-protocol-
> impl - 0.5.1 | detected version: 4
> 2018-01-06 19:27:12,719 | DEBUG | entLoopGroup-7-3 | OFDecoder
> | 369 - org.opendaylight.openflowplugin.openflowjava.openflow-protocol-
> impl - 0.5.1 | VersionMessageWrapper received
> 2018-01-06 19:27:12,719 | DEBUG | entLoopGroup-7-3 | OFDecoder
> | 369 - org.opendaylight.openflowplugin.openflowjava.openflow-protocol-
> impl - 0.5.1 | << 0a 01 78 3a cf 4e 39 ff ff ff ff 00 56 01 2d 00 00 00 00 04 
> 00 00 00
> 00 01 01 01 80 00 00 04 00 00 01 0f 80 00 05 10 80 00 07 13 89 00 00 00 00 00 
> 00
> 00 00 00 00 00 80 00 07 0c 33 33 ff 00 00 01 00 00 00 00 00 00 80 00 09 0c fa 
> 16 3e
> d8 0b e9 00 00 00 00 00 00 80 00 0a 02 86 dd 80 00 0c 02 00 00 80 00 14 01 3a 
> 80
> 00 35 20 fe 80 00 00 00 00 00 00 f8 16 3e ff fe d8 0b e9 00 00 00 00 00 00 00 
> 00 00
> 00 00 00 00 00 00 00 80 00 37 20 ff 02 00 00 00 00 00 00 00 00 00 01 ff 00 00 
> 01 00
> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 3a 01 87 80 00 3c 01 00 80 
> 00
> 3e 10 20 01 61 00 00 00 00 00 00 00 00 00 00 00 00 01 80 00 40 06 fa 16 3e d8 
> 0b
> e9 00 01 00 04 00 00 00 00 00 01 02 04 00 00 00 00 00 01 04 04 00 00 00 00 00 
> 01
> 06 04 00 00 00 00 00 01 08 04 00 00 00 00 00 01 0a 04 00 00 00 00 00 01 0c 04 
> 00
> 00 00 00 00 01 0e 04 00 00 00 00 00 00 00 00 00 00 00 00 00 33 33 ff 00 00 01 
> fa 16
> 3e d8 0b e9 86 dd 60 00 00 00 00 20 3a ff fe 80 00 00 00 00 00 00 f8 16 3e ff 
> fe d8
> 0b e9 ff 02 00 00 00 00 00 00 00 00 00 01 ff 00 00 01 87 00 73 6a 00 00 00 00 
> 20 01
> 61 00 00 00 00 00 00 00 00 00 00 00 00 01 01 01 fa 16 3e d8 0b e9
> 2018-01-06 19:27:12,719 | WARN  | entLoopGroup-7-3 | OFDecoder
> | 369 - org.opendaylight.openflowplugin.openflowjava.openflow-protocol-
> impl - 0.5.1 | Message deserialization failed
> java.lang.IllegalArgumentException: Match:
> org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.
> MatchBuilder@55ed6a53 is malformed,
> org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.
> MatchBuilder@55ed6a53#layer3Match#ipv6NdTarget contains invalid data.
>         at
> org.opendaylight.openflowplugin.impl.protocol.deserialization.match.Abstra
> ctMatchEntryDeserializer.throwErrorOnMalformed(AbstractMatchEntryDese
> rializer.java:69)[361:org.opendaylight.openflowplugin.impl:0.5.1]
>         at
> org.opendaylight.openflowplugin.impl.protocol.deserialization.match.Ipv6N
> dTargetEntryDeserializer.deserializeEntry(Ipv6NdTargetEntryDeserializer.jav
> a:37)[361:org.opendaylight.openflowplugin.impl:0.5.1]
>         at
> org.opendaylight.openflowplugin.impl.protocol.deserialization.match.Match
> Deserializer.deserializeEntry(MatchDeserializer.java:103)[361:org.opendaylig
> ht.openflowplugin.impl:0.5.1]
>         at
> org.opendaylight.openflowplugin.impl.protocol.deserialization.match.Match
> Deserializer.deserialize(MatchDeserializer.java:61)[361:org.opendaylight.ope
> nflowplugin.impl:0.5.1]
>         at
> org.opendaylight.openflowplugin.impl.protocol.deserialization.match.Match
> Deserializer.deserialize(MatchDeserializer.java:33)[361:org.opendaylight.ope
> nflowplugin.impl:0.5.1]
>         at
> org.opendaylight.openflowplugin.impl.protocol.deserialization.messages.Pac
> ketInMessageDeserializer.deserialize(PacketInMessageDeserializer.java:66)[
> 361:org.opendaylight.openflowplugin.impl:0.5.1]
>         at
> org.opendaylight.openflowplugin.impl.protocol.deserialization.messages.Pac
> ketInMessageDeserializer.deserialize(PacketInMessageDeserializer.java:29)[
> 361:org.opendaylight.openflowplugin.impl:0.5.1]
>         at
> org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializationF
> actory.deserialize(DeserializationFactory.java:55)[369:org.opendaylight.open
> flowplugin.openflowjava.openflow-protocol-impl:0.5.1]
>         at
> org.opendaylight.openflowjava.protocol.impl.core.OFDecoder.decode(OFDe
> coder.java:49)[369:org.opendaylight.openflowplugin.openflowjava.openflo
> w-protocol-impl:0.5.1]
>         at
> org.opendaylight.openflowjava.protocol.impl.core.OFDecoder.decode(OFDe
> coder.java:26)[369:org.opendaylight.openflowplugin.openflowjava.openflo
> w-protocol-impl:0.5.1]
>         at
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageT
> oMessageDecoder.java:88)[94:io.netty.codec:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abstr
> actChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abstr
> actChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Abstract
> ChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMe
> ssageDecoder.java:293)[94:io.netty.codec:4.1.8.Final]
>         at
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessa
> geDecoder.java:267)[94:io.netty.codec:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abstr
> actChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abstr
> actChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Abstract
> ChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMe
> ssageDecoder.java:293)[94:io.netty.codec:4.1.8.Final]
>         at
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessa
> geDecoder.java:267)[94:io.netty.codec:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abstr
> actChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abstr
> actChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Abstract
> ChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.ja
> va:287)[97:io.netty.handler:4.1.8.Final]
>         at
> org.opendaylight.openflowjava.protocol.impl.core.IdleHandler.channelRead
> (IdleHandler.java:39)[369:org.opendaylight.openflowplugin.openflowjava.op
> enflow-protocol-impl:0.5.1]
>         at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abstr
> actChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abstr
> actChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Abstract
> ChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(Default
> ChannelPipeline.java:1334)[99:io.netty.transport:4.1.8.Final]
>         at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abstr
> actChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
> 
> 
> 
> Rule XML:
> ======
> 
> <table xmlns="urn:opendaylight:flow:inventory">
> <id>45</id>
> <flow>
> <id>IPv6.104388475580001.5001.2001:6100:1:0:0:0:0:1</id>
> <priority>50</priority>
> <table_id>45</table_id>
> <installHw>true</installHw>
> <hard-timeout>0</hard-timeout>
> <match>
> <ethernet-match>
> <ethernet-type>
> <type>34525</type>
> </ethernet-type>
> </ethernet-match>
> <metadata>
> <metadata>83902857216</metadata>
> <metadata-mask>1099494850560</metadata-mask>
> </metadata>
> <ip-match>
> <ip-protocol>58</ip-protocol>
> </ip-match>
> <ipv6-nd-target>2001:6100:1:0:0:0:0:1</ipv6-nd-target>
> <icmpv6-match>
> <icmpv6-code>0</icmpv6-code>
> <icmpv6-type>135</icmpv6-type>
> </icmpv6-match>
> </match>
> <cookie>67108864</cookie>
> <flow-name>IPv6NS</flow-name>
> <strict>false</strict>
> <instructions>
> <instruction>
> <order>0</order>
> <apply-actions>
> <action>
> <order>0</order>
> <output-action>
> <max-length>65535</max-length>
> <output-node-connector>CONTROLLER</output-node-connector>
> </output-action>
> </action>
> </apply-actions>
> </instruction>
> </instructions>
> <barrier>false</barrier>
> <idle-timeout>0</idle-timeout>
> </flow>
> 
> Allain Legacy, Software Developer, Wind River direct 613.270.2279  fax
> 613.492.7870 skype allain.legacy
> 350 Terry Fox Drive, Suite 200, Ottawa, Ontario, K2K 2W5
> 
> 
> 
> 
> _______________________________________________
> openflowplugin-dev mailing list
> [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