[SFC-222] SFC pipeline seems to be broken in fluorine Created: 02/Jul/18 Updated: 09/Jul/18 |
|
| Status: | Open |
| Project: | sfc |
| Component/s: | None |
| Affects Version/s: | Fluorine |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Medium |
| Reporter: | Y Ananth | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Description |
|
In nsh flows It resubmits packets to table 83 which is not present steps to reproduce: flows are created but table=223 tries to resubmit to table=83 which is not present note: create ports with security group allow all rules |
| Comments |
| Comment by Jaime Caamaño Ruiz [ 05/Jul/18 ] |
|
Table 83 should be there, it is the first table of the SFF pipeline and get initialize as soon as any SF is running as a gest on that compute. I don't see anything particular on the scenario you describe that makes me think it would not work. Can you reproduce consistently? |
| Comment by Y Ananth [ 05/Jul/18 ] |
|
Yes, below are the flow entries in compute node where it doesn't have table=83 this occurs only in fluorine |
| Comment by Jaime Caamaño Ruiz [ 05/Jul/18 ] |
|
If you checked the sfc module in the debug output, the rendered service path is not there. Looking at the logs, there is an exception indicating that something is amiss with the model. Need to check further... The exception:
Caused by: org.opendaylight.mdsal.binding.dom.codec.impl.IncorrectNestingException: Supplied class interface org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCase is not valid case in org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action at org.opendaylight.mdsal.binding.dom.codec.impl.IncorrectNestingException.create(IncorrectNestingException.java:25) ~[279:org.opendaylight.mdsal.binding-dom-codec:0.13.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.codec.impl.DataContainerCodecContext.childNonNull(DataContainerCodecContext.java:180) ~[279:org.opendaylight.mdsal.binding-dom-codec:0.13.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.codec.impl.ChoiceNodeCodecContext.streamChild(ChoiceNodeCodecContext.java:193) ~[279:org.opendaylight.mdsal.binding-dom-codec:0.13.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.codec.impl.BindingToNormalizedStreamWriter.enter(BindingToNormalizedStreamWriter.java:76) ~[279:org.opendaylight.mdsal.binding-dom-codec:0.13.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.codec.impl.BindingToNormalizedStreamWriter.startCase(BindingToNormalizedStreamWriter.java:146) ~[279:org.opendaylight.mdsal.binding-dom-codec:0.13.0.SNAPSHOT] at org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCase$StreamWriter.serialize(DataObjectSerializerPrototype.java) ~[381:org.opendaylight.openflowplugin.extension-nicira:0.7.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:303) ~[279:org.opendaylight.mdsal.binding-dom-codec:0.13.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.codec.util.ChoiceDispatchSerializer.serialize(ChoiceDispatchSerializer.java:46) ~[279:org.opendaylight.mdsal.binding-dom-codec:0.13.0.SNAPSHOT] at org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action$StreamWriter.serialize(DataObjectSerializerPrototype.java) ~[385:org.opendaylight.openflowplugin.model.flow-base:0.7.0.SNAPSHOT] at org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetEgressActionsForInterfaceOutput$StreamWriter.serialize(DataObjectSerializerPrototype.java) ~[248:org.opendaylight.genius.interfacemanager-api:0.5.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:303) ~[279:org.opendaylight.mdsal.binding-dom-codec:0.13.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry.toNormalizedNodeRpcData(BindingNormalizedNodeCodecRegistry.java:145) ~[279:org.opendaylight.mdsal.binding-dom-codec:0.13.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.adapter.LazyDOMRpcResultFuture.transform(LazyDOMRpcResultFuture.java:115) ~[278:org.opendaylight.mdsal.binding-dom-adapter:2.5.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.adapter.LazyDOMRpcResultFuture.transformIfNecessary(LazyDOMRpcResultFuture.java:106) ~[278:org.opendaylight.mdsal.binding-dom-adapter:2.5.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.adapter.LazyDOMRpcResultFuture.get(LazyDOMRpcResultFuture.java:62) ~[278:org.opendaylight.mdsal.binding-dom-adapter:2.5.0.SNAPSHOT] at org.opendaylight.mdsal.binding.dom.adapter.LazyDOMRpcResultFuture.get(LazyDOMRpcResultFuture.java:26) ~[278:org.opendaylight.mdsal.binding-dom-adapter:2.5.0.SNAPSHOT] at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:168) ~[32:com.google.guava:23.6.1.jre] at com.google.common.util.concurrent.Futures.getDone(Futures.java:1436) ~[32:com.google.guava:23.6.1.jre] at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:85) ~[32:com.google.guava:23.6.1.jre] at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:398) ~[32:com.google.guava:23.6.1.jre] at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1015) ~[32:com.google.guava:23.6.1.jre] at com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:672) ~[32:com.google.guava:23.6.1.jre] at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.addListener(AbstractFuture.java:107) ~[32:com.google.guava:23.6.1.jre] at org.opendaylight.mdsal.binding.dom.adapter.LazyDOMRpcResultFuture.addListener(LazyDOMRpcResultFuture.java:54) ~[278:org.opendaylight.mdsal.binding-dom-adapter:2.5.0.SNAPSHOT] at com.google.common.util.concurrent.AbstractTransformFuture.create(AbstractTransformFuture.java:40) ~[32:com.google.guava:23.6.1.jre] at com.google.common.util.concurrent.Futures.transformAsync(Futures.java:627) ~[32:com.google.guava:23.6.1.jre] at org.opendaylight.controller.md.sal.dom.broker.impl.DOMRpcRouter.invokeRpc(DOMRpcRouter.java:151) ~[219:org.opendaylight.controller.sal-broker-impl:1.8.0.SNAPSHOT] at Proxy033a91ec_d2f0_4526_980c_ff2540edaabd.invokeRpc(Unknown Source) ~[?:?] at Proxy9c8b5e87_2b63_4ef3_bc2f_08c97c815aca.invokeRpc(Unknown Source) ~[?:?] at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.invoke0(RpcServiceAdapter.java:68) ~[217:org.opendaylight.controller.sal-binding-broker-impl:1.8.0.SNAPSHOT] at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.access$000(RpcServiceAdapter.java:46) ~[217:org.opendaylight.controller.sal-binding-broker-impl:1.8.0.SNAPSHOT] at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter$RpcInvocationStrategy.invoke(RpcServiceAdapter.java:165) ~[217:org.opendaylight.controller.sal-binding-broker-impl:1.8.0.SNAPSHOT] at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.invoke(RpcServiceAdapter.java:99) ~[217:org.opendaylight.controller.sal-binding-broker-impl:1.8.0.SNAPSHOT] at com.sun.proxy.$Proxy170.getEgressActionsForInterface(Unknown Source) ~[?:?] at org.opendaylight.sfc.genius.util.SfcGeniusRpcClient.getEgressActionsFromGeniusRPC(SfcGeniusRpcClient.java:101) ~[412:org.opendaylight.sfc.genius:0.8.0.SNAPSHOT] ... 22 more |
| Comment by Jaime Caamaño Ruiz [ 09/Jul/18 ] |
|
Related MSDSAL patches workaround the issue by (re)adding a shortcut for local RPC invocation that avoids serialization and prevents this specific issue. Root cause is |