diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelDescription.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelDescription.java
new file mode 100644
index 0000000..eca8fdd
--- /dev/null
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelDescription.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.incubator.net.tunnel;
+
+import org.onosproject.core.DefaultGroupId;
+import org.onosproject.net.Annotated;
+import org.onosproject.net.Description;
+import org.onosproject.net.provider.ProviderId;
+import org.onosproject.incubator.net.tunnel.Tunnel.Type;
+
+/**
+ * Describes a tunnel.
+ */
+public interface TunnelDescription extends Description, Annotated {
+
+    /**
+     * Returns the tunnel id.
+     *
+     * @return tunnelId
+     */
+    TunnelId id();
+
+    /**
+     * Returns the connection point source.
+     *
+     * @return tunnel source ConnectionPoint
+     */
+    TunnelEndPoint src();
+
+    /**
+     * Returns the connection point destination.
+     *
+     * @return tunnel destination
+     */
+    TunnelEndPoint dst();
+
+    /**
+     * Returns the tunnel type.
+     *
+     * @return tunnel type
+     */
+    Type type();
+
+    /**
+     * Returns group flow table id which a tunnel match up.
+     *
+     * @return OpenFlowGroupId
+     */
+    DefaultGroupId groupId();
+
+    /**
+     * Returns tunnel producer name.
+     *
+     * @return producer name
+     */
+    ProviderId producerName();
+
+    /**
+     * Return the name of a tunnel.
+     *
+     * @return Tunnel Name
+     */
+    TunnelName tunnelName();
+}
