[OPNFLWPLUG-303] IllegalArgumentException in MatchConvertorImpl.fromOFMatchV10ToSALMatch(). Created: 01/Oct/14  Updated: 27/Sep/21  Resolved: 02/Oct/14

Status: Resolved
Project: OpenFlowPlugin
Component/s: General
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Shigeru Yasuda Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 2127

 Description   

I observed that IllegalArgumentException was logged periodically when I installed
an OF10 flow entry which matched IPv4 packets with DSCP value 63.

2014-10-01 11:14:45.861 GMT+09:00 [OFmsgProcessor-0] ERROR o.o.o.o.m.q.TicketProcessorFactoryImpl - translation problem: Invalid range: 252, expected: [[0‥63]].
2014-10-01 11:14:45.865 GMT+09:00 [OFmsgFinisher-0] WARN o.o.o.o.md.queue.TicketFinisherImpl - processing (translate, publish) of ticket failed
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Invalid range: 252, expected: [[0‥63]].
at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306) ~[na:na]
at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293) ~[na:na]
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) ~[na:na]
at org.opendaylight.openflowplugin.openflow.md.queue.TicketFinisherImpl.run(TicketFinisherImpl.java:49) ~[na:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_65]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_65]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]
Caused by: java.lang.IllegalArgumentException: Invalid range: 252, expected: [[0‥63]].
at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Dscp.<init>(Dscp.java:39) ~[na:na]
at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchConvertorImpl.fromOFMatchV10ToSALMatch(MatchConvertorImpl.java:582) ~[na:na]
at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.FlowStatsResponseConvertor.toSALFlowStats(FlowStatsResponseConvertor.java:78) ~[na:na]
at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.FlowStatsResponseConvertor.toSALFlowStatsList(FlowStatsResponseConvertor.java:49) ~[na:na]
at org.opendaylight.openflowplugin.openflow.md.core.translator.MultipartReplyTranslator.translate(MultipartReplyTranslator.java:134) ~[na:na]
at org.opendaylight.openflowplugin.openflow.md.core.translator.MultipartReplyTranslator.translate(MultipartReplyTranslator.java:106) ~[na:na]
at org.opendaylight.openflowplugin.openflow.md.queue.TicketProcessorFactoryImpl.translate(TicketProcessorFactoryImpl.java:166) ~[na:na]
at org.opendaylight.openflowplugin.openflow.md.queue.TicketProcessorFactoryImpl$1.run(TicketProcessorFactoryImpl.java:78) ~[na:na]
... 3 common frames omitted

MatchConvertorImpl.fromOFMatchV10ToSALMatch() passes a TOS value in NW_TOS match
field to the constructor of Dscp class. IP DSCP field value needs to be passed
to Dscp class, not TOS value.

In addition, MatchConvertorImpl.fromOFMatchV10ToSALMatch() does not configure
MD-SAL DSCP match field if NW_TOS field value in OF10 match is 0.
I think this is incorrect behavior. It should configure MD-SAL DSCP match field
unless NW_TOS wildcard bit is set in OF10 match, otherwise application can not
retrieve statistics information of a flow entry which matches IPv4 packets with
DSCP value 0.



 Comments   
Comment by Shigeru Yasuda [ 01/Oct/14 ]

I verified that this patch fixed this issue.

https://git.opendaylight.org/gerrit/11700

Generated at Wed Feb 07 20:32:06 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.