Update Robot Framework format - step 11
[integration/test.git] / csit / suites / netvirt / ofpunt_path / openflow_punt_path_protection.robot
index 39619d864e7397b6f05990d7e313de83a7b68559..81c5477159c017aab562b9b9e10d76b595d53097 100644 (file)
@@ -1,59 +1,85 @@
 *** Settings ***
-Documentation     Test suite for OpenFlow punt path protection for subnet route, SNAT, ARP and GARP
-Suite Setup       Suite Setup
-Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Resource          ../../../libraries/ClusterManagement.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/OvsManager.robot
-Resource          ../../../libraries/OVSDB.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/VpnOperations.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/netvirt/Variables.robot
+Documentation       Test suite for OpenFlow punt path protection for subnet route, SNAT, ARP and GARP
+
+Resource            ../../../libraries/ClusterManagement.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/OvsManager.robot
+Resource            ../../../libraries/OVSDB.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../libraries/VpnOperations.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/netvirt/Variables.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-@{NETWORKS}       of_punt_net_1    of_punt_net_2    of_punt_net_3
-${EXT_NETWORKS}    of_punt_ext_net_1
-@{PORT_LIST}      of_punt_net1_port_1    of_punt_net1_port_2    of_punt_net2_port_1    of_punt_net2_port_2    of_punt_net3_port_1    of_punt_net3_port_2
-@{EXTRA_PORTS}    of_punt_net_1_port_3    of_punt_net_2_port_3
-@{EXTRA_VMS}      of_punt_net_1_vm_3    of_punt_net_2_vm_3
-@{EXTRA_NW_IP}    11.1.1.100    22.1.1.100    12.1.1.12    13.1.1.13
-@{VM_LIST}        of_punt_net1_vm_1    of_punt_net1_vm_2    of_punt_net2_vm_1    of_punt_net2_vm_2    of_punt_net3_vm_1    of_punt_net3_vm_2
-@{SUBNETS}        of_punt_sub_1    of_punt_sub_2    of_punt_sub_3
-${EXT_SUBNETS}    of_punt_ext_sub_1
-@{SUBNETS_CIDR}    11.1.1.0/24    22.1.1.0/24    33.1.1.0/24
-${EXT_SUBNETS_CIDR}    55.1.1.0/24
-${EXT_SUBNETS_FIXED_IP}    55.1.1.100
-@{VPN_ID}         4ae8cd92-48ca-49b5-94e1-b2921a261111    4ae8cd92-48ca-49b5-94e1-b2921a262222
-@{VPN_NAME}       of_punt_vpn_1    of_punt_vpn_2
-@{ROUTERS}        of_punt_router_1    of_punt_router_2
-@{ROUTERS_ID}     @{EMPTY}
-@{DPN_IDS}        @{EMPTY}
-${SECURITY_GROUP}    of_punt_sg
-@{DCGW_RD_IRT_ERT}    11:1    22:1
-${L3VPN_RD_IRT_ERT}    ["${DCGW_RD_IRT_ERT}[0]"]    ["${DCGW_RD_IRT_ERT}[1]"]
-@{FILES_PATH}     ${KARAF_HOME}/etc/opendaylight/datastore/initial/config/netvirt-vpnmanager-config.xml    ${KARAF_HOME}/etc/opendaylight/datastore/initial/config/netvirt-natservice-config.xml    ${KARAF_HOME}/etc/opendaylight/datastore/initial/config/netvirt-elanmanager-config.xml
+@{NETWORKS}                 of_punt_net_1    of_punt_net_2    of_punt_net_3
+${EXT_NETWORKS}             of_punt_ext_net_1
+@{PORT_LIST}
+...                         of_punt_net1_port_1
+...                         of_punt_net1_port_2
+...                         of_punt_net2_port_1
+...                         of_punt_net2_port_2
+...                         of_punt_net3_port_1
+...                         of_punt_net3_port_2
+@{EXTRA_PORTS}              of_punt_net_1_port_3    of_punt_net_2_port_3
+@{EXTRA_VMS}                of_punt_net_1_vm_3    of_punt_net_2_vm_3
+@{EXTRA_NW_IP}              11.1.1.100    22.1.1.100    12.1.1.12    13.1.1.13
+@{VM_LIST}
+...                         of_punt_net1_vm_1
+...                         of_punt_net1_vm_2
+...                         of_punt_net2_vm_1
+...                         of_punt_net2_vm_2
+...                         of_punt_net3_vm_1
+...                         of_punt_net3_vm_2
+@{SUBNETS}                  of_punt_sub_1    of_punt_sub_2    of_punt_sub_3
+${EXT_SUBNETS}              of_punt_ext_sub_1
+@{SUBNETS_CIDR}             11.1.1.0/24    22.1.1.0/24    33.1.1.0/24
+${EXT_SUBNETS_CIDR}         55.1.1.0/24
+${EXT_SUBNETS_FIXED_IP}     55.1.1.100
+@{VPN_ID}                   4ae8cd92-48ca-49b5-94e1-b2921a261111    4ae8cd92-48ca-49b5-94e1-b2921a262222
+@{VPN_NAME}                 of_punt_vpn_1    of_punt_vpn_2
+@{ROUTERS}                  of_punt_router_1    of_punt_router_2
+@{ROUTERS_ID}               @{EMPTY}
+@{DPN_IDS}                  @{EMPTY}
+${SECURITY_GROUP}           of_punt_sg
+@{DCGW_RD_IRT_ERT}          11:1    22:1
+${L3VPN_RD_IRT_ERT}         ["${DCGW_RD_IRT_ERT}[0]"]    ["${DCGW_RD_IRT_ERT}[1]"]
+@{FILES_PATH}
+...                         ${KARAF_HOME}/etc/opendaylight/datastore/initial/config/netvirt-vpnmanager-config.xml
+...                         ${KARAF_HOME}/etc/opendaylight/datastore/initial/config/netvirt-natservice-config.xml
+...                         ${KARAF_HOME}/etc/opendaylight/datastore/initial/config/netvirt-elanmanager-config.xml
 ${SNAT_ORIGINAL_TIMEOUT}    5
-${L3_ORIGINAL_TIMEOUT}    10
-${ARP_ORIGINAL_TIMEOUT}    5
-@{ORIGINAL_TIMEOUTS}    ${L3_ORIGINAL_TIMEOUT}    ${SNAT_ORIGINAL_TIMEOUT}    ${ARP_ORIGINAL_TIMEOUT}
-@{OF_PUNT_TABLES}    ${L3_PUNT_TABLE}    ${SNAT_PUNT_TABLE}    ${ARP_PUNT_TABLE}    ${ARP_LEARN_TABLE}
-@{VALID_TIMEOUTS}    20    30    100    1000    10000
-${TCP_PORT}       80
-${UDP_PORT}       33435
-${TELNET_PORT}    23
-${ARP_REG}        0x1
-${GARP_REG}       0x101
+${L3_ORIGINAL_TIMEOUT}      10
+${ARP_ORIGINAL_TIMEOUT}     5
+@{ORIGINAL_TIMEOUTS}        ${L3_ORIGINAL_TIMEOUT}    ${SNAT_ORIGINAL_TIMEOUT}    ${ARP_ORIGINAL_TIMEOUT}
+@{OF_PUNT_TABLES}           ${L3_PUNT_TABLE}    ${SNAT_PUNT_TABLE}    ${ARP_PUNT_TABLE}    ${ARP_LEARN_TABLE}
+@{VALID_TIMEOUTS}           20    30    100    1000    10000
+${TCP_PORT}                 80
+${UDP_PORT}                 33435
+${TELNET_PORT}              23
+${ARP_REG}                  0x1
+${GARP_REG}                 0x101
+
 
 *** Test Cases ***
 Verify default punt timeout values and flows
     [Documentation]    Verify default time out for subnet route, SNAT and ARP in respective defualt openflow tables
     ${snat_napt_switch_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
     FOR    ${index}    IN RANGE    0    3
-        BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Verify Dump Flows For Specific Table    ${snat_napt_switch_ip}    ${OF_PUNT_TABLES}[${index}]
-        ...    True    ${EMPTY}    learn(table=${OF_PUNT_TABLES}[${index}],hard_timeout=${ORIGINAL_TIMEOUTS}[${index}]
+        BuiltIn.Wait Until Keyword Succeeds
+        ...    120s
+        ...    20s
+        ...    OVSDB.Verify Dump Flows For Specific Table
+        ...    ${snat_napt_switch_ip}
+        ...    ${OF_PUNT_TABLES}[${index}]
+        ...    True
+        ...    ${EMPTY}
+        ...    learn(table=${OF_PUNT_TABLES}[${index}],hard_timeout=${ORIGINAL_TIMEOUTS}[${index}]
     END
 
 Set punt timeout to zero and verify flows
@@ -68,7 +94,12 @@ Set punt timeout to zero and verify flows
     ${snat_napt_switch_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
     BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
     FOR    ${index}    IN RANGE    0    3
-        OVSDB.Verify Dump Flows For Specific Table    ${snat_napt_switch_ip}    ${OF_PUNT_TABLES}[${index}]    False    ${EMPTY}    learn(table=${OF_PUNT_TABLES}[${index}],hard_timeout=${ORIGINAL_TIMEOUTS}[${index}]
+        OVSDB.Verify Dump Flows For Specific Table
+        ...    ${snat_napt_switch_ip}
+        ...    ${OF_PUNT_TABLES}[${index}]
+        ...    False
+        ...    ${EMPTY}
+        ...    learn(table=${OF_PUNT_TABLES}[${index}],hard_timeout=${ORIGINAL_TIMEOUTS}[${index}]
     END
 
 Set punt timeout to combination of valid ranges and verfiy flows
@@ -76,27 +107,65 @@ Set punt timeout to combination of valid ranges and verfiy flows
     ...    Default subnet route, SNAT and ARP flows should get changed after changing default timeout value to different set of values
     Set Original TimeOut In Xml    ${0}
     FOR    ${index}    IN RANGE    0    3
-        Change Hard Timeout Value In XML File    ${FILES_PATH}[${index}]    ${ORIGINAL_TIMEOUTS}[${index}]    ${VALID_TIMEOUTS}[0]
+        Change Hard Timeout Value In XML File
+        ...    ${FILES_PATH}[${index}]
+        ...    ${ORIGINAL_TIMEOUTS}[${index}]
+        ...    ${VALID_TIMEOUTS}[0]
         Verify Punt Values In XML File    ${FILES_PATH}[${index}]    ${VALID_TIMEOUTS}[0]
     END
     ${count} =    BuiltIn.Get length    ${VALID_TIMEOUTS}
     FOR    ${index}    IN RANGE    1    ${count}
-        Change Hard Timeout Value In XML File    ${FILES_PATH}[0]    ${VALID_TIMEOUTS}[${index - 1}]    ${VALID_TIMEOUTS}[${index}]
+        Change Hard Timeout Value In XML File
+        ...    ${FILES_PATH}[0]
+        ...    ${VALID_TIMEOUTS}[${index - 1}]
+        ...    ${VALID_TIMEOUTS}[${index}]
         Verify Punt Values In XML File    ${FILES_PATH}[0]    ${VALID_TIMEOUTS}[${index}]
-        Change Hard Timeout Value In XML File    ${FILES_PATH}[1]    ${VALID_TIMEOUTS}[${index - 1}]    ${VALID_TIMEOUTS}[${index}]
+        Change Hard Timeout Value In XML File
+        ...    ${FILES_PATH}[1]
+        ...    ${VALID_TIMEOUTS}[${index - 1}]
+        ...    ${VALID_TIMEOUTS}[${index}]
         Verify Punt Values In XML File    ${FILES_PATH}[1]    ${VALID_TIMEOUTS}[${index}]
-        Change Hard Timeout Value In XML File    ${FILES_PATH}[2]    ${VALID_TIMEOUTS}[${index - 1}]    ${VALID_TIMEOUTS}[${index}]
+        Change Hard Timeout Value In XML File
+        ...    ${FILES_PATH}[2]
+        ...    ${VALID_TIMEOUTS}[${index - 1}]
+        ...    ${VALID_TIMEOUTS}[${index}]
         Verify Punt Values In XML File    ${FILES_PATH}[2]    ${VALID_TIMEOUTS}[${index}]
         ClusterManagement.Stop_Members_From_List_Or_All
         ClusterManagement.Start_Members_From_List_Or_All
-        BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
+        BuiltIn.Wait Until Keyword Succeeds
+        ...    120s
+        ...    20s
+        ...    OVSDB.Check OVS OpenFlow Connections
+        ...    ${OS_CMP1_IP}
+        ...    2
         ${snat_napt_switch_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
-        BuiltIn.Wait Until Keyword Succeeds    120s    5s    OVSDB.Verify Dump Flows For Specific Table    ${OS_COMPUTE_1_IP}    ${L3_PUNT_TABLE}
-        ...    True    ${EMPTY}    learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[${index}]
-        BuiltIn.Wait Until Keyword Succeeds    120s    5s    OVSDB.Verify Dump Flows For Specific Table    ${OS_COMPUTE_1_IP}    ${ARP_PUNT_TABLE}
-        ...    True    ${EMPTY}    learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[${index}]
-        BuiltIn.Wait Until Keyword Succeeds    180s    5s    OVSDB.Verify Dump Flows For Specific Table    ${snat_napt_switch_ip}    ${SNAT_PUNT_TABLE}
-        ...    True    ${EMPTY}    learn(table=${SNAT_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[${index}]
+        BuiltIn.Wait Until Keyword Succeeds
+        ...    120s
+        ...    5s
+        ...    OVSDB.Verify Dump Flows For Specific Table
+        ...    ${OS_COMPUTE_1_IP}
+        ...    ${L3_PUNT_TABLE}
+        ...    True
+        ...    ${EMPTY}
+        ...    learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[${index}]
+        BuiltIn.Wait Until Keyword Succeeds
+        ...    120s
+        ...    5s
+        ...    OVSDB.Verify Dump Flows For Specific Table
+        ...    ${OS_COMPUTE_1_IP}
+        ...    ${ARP_PUNT_TABLE}
+        ...    True
+        ...    ${EMPTY}
+        ...    learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[${index}]
+        BuiltIn.Wait Until Keyword Succeeds
+        ...    180s
+        ...    5s
+        ...    OVSDB.Verify Dump Flows For Specific Table
+        ...    ${snat_napt_switch_ip}
+        ...    ${SNAT_PUNT_TABLE}
+        ...    True
+        ...    ${EMPTY}
+        ...    learn(table=${SNAT_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[${index}]
     END
     Set Original TimeOut In Xml    ${VALID_TIMEOUTS}[4]
 
@@ -106,18 +175,41 @@ Verify learnt flow for subnet route flow table
     ...    Punt the first packet to controller and add new rule to stop pipeline processing.
     ...    Check packet count before and after traffic for both(defualt and learnt tables).
     FOR    ${index}    IN RANGE    0    3
-        Change Hard Timeout Value In XML File    ${FILES_PATH}[${index}]    ${ORIGINAL_TIMEOUTS}[${index}]    ${VALID_TIMEOUTS}[0]
+        Change Hard Timeout Value In XML File
+        ...    ${FILES_PATH}[${index}]
+        ...    ${ORIGINAL_TIMEOUTS}[${index}]
+        ...    ${VALID_TIMEOUTS}[0]
         Verify Punt Values In XML File    ${FILES_PATH}[${index}]    ${VALID_TIMEOUTS}[0]
     END
     ClusterManagement.Stop_Members_From_List_Or_All
     ClusterManagement.Start_Members_From_List_Or_All
     BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${L3_PUNT_TABLE},    |grep "ip actions=CONTROLLER:65535,learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${VM_IPS}[0]    sudo ping -c 5 ${EXTRA_NW_IP}[1]
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${L3_PUNT_TABLE}    True    ${EMPTY}    nw_dst=${EXTRA_NW_IP}[1] actions=drop
-    ${learnt_packet_count}    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${L3_PUNT_TABLE},    |grep "nw_dst=${EXTRA_NW_IP}[1] actions=drop"
+    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${L3_PUNT_TABLE},
+    ...    |grep "ip actions=CONTROLLER:65535,learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${VM_IPS}[0]
+    ...    sudo ping -c 5 ${EXTRA_NW_IP}[1]
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${L3_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    nw_dst=${EXTRA_NW_IP}[1] actions=drop
+    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${L3_PUNT_TABLE},
+    ...    |grep "nw_dst=${EXTRA_NW_IP}[1] actions=drop"
     BuiltIn.Should be true    ${learnt_packet_count} > 1
-    ${count_after_traffic}    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${L3_PUNT_TABLE},    |grep "ip actions=CONTROLLER:65535,learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
+    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${L3_PUNT_TABLE},
+    ...    |grep "ip actions=CONTROLLER:65535,learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
     ${count_before_traffic} =    BuiltIn.Evaluate    ${count_before_traffic} + 1
     BuiltIn.Should be true    ${count_after_traffic} == ${count_before_traffic}
 
@@ -126,17 +218,42 @@ Verify learnt flow for UDP in SNAT flow table
     ...    Send UDP traffic using traceroute with packet count 4.
     ...    Punt the first packet to controller and add new rule to stop pipeline processing.
     ...    Check packet count before and after traffic for both(defualt and learnt tables).
-    ${compute_ip}    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
+    ${compute_ip}    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
     OVSDB.Verify Dump Flows For Specific Table    ${compute_ip}    ${SNAT_PUNT_TABLE}    ${VALID_TIMEOUTS}[0]
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table    ${compute_ip}    ${INTEGRATION_BRIDGE}    table=${SNAT_PUNT_TABLE}    |grep "table=46.*n_packets=[\0-9+].*udp.*learn(table=46"
+    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${compute_ip}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${SNAT_PUNT_TABLE}
+    ...    |grep "table=46.*n_packets=[\0-9+].*udp.*learn(table=46"
     BuiltIn.Should be true    ${count_before_traffic} == 0
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[2]    ${VM_IPS}[4]    traceroute ${EXTRA_NW_IP}[2] -w 1 -q 1 -m 4
-    OVSDB.Verify Dump Flows For Specific Table    ${compute_ip}    ${SNAT_PUNT_TABLE}    True    ${EMPTY}    tp_dst=${UDP_PORT} actions=drop
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table    ${compute_ip}    ${INTEGRATION_BRIDGE}    table=${SNAT_PUNT_TABLE}    |grep "table=46.*n_packets=[\0-9+].*udp.*learn(table=46"
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[2]
+    ...    ${VM_IPS}[4]
+    ...    traceroute ${EXTRA_NW_IP}[2] -w 1 -q 1 -m 4
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${compute_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    tp_dst=${UDP_PORT} actions=drop
+    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${compute_ip}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${SNAT_PUNT_TABLE}
+    ...    |grep "table=46.*n_packets=[\0-9+].*udp.*learn(table=46"
     ${count_before_traffic} =    BuiltIn.Evaluate    ${count_before_traffic} + 1
     BuiltIn.Should be true    ${count_after_traffic} == ${count_before_traffic}
-    OVSDB.Verify Dump Flows For Specific Table    ${compute_ip}    ${SNAT_PUNT_TABLE}    True    ${EMPTY}    actions=set_field:${EXT_SUBNETS_FIXED_IP}->ip_src
-    ${controller_packet_count} =    OvsManager.Get Packet Count From Table    ${compute_ip}    ${INTEGRATION_BRIDGE}    table=${SNAT_PUNT_TABLE}    |grep "table=46.*n_packets=[\0-9+].*udp.*nw_src=${VM_IPS}[4].*actions=set_field:${EXT_SUBNETS_FIXED_IP}.*goto_table:47"
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${compute_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    actions=set_field:${EXT_SUBNETS_FIXED_IP}->ip_src
+    ${controller_packet_count} =    OvsManager.Get Packet Count From Table
+    ...    ${compute_ip}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${SNAT_PUNT_TABLE}
+    ...    |grep "table=46.*n_packets=[\0-9+].*udp.*nw_src=${VM_IPS}[4].*actions=set_field:${EXT_SUBNETS_FIXED_IP}.*goto_table:47"
     BuiltIn.Should be true    ${controller_packet_count} > 1
 
 Verify learnt flow for TCP in SNAT flow table
@@ -144,17 +261,42 @@ Verify learnt flow for TCP in SNAT flow table
     ...    Send TCP traffic using wget.
     ...    Punt the first packet to controller and add new rule to stop pipeline processing.
     ...    Check packet count before and after traffic for both(defualt and learnt tables).
-    ${compute_ip}    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
+    ${compute_ip}    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
     OVSDB.Verify Dump Flows For Specific Table    ${compute_ip}    ${SNAT_PUNT_TABLE}    ${VALID_TIMEOUTS}[0]
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table    ${compute_ip}    ${INTEGRATION_BRIDGE}    table=${SNAT_PUNT_TABLE}    |grep "table=46.*n_packets=[\0-9+].*tcp.*learn(table=46"
+    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${compute_ip}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${SNAT_PUNT_TABLE}
+    ...    |grep "table=46.*n_packets=[\0-9+].*tcp.*learn(table=46"
     BuiltIn.Should be true    ${count_before_traffic} == 0
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[2]    ${VM_IPS}[4]    wget -qc http://${EXTRA_NW_IP}[2]/ &
-    OVSDB.Verify Dump Flows For Specific Table    ${compute_ip}    ${SNAT_PUNT_TABLE}    True    ${EMPTY}    tp_dst=${TCP_PORT} actions=drop
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table    ${compute_ip}    ${INTEGRATION_BRIDGE}    table=${SNAT_PUNT_TABLE}    |grep "table=46.*n_packets=[\0-9+].*tcp.*learn(table=46"
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[2]
+    ...    ${VM_IPS}[4]
+    ...    wget -qc http://${EXTRA_NW_IP}[2]/ &
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${compute_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    tp_dst=${TCP_PORT} actions=drop
+    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${compute_ip}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${SNAT_PUNT_TABLE}
+    ...    |grep "table=46.*n_packets=[\0-9+].*tcp.*learn(table=46"
     ${count_before_traffic} =    BuiltIn.Evaluate    ${count_before_traffic} + 1
     BuiltIn.Should be true    ${count_after_traffic} == ${count_before_traffic}
-    OVSDB.Verify Dump Flows For Specific Table    ${compute_ip}    ${SNAT_PUNT_TABLE}    True    ${EMPTY}    actions=set_field:${EXT_SUBNETS_FIXED_IP}->ip_src
-    ${controller_packet_count} =    OvsManager.Get Packet Count From Table    ${compute_ip}    ${INTEGRATION_BRIDGE}    table=${SNAT_PUNT_TABLE}    |grep "table=46.*n_packets=[\0-9+].*tcp.*nw_src=${VM_IPS}[4].*actions=set_field:${EXT_SUBNETS_FIXED_IP}.*goto_table:47"
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${compute_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    actions=set_field:${EXT_SUBNETS_FIXED_IP}->ip_src
+    ${controller_packet_count} =    OvsManager.Get Packet Count From Table
+    ...    ${compute_ip}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${SNAT_PUNT_TABLE}
+    ...    |grep "table=46.*n_packets=[\0-9+].*tcp.*nw_src=${VM_IPS}[4].*actions=set_field:${EXT_SUBNETS_FIXED_IP}.*goto_table:47"
     BuiltIn.Should be true    ${controller_packet_count} > 1
 
 Verify learnt flow for ARP request in ARP tables
@@ -163,16 +305,49 @@ Verify learnt flow for ARP request in ARP tables
     ...    Punt the first packet to controller and add new rule to stop pipeline processing.
     ...    Check packet count before and after traffic for both(defualt and learnt tables).
     OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP2_IP}    ${ARP_PUNT_TABLE}    ${VALID_TIMEOUTS}[0]
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table    ${OS_CMP2_IP}    ${INTEGRATION_BRIDGE}    table=${ARP_PUNT_TABLE}    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    ${count_before_traffic_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP2_IP}    ${INTEGRATION_BRIDGE}    table=${ELAN_BASETABLE}    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[1]    ${VM_IPS}[3]    sudo arping -c 5 -I eth0 22.1.1.101
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP2_IP}    ${ARP_PUNT_TABLE}    True    ${EMPTY}    arp_tpa=22.1.1.101,arp_op=1
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP2_IP}    ${ARP_LEARN_TABLE}    True    ${EMPTY}    arp_spa=22.1.1.101,arp_op=1
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table    ${OS_CMP2_IP}    ${INTEGRATION_BRIDGE}    table=${ARP_PUNT_TABLE}    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
+    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP2_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ARP_PUNT_TABLE}
+    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
+    ${count_before_traffic_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP2_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ELAN_BASETABLE}
+    ...    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[1]
+    ...    ${VM_IPS}[3]
+    ...    sudo arping -c 5 -I eth0 22.1.1.101
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP2_IP}
+    ...    ${ARP_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    arp_tpa=22.1.1.101,arp_op=1
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP2_IP}
+    ...    ${ARP_LEARN_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    arp_spa=22.1.1.101,arp_op=1
+    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP2_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ARP_PUNT_TABLE}
+    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
     BuiltIn.Should be true    ${count_after_traffic} > ${count_before_traffic}
-    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table    ${OS_CMP2_IP}    ${INTEGRATION_BRIDGE}    table=${ARP_PUNT_TABLE}    |grep "n_packets=[\0-9+].*arp_tpa=22.1.1.101,arp_op=1.*actions=load:0x1"
+    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP2_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ARP_PUNT_TABLE}
+    ...    |grep "n_packets=[\0-9+].*arp_tpa=22.1.1.101,arp_op=1.*actions=load:0x1"
     BuiltIn.Should be true    ${learnt_packet_count} > 0
-    ${count_after_traffic_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP2_IP}    ${INTEGRATION_BRIDGE}    table=${ELAN_BASETABLE}    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
+    ${count_after_traffic_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP2_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ELAN_BASETABLE}
+    ...    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
     BuiltIn.Should be true    ${count_after_traffic_arp} > ${count_before_traffic_arp}
 
 Verify learnt flow for ARP reply in ARP tables
@@ -181,16 +356,49 @@ Verify learnt flow for ARP reply in ARP tables
     ...    Punt the first packet to controller and add new rule to stop pipeline processing.
     ...    Check packet count before and after traffic for both(defualt and learnt tables).
     OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP2_IP}    ${ARP_PUNT_TABLE}    ${VALID_TIMEOUTS}[0]
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table    ${OS_CMP2_IP}    ${INTEGRATION_BRIDGE}    table=${ARP_PUNT_TABLE}    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    ${count_before_traffic_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP2_IP}    ${INTEGRATION_BRIDGE}    table=${ELAN_BASETABLE}    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${VM_IPS}[1]    sudo arping -A -c 5 -I eth0 -s ${VM_IPS}[1] 11.1.1.101
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP2_IP}    ${ARP_PUNT_TABLE}    True    ${EMPTY}    arp_tpa=11.1.1.101,arp_op=2
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP2_IP}    ${ARP_LEARN_TABLE}    True    ${EMPTY}    arp_spa=11.1.1.101,arp_op=2
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table    ${OS_CMP2_IP}    ${INTEGRATION_BRIDGE}    table=${ARP_PUNT_TABLE}    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
+    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP2_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ARP_PUNT_TABLE}
+    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
+    ${count_before_traffic_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP2_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ELAN_BASETABLE}
+    ...    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${VM_IPS}[1]
+    ...    sudo arping -A -c 5 -I eth0 -s ${VM_IPS}[1] 11.1.1.101
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP2_IP}
+    ...    ${ARP_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    arp_tpa=11.1.1.101,arp_op=2
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP2_IP}
+    ...    ${ARP_LEARN_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    arp_spa=11.1.1.101,arp_op=2
+    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP2_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ARP_PUNT_TABLE}
+    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
     BuiltIn.Should be true    ${count_after_traffic} > ${count_before_traffic}
-    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table    ${OS_CMP2_IP}    ${INTEGRATION_BRIDGE}    table=${ARP_PUNT_TABLE}    |grep "n_packets=[\0-9+].*arp_tpa=11.1.1.101,arp_op=2.*actions=load:0x1"
+    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP2_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ARP_PUNT_TABLE}
+    ...    |grep "n_packets=[\0-9+].*arp_tpa=11.1.1.101,arp_op=2.*actions=load:0x1"
     BuiltIn.Should be true    ${learnt_packet_count} > 0
-    ${count_after_traffic_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP2_IP}    ${INTEGRATION_BRIDGE}    table=${ELAN_BASETABLE}    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
+    ${count_after_traffic_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP2_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ELAN_BASETABLE}
+    ...    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
     BuiltIn.Should be true    ${count_after_traffic_arp} > ${count_before_traffic_arp}
 
 Verify learnt flow for GARP (Gratuitous ARP) in ARP tables
@@ -199,16 +407,49 @@ Verify learnt flow for GARP (Gratuitous ARP) in ARP tables
     ...    Punt the first packet to controller and add new rule to stop pipeline processing.
     ...    Check packet count before and after traffic for both(defualt and learnt tables).
     OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_PUNT_TABLE}    ${VALID_TIMEOUTS}[0]
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${ARP_PUNT_TABLE}    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    ${count_before_traffic_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${ELAN_BASETABLE}    |grep "n_packets=[\0-9+].*reg4=${GARP_REG}.0xffff"
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${VM_IPS}[0]    sudo arping -U -c 5 -I eth0 ${VM_IPS}[0] &
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_PUNT_TABLE}    True    ${EMPTY}    arp_tpa=${VM_IPS}[0],arp_op=1
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_LEARN_TABLE}    True    ${EMPTY}    arp_spa=${VM_IPS}[0],arp_op=1
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${ARP_PUNT_TABLE}    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
+    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ARP_PUNT_TABLE}
+    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
+    ${count_before_traffic_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ELAN_BASETABLE}
+    ...    |grep "n_packets=[\0-9+].*reg4=${GARP_REG}.0xffff"
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${VM_IPS}[0]
+    ...    sudo arping -U -c 5 -I eth0 ${VM_IPS}[0] &
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${ARP_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    arp_tpa=${VM_IPS}[0],arp_op=1
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${ARP_LEARN_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    arp_spa=${VM_IPS}[0],arp_op=1
+    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ARP_PUNT_TABLE}
+    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
     BuiltIn.Should be true    ${count_after_traffic} > ${count_before_traffic}
-    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${ARP_PUNT_TABLE}    |grep "arp_tpa=${VM_IPS}[0],arp_op=1"
+    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ARP_PUNT_TABLE}
+    ...    |grep "arp_tpa=${VM_IPS}[0],arp_op=1"
     BuiltIn.Should be true    ${learnt_packet_count} > 0
-    ${count_after_traffic_arp} =    OvsManager.Get Packet Count From Table    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    table=${ELAN_BASETABLE}    |grep "n_packets=[\0-9+].*reg4=${GARP_REG}.0xffff"
+    ${count_after_traffic_arp} =    OvsManager.Get Packet Count From Table
+    ...    ${OS_CMP1_IP}
+    ...    ${INTEGRATION_BRIDGE}
+    ...    table=${ELAN_BASETABLE}
+    ...    |grep "n_packets=[\0-9+].*reg4=${GARP_REG}.0xffff"
     BuiltIn.Should be true    ${count_after_traffic_arp} > ${count_before_traffic_arp}
 
 Verify resync subnet route, SNAT and ARP route flow tables after disconnect and reconnecting OVS control path
@@ -218,45 +459,168 @@ Verify resync subnet route, SNAT and ARP route flow tables after disconnect and
     ...    Verify subnet, SNAT and ARP default flows
     ${snat_napt_switch_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
     BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${VM_IPS}[0]    sudo ping -c 5 ${EXTRA_NW_IP}[1]
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${L3_PUNT_TABLE}    True    ${EMPTY}    nw_dst=11.1.1.255 actions=drop
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${L3_PUNT_TABLE}    True    ${EMPTY}    nw_dst=${EXTRA_NW_IP}[1] actions=drop
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[2]    ${VM_IPS}[4]    traceroute ${EXTRA_NW_IP}[2] -w 1 -q 1 -m 4
-    OVSDB.Verify Dump Flows For Specific Table    ${snat_napt_switch_ip}    ${SNAT_PUNT_TABLE}    True    ${EMPTY}    tp_dst=${UDP_PORT} actions=drop
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[2]    ${VM_IPS}[4]    wget -qc http://${EXTRA_NW_IP}[2]/ &
-    OVSDB.Verify Dump Flows For Specific Table    ${snat_napt_switch_ip}    ${SNAT_PUNT_TABLE}    True    ${EMPTY}    tp_dst=${TCP_PORT} actions=drop
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${VM_IPS}[0]    sudo arping -c 2 ${VM_IPS}[1]
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_PUNT_TABLE}    True    ${EMPTY}    arp_tpa=${VM_IPS}[1],arp_op=1
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_LEARN_TABLE}    True    ${EMPTY}    arp_spa=${VM_IPS}[1],arp_op=1
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${VM_IPS}[0]
+    ...    sudo ping -c 5 ${EXTRA_NW_IP}[1]
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${L3_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    nw_dst=11.1.1.255 actions=drop
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${L3_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    nw_dst=${EXTRA_NW_IP}[1] actions=drop
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[2]
+    ...    ${VM_IPS}[4]
+    ...    traceroute ${EXTRA_NW_IP}[2] -w 1 -q 1 -m 4
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${snat_napt_switch_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    tp_dst=${UDP_PORT} actions=drop
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[2]
+    ...    ${VM_IPS}[4]
+    ...    wget -qc http://${EXTRA_NW_IP}[2]/ &
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${snat_napt_switch_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    tp_dst=${TCP_PORT} actions=drop
+    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${VM_IPS}[0]
+    ...    sudo arping -c 2 ${VM_IPS}[1]
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${ARP_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    arp_tpa=${VM_IPS}[1],arp_op=1
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${ARP_LEARN_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    arp_spa=${VM_IPS}[1],arp_op=1
     OVSDB.Delete OVS Manager    ${OS_CMP1_IP}
     OVSDB.Delete OVS Controller    ${OS_CMP1_IP}
     OVSDB.Delete OVS Manager    ${snat_napt_switch_ip}
     OVSDB.Delete OVS Controller    ${snat_napt_switch_ip}
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${L3_PUNT_TABLE}    False    ${EMPTY}    nw_dst=11.1.1.255 actions=drop
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${L3_PUNT_TABLE}    False    ${EMPTY}    nw_dst=${EXTRA_NW_IP}[1] actions=drop
-    OVSDB.Verify Dump Flows For Specific Table    ${snat_napt_switch_ip}    ${SNAT_PUNT_TABLE}    False    ${EMPTY}    nw_dst=11.1.1.255 actions=drop
-    OVSDB.Verify Dump Flows For Specific Table    ${snat_napt_switch_ip}    ${SNAT_PUNT_TABLE}    False    ${EMPTY}    tp_dst=${TCP_PORT} actions=drop
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_PUNT_TABLE}    False    ${EMPTY}    arp_tpa=${VM_IPS}[1],arp_op=1
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_LEARN_TABLE}    False    ${EMPTY}    arp_spa=${VM_IPS}[1],arp_op=1
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${L3_PUNT_TABLE}
+    ...    False
+    ...    ${EMPTY}
+    ...    nw_dst=11.1.1.255 actions=drop
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${L3_PUNT_TABLE}
+    ...    False
+    ...    ${EMPTY}
+    ...    nw_dst=${EXTRA_NW_IP}[1] actions=drop
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${snat_napt_switch_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    False
+    ...    ${EMPTY}
+    ...    nw_dst=11.1.1.255 actions=drop
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${snat_napt_switch_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    False
+    ...    ${EMPTY}
+    ...    tp_dst=${TCP_PORT} actions=drop
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${ARP_PUNT_TABLE}
+    ...    False
+    ...    ${EMPTY}
+    ...    arp_tpa=${VM_IPS}[1],arp_op=1
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${ARP_LEARN_TABLE}
+    ...    False
+    ...    ${EMPTY}
+    ...    arp_spa=${VM_IPS}[1],arp_op=1
     OVSDB.Set Controller In OVS Bridge    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    tcp:${ODL_SYSTEM_IP}:6653
     OVSDB.Set Controller In OVS Bridge    ${snat_napt_switch_ip}    ${INTEGRATION_BRIDGE}    tcp:${ODL_SYSTEM_IP}:6653
     OVSDB.Add Multiple Managers to OVS    ${OS_CMP1_IP}
     OVSDB.Add Multiple Managers to OVS    ${snat_napt_switch_ip}
     ${snat_napt_switch_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
     BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
-    BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${L3_PUNT_TABLE}    True
-    ...    ${EMPTY}    nw_dst=11.1.1.255 actions=drop
-    BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Verify Dump Flows For Specific Table    ${snat_napt_switch_ip}    ${SNAT_PUNT_TABLE}    False
-    ...    ${EMPTY}    tp_dst=${UDP_PORT} actions=drop
-    BuiltIn.Wait Until Keyword Succeeds    190s    40s    OVSDB.Verify Dump Flows For Specific Table    ${snat_napt_switch_ip}    ${SNAT_PUNT_TABLE}    False
-    ...    ${EMPTY}    tp_dst=${TCP_PORT} actions=drop
-    BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_PUNT_TABLE}    False
-    ...    ${EMPTY}    arp_tpa=${EXTRA_NW_IP}[1],arp_op=1
-    BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_LEARN_TABLE}    False
-    ...    ${EMPTY}    arp_spa=${EXTRA_NW_IP}[1],arp_op=1
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${L3_PUNT_TABLE}    True    ${EMPTY}    learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]
-    OVSDB.Verify Dump Flows For Specific Table    ${snat_napt_switch_ip}    ${SNAT_PUNT_TABLE}    True    ${EMPTY}    learn(table=${SNAT_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_PUNT_TABLE}    True    ${EMPTY}    learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    120s
+    ...    20s
+    ...    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${L3_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    nw_dst=11.1.1.255 actions=drop
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    120s
+    ...    20s
+    ...    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${snat_napt_switch_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    False
+    ...    ${EMPTY}
+    ...    tp_dst=${UDP_PORT} actions=drop
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    190s
+    ...    40s
+    ...    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${snat_napt_switch_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    False
+    ...    ${EMPTY}
+    ...    tp_dst=${TCP_PORT} actions=drop
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    120s
+    ...    20s
+    ...    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${ARP_PUNT_TABLE}
+    ...    False
+    ...    ${EMPTY}
+    ...    arp_tpa=${EXTRA_NW_IP}[1],arp_op=1
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    120s
+    ...    20s
+    ...    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${ARP_LEARN_TABLE}
+    ...    False
+    ...    ${EMPTY}
+    ...    arp_spa=${EXTRA_NW_IP}[1],arp_op=1
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${L3_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${snat_napt_switch_ip}
+    ...    ${SNAT_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    learn(table=${SNAT_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]
+    OVSDB.Verify Dump Flows For Specific Table
+    ...    ${OS_CMP1_IP}
+    ...    ${ARP_PUNT_TABLE}
+    ...    True
+    ...    ${EMPTY}
+    ...    learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]
+
 
 *** Keywords ***
 Suite Setup
@@ -271,7 +635,11 @@ Suite Setup
     FOR    ${index}    IN RANGE    0    ${count}
         OpenStackOperations.Create SubNet    ${NETWORKS}[${index}]    ${SUBNETS}[${index}]    ${SUBNETS_CIDR}[${index}]
     END
-    OpenStackOperations.Create SubNet    ${EXT_NETWORKS}    ${EXT_SUBNETS}    ${EXT_SUBNETS_CIDR}    additional_args=--no-dhcp
+    OpenStackOperations.Create SubNet
+    ...    ${EXT_NETWORKS}
+    ...    ${EXT_SUBNETS}
+    ...    ${EXT_SUBNETS_CIDR}
+    ...    additional_args=--no-dhcp
     FOR    ${router}    IN    @{ROUTERS}
         OpenStackOperations.Create Router    ${router}
         ${router_id} =    OpenStackOperations.Get Router Id    ${router}
@@ -286,14 +654,36 @@ Suite Setup
     ${ext_net} =    BuiltIn.Create List    ${EXT_NETWORKS}
     ${NETWORKS_ALL} =    Collections.Combine Lists    ${NETWORKS}    ${ext_net}
     FOR    ${index}    IN RANGE    0    3
-        OpenStackOperations.Create Port    ${NETWORKS_ALL}[${index}]    ${PORT_LIST}[${index + ${index}}]    sg=${SECURITY_GROUP}
-        OpenStackOperations.Create Port    ${NETWORKS_ALL}[${index}]    ${PORT_LIST}[${index + ${index + 1}}]    sg=${SECURITY_GROUP}
+        OpenStackOperations.Create Port
+        ...    ${NETWORKS_ALL}[${index}]
+        ...    ${PORT_LIST}[${index + ${index}}]
+        ...    sg=${SECURITY_GROUP}
+        OpenStackOperations.Create Port
+        ...    ${NETWORKS_ALL}[${index}]
+        ...    ${PORT_LIST}[${index + ${index + 1}}]
+        ...    sg=${SECURITY_GROUP}
     END
-    OpenStackOperations.Create Port    ${NETWORKS}[0]    ${EXTRA_PORTS}[0]    sg=${SECURITY_GROUP}    additional_args=--allowed-address ip-address=0.0.0.0 --fixed-ip subnet=${SUBNETS}[0],ip-address=${EXTRA_NW_IP}[0]
-    OpenStackOperations.Create Port    ${NETWORKS}[1]    ${EXTRA_PORTS}[1]    sg=${SECURITY_GROUP}    additional_args=--allowed-address ip-address=0.0.0.0 --fixed-ip subnet=${SUBNETS}[1],ip-address=${EXTRA_NW_IP}[1]
+    OpenStackOperations.Create Port
+    ...    ${NETWORKS}[0]
+    ...    ${EXTRA_PORTS}[0]
+    ...    sg=${SECURITY_GROUP}
+    ...    additional_args=--allowed-address ip-address=0.0.0.0 --fixed-ip subnet=${SUBNETS}[0],ip-address=${EXTRA_NW_IP}[0]
+    OpenStackOperations.Create Port
+    ...    ${NETWORKS}[1]
+    ...    ${EXTRA_PORTS}[1]
+    ...    sg=${SECURITY_GROUP}
+    ...    additional_args=--allowed-address ip-address=0.0.0.0 --fixed-ip subnet=${SUBNETS}[1],ip-address=${EXTRA_NW_IP}[1]
     FOR    ${index}    IN RANGE    0    3
-        OpenStackOperations.Create Vm Instance With Port On Compute Node    ${PORT_LIST}[${index + ${index}}]    ${VM_LIST}[${index + ${index}}]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node    ${PORT_LIST}[${index + ${index + 1}}]    ${VM_LIST}[${index + ${index + 1}}]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+        OpenStackOperations.Create Vm Instance With Port On Compute Node
+        ...    ${PORT_LIST}[${index + ${index}}]
+        ...    ${VM_LIST}[${index + ${index}}]
+        ...    ${OS_CMP1_HOSTNAME}
+        ...    sg=${SECURITY_GROUP}
+        OpenStackOperations.Create Vm Instance With Port On Compute Node
+        ...    ${PORT_LIST}[${index + ${index + 1}}]
+        ...    ${VM_LIST}[${index + ${index + 1}}]
+        ...    ${OS_CMP2_HOSTNAME}
+        ...    sg=${SECURITY_GROUP}
     END
     @{VM_IPS}    ${dhcp_ip} =    OpenStackOperations.Get VM IPs    @{VM_LIST}
     BuiltIn.Set Suite Variable    ${VM_IPS}
@@ -301,20 +691,31 @@ Suite Setup
     BuiltIn.Should Not Contain    ${VM_IPS}    None
     BuiltIn.Should Not Contain    ${dhcp_ip}    None
     FOR    ${index}    IN RANGE    0    2
-        VpnOperations.VPN Create L3VPN    name=${VPN_NAME}[${index}]    vpnid=${VPN_ID}[${index}]    rd=${L3VPN_RD_IRT_ERT}[${index}]    exportrt=${L3VPN_RD_IRT_ERT}[${index}]    importrt=${L3VPN_RD_IRT_ERT}[${index}]
+        VpnOperations.VPN Create L3VPN
+        ...    name=${VPN_NAME}[${index}]
+        ...    vpnid=${VPN_ID}[${index}]
+        ...    rd=${L3VPN_RD_IRT_ERT}[${index}]
+        ...    exportrt=${L3VPN_RD_IRT_ERT}[${index}]
+        ...    importrt=${L3VPN_RD_IRT_ERT}[${index}]
     END
     VpnOperations.Associate VPN to Router    routerid=${ROUTERS_ID}[0]    vpnid=${VPN_ID}[0]
     ${network_id} =    OpenStackOperations.Get Net Id    ${EXT_NETWORKS}
     VpnOperations.Associate L3VPN To Network    networkid=${network_id}    vpnid=${VPN_ID}[1]
-    OpenStackOperations.Add Router Gateway    ${ROUTERS}[1]    ${EXT_NETWORKS}    additional_args=--fixed-ip subnet=${EXT_SUBNETS},ip-address=${EXT_SUBNETS_FIXED_IP} --enable-snat
+    OpenStackOperations.Add Router Gateway
+    ...    ${ROUTERS}[1]
+    ...    ${EXT_NETWORKS}
+    ...    additional_args=--fixed-ip subnet=${EXT_SUBNETS},ip-address=${EXT_SUBNETS_FIXED_IP} --enable-snat
     Create Dictionary For DPN ID And Compute IP Mapping For All DPNS
     OpenStackOperations.Get Suite Debugs
 
 Set Original TimeOut In Xml
-    [Arguments]    ${hard_timeout}
     [Documentation]    Set default timeout in XML for all the punt files
+    [Arguments]    ${hard_timeout}
     FOR    ${index}    IN RANGE    0    3
-        Change Hard Timeout Value In XML File    ${FILES_PATH}[${index}]    ${hard_timeout}    ${ORIGINAL_TIMEOUTS}[${index}]
+        Change Hard Timeout Value In XML File
+        ...    ${FILES_PATH}[${index}]
+        ...    ${hard_timeout}
+        ...    ${ORIGINAL_TIMEOUTS}[${index}]
         Verify Punt Values In XML File    ${FILES_PATH}[${index}]    ${ORIGINAL_TIMEOUTS}[${index}]
     END
     ClusterManagement.Stop_Members_From_List_Or_All
@@ -322,21 +723,25 @@ Set Original TimeOut In Xml
     BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
 
 Verify Punt Values In XML File
-    [Arguments]    ${file_path}    ${value}
     [Documentation]    Verify the default value for SNAT, ARP in ELAN, Subnet Routing in the xml file in ODL Controller
-    ${output} =    Utils.Run Command On Remote System And Log    ${ODL_SYSTEM_IP}    cat ${file_path} | grep punt-timeout
+    [Arguments]    ${file_path}    ${value}
+    ${output} =    Utils.Run Command On Remote System And Log
+    ...    ${ODL_SYSTEM_IP}
+    ...    cat ${file_path} | grep punt-timeout
     @{matches} =    BuiltIn.Should Match Regexp    ${output}    punt.timeout.*?([0-9]+)
     BuiltIn.Should be true    ${matches}[1] == ${value}
 
 Change Hard Timeout Value In XML File
-    [Arguments]    ${file_path}    ${value_1}    ${value_2}
     [Documentation]    Change the default value in xml in the ODL controller for subnet route, SNAT and ARP
-    Utils.Run Command On Remote System And Log    ${ODL_SYSTEM_IP}    sed -i -e 's/punt-timeout\>${value_1}/punt-timeout\>${value_2}/' ${file_path}
+    [Arguments]    ${file_path}    ${value_1}    ${value_2}
+    Utils.Run Command On Remote System And Log
+    ...    ${ODL_SYSTEM_IP}
+    ...    sed -i -e 's/punt-timeout\>${value_1}/punt-timeout\>${value_2}/' ${file_path}
 
 Create Dictionary For DPN ID And Compute IP Mapping For All DPNS
     [Documentation]    Creating dictionary for DPN ID and compute IP mapping
     FOR    ${ip}    IN    @{OS_ALL_IPS}
-        ${dpnid}    OVSDB.Get DPID    ${ip}
+        ${dpnid}    OVSDB.Get DPID    ${ip}
         Collections.Append To List    ${DPN_IDS}    ${dpnid}
     END
     ${DPN_TO_COMPUTE_IP} =    BuiltIn.Create Dictionary
@@ -350,18 +755,20 @@ Create Dictionary For DPN ID And Compute IP Mapping For All DPNS
     BuiltIn.Set Suite Variable    ${DPN_TO_COMPUTE_IP}
 
 Get SNAT NAPT Switch DPID
-    [Arguments]    ${router_name}
     [Documentation]    Returns the SNAT NAPT switch dpnid from odl rest call.
+    [Arguments]    ${router_name}
     ${router_id} =    OpenStackOperations.Get Router Id    ${router_name}
-    ${resp}    RequestsLibrary.Get Request    session    ${CONFIG_API}/odl-nat:napt-switches/router-to-napt-switch/${router_id}
+    ${resp} =    RequestsLibrary.Get Request
+    ...    session
+    ...    ${CONFIG_API}/odl-nat:napt-switches/router-to-napt-switch/${router_id}
     Log    ${resp.content}
     @{matches} =    BuiltIn.Should Match Regexp    ${resp.content}    switch.id.*?([0-9]+)
     ${dpnid} =    BuiltIn.Convert To Integer    ${matches}[1]
-    [Return]    ${dpnid}
+    RETURN    ${dpnid}
 
 Get NAPT Switch IP From DPID
-    [Arguments]    ${router_name}
     [Documentation]    Return SNAT NAPT switch ip for the given router name
+    [Arguments]    ${router_name}
     ${dpnid} =    BuiltIn.Wait Until Keyword Succeeds    60s    15s    Get SNAT NAPT Switch DPID    ${router_name}
     ${compute_ip} =    Collections.Get From Dictionary    ${DPN_TO_COMPUTE_IP}    ${dpnid}
-    [Return]    ${compute_ip}
+    RETURN    ${compute_ip}