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.AbstractMatchEntryDeserializer.throwErrorOnMalformed(AbstractMatchEntryDeserializer.java:69)[361:org.opendaylight.openflowplugin.impl:0.5.1]
        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.match.Ipv6NdTargetEntryDeserializer.deserializeEntry(Ipv6NdTargetEntryDeserializer.java:37)[361:org.opendaylight.openflowplugin.impl:0.5.1]
        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.match.MatchDeserializer.deserializeEntry(MatchDeserializer.java:103)[361:org.opendaylight.openflowplugin.impl:0.5.1]
        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.match.MatchDeserializer.deserialize(MatchDeserializer.java:61)[361:org.opendaylight.openflowplugin.impl:0.5.1]
        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.match.MatchDeserializer.deserialize(MatchDeserializer.java:33)[361:org.opendaylight.openflowplugin.impl:0.5.1]
        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.messages.PacketInMessageDeserializer.deserialize(PacketInMessageDeserializer.java:66)[361:org.opendaylight.openflowplugin.impl:0.5.1]
        at 
org.opendaylight.openflowplugin.impl.protocol.deserialization.messages.PacketInMessageDeserializer.deserialize(PacketInMessageDeserializer.java:29)[361:org.opendaylight.openflowplugin.impl:0.5.1]
        at 
org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializationFactory.deserialize(DeserializationFactory.java:55)[369:org.opendaylight.openflowplugin.openflowjava.openflow-protocol-impl:0.5.1]
        at 
org.opendaylight.openflowjava.protocol.impl.core.OFDecoder.decode(OFDecoder.java:49)[369:org.opendaylight.openflowplugin.openflowjava.openflow-protocol-impl:0.5.1]
        at 
org.opendaylight.openflowjava.protocol.impl.core.OFDecoder.decode(OFDecoder.java:26)[369:org.opendaylight.openflowplugin.openflowjava.openflow-protocol-impl:0.5.1]
        at 
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)[94:io.netty.codec:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)[94:io.netty.codec:4.1.8.Final]
        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)[94:io.netty.codec:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)[94:io.netty.codec:4.1.8.Final]
        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)[94:io.netty.codec:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java: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.openflow-protocol-impl:0.5.1]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)[99:io.netty.transport:4.1.8.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.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

Reply via email to