[OPNFLWPLUG-364] Unable to create flow with match ingressPort=LOCAL Created: 18/Feb/15  Updated: 27/Sep/21  Resolved: 13/Mar/15

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

Type: Bug
Reporter: Igor Kondrakhin Assignee: Igor Kondrakhin
Resolution: Won't Do 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: 2735

 Description   
  • Unable to provision the node with flow containing ingressPort=LOCAL match.
  • The following exception thrown during statistics collection when flow with match IN_PORT=LOCAL is created by ovs-ofctl utility:

2015-01-30 10:51:15.891 EST [md-sal-binding-notification-15] WARN o.o.c.s.c.ToSalConversionsUtils - nodeConnector construction failed
org.opendaylight.controller.sal.core.ConstructionException: Type of incoming object:class java.lang.String not compatible with expected type:class java.lang.Short or Node type incompatible:PR
at org.opendaylight.controller.sal.core.NodeConnector.<init>(NodeConnector.java:249) ~[bundlefile:na]
at org.opendaylight.controller.sal.compatibility.NodeMapping.toADNodeConnector(NodeMapping.java:150) ~[bundlefile:na]
at org.opendaylight.controller.sal.compatibility.ToSalConversionsUtils.fillFrom(ToSalConversionsUtils.java:413) [bundlefile:na]
at org.opendaylight.controller.sal.compatibility.ToSalConversionsUtils.toMatch(ToSalConversionsUtils.java:398) [bundlefile:na]
at org.opendaylight.controller.sal.compatibility.ToSalConversionsUtils.toFlow(ToSalConversionsUtils.java:139) [bundlefile:na]
at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter.toFlowOnNode(InventoryAndReadAdapter.java:789) [bundlefile:na]
at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter.onFlowsStatisticsUpdate(InventoryAndReadAdapter.java:710) [bundlefile:na]
at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter$$Broker$ListenerInvoker.onNotification(InventoryAndReadAdapter$$Broker$ListenerInvoker.java) [bundlefile:na]
at org.opendaylight.controller.sal.binding.impl.AbstractNotificationListenerRegistration.notify(AbstractNotificationListenerRegistration.java:38) [bundlefile:na]
at org.opendaylight.controller.sal.binding.impl.NotifyTask.run(NotifyTask.java:42) [bundlefile:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_72]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_72]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_72]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_72]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_72]



 Comments   
Comment by Timotej Kubas [ 27/Feb/15 ]

Hi Igor,
as you wrote, problem lies in statistics when they try to translate value LOCAL into port (short). We can solve this by setting permannent value as representation of LOCAL port, but this will lead to some inconsistencies (OF 1.0 vs OF 1.3).
But however, this will be only temporary solution because ad-sal is planned to get deprecated after Lithium release.
Do you have any proposal on how to solve the situation?

Thank you.

Comment by Igor Kondrakhin [ 10/Mar/15 ]

This bug report describes two issues:

First, most important one, is that OpenDaylight does not provide an ability to provision a node with flow containing ingressPort=LOCAL match.

Second, not really important at this moment, describes an exception that will be thrown when first issue will be fixed and node will be provided with flow containing ingressPort=LOCAL match.

Comment by Michal Rehak [ 11/Mar/15 ]

Hi Igor,
I just tried to add flow containing <in-port>LOCAL</in-port> in match element. It worked without any switch connected and it got pushed to switch upon connection established.
I observed the complains of sal-compatibility as it is not able to deal with logical names of ports.

Could you describe in detail how are you adding such a flow to ODL? Because the exception of yours emerges during processing of statistics notification containing such a flow. So I guess that the flow is on device. Could you check on that?

Thank you.

Comment by Igor Kondrakhin [ 13/Mar/15 ]

Hello Michal,

I’ve done more testing and found out that the first issue described in my previous comment is reproducible only on ODL Hydrogen. Sorry for misleading bug description. It was discovered when I was working with ODL Hydrogen.
You can not set up flow with "ingressPort":"LOCAL" using flowprogrammer, but it is probably well known issue.

I was able to create a flow with in_port LOCAL using inventory manager on Helium/MD-SAL. So, the first issue described in my previous comment does not present in helium release.

Thank you.

Comment by Michal Rehak [ 13/Mar/15 ]

Ok, does the second issue affect or break your application?

I believe it just prohibits the ad-sal world from being notified about a flow presence on device. And only if the flow contains logical port name instead of number.

Comment by Igor Kondrakhin [ 13/Mar/15 ]

The second issue does not break my application.

Comment by Michal Rehak [ 13/Mar/15 ]

OK, would you mind closing this bug as WONTFIX?

Because while ad-sal does not support any other than numeric port value for openflow protocol then we can not do much about it.

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