diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/provider/VirtualNetworkProvider.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/provider/VirtualNetworkProvider.java
index 9841f12..038d4b3 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/provider/VirtualNetworkProvider.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/provider/VirtualNetworkProvider.java
@@ -15,8 +15,6 @@
  */
 package org.onosproject.incubator.net.virtual.provider;
 
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.provider.Provider;
 
@@ -37,28 +35,4 @@
     boolean isTraversable(ConnectPoint src, ConnectPoint dst);
 
     // TODO: Further enhance this interface to support the virtual intent programming across this boundary.
-
-    /**
-     * Creates a network tunnel for all traffic from the specified source
-     * connection point to the indicated destination connection point.
-     *
-     * @param networkId virtual network identifier
-     * @param src       source connection point
-     * @param dst       destination connection point
-     * @return new tunnel's id
-     * @deprecated in Loon Release (1.11)
-     */
-    @Deprecated
-    TunnelId createTunnel(NetworkId networkId, ConnectPoint src, ConnectPoint dst);
-
-    /**
-     * Destroys the specified network tunnel.
-     *
-     * @param networkId virtual network identifier
-     * @param tunnelId  tunnel identifier
-     * @deprecated in Loon Release (1.11)
-     */
-    @Deprecated
-    void destroyTunnel(NetworkId networkId, TunnelId tunnelId);
-
 }
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/provider/DefaultVirtualNetworkProvider.java b/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/provider/DefaultVirtualNetworkProvider.java
index 0c1322d..be08685 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/provider/DefaultVirtualNetworkProvider.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/provider/DefaultVirtualNetworkProvider.java
@@ -22,9 +22,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
-import org.onosproject.incubator.net.tunnel.TunnelId;
 import org.onosproject.incubator.net.virtual.DefaultVirtualLink;
-import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.incubator.net.virtual.provider.VirtualNetworkProvider;
 import org.onosproject.incubator.net.virtual.provider.VirtualNetworkProviderRegistry;
 import org.onosproject.incubator.net.virtual.provider.VirtualNetworkProviderService;
@@ -121,16 +119,6 @@
         return foundSrc[0] && foundDst[0];
     }
 
-    @Override
-    public TunnelId createTunnel(NetworkId networkId, ConnectPoint src, ConnectPoint dst) {
-        return null;
-    }
-
-    @Override
-    public void destroyTunnel(NetworkId networkId, TunnelId tunnelId) {
-
-    }
-
     /**
      * Returns a set of set of interconnected connect points in the default topology.
      * The inner set represents the interconnected connect points, and the outerset
