Unit Test Cases Changes 53/66553/22
authorNishchya Gupta <nishchyag@altencalsoftlabs.com>
Wed, 13 Dec 2017 16:57:01 +0000 (22:27 +0530)
committerSam Hague <shague@redhat.com>
Tue, 20 Mar 2018 11:50:23 +0000 (11:50 +0000)
With the new table changes in ACL current ACL unit tests are not working,
changes required accordingly to make them work.

Change-Id: Ia127caf792420fce141978c7309c524e0fb537b0
Signed-off-by: Nishchya Gupta <nishchyag@altencalsoftlabs.com>
aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceStatefulIPv6Test.java
aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceStatefulTest.java
aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceTestBase.java
aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/FlowEntryObjectsBase.xtend
aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/FlowEntryObjectsStateful.xtend
aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/FlowEntryObjectsStatefulIPv6.xtend
aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/IdHelper.java

index 11a9b9f719a0d8fc6ee023562f2294c7b3e9bc78..42b2972dda49c62a42ae010e7aafcdd6bcea9e4d 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.netvirt.aclservice.tests;
 
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.rules.MethodRule;
 import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorTestModule;
@@ -15,7 +14,6 @@ import org.opendaylight.genius.datastoreutils.testutils.TestableDataTreeChangeLi
 import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.config.rev160806.AclserviceConfig.SecurityGroupMode;
 
-@Ignore
 public class AclServiceStatefulIPv6Test extends AclServiceTestBaseIPv6 {
 
     public @Rule MethodRule guice = new GuiceRule(new AclServiceModule(),
@@ -72,8 +70,7 @@ public class AclServiceStatefulIPv6Test extends AclServiceTestBaseIPv6 {
 
     @Override
     void newInterfaceWithAapCheck() {
-        // TODO: To be handled
-
+        assertFlowsInAnyOrder(ipv6statefulentries.aapFlows());
     }
 
     @Override
index 1cf70376261da45d896c59efbb45f1346fad9173..f51310e556b24cad40154ed9bbf035eec84c1d9c 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.netvirt.aclservice.tests;
 
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.rules.MethodRule;
 import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorTestModule;
@@ -15,7 +14,7 @@ import org.opendaylight.genius.datastoreutils.testutils.TestableDataTreeChangeLi
 import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.config.rev160806.AclserviceConfig.SecurityGroupMode;
 
-@Ignore
+
 public class AclServiceStatefulTest extends AclServiceTestBase {
 
     public @Rule MethodRule guice = new GuiceRule(new AclServiceModule(),
@@ -62,8 +61,7 @@ public class AclServiceStatefulTest extends AclServiceTestBase {
 
     @Override
     void newInterfaceWithTwoAclsHavingSameRulesCheck() {
-        // TODO Fix up — this is broken since the Genius InstructionInfo clean-up
-        //assertFlowsInAnyOrder(FlowEntryObjectsStateful.icmpFlowsForTwoAclsHavingSameRules());
+        assertFlowsInAnyOrder(ipv4statefulentries.icmpFlowsForTwoAclsHavingSameRules());
     }
 
     @Override
index d29b25db9d24ba6f6657ae8a2b83878723a3049b..5ba8cf5dbd92f23f9550afc904fa460403caa227 100644 (file)
@@ -20,7 +20,6 @@ import javax.inject.Inject;
 
 import org.eclipse.xtext.xbase.lib.Pair;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -63,7 +62,6 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Ignore
 public abstract class AclServiceTestBase {
     private static final Logger LOG = LoggerFactory.getLogger(AclServiceTestBase.class);
 
@@ -295,7 +293,6 @@ public abstract class AclServiceTestBase {
 
     abstract void newInterfaceWithTcpDstAclCheck();
 
-    @Ignore
     @Test
     public void newInterfaceWithUdpDstAcl() throws Exception {
         LOG.info("newInterfaceWithUdpDstAcl - start");
@@ -506,18 +503,7 @@ public abstract class AclServiceTestBase {
         newInterfaceWithIcmpAclCheck();
     }
 
-    /**
-     * Test new interface with allowed-address-pair (AAP) having IP prefix 0.0.0.0/0.
-     * <p>
-     * FIXME: This TC works locally but is failing in Jenkins, hence disabling TC for now. This is related to ordering
-     * issue (with FlowEntity objects) with test infra (AssertDataObjects.assertEqualBeans) which needs to be fixed.
-     * </p>
-     *
-     * @throws Exception
-     *             the exception
-     */
     @Test
-    @Ignore
     public void newInterfaceWithAapIpv4All() throws Exception {
         LOG.info("newInterfaceWithAapIpv4All test - start");
 
index fb906d16ccdf0fdc42755a6a8b9534fe6992582f..01c941f6c35d21b16553e869ef3a874aeff6d0c3 100644 (file)
@@ -13,7 +13,6 @@ import org.opendaylight.genius.mdsalutil.NwConstants
 import org.opendaylight.genius.mdsalutil.actions.ActionNxResubmit
 import org.opendaylight.genius.mdsalutil.instructions.InstructionApplyActions
 import org.opendaylight.genius.mdsalutil.instructions.InstructionGotoTable
-import org.opendaylight.genius.mdsalutil.instructions.InstructionWriteMetadata
 import org.opendaylight.genius.mdsalutil.matches.MatchArpSha
 import org.opendaylight.genius.mdsalutil.matches.MatchArpSpa
 import org.opendaylight.genius.mdsalutil.matches.MatchEthernetSource
@@ -44,7 +43,7 @@ class 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(#[
@@ -64,7 +63,7 @@ class 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(#[
@@ -234,28 +233,7 @@ class FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_DHCP_Client_v6_123_987_0D:AA:D8:42:30:F3_Permit_"
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxResubmit(17 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(34525L),
-                    new MatchIpProtocol(17 as short),
-                    new MatchUdpDestinationPort(547),
-                    new MatchUdpSourcePort(546),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F3"))
-                ]
-                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 = #[
                 ]
@@ -272,7 +250,7 @@ class 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 = #[
                 ]
@@ -393,7 +371,7 @@ class 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(#[
@@ -413,7 +391,7 @@ class 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(#[
@@ -555,28 +533,7 @@ class FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_DHCP_Client_v6_123_987_0D:AA:D8:42:30:F4_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("0D:AA:D8:42:30:F4"))
-                ]
-                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 = #[
                 ]
@@ -593,7 +550,7 @@ class 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 = #[
                 ]
@@ -713,7 +670,7 @@ class 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(#[
@@ -733,7 +690,7 @@ class 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(#[
@@ -875,28 +832,7 @@ class FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_DHCP_Client_v6_123_987_0D:AA:D8:42:30:F5_Permit_"
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxResubmit(17 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(34525L),
-                    new MatchIpProtocol(17 as short),
-                    new MatchUdpDestinationPort(547),
-                    new MatchUdpSourcePort(546),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F5"))
-                ]
-                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 = #[
                 ]
@@ -913,7 +849,7 @@ class 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 = #[
                 ]
@@ -1028,7 +964,7 @@ class 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(#[
@@ -1048,7 +984,7 @@ class 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(#[
@@ -1187,7 +1123,7 @@ class FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_DHCP_Server_v4123_987__Drop_"
+                flowId = "Egress_DHCP_Server_v4123_987_Drop_"
                 flowName = "ACL"
                 instructionInfoList = #[
                 ]
@@ -1204,7 +1140,7 @@ class 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 = #[
                 ]
@@ -1351,6 +1287,7 @@ class FlowEntryObjectsBase {
          ]
     }
 
+
     protected def remoteEgressFlowsPort1() {
         #[
             remoteEgressFlowsPort("10.0.0.1")
@@ -1365,41 +1302,81 @@ class FlowEntryObjectsBase {
 
     protected def remoteIngressFlowsPort(String ip) {
         new FlowEntityBuilder >> [
-                dpnId = 123bi
+            dpnId = 123bi
             cookie = 110100480bi
-            flowId = "Acl_Filter_Egress_" + ip + "/32_5000"
+            flowId = "Acl_Filter_Egress_" + ip + "/32_2"
             flowName = "ACL"
             instructionInfoList = #[
-                new InstructionWriteMetadata(4bi, 16777214bi),
-                new InstructionGotoTable(NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE)
+               new InstructionGotoTable(NwConstants.INGRESS_ACL_COMMITTER_TABLE)
             ]
             matchInfoList = #[
-                new MatchMetadata(83886080000bi, 1099494850560bi),
+                new MatchMetadata(32bi, 16777200bi),
                 new MatchEthernetType(2048L),
                 new MatchIpv4Destination(ip, "32")
             ]
-            priority = 50
-            tableId = NwConstants.INGRESS_ACL_REMOTE_ACL_TABLE
+            priority = 100
+            tableId = NwConstants.INGRESS_REMOTE_ACL_TABLE
         ]
     }
 
     protected def remoteEgressFlowsPort(String ip) {
         new FlowEntityBuilder >> [
-                dpnId = 123bi
+            dpnId = 123bi
             cookie = 110100480bi
-            flowId = "Acl_Filter_Ingress_" + ip + "/32_5000"
+            flowId = "Acl_Filter_Ingress_" + ip + "/32_2"
             flowName = "ACL"
             instructionInfoList = #[
-                new InstructionWriteMetadata(4bi, 16777214bi),
-                new InstructionGotoTable(NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE)
+                new InstructionGotoTable(NwConstants.EGRESS_ACL_COMMITTER_TABLE)
             ]
             matchInfoList = #[
-                new MatchMetadata(83886080000bi, 1099494850560bi),
+                new MatchMetadata(32bi, 16777200bi),
                 new MatchEthernetType(2048L),
                 new MatchIpv4Source(ip, "32")
             ]
-            priority = 50
-            tableId = NwConstants.EGRESS_ACL_REMOTE_ACL_TABLE
+            priority = 100
+            tableId = NwConstants.EGRESS_REMOTE_ACL_TABLE
+        ]
+    }
+
+    protected def remoteIngressFlowsPort3() {
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = "Acl_Filter_Ingress_10.0.0.2/32_4"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionGotoTable(247 as short)
+                ]
+                matchInfoList = #[
+                    new MatchMetadata(64bi, 16777200bi),
+                    new MatchEthernetType(2048L),
+                    new MatchIpv4Source("10.0.0.2", "32")
+                ]
+                priority = 100
+                tableId = 246 as short
+            ]
+        ]
+    }
+
+    protected def remoteEgressFlowsPort3() {
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = "Acl_Filter_Egress_10.0.0.2/32_4"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionGotoTable(217 as short)
+                ]
+                matchInfoList = #[
+                    new MatchMetadata(64bi, 16777200bi),
+                    new MatchEthernetType(2048L),
+                    new MatchIpv4Destination("10.0.0.2", "32")
+                ]
+                priority = 100
+                tableId = 216 as short
+            ]
         ]
     }
 
@@ -1409,7 +1386,7 @@ class 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(#[
@@ -1429,7 +1406,7 @@ class 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(#[
@@ -1565,7 +1542,7 @@ class FlowEntryObjectsBase {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_DHCP_Server_v4123_987__Drop_"
+                flowId = "Egress_DHCP_Server_v4123_987_Drop_"
                 flowName = "ACL"
                 instructionInfoList = #[
                 ]
@@ -1582,7 +1559,7 @@ class 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 = #[
                 ]
@@ -1683,7 +1660,7 @@ class FlowEntryObjectsBase {
                     new MatchEthernetType(2054L),
                     new MatchArpSha(new MacAddress(mac)),
                     new MatchEthernetSource(new MacAddress(mac)),
-                    new MatchMetadata(1085217976614912bi, 1152920405095219200bi)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = 63010
                 tableId = NwConstants.INGRESS_ACL_TABLE
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
+                ]
+            ]
+        }
 }
index bd6c6a49eb4b2b8f73bece9dc1e617f444962ea2..6c835a42ff44b7e0f7e2c9372dc13fe33102976e 100644 (file)
@@ -12,64 +12,86 @@ import org.opendaylight.genius.mdsalutil.actions.ActionDrop
 import org.opendaylight.genius.mdsalutil.actions.ActionNxConntrack
 import org.opendaylight.genius.mdsalutil.actions.ActionNxResubmit
 import org.opendaylight.genius.mdsalutil.FlowEntityBuilder
+import org.opendaylight.genius.mdsalutil.matches.MatchArpSha
+import org.opendaylight.genius.mdsalutil.matches.MatchArpSpa
 import org.opendaylight.genius.mdsalutil.instructions.InstructionApplyActions
 import org.opendaylight.genius.mdsalutil.matches.MatchEthernetDestination
 import org.opendaylight.genius.mdsalutil.matches.MatchEthernetSource
 import org.opendaylight.genius.mdsalutil.matches.MatchEthernetType
 import org.opendaylight.genius.mdsalutil.matches.MatchIcmpv6
 import org.opendaylight.genius.mdsalutil.matches.MatchIpProtocol
-import org.opendaylight.genius.mdsalutil.matches.MatchIpv6Destination
-import org.opendaylight.genius.mdsalutil.matches.MatchIpv6Source
+import org.opendaylight.genius.mdsalutil.matches.MatchIpv4Source
+import org.opendaylight.genius.mdsalutil.matches.MatchIpv4Destination
 import org.opendaylight.genius.mdsalutil.matches.MatchMetadata
 import org.opendaylight.genius.mdsalutil.NwConstants
 import org.opendaylight.genius.mdsalutil.nxmatches.NxMatchCtState
 import org.opendaylight.genius.mdsalutil.nxmatches.NxMatchRegister
 import org.opendaylight.genius.mdsalutil.nxmatches.NxMatchTcpDestinationPort
 import org.opendaylight.genius.mdsalutil.nxmatches.NxMatchUdpDestinationPort
+import org.opendaylight.genius.mdsalutil.matches.MatchUdpDestinationPort
+import org.opendaylight.genius.mdsalutil.matches.MatchUdpSourcePort
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg6
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix
 
 import static extension org.opendaylight.mdsal.binding.testutils.XtendBuilderExtensions.operator_doubleGreaterThan
+import org.opendaylight.genius.mdsalutil.instructions.InstructionGotoTable
 
 class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
 
+    override icmpFlowsForTwoAclsHavingSameRules() {
+        fixedIngressFlowsPort3
+        + fixedConntrackIngressFlowsPort3
+        + icmpIngressFlowsPort4
+        + fixedEgressFlowsPort3
+        + fixedConntrackEgressFlowsPort5
+        + icmpEgressFlowsPort4
+        + ingressCommitNonConntrack1
+        + egressCommitNonConntrack1
+        + ingressCommitConntrack1
+        + egressCommitConntrack1
+        + ingressfixedAclMissDrop1
+        + egressfixedAclMissDrop1
+        + fixedIngressL3BroadcastFlows
+        + fixedEgressL2BroadcastFlowsPort3
+
+    }
+
     override fixedConntrackIngressFlowsPort1() {
         #[
-           new FlowEntityBuilder >> [
+            new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_Fixed_Conntrk_123_0D:AA:D8:42:30:F3_2001:db8:1::/64_Recirc"
-            flowName = "ACL"
-            instructionInfoList = #[
-                new InstructionApplyActions(#[
-                    new ActionNxConntrack(2, 0, 0, 5000, 243 as short)
-                ])
-            ]
-            matchInfoList = #[
-                new MatchEthernetType(34525L),
-                new MatchEthernetDestination(new MacAddress("0D:AA:D8:42:30:F3")),
-                new MatchEthernetType(34525L),
-                new MatchIpv6Destination("2001:db8:1::/64")
+                flowId = "Ingress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F3_10.0.0.1/32"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionGotoTable(241 as short)
+                ]
+                matchInfoList = #[
+                    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")
                 ]
                 priority = 61010
                 tableId = NwConstants.EGRESS_ACL_TABLE
             ],
-           new FlowEntityBuilder >> [
+            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, 1152920405095219200bi),
-                   new NxMatchCtState(33, 33)
+                   new MatchEthernetType(2048L),
+                   new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                ]
-               priority = 50
-               tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+               priority = 100
+               tableId = NwConstants.EGRESS_ACL_CONNTRACK_SENDER_TABLE
            ],
            new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -82,18 +104,17 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                    ])
                ]
                matchInfoList = #[
-                   new MatchMetadata(1085217976614912bi, 1152920405095219200bi),
+                   new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                    new NxMatchCtState(48, 48)
                ]
-               priority = 62015
-               tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+               priority = 62020
+               tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
            ]
         ]
     }
 
     override etherIngressFlowsPort2() {
-        val flowId1 = "ETHERnull_ipv6_remoteACL_interface_aap_0D:AA:D8:42:30:F3_2001:db8:1::/64Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
-        val flowId2 = "ETHERnull_ipv6_remoteACL_interface_aap_0D:AA:D8:42:30:F4_2001:db8:2::/64Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val flowId1 = "ETHERnullIngress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -101,45 +122,16 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(246 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("2001:db8:1::/64"),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(32bi, 16777200bi)
                 ]
                 priority = IdHelper.getId(flowId1)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
-            ],
-            new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = flowId2
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("2001:db8:2::/64"),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
-                    new MatchEthernetType(34525L),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
-                ]
-                priority = IdHelper.getId(flowId2)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.EGRESS_ACL_RULE_BASED_FILTER_TABLE
             ]
         ]
     }
@@ -149,17 +141,16 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_Fixed_Conntrk_123_0D:AA:D8:42:30:F3_2001:db8:1::/64_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, 213 as short)
-                    ])
+                    new InstructionGotoTable(211 as short)
                 ]
                 matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, 1152920405095219200bi),
                     new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F3")),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("2001:db8:1::/64")
+                    new MatchEthernetType(2048L),
+                    new MatchIpv4Source("10.0.0.1", "32")
                 ]
                 priority = 61010
                 tableId = NwConstants.INGRESS_ACL_TABLE
@@ -167,7 +158,7 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100481bi
-                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_Invalid"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
@@ -175,28 +166,29 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, 1152920405095219200bi),
+                    new NxMatchCtState(48L, 48L)
                 ]
-                priority = 50
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                priority = 62020
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
-                cookie = 110100481bi
-                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_Invalid"
+                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(48, 48)
+                    new MatchEthernetType(2048L),
+                    new MatchMetadata(1085217976614912bi, 1152920405095219200bi)
+
                 ]
-                priority = 62015
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                priority = 100
+                tableId = NwConstants.INGRESS_ACL_CONNTRACK_SENDER_TABLE
             ]
         ]
     }
@@ -206,38 +198,36 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
              new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_Fixed_Conntrk_123_0D:AA:D8:42:30:F4_2001:db8:2::/64_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, 243 as short)
-                    ])
+                    new InstructionGotoTable(241 as short)
                 ]
                 matchInfoList = #[
-                    new MatchEthernetType(34525L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new MatchEthernetDestination(new MacAddress("0D:AA:D8:42:30:F4")),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Destination("2001:db8:2::/64")
+                    new MatchEthernetType(2048L),
+                    new MatchIpv4Destination("10.0.0.2", "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, 1152920405095219200bi),
-                     new NxMatchCtState(33, 33)
+                     new MatchEthernetType(2048L),
+                     new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                  ]
-                 priority = 50
-                 tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                 priority = 100
+                 tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
              ],
              new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -250,11 +240,11 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                      ])
                  ]
                  matchInfoList = #[
-                     new MatchMetadata(1085217976614912bi, 1152920405095219200bi),
+                     new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                      new NxMatchCtState(48, 48)
                  ]
-                 priority = 62015
-                 tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                 priority = 62020
+                 tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
              ]
 
         ]
@@ -265,17 +255,16 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_Fixed_Conntrk_123_0D:AA:D8:42:30:F4_2001:db8:2::/64_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, 213 as short)
-                    ])
+                    new InstructionGotoTable(211 as short)
                 ]
                 matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, 1152920405095219200bi),
                     new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F4")),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("2001:db8:2::/64")
+                    new MatchEthernetType(2048L),
+                    new MatchIpv4Source("10.0.0.2", "32")
                 ]
                 priority = 61010
                 tableId = NwConstants.INGRESS_ACL_TABLE
@@ -283,7 +272,7 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100481bi
-                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_Invalid"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
@@ -291,28 +280,28 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, 1152920405095219200bi),
+                    new NxMatchCtState(48L, 48L)
                 ]
-                priority = 50
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                priority =62020
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
-                cookie = 110100481bi
-                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_Invalid"
+                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(48, 48)
+                    new MatchEthernetType(2048L),
+                    new MatchMetadata(1085217976614912bi, 1152920405095219200bi)
                 ]
-                priority = 62015
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                priority = 100
+                tableId = NwConstants.INGRESS_ACL_CONNTRACK_SENDER_TABLE
             ]
         ]
     }
@@ -322,38 +311,36 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Ingress_Fixed_Conntrk_123_0D:AA:D8:42:30:F5_2001:db8:3::/64_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, 243 as short)
-                    ])
+                    new InstructionGotoTable(241 as short)
                 ]
                 matchInfoList = #[
-                    new MatchEthernetType(34525L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new MatchEthernetDestination(new MacAddress("0D:AA:D8:42:30:F5")),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Destination("2001:db8:3::/64")
+                    new MatchEthernetType(2048L),
+                    new MatchIpv4Destination("10.0.0.3", "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, 1152920405095219200bi),
-                    new NxMatchCtState(33, 33)
+                    new MatchEthernetType(2048L),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
-                priority = 50
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                priority = 100
+                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -366,11 +353,11 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                     ])
                 ]
                 matchInfoList = #[
-                    new MatchMetadata(1085217976614912bi, 1152920405095219200bi),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new NxMatchCtState(48, 48)
                 ]
-                priority = 62015
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                priority = 62020
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
@@ -380,17 +367,16 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100480bi
-                flowId = "Egress_Fixed_Conntrk_123_0D:AA:D8:42:30:F5_2001:db8:3::/64_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, 213 as short)
-                    ])
+                    new InstructionGotoTable(211 as short)
                 ]
                 matchInfoList = #[
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
                     new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F5")),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("2001:db8:3::/64")
+                    new MatchEthernetType(2048L),
+                    new MatchIpv4Source("10.0.0.3", "32")
                 ]
                 priority = 61010
                 tableId = NwConstants.INGRESS_ACL_TABLE
@@ -398,7 +384,7 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
             new FlowEntityBuilder >> [
                 dpnId = 123bi
                 cookie = 110100481bi
-                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_New"
+                flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_Invalid"
                 flowName = "ACL"
                 instructionInfoList = #[
                     new InstructionApplyActions(#[
@@ -406,11 +392,11 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                     ])
                 ]
                 matchInfoList = #[
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, 1152920405095219200bi),
+                    new NxMatchCtState(48L, 48L)
                 ]
-                priority = 50
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                priority = 62020
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -425,16 +411,16 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 matchInfoList = #[
                     new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
                     new MatchMetadata(1085217976614912bi, 1152920405095219200bi),
-                    new NxMatchCtState(48, 48)
+                    new NxMatchCtState(48L, 48L)
                 ]
-                priority = 62015
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                priority = 62020
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     override etherEgressFlowsPort1() {
-        val theFlowId = "ETHERnullEgress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val theFlowId = "ETHERnullEgress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -442,26 +428,21 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    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
             ]
         ]
     }
 
     override etheregressFlowPort2() {
-        val theFlowId = "ETHERnullEgress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val theFlowId = "ETHERnullEgress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -469,26 +450,21 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    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
             ]
         ]
     }
 
     override 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
@@ -496,28 +472,23 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(247 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(80, 65535),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     override 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
@@ -525,29 +496,23 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(247 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(80, 65535),
                     new MatchIpProtocol(6 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     override tcpEgressFlowPort2() {
-        val flowId1 = "TCP_DESTINATION_80_65535_ipv6_remoteACL_interface_aap_0D:AA:D8:42:30:F3_2001:db8:1::/64Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId2 = "TCP_DESTINATION_80_65535_ipv6_remoteACL_interface_aap_0D:AA:D8:42:30:F4_2001:db8:2::/64Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId1 = "TCP_DESTINATION_80_65535Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -555,55 +520,23 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(216 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Destination("2001:db8:1::/64"),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(80, 65535),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614944bi, 1152920405111996400bi)
                 ]
                 priority = IdHelper.getId(flowId1)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
-            ],
-            new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = flowId1
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Destination("2001:db8:2::/64"),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
-                    new MatchEthernetType(34525L),
-                    new NxMatchTcpDestinationPort(80, 65535),
-                    new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
-                ]
-                priority = IdHelper.getId(flowId2)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_RULE_BASED_FILTER_TABLE
             ]
         ]
     }
 
     override 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
@@ -611,29 +544,23 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchUdpDestinationPort(80, 65535),
                     new MatchIpProtocol(17 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    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
             ]
         ]
     }
 
     override udpIngressFlowsPort2() {
-        val flowId1 = "UDP_DESTINATION_80_65535_ipv6_remoteACL_interface_aap_0D:AA:D8:42:30:F3_2001:db8:1::/64Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
-        val flowId2 = "UDP_DESTINATION_80_65535_ipv6_remoteACL_interface_aap_0D:AA:D8:42:30:F4_2001:db8:2::/64Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val flowId1 = "UDP_DESTINATION_80_65535Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -641,55 +568,24 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(246 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("2001:db8:1::/64"),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchUdpDestinationPort(80, 65535),
                     new MatchIpProtocol(17 as short),
                     new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(32bi, 16777200bi)
                 ]
                 priority = IdHelper.getId(flowId1)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
-            ],
-            new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = flowId2
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("2001:db8:2::/64"),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
-                    new MatchEthernetType(34525L),
-                    new NxMatchUdpDestinationPort(80, 65535),
-                    new MatchIpProtocol(17 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
-                ]
-                priority = IdHelper.getId(flowId2)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.EGRESS_ACL_RULE_BASED_FILTER_TABLE
             ]
         ]
     }
 
     override 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
@@ -697,28 +593,24 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
+
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchUdpDestinationPort(80, 65535),
                     new MatchIpProtocol(17 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    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
             ]
         ]
     }
 
     override icmpIngressFlowsPort1() {
-        val theFlowId = "ICMP_V6_DESTINATION_23_Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val theFlowId = "ICMP_V6_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -726,28 +618,23 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(247 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new MatchIcmpv6(2 as short, 3 as short),
-                    new MatchIpProtocol(1 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new MatchIpProtocol(58 as short),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     override icmpIngressFlowsPort2() {
-        val theFlowId = "ICMP_V6_DESTINATION_23_Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
+        val theFlowId = "ICMP_V6_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -755,29 +642,23 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(247 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new MatchIcmpv6(2 as short, 3 as short),
-                    new MatchIpProtocol(1 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new MatchIpProtocol(58 as short),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     override icmpEgressFlowsPort2() {
-        val flowId1 = "ICMP_V6_DESTINATION_23__ipv6_remoteACL_interface_aap_0D:AA:D8:42:30:F3_2001:db8:1::/64Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId2 = "ICMP_V6_DESTINATION_23__ipv6_remoteACL_interface_aap_0D:AA:D8:42:30:F4_2001:db8:2::/64Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId1 = "ICMP_V6_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -785,55 +666,23 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(216 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Destination("2001:db8:1::/64"),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new MatchIcmpv6(2 as short, 3 as short),
-                    new MatchIpProtocol(1 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchIpProtocol(58 as short),
+                    new MatchMetadata(1085217976614944bi, 1152920405111996400bi)
                 ]
                 priority = IdHelper.getId(flowId1)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
-            ],
-            new FlowEntityBuilder >> [
-                dpnId = 123bi
-                cookie = 110100480bi
-                flowId = flowId2
-                flowName = "ACL"
-                instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
-                ]
-                matchInfoList = #[
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Destination("2001:db8:2::/64"),
-                    new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
-                    new MatchEthernetType(34525L),
-                    new MatchIcmpv6(2 as short, 3 as short),
-                    new MatchIpProtocol(1 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
-                ]
-                priority = IdHelper.getId(flowId2)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_RULE_BASED_FILTER_TABLE
             ]
         ]
     }
 
     override 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
@@ -841,35 +690,30 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(247 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchUdpDestinationPort(2000, 65532),
                     new MatchIpProtocol(17 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     override 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
@@ -877,22 +721,17 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(776, 65534),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId1)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -900,22 +739,17 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId2
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(512, 65280),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId2)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -923,22 +757,17 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId3
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(334, 65534),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId3)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -946,22 +775,17 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId4
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(333, 65535),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId4)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -969,22 +793,17 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId5
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(336, 65520),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId5)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -992,22 +811,17 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId6
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(352, 65504),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId6)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1015,22 +829,17 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId7
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(384, 65408),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId7)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1038,28 +847,23 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId8
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new NxMatchTcpDestinationPort(768, 65528),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId8)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     override 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
@@ -1067,27 +871,22 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(247 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new MatchIpProtocol(17 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(theFlowId)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ]
         ]
     }
 
     override 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
@@ -1095,29 +894,24 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = theFlowId
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new MatchIpProtocol(6 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    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
             ]
          ]
 
      }
 
     override icmpIngressFlowsPort3() {
-        val flowId1 = "ICMP_V6_DESTINATION_23_Ingress98785cc3048-abc3-43cc-89b3-377341426ac7"
-        val flowId2 = "ICMP_V6_DESTINATION_23_Ingress98785cc3048-abc3-43cc-89b3-377341426a22"
+        val flowId1 = "ICMP_V6_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
+        val flowId2 = "ICMP_V6_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426a22"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1125,22 +919,17 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(247 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new MatchIcmpv6(2 as short, 3 as short),
-                    new MatchIpProtocol(1 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new MatchIpProtocol(58 as short),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(flowId1)
-                tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1148,19 +937,14 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId2
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(220 as short)
-                    ])
+                    new InstructionGotoTable(247 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new MatchIcmpv6(2 as short, 3 as short),
-                    new MatchIpProtocol(1 as short),
-                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L),
-                    new NxMatchCtState(33, 33)
+                    new MatchIpProtocol(58 as short),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
                 ]
                 priority = IdHelper.getId(flowId2)
                 tableId = NwConstants.EGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
@@ -1168,9 +952,52 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
         ]
     }
 
+    protected def icmpIngressFlowsPort4() {
+        val flowId1 = "ICMP_V6_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7"
+        val flowId2 = "ICMP_V6_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426a22"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionGotoTable(247 as short)
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(34525L),
+                    new MatchEthernetType(34525L),
+                    new MatchIcmpv6(2 as short, 3 as short),
+                    new MatchIpProtocol(58 as short),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
+                ]
+                priority = IdHelper.getId(flowId1)
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId2
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionGotoTable(247 as short)
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(34525L),
+                    new MatchEthernetType(34525L),
+                    new MatchIcmpv6(2 as short, 3 as short),
+                    new MatchIpProtocol(58 as short),
+                    new NxMatchRegister(NxmNxReg6, 252672L, 268435200L)
+                ]
+                priority = 1004
+                tableId = NwConstants.EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
+            ]
+        ]
+    }
+
     override icmpEgressFlowsPort3() {
-        val flowId1 = "ICMP_V6_DESTINATION_23_Egress98785cc3048-abc3-43cc-89b3-377341426ac6"
-        val flowId2 = "ICMP_V6_DESTINATION_23_Egress98785cc3048-abc3-43cc-89b3-377341426a21"
+        val flowId1 = "ICMP_V6_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId2 = "ICMP_V6_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426a21"
         #[
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1178,22 +1005,17 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId1
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new MatchIcmpv6(2 as short, 3 as short),
-                    new MatchIpProtocol(1 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchIpProtocol(58 as short),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId1)
-                tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
             ],
             new FlowEntityBuilder >> [
                 dpnId = 123bi
@@ -1201,23 +1023,271 @@ class FlowEntryObjectsStatefulIPv6 extends FlowEntryObjectsStateful {
                 flowId = flowId2
                 flowName = "ACL"
                 instructionInfoList = #[
-                    new InstructionApplyActions(#[
-                        new ActionNxConntrack(2, 1, 0, 5000, 255 as short),
-                        new ActionNxResubmit(17 as short)
-                    ])
+                    new InstructionGotoTable(217 as short)
                 ]
                 matchInfoList = #[
                     new MatchEthernetType(34525L),
-                    new MatchIpv6Source("::/0"),
                     new MatchEthernetType(34525L),
                     new MatchIcmpv6(2 as short, 3 as short),
-                    new MatchIpProtocol(1 as short),
-                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
-                    new NxMatchCtState(33, 33)
+                    new MatchIpProtocol(58 as short),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
                 ]
                 priority = IdHelper.getId(flowId2)
                 tableId = NwConstants.INGRESS_ACL_STATEFUL_APPLY_CHANGE_EXIST_TRAFFIC_TABLE
             ]
         ]
     }
+
+    protected def icmpEgressFlowsPort4() {
+        val flowId1 = "ICMP_V6_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6"
+        val flowId2 = "ICMP_V6_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426a21"
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId1
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionGotoTable(217 as short)
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(34525L),
+                    new MatchEthernetType(34525L),
+                    new MatchIcmpv6(2 as short, 3 as short),
+                    new MatchIpProtocol(58 as short),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                ]
+                priority = IdHelper.getId(flowId1)
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
+            ],
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = flowId2
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionGotoTable(217 as short)
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(34525L),
+                    new MatchEthernetType(34525L),
+                    new MatchIcmpv6(2 as short, 3 as short),
+                    new MatchIpProtocol(58 as short),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                ]
+                priority = 1004
+                tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
+            ]
+        ]
+    }
+
+    override fixedEgressFlowsPort3 () {
+        #[
+            new FlowEntityBuilder >> [
+                dpnId = 123bi
+                cookie = 110100480bi
+                flowId = "Egress_DHCP_Client_v4123_987_0D:AA:D8:42:30:F5_Permit_"
+                flowName = "ACL"
+                instructionInfoList = #[
+                    new InstructionApplyActions(#[
+                        new ActionNxResubmit(17 as short)
+                    ])
+                ]
+                matchInfoList = #[
+                    new MatchEthernetType(2048L),
+                    new MatchIpProtocol(17 as short),
+                    new MatchUdpDestinationPort(67),
+                    new MatchUdpSourcePort(68),
+                    new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG),
+                    new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F5"))
+                ]
+                priority = 63010
+                tableId = 210 as short
+            ],
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = "Egress_DHCP_Server_v4123_987_Drop_"
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                    ]
+                    matchInfoList = #[
+                        new MatchEthernetType(2048L),
+                        new MatchIpProtocol(17 as short),
+                        new MatchUdpDestinationPort(68),
+                        new MatchUdpSourcePort(67),
+                        new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                    ]
+                    priority = 63010
+                    tableId = 210 as short
+                ],
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = "Egress_DHCP_Server_v6_123_987_Drop_"
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                    ]
+                    matchInfoList = #[
+                        new MatchEthernetType(34525L),
+                        new MatchIpProtocol(17 as short),
+                        new MatchUdpDestinationPort(546),
+                        new MatchUdpSourcePort(547),
+                        new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                    ]
+                    priority = 63010
+                    tableId = 210 as short
+                ],
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = "Egress_ICMPv6_123_987_134_Drop_"
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                    ]
+                    matchInfoList = #[
+                        new MatchEthernetType(34525L),
+                        new MatchIpProtocol(58 as short),
+                        new MatchIcmpv6(134 as short, 0 as short),
+                        new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                    ]
+                    priority = 63020
+                    tableId = 210 as short
+                ],
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = "Egress_ICMPv6_123_987_133_Permit_"
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                        new InstructionApplyActions(#[
+                            new ActionNxResubmit(17 as short)
+                        ])
+                    ]
+                    matchInfoList = #[
+                        new MatchEthernetType(34525L),
+                        new MatchIpProtocol(58 as short),
+                        new MatchIcmpv6(133 as short, 0 as short),
+                        new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                    ]
+                    priority = 63010
+                    tableId = 210 as short
+                ],
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = "Egress_ICMPv6_123_987_135_Permit_"
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                        new InstructionApplyActions(#[
+                            new ActionNxResubmit(17 as short)
+                        ])
+                    ]
+                    matchInfoList = #[
+                        new MatchEthernetType(34525L),
+                        new MatchIpProtocol(58 as short),
+                        new MatchIcmpv6(135 as short, 0 as short),
+                        new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                    ]
+                    priority = 63010
+                    tableId = 210 as short
+                ],
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = "Egress_ICMPv6_123_987_136_Permit_"
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                        new InstructionApplyActions(#[
+                            new ActionNxResubmit(17 as short)
+                        ])
+                    ]
+                    matchInfoList = #[
+                        new MatchEthernetType(34525L),
+                        new MatchIpProtocol(58 as short),
+                        new MatchIcmpv6(136 as short, 0 as short),
+                        new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                    ]
+                    priority = 63010
+                    tableId = 210 as short
+                ],
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = "Egress_ARP_123_987_0D:AA:D8:42:30:F510.0.0.3/32"
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                        new InstructionApplyActions(#[
+                            new ActionNxResubmit(17 as short)
+                        ])
+                    ]
+                    matchInfoList = #[
+                        new MatchEthernetType(2054L),
+                        new MatchArpSha(new MacAddress("0D:AA:D8:42:30:F5")),
+                        new MatchEthernetSource(new MacAddress("0D:AA:D8:42:30:F5")),
+                        new MatchArpSpa(new Ipv4Prefix("10.0.0.3/32")),
+                        new MatchMetadata(1085217976614912bi, MetaDataUtil.METADATA_MASK_LPORT_TAG)
+                    ]
+                    priority = 63010
+                    tableId = 210 as short
+                ]
+        ]
+    }
+
+    protected def fixedConntrackEgressFlowsPort5() {
+            #[
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = "Egress_Fixed_Goto_Classifier_123_987_0D:AA:D8:42:30:F5_10.0.0.3/32"
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                        new InstructionGotoTable(211 as short)
+                    ]
+                    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")
+                    ]
+                    priority = 61010
+                    tableId = 210 as short
+                ],
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100481bi
+                    flowId = "Egress_Fixed_Conntrk_Drop123_987_Tracked_Invalid"
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                        new InstructionApplyActions(#[
+                            new ActionDrop()
+                        ])
+                    ]
+                    matchInfoList = #[
+                        new MatchMetadata(1085217976614912bi, 1152920405095219200bi),
+                        new NxMatchCtState(48L, 48L)
+                    ]
+                    priority = 62020
+                    tableId = NwConstants.INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE
+                ],
+                new FlowEntityBuilder >> [
+                    dpnId = 123bi
+                    cookie = 110100480bi
+                    flowId = "Egress_Fixed_Conntrk_123_987_MatchEthernetType[2048]_Recirc"
+                    flowName = "ACL"
+                    instructionInfoList = #[
+                        new InstructionApplyActions(#[
+                            new ActionNxConntrack(2, 0, 0, 5000, 213 as short)
+                        ])
+                    ]
+                    matchInfoList = #[
+                        new MatchEthernetType(2048L),
+                        new MatchMetadata(1085217976614912bi, 1152920405095219200bi)
+                    ]
+                    priority = 100
+                    tableId = NwConstants.INGRESS_ACL_CONNTRACK_SENDER_TABLE
+                ]
+            ]
+        }
+
 }
index e0531efeb7dd6b5188f80876e0addd2aab1ce58f..4ea5933d488e409265db5f05b91bf581f6d98a72 100644 (file)
@@ -36,9 +36,15 @@ public final class IdHelper {
         idCacheMap.put("TCP_DESTINATION_80_65535_ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F3_10.0.0.1/32Egress98785cc3048-abc3-43cc-89b3-377341426ac6", 1010);
         idCacheMap.put("TCP_DESTINATION_80_65535_ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F4_10.0.0.2/32Egress98785cc3048-abc3-43cc-89b3-377341426ac6", 1011);
         idCacheMap.put("ICMP_V4_DESTINATION_23_Ingress98785cc3048-abc3-43cc-89b3-377341426ac7", 1012);
+        idCacheMap.put("TCP_DESTINATION_80_65535Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426a22", 1004);
+        idCacheMap.put("TCP_DESTINATION_80_65535Egress_123_987_85cc3048-abc3-43cc-89b3-377341426a21", 1004);
         idCacheMap.put("ICMP_V4_DESTINATION_23_Ingress98785cc3048-abc3-43cc-89b3-377341426a22", 1013);
+        idCacheMap.put("ICMP_V4_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7", 1002);
+        idCacheMap.put("ICMP_V4_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426a22", 1004);
         idCacheMap.put("ICMP_V4_DESTINATION_23_Egress98785cc3048-abc3-43cc-89b3-377341426ac6", 1014);
         idCacheMap.put("ICMP_V4_DESTINATION_23_Egress98785cc3048-abc3-43cc-89b3-377341426a21", 1015);
+        idCacheMap.put("ICMP_V4_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("ICMP_V4_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426a21", 1004);
         idCacheMap.put("ICMP_V4_DESTINATION_23__ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F3_10.0.0.1/32Egress98785cc3048-abc3-43cc-89b3-377341426ac6", 1016);
         idCacheMap.put("ICMP_V4_DESTINATION_23__ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F4_10.0.0.2/32Egress98785cc3048-abc3-43cc-89b3-377341426ac6", 1017);
         idCacheMap.put("UDP_DESTINATION_2000_65532Ingress98785cc3048-abc3-43cc-89b3-377341426ac7", 1018);
@@ -63,7 +69,33 @@ public final class IdHelper {
         idCacheMap.put("TCP_DESTINATION_80_65535_ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F3_10.0.0.1/32Egress98785cc3048-abc3-43cc-89b3-377341426a21", 1028);
         idCacheMap.put("TCP_DESTINATION_80_65535_ipv4_remoteACL_interface_aap_0D:AA:D8:42:30:F4_10.0.0.2/32Egress98785cc3048-abc3-43cc-89b3-377341426a21", 1029);
         idCacheMap.put("TCP_DESTINATION_80_65535Ingress98785cc3048-abc3-43cc-89b3-377341426a22", 1029);
-
+        idCacheMap.put("UDP_DESTINATION_2000_65532Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7", 1002);
+        idCacheMap.put("TCP_DESTINATION_776_65534Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("TCP_DESTINATION_512_65280Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("TCP_DESTINATION_334_65534Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("TCP_DESTINATION_333_65535Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("TCP_DESTINATION_336_65520Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("TCP_DESTINATION_352_65504Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("TCP_DESTINATION_384_65408Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("TCP_DESTINATION_768_65528Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("UDP_DESTINATION_1_0Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7", 1002);
+        idCacheMap.put("TCP_DESTINATION_1_0Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("TCP_DESTINATION_80_65535Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7", 1002);
+        idCacheMap.put("TCP_DESTINATION_80_65535Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("UDP_DESTINATION_80_65535Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7", 1002);
+        idCacheMap.put("UDP_DESTINATION_80_65535Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("ETHERnullIngress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7", 1002);
+        idCacheMap.put("ETHERnullEgress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("ICMP_V6_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426ac6", 1002);
+        idCacheMap.put("ICMP_V6_DESTINATION_23_Egress_123_987_85cc3048-abc3-43cc-89b3-377341426a21", 1002);
+        idCacheMap.put("ICMP_V6_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426ac7", 1002);
+        idCacheMap.put("ICMP_V6_DESTINATION_23_Ingress_123_987_85cc3048-abc3-43cc-89b3-377341426a22", 1002);
+        idCacheMap.put("Egress_ACL_Dispatcher_Last_123_987_2", 230);
+        idCacheMap.put("Egress_ACL_Dispatcher_First_123_987_2", 210);
+        idCacheMap.put("Ingress_ACL_Dispatcher_Last_123_987_2", 230);
+        idCacheMap.put("Ingress_ACL_Dispatcher_First_123_987_2", 210);
+        idCacheMap.put("Egress_ACL_Dispatcher_Last_123_987_4", 230);
+        idCacheMap.put("Egress_ACL_Dispatcher_First_123_987_4", 210);
     }
 
     public static Integer getId(String key) {