Unit Test Cases Changes
[netvirt.git] / aclservice / impl / src / test / java / org / opendaylight / netvirt / aclservice / tests / FlowEntryObjectsStateful.xtend
index adc031490ab76d042bbff24ee1c2756a119a0aba..893627b57e18c43bc7ec13545a11edc5c6adfaa8 100644 (file)
@@ -37,12 +37,12 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg6
 
 import static extension org.opendaylight.mdsal.binding.testutils.XtendBuilderExtensions.operator_doubleGreaterThan
-import org.opendaylight.genius.mdsalutil.instructions.InstructionGotoTable
 import org.opendaylight.netvirt.aclservice.utils.AclConstants
-import java.util.ArrayList
-import org.opendaylight.genius.mdsalutil.actions.ActionNxConntrack.NxCtAction
 import java.util.Collections
 
+import org.opendaylight.genius.mdsalutil.instructions.InstructionWriteMetadata
+
+
 class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
 
     protected def etherFlows() {
@@ -62,8 +62,26 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
         + fixedEgressFlowsPort2
         + fixedConntrackEgressFlowsPort2
         + etheregressFlowPort2
-        + remoteFlows
-        + remoteFlows
+        + remoteEgressFlowsPort1
+        + remoteEgressFlowsPort2
+        + remoteEgressFlowsPort1
+        + remoteEgressFlowsPort2
+        + ingressCommitNonConntrack1
+        + ingressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + ingressCommitConntrack1
+        + ingressCommitConntrack1
+        + egressCommitConntrack1
+        + egressCommitConntrack1
+        + ingressfixedAclMissDrop1
+        + ingressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+        + ingressDispatcherFirst
+        + ingressDispatcherFirst
+        + ingressDispatcherLast
+        + ingressDispatcherLast
     }
 
     protected def tcpFlows() {
@@ -83,8 +101,27 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
         + fixedConntrackEgressFlowsPort2
         + tcpEgressFlowPort2
         + tcpEgressFlowPort2
-        + remoteFlows
-        + remoteFlows
+        + egressDispatcherFirst
+        + egressDispatcherFirst
+        + egressDispatcherLast
+        + egressDispatcherLast
+        + remoteIngressFlowsPort1
+        + remoteIngressFlowsPort2
+        + remoteIngressFlowsPort1
+        + remoteIngressFlowsPort2
+        + ingressCommitNonConntrack1
+        + ingressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + ingressCommitConntrack1
+        + ingressCommitConntrack1
+        + egressCommitConntrack1
+        + egressCommitConntrack1
+        + ingressfixedAclMissDrop1
+        + ingressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+
     }
 
     protected def udpFlows() {
@@ -104,8 +141,26 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
         + fixedEgressFlowsPort2
         + fixedConntrackEgressFlowsPort2
         + udpEgressFlowsPort2
-        + remoteFlows
-        + remoteFlows
+        + ingressDispatcherFirst
+        + ingressDispatcherFirst
+        + ingressDispatcherLast
+        + ingressDispatcherLast
+        + remoteEgressFlowsPort1
+        + remoteEgressFlowsPort2
+        + remoteEgressFlowsPort1
+        + remoteEgressFlowsPort2
+        + ingressCommitNonConntrack1
+        + ingressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + ingressCommitConntrack1
+        + ingressCommitConntrack1
+        + egressCommitConntrack1
+        + egressCommitConntrack1
+        + ingressfixedAclMissDrop1
+        + ingressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
     }
 
     protected def icmpFlows() {
@@ -125,8 +180,26 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
         + fixedConntrackEgressFlowsPort2
         + icmpEgressFlowsPort2
         + icmpEgressFlowsPort2
-        + remoteFlows
-        + remoteFlows
+        + egressDispatcherFirst
+        + egressDispatcherFirst
+        + egressDispatcherLast
+        + egressDispatcherLast
+        + remoteIngressFlowsPort1
+        + remoteIngressFlowsPort2
+        + remoteIngressFlowsPort1
+        + remoteIngressFlowsPort2
+        + ingressCommitNonConntrack1
+        + ingressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + ingressCommitConntrack1
+        + ingressCommitConntrack1
+        + egressCommitConntrack1
+        + egressCommitConntrack1
+        + ingressfixedAclMissDrop1
+        + ingressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
     }
 
     protected def dstRangeFlows() {
@@ -138,6 +211,13 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
         + fixedEgressFlowsPort1
         + fixedConntrackEgressFlowsPort1
         + tcpEgressRangeFlows
+        + ingressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + ingressCommitConntrack1
+        + egressCommitConntrack1
+        + ingressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+
     }
 
     protected def dstAllFlows() {
@@ -149,6 +229,12 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
         + fixedEgressFlowsPort1
         + fixedConntrackEgressFlowsPort1
         + tcpEgressAllFlows
+        + ingressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + ingressCommitConntrack1
+        + egressCommitConntrack1
+        + ingressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
     }
 
     protected def icmpFlowsForTwoAclsHavingSameRules() {
@@ -158,6 +244,14 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
         + fixedEgressFlowsPort3
         + fixedConntrackEgressFlowsPort3
         + icmpEgressFlowsPort3
+        + ingressCommitConntrack1
+        + egressCommitConntrack1
+        + ingressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + ingressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+        + fixedIngressL3BroadcastFlows
+        + fixedEgressL2BroadcastFlowsPort3
     }
 
     protected def aapWithIpv4AllFlows() {
@@ -173,140 +267,60 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
     }
 
     protected def multipleAcl() {
-          fixedIngressFlowsPort1
+        fixedIngressFlowsPort1
         + fixedConntrackIngressFlowsPort1
         + fixedEgressL2BroadcastFlowsPort1
         + fixedIngressL3BroadcastFlows
         + fixedEgressFlowsPort1
         + fixedConntrackEgressFlowsPort1
         + etherEgressFlowsPort1
-        + etherEgressFlowsPort1
-        + etherEgressFlowsPort1
-        + etherEgressFlowsPort1AfterDelete
-        + etherEgressFlowsPort1AfterDelete
         + fixedIngressFlowsPort2
         + fixedConntrackIngressFlowsPort2
         + etherIngressFlowsPort2
         + etherIngressFlowsPort2
-        + etherIngressFlowsPort2AfterDelete
-        + etherIngressFlowsPort2AfterDelete
         + fixedEgressL2BroadcastFlowsPort2
         + fixedIngressL3BroadcastFlows
         + fixedEgressFlowsPort2
         + fixedConntrackEgressFlowsPort2
         + etheregressFlowPort2
-        + remoteFlows
-        + remoteIngressFlowsPort1
-        + remoteIngressFlowsPort1
         + remoteEgressFlowsPort1
+        + remoteEgressFlowsPort2
         + remoteEgressFlowsPort1
-        + fixedEgressArpFlowsPort1()
-        + fixedEgressArpFlowsPort2()
+        + remoteEgressFlowsPort2
+        + tcpEgressFlowPort2WithRemoteIpSg
         + tcpEgressFlowPort2WithRemoteIpSg
         + tcpIngressFlowPort1WithMultipleSG
         + tcpIngressFlowPort1WithMultipleSG
-        + etherIngressFlowsPort1WithRemoteIpSg("10.0.0.1", "ETHERnull_ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F3_10.0.0.1/32Ingress98785cc3048-abc3-43cc-89b3-377341426ac7")
-        + etherIngressFlowsPort1WithRemoteIpSg("10.0.0.2", "ETHERnull_ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F4_10.0.0.2/32Ingress98785cc3048-abc3-43cc-89b3-377341426ac7")
-        + etherIngressFlowsPort1WithRemoteIpSgAfterDelete("10.0.0.2", "ETHERnull_ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F4_10.0.0.2/32Ingress987_IPv4_FlowAfterRuleDeleted")
-        + etherIngressFlowsPort2WithRemoteIpSg()
-        + remoteFlows
-    }
-
-    protected def etherIngressFlowsPort1WithRemoteIpSg(String ip, String theFlowId) {
-        #[
-            new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = theFlowId
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(2048L),
-                    new MatchIpv4Source(ip, "32"),
-                    new MatchEthernetType(2048L),
-                    new MatchEthernetType(2048L),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
-                ]
-                priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
-            ]
-        ]
-    }
-
-    protected def etherIngressFlowsPort1WithRemoteIpSgAfterDelete(String ip, String theFlowId) {
-        #[
-            new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = theFlowId
-                flowName = "ACL"
-                hardTimeOut = 30
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_NEW_STATE))
-                        )
-                    ]),
-                    new InstructionGotoTable(NwConstants.EGRESS_ACL_FILTER_TABLE)
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(2048L),
-                    new MatchIpv4Source(ip, "32"),
-                    new MatchEthernetType(2048L),
-                    new MatchEthernetType(2048L),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(AclConstants.TRACKED_RPL_CT_STATE, AclConstants.TRACKED_RPL_CT_STATE_MASK)
-                ]
-                priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
-            ]
-        ]
-    }
+        + ingressCommitNonConntrack1
+        + ingressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + ingressCommitConntrack1
+        + ingressCommitConntrack1
+        + egressCommitConntrack1
+        + egressCommitConntrack1
+        + ingressfixedAclMissDrop1
+        + ingressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+        + remoteEgressFlowsPort3
+        + egressDispatcherLast1
+        + egressDispatcherFirst1
+        + ingressDispatcherLast
+        + ingressDispatcherFirst
+        + egressDispatcherLast1
+        + egressDispatcherFirst1
+        + ingressDispatcherLast
+        + ingressDispatcherFirst
+        + ingressDispatcherFirst
+        + ingressDispatcherFirst
+        + ingressDispatcherLast
+        + ingressDispatcherLast
 
-    protected def etherIngressFlowsPort2WithRemoteIpSg() {
-        val theFlowId = "ETHERnull_ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F4_10.0.0.2/32"
-                        +"Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
-        #[
-            new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = theFlowId
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(2048L),
-                    new MatchIpv4Source("10.0.0.2", "32"),
-                    new MatchEthernetType(2048L),
-                    new MatchEthernetType(2048L),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
-                ]
-                priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
-            ]
-        ]
     }
 
     protected def tcpEgressFlowPort2WithRemoteIpSg() {
-        val theFlowId1 ="TCP_DESTINATION_80_65535_ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F3_10.0.0.1/32"
-                        +"Egress98785cc3048-abc3-43cc-89b3-377341426a21"
-        val theFlowId2 = "TCP_DESTINATION_80_65535_ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F4_10.0.0.2/32"
-                        +"Egress98785cc3048-abc3-43cc-89b3-377341426a21"
+        val theFlowId1 ="TCP_DESTINATION_80_65535Egress_123_987_85cc3048-abc3-43cc-89b3-377341426a21"
         #[
              new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -314,57 +328,23 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_REMOTE_ACL_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchEthernetType(2048L),
-                    new MatchIpv4Destination("10.0.0.1", "32"),
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(80, 65535),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614976bi, 1152920405111996400bi)
                 ]
                 priority = IdHelper.getId(theFlowId1)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
-            ],
-             new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = theFlowId2
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(2048L),
-                    new MatchIpv4Destination("10.0.0.2", "32"),
-                    new MatchEthernetType(2048L),
-                    new MatchEthernetType(2048L),
-                    new NxMatchTcpDestinationPort(80, 65535),
-                    new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
-                ]
-                priority = IdHelper.getId(theFlowId2)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_RULE_BASED_FILTER_TABLE
             ]
         ]
     }
 
-     protected def tcpIngressFlowPort1WithMultipleSG() {
-        val theFlowId = "TCP_DESTINATION_80_65535Ingress98785cc3048-abc3-43cc-89b3-377341426a22"
+    protected def tcpIngressFlowPort1WithMultipleSG() {
+        val theFlowId = "TCP_DESTINATION_80_65535Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426a22"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -372,23 +352,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(80, 65535),
                     new MatchIpProtocol(6 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
@@ -398,42 +372,39 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_Fixed_Conntrk_123_0D:AA:D8:42:30:F4_0.0.0.0/0_Recirc"
+                flowId = "Egress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F4_0.0.0.0/0"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.INGRESS_ACL_FOR_EXISTING_TRAFFIC_TABLE)
-                    ])
+                    new InstructionGotoTable(211 as short)
                 ]
                 matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F4")),
                     new MatchEthernetType(2048L)
                 ]
                 priority = 61010
-                tableId = NwConstants.INGRESS_ACL_ANTI_SPOOFING_TABLE
+                tableId = 210 as short
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_Fixed_Conntrk_123_0D:AA:D8:42:30:F4_0.0.0.0/0_Recirc"
+                flowId = "Ingress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F4_0.0.0.0/0"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.EGRESS_ACL_REMOTE_ACL_TABLE)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchEthernetType(2048L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new MatchEthernetDestination(new MacAddress("0D:AA:D8:42:30:F4")),
                     new MatchEthernetType(2048L)
                 ]
                 priority = 61010
-                tableId = NwConstants.EGRESS_ACL_TABLE
+                tableId = 240 as short
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_ARP_123_987_0D:AA:D8:42:30:F410.0.0.2/32"
+                flowId = "Egress_ARP_123_987_0D:AA:D8:42:30:F40.0.0.0/0"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
@@ -444,7 +415,6 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     new MatchEthernetType(2054L),
                     new MatchArpSha(new MacAddress("0D:AA:D8:42:30:F4")),
                     new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F4")),
-                    new MatchArpSpa(new Ipv4Prefix("10.0.0.2/32")),
                     new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = 63010
@@ -453,31 +423,32 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_L2Broadcast_123_987_0D:AA:D8:42:30:A4"
+                flowId = "Egress_DHCP_Client_v4123_987_0D:AA:D8:42:30:F4_Permit_"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
-                        new ActionNxResubmit(17 as short)
+                    new ActionNxResubmit(17 as short)
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:A4")),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                    new MatchEthernetType(2048L),
+                    new MatchIpProtocol(17 as short),
+                    new MatchUdpDestinationPort(67 as short),
+                    new MatchUdpSourcePort(68 as short),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
+                    new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F4"))
                 ]
-                priority = 61005
+                priority = 63010
                 tableId = NwConstants.INGRESS_ACL_TABLE
             ]
-         ]
+        ]
     }
 
     protected def aapRemoteFlowsPort1() {
         #[
             remoteIngressFlowsPort("10.0.0.100"),
-            remoteIngressFlowsPort("10.0.0.101"),
-
-            remoteEgressFlowsPort("10.0.0.100"),
-            remoteEgressFlowsPort("10.0.0.101")
-         ]
+            remoteIngressFlowsPort("10.0.0.101")
+        ]
     }
 
     protected def aapFlowsPort2() {
@@ -485,76 +456,70 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_Fixed_Conntrk_123_0D:AA:D8:42:30:F4_10.0.0.100/32_Recirc"
+                flowId = "Egress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F4_10.0.0.100/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.INGRESS_ACL_FOR_EXISTING_TRAFFIC_TABLE)
-                    ])
+                   new InstructionGotoTable(211 as short)
                 ]
                 matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F4")),
                     new MatchEthernetType(2048L),
                     new MatchIpv4Source("10.0.0.100", "32")
                 ]
                 priority = 61010
-                tableId = NwConstants.INGRESS_ACL_ANTI_SPOOFING_TABLE
+                tableId = 210 as short
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_Fixed_Conntrk_123_0D:AA:D8:42:30:F4_10.0.0.100/32_Recirc"
+                flowId = "Ingress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F4_10.0.0.100/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.EGRESS_ACL_REMOTE_ACL_TABLE)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchEthernetType(2048L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new MatchEthernetDestination(new MacAddress("0D:AA:D8:42:30:F4")),
                     new MatchEthernetType(2048L),
                     new MatchIpv4Destination("10.0.0.100", "32")
                 ]
                 priority = 61010
-                tableId = NwConstants.EGRESS_ACL_TABLE
+                tableId = 240 as short
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_Fixed_Conntrk_123_0D:AA:D8:42:30:A4_10.0.0.101/32_Recirc"
+                flowId = "Egress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:A4_10.0.0.101/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.INGRESS_ACL_FOR_EXISTING_TRAFFIC_TABLE)
-                    ])
+                    new InstructionGotoTable(211 as short)
                 ]
                 matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:A4")),
                     new MatchEthernetType(2048L),
                     new MatchIpv4Source("10.0.0.101", "32")
                 ]
                 priority = 61010
-                tableId = NwConstants.INGRESS_ACL_ANTI_SPOOFING_TABLE
+                tableId = 210 as short
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_Fixed_Conntrk_123_0D:AA:D8:42:30:A4_10.0.0.101/32_Recirc"
+                flowId = "Ingress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:A4_10.0.0.101/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.EGRESS_ACL_REMOTE_ACL_TABLE)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchEthernetType(2048L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new MatchEthernetDestination(new MacAddress("0D:AA:D8:42:30:A4")),
                     new MatchEthernetType(2048L),
                     new MatchIpv4Destination("10.0.0.101", "32")
                 ]
                 priority = 61010
-                tableId = NwConstants.EGRESS_ACL_TABLE
+                tableId = 240 as short
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -620,7 +585,7 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_DHCP_Client_v6_123_987_0D:AA:D8:42:30:A4_Permit_"
+                flowId = "Egress_DHCP_Client_v4123_987_0D:AA:D8:42:30:F4_Permit_"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
@@ -628,12 +593,12 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchEthernetType(34525L),
+                    new MatchEthernetType(2048L),
                     new MatchIpProtocol(17 as short),
-                    new MatchUdpDestinationPort(547 as short),
-                    new MatchUdpSourcePort(546 as short),
+                    new MatchUdpDestinationPort(67 as short),
+                    new MatchUdpSourcePort(68 as short),
                     new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:A4"))
+                    new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F4"))
                 ]
                 priority = 63010
                 tableId = NwConstants.INGRESS_ACL_TABLE
@@ -660,41 +625,39 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
 
     protected def fixedConntrackIngressFlowsPort1() {
         #[
-           new FlowEntityBuilder >> [
+            new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_Fixed_Conntrk_123_0D:AA:D8:42:30:F3_10.0.0.1/32_Recirc"
+                flowId = "Ingress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F3_10.0.0.1/32"
             flowName = "ACL"
             instructionInfoList = #[
-                new InstructionApplyActions(#[
-                    new ActionNxConntrack(2, 0, 0, 5000, NwConstants.EGRESS_ACL_REMOTE_ACL_TABLE)
-                ])
+                new InstructionGotoTable(NwConstants.EGRESS_ACL_REMOTE_ACL_TABLE)
             ]
             matchInfoList = #[
-                new MatchEthernetType(2048L),
+                new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                 new MatchEthernetDestination(new MacAddress("0D:AA:D8:42:30:F3")),
-            new MatchEthernetType(2048L),
-            new MatchIpv4Destination("10.0.0.1", "32")
+                new MatchEthernetType(2048L),
+                new MatchIpv4Destination("10.0.0.1", "32")
                 ]
                 priority = 61010
                 tableId = NwConstants.EGRESS_ACL_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
-                cookie = 110100481bi
-                flowId = "Ingress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                cookie = 110100480bi
+                flowId = "Ingress_Fixed_Conntrk_123_987_MatchEthernetType[2048]_Recirc"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
-                        new ActionDrop()
+                        new ActionNxConntrack(2, 0, 0, 5000, 243 as short)
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchEthernetType(2048L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
-                priority = 50
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                priority = 100
+                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -707,70 +670,34 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                priority = 62020
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def etherIngressFlowsPort2() {
-        val theFlowId = "ETHERnull_remoteACL_id_85cc3048-abc3-43cc-89b3-377341426ac5Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
-        #[
-            new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = theFlowId
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchMetadata(4bi, MetaDataUtil.METADATA_MASK_REMOTE_ACL_TAG),
-                    new MatchEthernetType(2048L),
-                    new MatchEthernetType(2048L),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
-                ]
-                priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
-            ]
-        ]
-    }
-
-    protected def etherIngressFlowsPort2AfterDelete() {
-        val theFlowId = "ETHERnull_remoteACL_id_85cc3048-abc3-43cc-89b3-377341426ac5Ingress987_IPv4_FlowAfterRuleDeleted"
+        val theFlowId = "ETHERnullIngress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
                 flowId = theFlowId
                 flowName = "ACL"
-                hardTimeOut=30
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_NEW_STATE))
-                        )
-                    ]),
-                    new InstructionGotoTable(NwConstants.EGRESS_ACL_FILTER_TABLE)
+                     new InstructionGotoTable(NwConstants.EGRESS_REMOTE_ACL_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(4bi, MetaDataUtil.METADATA_MASK_REMOTE_ACL_ID),
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(AclConstants.TRACKED_RPL_CT_STATE, AclConstants.TRACKED_RPL_CT_STATE_MASK)
+                    new MatchMetadata(32bi, 16777200bi)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.EGRESS_ACL_RULE_BASED_FILTER_TABLE
             ]
         ]
     }
@@ -780,14 +707,13 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_Fixed_Conntrk_123_0D:AA:D8:42:30:F3_10.0.0.1/32_Recirc"
+                flowId = "Egress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F3_10.0.0.1/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.INGRESS_ACL_REMOTE_ACL_TABLE)
-                    ])
+                    new InstructionGotoTable(211 as short)
                 ]
                 matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F3")),
                     new MatchEthernetType(2048L),
                     new MatchIpv4Source("10.0.0.1", "32")
@@ -797,20 +723,20 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
-                cookie = 110100481bi
-                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                cookie = 110100480bi
+                flowId = "Egress_Fixed_Conntrk_123_987_MatchEthernetType[2048]_Recirc"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
-                        new ActionDrop()
+                       new ActionNxConntrack(2, 0, 0, 5000, NwConstants.INGRESS_ACL_FILTER_TABLE)
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchEthernetType(2048L),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
-                priority = 50
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                priority = 100
+                tableId = NwConstants.INGRESS_ACL_CONNTRACK_SENDER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -823,11 +749,11 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(48L, 48L)
+                   new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
+                   new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                priority = 62020
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
@@ -837,15 +763,13 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
              new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_Fixed_Conntrk_123_0D:AA:D8:42:30:F4_10.0.0.2/32_Recirc"
+                flowId = "Ingress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F4_10.0.0.2/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.EGRESS_ACL_REMOTE_ACL_TABLE)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchEthernetType(2048L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new MatchEthernetDestination(new MacAddress("0D:AA:D8:42:30:F4")),
                     new MatchEthernetType(2048L),
                     new MatchIpv4Destination("10.0.0.2", "32")
@@ -855,20 +779,20 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
-                cookie = 110100481bi
-                flowId = "Ingress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                cookie = 110100480bi
+                flowId = "Ingress_Fixed_Conntrk_123_987_MatchEthernetType[2048]_Recirc"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
-                        new ActionDrop()
+                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.EGRESS_LEARN_ACL_REMOTE_ACL_TABLE)
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchEthernetType(2048L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
-                priority = 50
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                priority = 100
+                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -881,11 +805,11 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                priority = 62020
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
@@ -895,14 +819,13 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_Fixed_Conntrk_123_0D:AA:D8:42:30:F4_10.0.0.2/32_Recirc"
+                flowId = "Egress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F4_10.0.0.2/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.INGRESS_ACL_REMOTE_ACL_TABLE)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_REMOTE_ACL_TABLE)
                 ]
                 matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F4")),
                     new MatchEthernetType(2048L),
                     new MatchIpv4Source("10.0.0.2", "32")
@@ -912,20 +835,20 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
-                cookie = 110100481bi
-                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                cookie = 110100480bi
+                flowId = "Egress_Fixed_Conntrk_123_987_MatchEthernetType[2048]_Recirc"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
-                        new ActionDrop()
+                        new ActionNxConntrack(2, 0, 0, 5000, 213 as short)
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchEthernetType(2048L),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
-                priority = 50
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                priority = 100
+                tableId = NwConstants.INGRESS_ACL_CONNTRACK_SENDER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -938,11 +861,11 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                priority = 62020
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
@@ -952,15 +875,13 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_Fixed_Conntrk_123_0D:AA:D8:42:30:F5_10.0.0.3/32_Recirc"
+                flowId = "Ingress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F5_10.0.0.3/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.EGRESS_ACL_REMOTE_ACL_TABLE)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_REMOTE_ACL_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchEthernetType(2048L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new MatchEthernetDestination(new MacAddress("0D:AA:D8:42:30:F5")),
                     new MatchEthernetType(2048L),
                     new MatchIpv4Destination("10.0.0.3", "32")
@@ -970,20 +891,20 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
-                cookie = 110100481bi
-                flowId = "Ingress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                cookie = 110100480bi
+                flowId = "Ingress_Fixed_Conntrk_123_987_MatchEthernetType[2048]_Recirc"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
-                        new ActionDrop()
+                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.EGRESS_ACL_FILTER_TABLE)
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchEthernetType(2048L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
-                priority = 50
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                priority = 100
+                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -996,11 +917,11 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                priority = 62020
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
@@ -1010,14 +931,13 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_Fixed_Conntrk_123_0D:AA:D8:42:30:F5_10.0.0.3/32_Recirc"
+                flowId = "Egress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F5_10.0.0.3/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.INGRESS_ACL_REMOTE_ACL_TABLE)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_REMOTE_ACL_TABLE)
                 ]
                 matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F5")),
                     new MatchEthernetType(2048L),
                     new MatchIpv4Source("10.0.0.3", "32")
@@ -1027,20 +947,20 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
-                cookie = 110100481bi
-                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                cookie = 110100480bi
+                flowId = "Egress_Fixed_Conntrk_123_987_MatchEthernetType[2048]_Recirc"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
-                        new ActionDrop()
+                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.INGRESS_ACL_FILTER_TABLE)
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchEthernetType(2048L),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
-                priority = 50
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                priority = 100
+                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1053,11 +973,11 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                priority = 62020
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
@@ -1129,11 +1049,11 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                priority = 62020
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
@@ -1203,74 +1123,39 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                   new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                priority = 62020
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def etherEgressFlowsPort1() {
-        val theFlowId = "ETHERnullEgress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        #[
-            new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = theFlowId
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(2048L),
-                    new MatchEthernetType(2048L),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
-                ]
-                priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
-            ]
-        ]
-    }
-
-    protected def etherEgressFlowsPort1AfterDelete() {
-        val theFlowId = "ETHERnullEgress987_IPv4_FlowAfterRuleDeleted"
+        val theFlowId = "ETHERnullEgress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
                 flowId = theFlowId
                 flowName = "ACL"
-                hardTimeOut = 30
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_NEW_STATE))
-                        )
-                    ]),
-                    new InstructionGotoTable(NwConstants.INGRESS_ACL_FILTER_TABLE)
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(AclConstants.TRACKED_RPL_CT_STATE, AclConstants.TRACKED_RPL_CT_STATE_MASK)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def etheregressFlowPort2() {
-        val theFlowId = "ETHERnullEgress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val theFlowId = "ETHERnullEgress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1278,27 +1163,21 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def tcpIngressFlowPort1() {
-        val theFlowId = "TCP_DESTINATION_80_65535Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val theFlowId = "TCP_DESTINATION_80_65535Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1306,29 +1185,23 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                   new InstructionGotoTable(NwConstants.EGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(80, 65535),
                     new MatchIpProtocol(6 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def tcpIngressFlowPort2() {
-        val theFlowId = "TCP_DESTINATION_80_65535Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val theFlowId = "TCP_DESTINATION_80_65535Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1336,29 +1209,23 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(80, 65535),
                     new MatchIpProtocol(6 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def tcpEgressFlowPort2() {
-        val theFlowId = "TCP_DESTINATION_80_65535_remoteACL_id_85cc3048-abc3-43cc-89b3-377341426ac5Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val theFlowId = "TCP_DESTINATION_80_65535Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1366,30 +1233,23 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_REMOTE_ACL_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(4bi, MetaDataUtil.METADATA_MASK_REMOTE_ACL_TAG),
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(80, 65535),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614944bi, 1152920405111996400bi)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_RULE_BASED_FILTER_TABLE
             ]
         ]
     }
 
     protected def udpEgressFlowsPort1() {
-        val theFlowId = "UDP_DESTINATION_80_65535Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val theFlowId = "UDP_DESTINATION_80_65535Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
              new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1397,29 +1257,23 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                     new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchUdpDestinationPort(80, 65535),
                     new MatchIpProtocol(17 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def udpIngressFlowsPort2() {
-        val theFlowId = "UDP_DESTINATION_80_65535_remoteACL_id_85cc3048-abc3-43cc-89b3-377341426ac5Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val theFlowId = "UDP_DESTINATION_80_65535Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1427,30 +1281,24 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_REMOTE_ACL_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(4bi, MetaDataUtil.METADATA_MASK_REMOTE_ACL_TAG),
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchUdpDestinationPort(80, 65535),
                     new MatchIpProtocol(17 as short),
                     new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(32bi, 16777200bi)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.EGRESS_ACL_RULE_BASED_FILTER_TABLE
             ]
         ]
     }
 
     protected def udpEgressFlowsPort2() {
-        val theFlowId = "UDP_DESTINATION_80_65535Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val theFlowId = "UDP_DESTINATION_80_65535Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1458,29 +1306,23 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchUdpDestinationPort(80, 65535),
                     new MatchIpProtocol(17 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def icmpIngressFlowsPort1() {
-        val theFlowId = "ICMP_V4_DESTINATION_23_Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val theFlowId = "ICMP_V4_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1488,29 +1330,23 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new MatchIcmpv4(2 as short, 3 as short),
                     new MatchIpProtocol(1 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def icmpIngressFlowsPort2() {
-        val theFlowId = "ICMP_V4_DESTINATION_23_Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val theFlowId = "ICMP_V4_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1518,29 +1354,23 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new MatchIcmpv4(2 as short, 3 as short),
                     new MatchIpProtocol(1 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def icmpEgressFlowsPort2() {
-        val theFlowId = "ICMP_V4_DESTINATION_23__remoteACL_id_85cc3048-abc3-43cc-89b3-377341426ac5Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val theFlowId = "ICMP_V4_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1548,30 +1378,23 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_REMOTE_ACL_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(4bi, MetaDataUtil.METADATA_MASK_REMOTE_ACL_TAG),
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new MatchIcmpv4(2 as short, 3 as short),
                     new MatchIpProtocol(1 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614944bi, 1152920405111996400bi)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_RULE_BASED_FILTER_TABLE
             ]
         ]
     }
 
     protected def udpIngressPortRangeFlows() {
-        val theFlowId = "UDP_DESTINATION_2000_65532Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val theFlowId = "UDP_DESTINATION_2000_65532Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1579,36 +1402,30 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchUdpDestinationPort(2000, 65532),
                     new MatchIpProtocol(17 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.EGRESS_LEARN_ACL_FILTER_TABLE
             ]
         ]
     }
 
     protected def tcpEgressRangeFlows() {
-        val flowId1 = "TCP_DESTINATION_776_65534Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId2 = "TCP_DESTINATION_512_65280Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId3 = "TCP_DESTINATION_334_65534Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId4 = "TCP_DESTINATION_333_65535Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId5 = "TCP_DESTINATION_336_65520Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId6 = "TCP_DESTINATION_352_65504Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId7 = "TCP_DESTINATION_384_65408Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId8 = "TCP_DESTINATION_768_65528Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId1 = "TCP_DESTINATION_776_65534Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId2 = "TCP_DESTINATION_512_65280Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId3 = "TCP_DESTINATION_334_65534Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId4 = "TCP_DESTINATION_333_65535Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId5 = "TCP_DESTINATION_336_65520Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId6 = "TCP_DESTINATION_352_65504Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId7 = "TCP_DESTINATION_384_65408Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId8 = "TCP_DESTINATION_768_65528Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1616,23 +1433,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(776, 65534),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId1)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1640,23 +1451,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId2
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(512, 65280),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId2)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1664,23 +1469,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId3
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(334, 65534),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId3)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1688,23 +1487,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId4
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(333, 65535),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId4)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1712,23 +1505,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId5
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(336, 65520),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId5)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1736,23 +1523,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId6
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(352, 65504),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId6)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1760,23 +1541,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId7
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(384, 65408),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId7)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1784,29 +1559,23 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId8
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new NxMatchTcpDestinationPort(768, 65528),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId8)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def udpIngressAllFlows() {
-        val theFlowId = "UDP_DESTINATION_1_0Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val theFlowId = "UDP_DESTINATION_1_0Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1814,28 +1583,22 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new MatchIpProtocol(17 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def tcpEgressAllFlows() {
-        val theFlowId = "TCP_DESTINATION_1_0Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val theFlowId = "TCP_DESTINATION_1_0Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
          #[
              new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1843,30 +1606,24 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
          ]
 
      }
 
     protected def icmpIngressFlowsPort3() {
-        val flowId1 = "ICMP_V4_DESTINATION_23_Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
-        val flowId2 = "ICMP_V4_DESTINATION_23_Ingress98785cc3048-abc3-43cc-89b3-377341426a22"
+        val flowId1 = "ICMP_V4_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
+        val flowId2 = "ICMP_V4_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426a22"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1874,23 +1631,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new MatchIcmpv4(2 as short, 3 as short),
                     new MatchIpProtocol(1 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(flowId1)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1898,30 +1649,24 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId2
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new MatchIcmpv4(2 as short, 3 as short),
                     new MatchIpProtocol(1 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(flowId2)
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     protected def icmpEgressFlowsPort3() {
-        val flowId1 = "ICMP_V4_DESTINATION_23_Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId2 = "ICMP_V4_DESTINATION_23_Egress98785cc3048-abc3-43cc-89b3-377341426a21"
+        val flowId1 = "ICMP_V4_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId2 = "ICMP_V4_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426a21"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1929,21 +1674,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new MatchIcmpv4(2 as short, 3 as short),
                     new MatchIpProtocol(1 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId1)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1951,23 +1692,17 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 flowId = flowId2
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
-                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
-                        ),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(2048L),
                     new MatchEthernetType(2048L),
                     new MatchIcmpv4(2 as short, 3 as short),
                     new MatchIpProtocol(1 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId2)
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
@@ -1978,7 +1713,7 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_DHCP_Server_v4123_987__Permit_"
+                flowId = "Ingress_DHCP_Server_v4123_987_Permit_"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
@@ -1998,7 +1733,7 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_DHCP_Server_v6_123_987___Permit_"
+                flowId = "Ingress_DHCP_Server_v6_123_987_Permit_"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
@@ -2091,20 +1826,20 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
-                cookie = 110100481bi
-                flowId = "Ingress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                cookie = 110100480bi
+                flowId = "Ingress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F3_10.0.0.1/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionDrop()
-                    ])
+                    new InstructionGotoTable(NwConstants.EGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE)
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(32L, 32L)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                    new MatchEthernetDestination(new MacAddress(mac)),
+                    new MatchEthernetType(2048L),
+                    new MatchIpv4Destination("10.0.0.1", "32")
                 ]
-                priority = 50
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                priority = 61010
+                tableId = NwConstants.EGRESS_ACL_ANTI_SPOOFING_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -2117,11 +1852,11 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.INGRESS_ACL_FILTER_TABLE
+                priority = 62020
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -2147,28 +1882,7 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_DHCP_Client_v6_123_987_" + mac + "_Permit_"
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxResubmit(17 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(34525L),
-                    new MatchIpProtocol(17 as short),
-                    new MatchUdpDestinationPort(547 as short),
-                    new MatchUdpSourcePort(546 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new MatchEthernetSource(new MacAddress(mac))
-                ]
-                priority = 63010
-                tableId = NwConstants.INGRESS_ACL_TABLE
-            ],
-            new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = "Egress_DHCP_Server_v4123_987__Drop_"
+                flowId = "Egress_DHCP_Server_v4123_987_Drop_"
                 flowName = "ACL"
                 instructionInfoList = #[
                 ]
@@ -2185,7 +1899,7 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_DHCP_Server_v6_123_987__Drop_"
+                flowId = "Egress_DHCP_Server_v6_123_987_Drop_"
                 flowName = "ACL"
                 instructionInfoList = #[
                 ]
@@ -2274,20 +1988,20 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
-                cookie = 110100481bi
-                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                cookie = 110100480bi
+                flowId = "Egress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F3_10.0.0.1/32"
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionDrop()
-                    ])
+                    new InstructionGotoTable(211 as short)
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(32L, 32L)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
+                    new MatchEthernetSource(new MacAddress(mac)),
+                    new MatchEthernetType(2048L),
+                    new MatchIpv4Source("10.0.0.1", "32")
                 ]
-                priority = 50
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                priority = 61010
+                tableId = NwConstants.INGRESS_ACL_ANTI_SPOOFING_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -2300,48 +2014,45 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.EGRESS_ACL_FILTER_TABLE
+                priority = 62020
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_Fixed_Conntrk_123_" + mac + "_10.0.0.1/32_Recirc"
+                flowId = "Ingress_Fixed_Conntrk_123_987_MatchEthernetType[2048]_Recirc"
             flowName = "ACL"
             instructionInfoList = #[
                 new InstructionApplyActions(#[
-                    new ActionNxConntrack(2, 0, 0, 5000, NwConstants.EGRESS_ACL_REMOTE_ACL_TABLE)
+                    new ActionNxConntrack(2, 0, 0, 5000, NwConstants.EGRESS_ACL_FOR_EXISTING_TRAFFIC_TABLE)
                 ])
             ]
             matchInfoList = #[
                 new MatchEthernetType(2048L),
-                new MatchEthernetDestination(new MacAddress(mac)),
-            new MatchEthernetType(2048L),
-            new MatchIpv4Destination("10.0.0.1", "32")
+                new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
-                priority = 61010
-                tableId = NwConstants.EGRESS_ACL_TABLE
+                priority = 100
+                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_Fixed_Conntrk_123_" + mac + "_10.0.0.1/32_Recirc"
+                flowId = "Egress_Fixed_Conntrk_123_987_MatchEthernetType[2048]_Recirc"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.INGRESS_ACL_REMOTE_ACL_TABLE)
+                        new ActionNxConntrack(2, 0, 0, 5000, NwConstants.INGRESS_ACL_FILTER_TABLE)
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchEthernetSource(new MacAddress(mac)),
                     new MatchEthernetType(2048L),
-                    new MatchIpv4Source("10.0.0.1", "32")
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
-                priority = 61010
-                tableId = NwConstants.INGRESS_ACL_TABLE
+                priority = 100
+                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -2400,8 +2111,470 @@ class FlowEntryObjectsStateful extends FlowEntryObjectsBase {
                 sendFlowRemFlag = false
                 strictFlag = false
                 tableId = NwConstants.EGRESS_ACL_TABLE
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = "Ingress_Acl_Commit_Conntrack_123_987_MatchEthernetType[2048]"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
+                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
+                        ),
+                        new ActionNxResubmit(220 as short)
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(2048L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                    new MatchMetadata(0bi, 2bi)
+                    ]
+                priority = 100
+                tableId = 247 as short
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = "Ingress_Acl_Commit_Conntrack_123_987_MatchEthernetType[34525]"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
+                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
+                        ),
+                        new ActionNxResubmit(220 as short)
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(34525L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                    new MatchMetadata(0bi, 2bi)
+                ]
+                priority = 100
+                tableId = 247 as short
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = "Egress_Acl_Commit_Conntrack_123_987_MatchEthernetType[2048]"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                    new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
+                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
+                    ),
+                    new ActionNxResubmit(17 as short)
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(2048L),
+                    new MatchMetadata(1085217976614912bi, 1152920405095219202bi)
+                ]
+                priority = 100
+                tableId = 217 as short
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = "Egress_Acl_Commit_Conntrack_123_987_MatchEthernetType[34525]"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
+                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
+                        ),
+                        new ActionNxResubmit(17 as short)
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(34525L),
+                        new MatchMetadata(1085217976614912bi, 1152920405095219202bi)
+                ]
+                priority = 100
+                tableId = 217 as short
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = "Egress_Acl_Commit_Non_Conntrack_123_987"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionNxResubmit(17 as short)
+                    ])
+                ]
+                matchInfoList = #[
+                new MatchMetadata(1085217976614914bi, 1152920405095219202bi)
+                ]
+                priority = 100
+                tableId = 217 as short
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = "Ingress_Acl_Commit_Non_Conntrack_123_987"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                    new ActionNxResubmit(220 as short)
+                    ])
+                ]
+                matchInfoList = #[
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                    new MatchMetadata(2bi, 2bi)
+                ]
+                priority = 100
+                tableId = 247 as short
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100481bi
+                flowId = "Ingress_Fixed_Acl_Rule_Miss_Drop_123_987"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionDrop()
+                    ])
+                ]
+                matchInfoList = #[
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
+                ]
+                priority = 50
+                tableId = 244 as short
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100481bi
+                flowId = "Egress_Fixed_Acl_Rule_Miss_Drop_123_987"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionDrop()
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                ]
+                priority = 50
+                tableId = 214 as short
+            ]
+        ]
+    }
+
+    protected def ingressCommitConntrack1() {
+        val flowId1 = "Ingress_Acl_Commit_Conntrack_123_987_MatchEthernetType[2048]"
+        val flowId2 = "Ingress_Acl_Commit_Conntrack_123_987_MatchEthernetType[34525]"
+        #[
+            new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = flowId1
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                        new InstructionApplyActions(#[
+                            new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
+                                Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE)
+                                )
+                            ),
+                            new ActionNxResubmit(220 as short)
+                        ])
+                    ]
+                    matchInfoList = #[
+                        new MatchEthernetType(2048L),
+                        new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                        new MatchMetadata(0bi, 2bi)
+                    ]
+                    priority = 100
+                    tableId = 247 as short
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId2
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
+                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
+                        ),
+                        new ActionNxResubmit(220 as short)
+                        ])
+                    ]
+                    matchInfoList = #[
+                        new MatchEthernetType(34525L),
+                        new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                        new MatchMetadata(0bi, 2bi)
+                    ]
+                    priority = 100
+                    tableId = 247 as short
+            ]
+        ]
+    }
+
+    protected def egressCommitConntrack1() {
+        val flowId1 = "Egress_Acl_Commit_Conntrack_123_987_MatchEthernetType[2048]"
+        val flowId2 = "Egress_Acl_Commit_Conntrack_123_987_MatchEthernetType[34525]"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
+                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
+                        ),
+                        new ActionNxResubmit(17 as short)
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(2048L),
+                    new MatchMetadata(1085217976614912bi, 1152920405095219202bi)
+                ]
+                priority = 100
+                tableId = 217 as short
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId2
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short,
+                            Collections.singletonList(new ActionNxConntrack.NxCtMark(AclConstants.CT_MARK_EST_STATE))
+                        ),
+                        new ActionNxResubmit(17 as short)
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(34525L),
+                        new MatchMetadata(1085217976614912bi, 1152920405095219202bi)
+                ]
+                priority = 100
+                tableId = 217 as short
             ]
+        ]
+    }
 
+    protected def egressCommitNonConntrack1() {
+        val flowId1 = "Egress_Acl_Commit_Non_Conntrack_123_987"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                    new ActionNxResubmit(17 as short)
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchMetadata(1085217976614914bi, 1152920405095219202bi)
+                ]
+                priority = 100
+                tableId = 217 as short
+            ]
         ]
     }
+
+    protected def ingressCommitNonConntrack1() {
+        val flowId1 = "Ingress_Acl_Commit_Non_Conntrack_123_987"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionNxResubmit(220 as short)
+                    ])
+                ]
+                 matchInfoList = #[
+                     new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                         new MatchMetadata(2bi, 2bi)
+                     ]
+                 priority = 100
+                 tableId = 247 as short
+            ]
+        ]
+    }
+
+    protected def ingressfixedAclMissDrop1() {
+        val flowId1 = "Ingress_Fixed_Acl_Rule_Miss_Drop_123_987"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100481bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionDrop()
+                    ])
+                ]
+                matchInfoList = #[
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
+                ]
+                priority = 50
+                tableId = 244 as short
+            ]
+        ]
+    }
+
+    protected def egressfixedAclMissDrop1() {
+        val flowId1 = "Egress_Fixed_Acl_Rule_Miss_Drop_123_987"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100481bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionDrop()
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                ]
+                priority = 50
+                tableId = 214 as short
+            ]
+        ]
+    }
+
+    protected def ingressDispatcherFirst() {
+        val flowId1 = "Ingress_ACL_Dispatcher_First_123_987_2"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionGotoTable(245 as short),
+                    new InstructionWriteMetadata(32bi, 16777200bi)
+                ]
+                matchInfoList = #[
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
+                ]
+                priority = IdHelper.getId(flowId1)
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
+            ]
+        ]
+    }
+
+    protected def ingressDispatcherLast() {
+        val flowId1 = "Ingress_ACL_Dispatcher_Last_123_987_2"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100481bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionDrop()
+                    ])
+                ]
+                matchInfoList = #[
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
+                    new MatchMetadata(32bi, 16777200bi)
+                ]
+                priority = IdHelper.getId(flowId1)
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
+            ]
+        ]
+    }
+
+    protected def egressDispatcherFirst() {
+        val flowId1 = "Egress_ACL_Dispatcher_First_123_987_2"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionGotoTable(215 as short),
+                    new InstructionWriteMetadata(32bi, 16777200bi)
+                ]
+                matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                ]
+                priority = IdHelper.getId(flowId1)
+                tableId = NwConstants.INGRESS_LEARN_ACL_FILTER_TABLE
+            ]
+        ]
+    }
+
+    protected def egressDispatcherLast() {
+        val flowId1 = "Egress_ACL_Dispatcher_Last_123_987_2"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100481bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionDrop()
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchMetadata(1085217976614944bi, 1152920405111996400bi)
+                ]
+                priority = IdHelper.getId(flowId1)
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
+            ]
+        ]
+    }
+
+    protected def egressDispatcherFirst1() {
+            val flowId1 = "Egress_ACL_Dispatcher_First_123_987_4"
+            #[
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = flowId1
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                        new InstructionGotoTable(215 as short),
+                        new InstructionWriteMetadata(64bi, 16777200bi)
+                    ]
+                    matchInfoList = #[
+                        new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                    ]
+                    priority = IdHelper.getId(flowId1)
+                    tableId = NwConstants.INGRESS_LEARN_ACL_FILTER_TABLE
+                ]
+            ]
+        }
+
+        protected def egressDispatcherLast1() {
+            val flowId1 = "Egress_ACL_Dispatcher_Last_123_987_4"
+            #[
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100481bi
+                    flowId = flowId1
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                        new InstructionApplyActions(#[
+                            new ActionDrop()
+                        ])
+                    ]
+                    matchInfoList = #[
+                        new MatchMetadata(1085217976614976bi, 1152920405111996400bi)
+                    ]
+                    priority = IdHelper.getId(flowId1)
+                    tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
+                ]
+            ]
+        }
 }