diff --git a/test/framework.py b/test/framework.py
index dd4774d..be8c209 100644
--- a/test/framework.py
+++ b/test/framework.py
@@ -558,16 +558,18 @@
         return result
 
     @classmethod
-    def create_loopback_interfaces(cls, count):
+    def create_loopback_interfaces(cls, interfaces):
         """
         Create loopback interfaces.
 
-        :param count: number of interfaces created.
+        :param interfaces: iterable indexes of the interfaces.
         :returns: List of created interfaces.
         """
-        result = [VppLoInterface(cls) for i in range(count)]
-        for intf in result:
+        result = []
+        for i in interfaces:
+            intf = VppLoInterface(cls, i)
             setattr(cls, intf.name, intf)
+            result.append(intf)
         cls.lo_interfaces = result
         return result
 
diff --git a/test/test_acl_plugin_l2l3.py b/test/test_acl_plugin_l2l3.py
index 26b562e..b971610 100644
--- a/test/test_acl_plugin_l2l3.py
+++ b/test/test_acl_plugin_l2l3.py
@@ -60,7 +60,7 @@
 
         # create 3 pg interfaces, 1 loopback interface
         cls.create_pg_interfaces(range(3))
-        cls.create_loopback_interfaces(1)
+        cls.create_loopback_interfaces(range(1))
 
         cls.interfaces = list(cls.pg_interfaces)
         cls.interfaces.extend(cls.lo_interfaces)
diff --git a/test/test_acl_plugin_macip.py b/test/test_acl_plugin_macip.py
index 8bcef25..a8df833 100644
--- a/test/test_acl_plugin_macip.py
+++ b/test/test_acl_plugin_macip.py
@@ -63,7 +63,7 @@
         try:
             # create 4 pg interfaces, 1 loopback interface
             cls.create_pg_interfaces(range(4))
-            cls.create_loopback_interfaces(1)
+            cls.create_loopback_interfaces(range(1))
 
             # create 2 subinterfaces
             cls.subifs = [
diff --git a/test/test_bfd.py b/test/test_bfd.py
index 3afe942..3b36f55 100644
--- a/test/test_bfd.py
+++ b/test/test_bfd.py
@@ -629,7 +629,7 @@
         cls.vapi.cli("set log class bfd level debug")
         try:
             cls.create_pg_interfaces([0])
-            cls.create_loopback_interfaces(1)
+            cls.create_loopback_interfaces([0])
             cls.loopback0 = cls.lo_interfaces[0]
             cls.loopback0.config_ip4()
             cls.loopback0.admin_up()
@@ -1439,7 +1439,7 @@
             cls.pg0.configure_ipv6_neighbors()
             cls.pg0.admin_up()
             cls.pg0.resolve_ndp()
-            cls.create_loopback_interfaces(1)
+            cls.create_loopback_interfaces([0])
             cls.loopback0 = cls.lo_interfaces[0]
             cls.loopback0.config_ip6()
             cls.loopback0.admin_up()
@@ -2557,7 +2557,7 @@
 
     def test_set_del_udp_echo_source(self):
         """ set/del udp echo source """
-        self.create_loopback_interfaces(1)
+        self.create_loopback_interfaces([0])
         self.loopback0 = self.lo_interfaces[0]
         self.loopback0.admin_up()
         self.cli_verify_response("show bfd echo-source",
diff --git a/test/test_container.py b/test/test_container.py
index 66357a7..99a527b 100644
--- a/test/test_container.py
+++ b/test/test_container.py
@@ -73,7 +73,7 @@
 
     def test_0050_loopback_prepare_test(self):
         """ Create loopbacks overlapping with remote addresses """
-        self.create_loopback_interfaces(2)
+        self.create_loopback_interfaces(range(2))
         for i in range(2):
             intf = self.lo_interfaces[i]
             intf.admin_up()
diff --git a/test/test_dvr.py b/test/test_dvr.py
index 9d86758..5bdc3b2 100644
--- a/test/test_dvr.py
+++ b/test/test_dvr.py
@@ -1,14 +1,18 @@
 #!/usr/bin/env python
+import random
+import socket
 import unittest
 
 from framework import VppTestCase, VppTestRunner
-from vpp_sub_interface import VppDot1QSubint
-from vpp_ip_route import VppIpRoute, VppRoutePath
+from vpp_sub_interface import VppSubInterface, VppDot1QSubint
+from vpp_ip_route import VppIpRoute, VppRoutePath, DpoProto, VppIpMRoute, \
+    VppMRoutePath, MRouteEntryFlags, MRouteItfFlags
 from vpp_papi_provider import L2_VTR_OP
 
 from scapy.packet import Raw
-from scapy.layers.l2 import Ether, Dot1Q
+from scapy.layers.l2 import Ether, Dot1Q, ARP
 from scapy.layers.inet import IP, UDP
+from util import ppp
 from socket import AF_INET, inet_pton
 
 
@@ -19,7 +23,7 @@
         super(TestDVR, self).setUp()
 
         self.create_pg_interfaces(range(4))
-        self.create_loopback_interfaces(1)
+        self.create_loopback_interfaces(range(1))
 
         for i in self.pg_interfaces:
             i.admin_up()
diff --git a/test/test_gbp.py b/test/test_gbp.py
index 7ee4d76..fe19ae6 100644
--- a/test/test_gbp.py
+++ b/test/test_gbp.py
@@ -1,6 +1,8 @@
 #!/usr/bin/env python
 
 import unittest
+import socket
+import struct
 
 from framework import VppTestCase, VppTestRunner
 from vpp_object import VppObject
@@ -11,12 +13,12 @@
 from scapy.layers.l2 import Ether, ARP
 from scapy.layers.inet import IP, UDP
 from scapy.layers.inet6 import IPv6, ICMPv6ND_NS,  ICMPv6NDOptSrcLLAddr, \
-    ICMPv6ND_NA
+    ICMPv6NDOptDstLLAddr, ICMPv6ND_NA
 from scapy.utils6 import in6_getnsma, in6_getnsmac
 
 from socket import AF_INET, AF_INET6
 from scapy.utils import inet_pton, inet_ntop
-from util import mactobinary
+from util import Host, mactobinary
 
 
 class VppGbpEndpoint(VppObject):
@@ -298,7 +300,7 @@
         super(TestGBP, self).setUp()
 
         self.create_pg_interfaces(range(9))
-        self.create_loopback_interfaces(9)
+        self.create_loopback_interfaces(range(9))
 
         self.router_mac = "00:11:22:33:44:55"
 
diff --git a/test/test_interface_crud.py b/test/test_interface_crud.py
index d78cb58..6391704 100644
--- a/test/test_interface_crud.py
+++ b/test/test_interface_crud.py
@@ -79,7 +79,7 @@
 
     def test_crud(self):
         # create
-        loopbacks = self.create_loopback_interfaces(20)
+        loopbacks = self.create_loopback_interfaces(range(20))
         for i in loopbacks:
             i.local_ip4_prefix_len = 32
             i.config_ip4()
@@ -121,7 +121,7 @@
 
     def test_down(self):
         # create
-        loopbacks = self.create_loopback_interfaces(20)
+        loopbacks = self.create_loopback_interfaces(range(20))
         for i in loopbacks:
             i.local_ip4_prefix_len = 32
             i.config_ip4()
diff --git a/test/test_ip4_irb.py b/test/test_ip4_irb.py
index 460cb43..bbec7ca 100644
--- a/test/test_ip4_irb.py
+++ b/test/test_ip4_irb.py
@@ -54,7 +54,7 @@
 
         # create 3 pg interfaces, 1 loopback interface
         cls.create_pg_interfaces(range(3))
-        cls.create_loopback_interfaces(1)
+        cls.create_loopback_interfaces(range(1))
 
         cls.interfaces = list(cls.pg_interfaces)
         cls.interfaces.extend(cls.lo_interfaces)
diff --git a/test/test_ip_mcast.py b/test/test_ip_mcast.py
index 9c216d5..017f062 100644
--- a/test/test_ip_mcast.py
+++ b/test/test_ip_mcast.py
@@ -3,13 +3,15 @@
 import unittest
 
 from framework import VppTestCase, VppTestRunner
+from vpp_sub_interface import VppSubInterface, VppDot1QSubint, VppDot1ADSubint
 from vpp_ip_route import VppIpMRoute, VppMRoutePath, VppMFibSignal, \
     MRouteItfFlags, MRouteEntryFlags, VppIpTable, DpoProto
 
 from scapy.packet import Raw
 from scapy.layers.l2 import Ether
-from scapy.layers.inet import IP, UDP, getmacbyip
+from scapy.layers.inet import IP, UDP, getmacbyip, ICMP
 from scapy.layers.inet6 import IPv6, getmacbyip6
+from util import ppp
 
 #
 # The number of packets sent is set to 91 so that when we replicate more than 3
diff --git a/test/test_qos.py b/test/test_qos.py
index 939cca5..a940bd3 100644
--- a/test/test_qos.py
+++ b/test/test_qos.py
@@ -1,13 +1,17 @@
 #!/usr/bin/env python
 
 import unittest
+import socket
+import struct
 
 from framework import VppTestCase, VppTestRunner
+from vpp_object import VppObject
 from vpp_papi_provider import QOS_SOURCE
-from vpp_ip_route import VppIpRoute, VppRoutePath
+from vpp_ip_route import VppIpRoute, VppRoutePath, VppMplsRoute
+from vpp_sub_interface import VppSubInterface, VppDot1QSubint
 
 from scapy.packet import Raw
-from scapy.layers.l2 import Ether
+from scapy.layers.l2 import Ether, Dot1Q
 from scapy.layers.inet import IP, UDP
 from scapy.layers.inet6 import IPv6
 from scapy.contrib.mpls import MPLS
diff --git a/test/test_sctp.py b/test/test_sctp.py
index 9396f05..32068ab 100644
--- a/test/test_sctp.py
+++ b/test/test_sctp.py
@@ -16,7 +16,7 @@
     def setUp(self):
         super(TestSCTP, self).setUp()
         self.vapi.session_enable_disable(is_enabled=1)
-        self.create_loopback_interfaces(2)
+        self.create_loopback_interfaces(range(2))
 
         table_id = 0
 
diff --git a/test/test_session.py b/test/test_session.py
index 55541b7..047b8ca 100644
--- a/test/test_session.py
+++ b/test/test_session.py
@@ -17,7 +17,7 @@
         super(TestSession, self).setUp()
 
         self.vapi.session_enable_disable(is_enabled=1)
-        self.create_loopback_interfaces(2)
+        self.create_loopback_interfaces(range(2))
 
         table_id = 0
 
diff --git a/test/test_tcp.py b/test/test_tcp.py
index 4a5c9bc..3b36bdf 100644
--- a/test/test_tcp.py
+++ b/test/test_tcp.py
@@ -16,7 +16,7 @@
     def setUp(self):
         super(TestTCP, self).setUp()
         self.vapi.session_enable_disable(is_enabled=1)
-        self.create_loopback_interfaces(2)
+        self.create_loopback_interfaces(range(2))
 
         table_id = 0
 
diff --git a/test/test_udp.py b/test/test_udp.py
index 230335f..aabbbd3 100644
--- a/test/test_udp.py
+++ b/test/test_udp.py
@@ -1,11 +1,11 @@
 #!/usr/bin/env python
-import unittest
+
 from framework import VppTestCase, VppTestRunner
-from vpp_udp_encap import VppUdpEncap
+from vpp_udp_encap import *
 from vpp_ip_route import VppIpRoute, VppRoutePath, VppIpTable, VppMplsLabel
 
 from scapy.packet import Raw
-from scapy.layers.l2 import Ether
+from scapy.layers.l2 import Ether, ARP
 from scapy.layers.inet import IP, UDP
 from scapy.layers.inet6 import IPv6
 from scapy.contrib.mpls import MPLS
@@ -233,7 +233,7 @@
     def setUp(self):
         super(TestUDP, self).setUp()
         self.vapi.session_enable_disable(is_enabled=1)
-        self.create_loopback_interfaces(2)
+        self.create_loopback_interfaces(range(2))
 
         table_id = 0
 
diff --git a/test/test_vcl.py b/test/test_vcl.py
index 79eb75f..cba8c67 100644
--- a/test/test_vcl.py
+++ b/test/test_vcl.py
@@ -68,12 +68,12 @@
         worker_client.join(self.timeout)
         try:
             self.validateResults(worker_client, worker_server, self.timeout)
-        except Exception as error:
+        except Exception, error:
             self.fail("Failed with %s" % error)
 
     def thru_host_stack_setup(self):
         self.vapi.session_enable_disable(is_enabled=1)
-        self.create_loopback_interfaces(2)
+        self.create_loopback_interfaces(range(2))
 
         table_id = 1
 
@@ -117,7 +117,7 @@
 
     def thru_host_stack_ipv6_setup(self):
         self.vapi.session_enable_disable(is_enabled=1)
-        self.create_loopback_interfaces(2)
+        self.create_loopback_interfaces(range(2))
 
         table_id = 1
 
@@ -182,7 +182,7 @@
 
         try:
             self.validateResults(worker_client, worker_server, self.timeout)
-        except Exception as error:
+        except Exception, error:
             self.fail("Failed with %s" % error)
 
     def validateResults(self, worker_client, worker_server, timeout):
diff --git a/test/vpp_bond_interface.py b/test/vpp_bond_interface.py
index 153f114..4bd7cb8 100644
--- a/test/vpp_bond_interface.py
+++ b/test/vpp_bond_interface.py
@@ -9,7 +9,7 @@
                  use_custom_mac=0, mac_address=''):
 
         """ Create VPP Bond interface """
-        super(VppBondInterface, self).__init__(test)
+        self._test = test
         self.mode = mode
         self.lb = lb
         self.use_custom_mac = use_custom_mac
@@ -20,7 +20,8 @@
                                        self.lb,
                                        self.use_custom_mac,
                                        self.mac_address)
-        self.set_sw_if_index(r.sw_if_index)
+        self._sw_if_index = r.sw_if_index
+        super(VppBondInterface, self).__init__(self._test)
 
     def remove_vpp_config(self):
         self.test.vapi.bond_delete(self.sw_if_index)
diff --git a/test/vpp_gre_interface.py b/test/vpp_gre_interface.py
index d5a40ee..3de3e5c 100644
--- a/test/vpp_gre_interface.py
+++ b/test/vpp_gre_interface.py
@@ -11,7 +11,7 @@
     def __init__(self, test, src_ip, dst_ip, outer_fib_id=0, type=0,
                  session=0):
         """ Create VPP GRE interface """
-        super(VppGreInterface, self).__init__(test)
+        self._test = test
         self.t_src = src_ip
         self.t_dst = dst_ip
         self.t_outer_fib = outer_fib_id
@@ -25,9 +25,10 @@
                                               outer_fib_id=self.t_outer_fib,
                                               tunnel_type=self.t_type,
                                               session_id=self.t_session)
-        self.set_sw_if_index(r.sw_if_index)
+        self._sw_if_index = r.sw_if_index
         self.generate_remote_hosts()
         self.test.registry.register(self, self.test.logger)
+        super(VppGreInterface, self).__init__(self.test)
 
     def remove_vpp_config(self):
         s = socket.inet_pton(socket.AF_INET, self.t_src)
@@ -54,7 +55,7 @@
     def __init__(self, test, src_ip, dst_ip, outer_fib_id=0, type=0,
                  session=0):
         """ Create VPP GRE interface """
-        super(VppGre6Interface, self).__init__(test)
+        self._test = test
         self.t_src = src_ip
         self.t_dst = dst_ip
         self.t_outer_fib = outer_fib_id
@@ -69,9 +70,10 @@
                                               tunnel_type=self.t_type,
                                               session_id=self.t_session,
                                               is_ip6=1)
-        self.set_sw_if_index(r.sw_if_index)
+        self._sw_if_index = r.sw_if_index
         self.generate_remote_hosts()
         self.test.registry.register(self, self.test.logger)
+        super(VppGre6Interface, self).__init__(self.test)
 
     def remove_vpp_config(self):
         s = socket.inet_pton(socket.AF_INET6, self.t_src)
diff --git a/test/vpp_lo_interface.py b/test/vpp_lo_interface.py
index 36f56be..ae4111b 100644
--- a/test/vpp_lo_interface.py
+++ b/test/vpp_lo_interface.py
@@ -5,14 +5,16 @@
 class VppLoInterface(VppInterface, VppObject):
     """VPP loopback interface."""
 
-    def __init__(self, test):
+    def __init__(self, test, lo_index):
         """ Create VPP loopback interface """
-        super(VppLoInterface, self).__init__(test)
+        self._test = test
         self.add_vpp_config()
+        super(VppLoInterface, self).__init__(test)
+        self._lo_index = lo_index
 
     def add_vpp_config(self):
         r = self.test.vapi.create_loopback()
-        self.set_sw_if_index(r.sw_if_index)
+        self._sw_if_index = r.sw_if_index
 
     def remove_vpp_config(self):
         self.test.vapi.delete_loopback(self.sw_if_index)
diff --git a/test/vpp_mpls_tunnel_interface.py b/test/vpp_mpls_tunnel_interface.py
index 995ffb7..2e0ed67 100644
--- a/test/vpp_mpls_tunnel_interface.py
+++ b/test/vpp_mpls_tunnel_interface.py
@@ -9,7 +9,7 @@
 
     def __init__(self, test, paths, is_multicast=0, is_l2=0):
         """ Create MPLS Tunnel interface """
-        super(VppMPLSTunnelInterface, self).__init__(test)
+        self._test = test
         self.t_paths = paths
         self.is_multicast = is_multicast
         self.is_l2 = is_l2
@@ -31,7 +31,8 @@
                 is_multicast=self.is_multicast,
                 l2_only=self.is_l2)
             sw_if_index = reply.sw_if_index
-        self.set_sw_if_index(sw_if_index)
+        self._sw_if_index = sw_if_index
+        super(VppMPLSTunnelInterface, self).__init__(self.test)
 
     def remove_vpp_config(self):
         for path in self.t_paths:
diff --git a/test/vpp_pppoe_interface.py b/test/vpp_pppoe_interface.py
index 507d825..fbb78bc 100644
--- a/test/vpp_pppoe_interface.py
+++ b/test/vpp_pppoe_interface.py
@@ -12,7 +12,7 @@
     def __init__(self, test, client_ip, client_mac,
                  session_id, decap_vrf_id=0):
         """ Create VPP PPPoE4 interface """
-        super(VppPppoeInterface, self).__init__(test)
+        self._test = test
         self.client_ip = client_ip
         self.client_mac = client_mac
         self.session_id = session_id
@@ -25,14 +25,15 @@
                 cip, cmac,
                 session_id=self.session_id,
                 decap_vrf_id=self.decap_vrf_id)
-        self.set_sw_if_index(r.sw_if_index)
+        self._sw_if_index = r.sw_if_index
+        super(VppPppoeInterface, self).__init__(self._test)
         self.generate_remote_hosts()
 
     def remove_vpp_config(self):
         cip = socket.inet_pton(socket.AF_INET, self.client_ip)
         cmac = mactobinary(self.client_mac)
         self.unconfig()
-        self.test.vapi.pppoe_add_del_session(
+        r = self.test.vapi.pppoe_add_del_session(
                 cip, cmac,
                 session_id=self.session_id,
                 decap_vrf_id=self.decap_vrf_id,
diff --git a/test/vpp_sub_interface.py b/test/vpp_sub_interface.py
index 3c726b2..38d2404 100644
--- a/test/vpp_sub_interface.py
+++ b/test/vpp_sub_interface.py
@@ -35,13 +35,10 @@
         self._parent = parent
         self._parent.add_sub_if(self)
         self._sub_id = sub_id
+        self.set_vtr(L2_VTR_OP.L2_DISABLED)
         self.DOT1AD_TYPE = 0x88A8
         self.DOT1Q_TYPE = 0x8100
 
-    def set_sw_if_index(self, sw_if_index):
-        super(VppSubInterface, self).set_sw_if_index(sw_if_index)
-        self.set_vtr(L2_VTR_OP.L2_DISABLED)
-
     @abstractmethod
     def create_arp_req(self):
         pass
@@ -50,12 +47,18 @@
     def create_ndp_req(self):
         pass
 
+    def resolve_arp(self):
+        super(VppSubInterface, self).resolve_arp(self.parent)
+
+    def resolve_ndp(self):
+        super(VppSubInterface, self).resolve_ndp(self.parent)
+
     @abstractmethod
     def add_dot1_layer(self, pkt):
         pass
 
     def remove_vpp_config(self):
-        self.test.vapi.delete_subif(self.sw_if_index)
+        self.test.vapi.delete_subif(self._sw_if_index)
 
     def _add_tag(self, packet, vlan, tag_type):
         payload = packet.payload
@@ -126,12 +129,12 @@
         return self._vlan
 
     def __init__(self, test, parent, sub_id, vlan=None):
-        super(VppDot1QSubint, self).__init__(test, parent, sub_id)
         if vlan is None:
             vlan = sub_id
         self._vlan = vlan
         r = test.vapi.create_vlan_subif(parent.sw_if_index, vlan)
-        self.set_sw_if_index(r.sw_if_index)
+        self._sw_if_index = r.sw_if_index
+        super(VppDot1QSubint, self).__init__(test, parent, sub_id)
 
     def create_arp_req(self):
         packet = VppPGInterface.create_arp_req(self)
@@ -163,13 +166,13 @@
         return self._inner_vlan
 
     def __init__(self, test, parent, sub_id, outer_vlan, inner_vlan):
-        super(VppDot1ADSubint, self).__init__(test, parent, sub_id)
         r = test.vapi.create_subif(parent.sw_if_index, sub_id, outer_vlan,
                                    inner_vlan, dot1ad=1, two_tags=1,
                                    exact_match=1)
-        self.set_sw_if_index(r.sw_if_index)
+        self._sw_if_index = r.sw_if_index
         self._outer_vlan = outer_vlan
         self._inner_vlan = inner_vlan
+        super(VppDot1ADSubint, self).__init__(test, parent, sub_id)
 
     def create_arp_req(self):
         packet = VppPGInterface.create_arp_req(self)
@@ -190,12 +193,12 @@
 class VppP2PSubint(VppSubInterface):
 
     def __init__(self, test, parent, sub_id, remote_mac):
-        super(VppP2PSubint, self).__init__(test, parent, sub_id)
         r = test.vapi.create_p2pethernet_subif(parent.sw_if_index,
                                                remote_mac, sub_id)
-        self.set_sw_if_index(r.sw_if_index)
+        self._sw_if_index = r.sw_if_index
         self.parent_sw_if_index = parent.sw_if_index
         self.p2p_remote_mac = remote_mac
+        super(VppP2PSubint, self).__init__(test, parent, sub_id)
 
     def add_dot1_layer(self, packet):
         return packet
diff --git a/test/vpp_vhost_interface.py b/test/vpp_vhost_interface.py
index e86be5d..2249b06 100644
--- a/test/vpp_vhost_interface.py
+++ b/test/vpp_vhost_interface.py
@@ -9,7 +9,7 @@
                  tag=''):
 
         """ Create VPP Vhost interface """
-        super(VppVhostInterface, self).__init__(test)
+        self._test = test
         self.is_server = is_server
         self.sock_filename = sock_filename
         self.renumber = renumber
@@ -26,7 +26,8 @@
                                                 self.use_custom_mac,
                                                 self.mac_address,
                                                 self.tag)
-        self.set_sw_if_index(r.sw_if_index)
+        self._sw_if_index = r.sw_if_index
+        super(VppVhostInterface, self).__init__(self._test)
 
     def remove_vpp_config(self):
         self.test.vapi.delete_vhost_user_if(self.sw_if_index)
