diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfDeviceTed.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfDeviceTed.java
new file mode 100755
index 0000000..40158d8
--- /dev/null
+++ b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfDeviceTed.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2016 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.ospf.controller;
+
+import org.onlab.packet.Ip4Address;
+import org.onlab.packet.Ip6Address;
+
+import java.util.List;
+
+/**
+ * Represents Device Traffic Engineering parameters.
+ */
+public interface OspfDeviceTed {
+
+    /**
+     * Obtain list of IPv4 router ids.
+     *
+     * @return IPv4 router ids
+     */
+    public List<Ip4Address> ipv4RouterIds();
+
+    /**
+     * Sets list of IPv4 router ids.
+     *
+     * @param routerIds list of IPv4 router ids
+     */
+    public void setIpv4RouterIds(List<Ip4Address> routerIds);
+
+    /**
+     * Obtain list of IPv6 router id.
+     *
+     * @return IPv4 router ids
+     */
+    public List<Ip6Address> ipv6RouterIds();
+
+    /**
+     * Sets list of IPv4 router ids.
+     *
+     * @param routerIds list of IPv4 router ids
+     */
+    public void setIpv6RouterIds(List<Ip6Address> routerIds);
+
+    /**
+     * Obtain the list of topology ids.
+     *
+     * @return list of topology ids
+     */
+    public List<Short> topologyIds();
+
+    /**
+     * Sets the list of topology ids.
+     *
+     * @param topologyIds the list of topology ids
+     */
+    public void setTopologyIds(List<Short> topologyIds);
+
+    /**
+     * Obtains position of device in the network.
+     *
+     * @return position of device in the network
+     */
+    public Boolean asbr();
+
+    /**
+     * Sets position of device in the network.
+     *
+     * @param asbr position of device in the network
+     */
+    public void setAsbr(Boolean asbr);
+
+    /**
+     * Obtains position of device in the network.
+     *
+     * @return position of device in the network
+     */
+    public Boolean abr();
+
+    /**
+     * Sets position of device in the network.
+     *
+     * @param abr position of device in the network
+     */
+    public void setAbr(Boolean abr);
+}
\ No newline at end of file
