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