[OPNFLWPLUG-574] Li Migration: barrier=true does not seem to be sending a barrier message Created: 25/Nov/15 Updated: 27/Sep/21 Resolved: 21/Jul/16 |
|
| Status: | Resolved |
| Project: | OpenFlowPlugin |
| Component/s: | General |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Jan Medved | Assignee: | Unassigned |
| Resolution: | Won't Do | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: All |
||
| External issue ID: | 4671 |
| Priority: | Normal |
| Description |
|
We are adding flow to MD-SAL data store (FRM) with barrier=true for the flows. Analyzing the OF packet flow to the switch, we do not see the barrier request/reply being sent out to the switch. To reproduce, start mininet, add a flow with the barrier attribute set to true and observe the OF Protocol to the switch. Barrier message will not be sent. Note that the Li plugin sends out a lot of barriers, but not when asked by the user to send one before / after a flow that the user wants to synchronize. |
| Comments |
| Comment by Michal Rehak [ 25/Nov/15 ] |
|
For Li-design the barrier flag by flow, group and meter is ignored because you can wait in the invoking code for the future result or particular rpc. Or you can hook a callback or chain another future using Futures.transform(..). Anyway there is service designed for explicit barrier sending: (you need rpcBroker in order to get the service proxy and instanceIdentifier of target device node) final FlowCapableTransactionService barrierService = final SendBarrierInput barrierInput = new SendBarrierInputBuilder() final Future<RpcResult<Void>> rpcResultFuture = Now again you need to wait for result as this call is asynchronous too. |
| Comment by Hideyuki Tai [ 26/Feb/16 ] |
|
(In reply to michal rehak from comment #1) We've also confirmed that the OpenFlow Plugin Li design ignores the barrier flag in the input for add-flow RPC and remove-flow RPC. I think this is a bug, so should be fixed. The OpenFlow Plugin Lithium design should not ignore the barrier flag, since there is no reason to ignore the flag. When an application asks the plugin to send a BARRIER_REQUEST, the plugin should send the BARRIER_REQUEST immediately after a FLOW_MOD. I think waiting for the future result or hooking a callback is not related to the problem here. |
| Comment by Michal Rehak [ 06/Apr/16 ] |
|
Hi Hideyuki,
Of course it takes more time for rpc in Li to complete. But the result contains all the relevant info and app can rely in that. Appending an explicit barrier to flow/meter/group will cause that completion might happen earlier (up to 500ms). Otherwise there is always an automatic barrier sent in order to flush all outstanding rpcs. This automatic barrier is optimized so that it is not being sent too often. In nutshell: if you need to be sure that previous flow is installed on device you either need to wait for subsequent barrier reply or wait for statistics. I understand that in He-design the future from rpc gets completed very fast. But on app side it is not possible to control. Attaching barrier in He-design is the only way how to be sure that device processing is completed. |
| Comment by Hideyuki Tai [ 07/Apr/16 ] |
|
(In reply to michal rehak from comment #3) Hi Michal, Thank you for your comment! My understanding about "when RPC futures get completed" in the Li-design and He-Design is the same with what you explained here. So do you suggest VTN Project should use the send-barrier RPC modeled in flow-capable-transaction.yang in the Li-design in Boron? I've asked about this to the OFP project folks in the ML in March, but I've not received any responses about it yet. |
| Comment by Michal Rehak [ 13/Apr/16 ] |
|
Barrier API (flow-capable-transaction.yang) shall stay with us at least till Carbon. And currently there is no plan to deprecate it. |
| Comment by Abhijit Kumbhare [ 09/May/16 ] |
|
VTN blocked by this. |
| Comment by Abhijit Kumbhare [ 23/May/16 ] |
|
Not a blocking issue for VTN any longer - as VTN has already implemented calling the send barrier RPC. |
| Comment by Abhijit Kumbhare [ 21/Jul/16 ] |
|
No longer critical |