diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/OdtnDeviceDescriptionDiscovery.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/OdtnDeviceDescriptionDiscovery.java
index 8030950..96d3b4e 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/OdtnDeviceDescriptionDiscovery.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/behaviour/OdtnDeviceDescriptionDiscovery.java
@@ -15,6 +15,8 @@
  */
 package org.onosproject.odtn.behaviour;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
 import java.util.List;
 
 import org.onosproject.net.device.DeviceDescriptionDiscovery;
@@ -33,11 +35,15 @@
 
     /**
      * Annotations key intended for a Port, which stores OpenConfig component name.
+     * <p>
+     * Optional; only for purpose of debugging.
      */
     String OC_NAME = "oc-name";
 
     /**
      * Annotations key intended for a Port, which stores OpenConfig component type.
+     * <p>
+     * Optional; only for purpose of debugging.
      */
     String OC_TYPE = "oc-type";
 
@@ -48,10 +54,59 @@
      */
     String CONNECTION_ID = "odtn-connection-id";
 
+    /**
+     * Annotations key for a Port,
+     * which describes role of the port annotated.
+     * Value must be one of “client” or “line”.
+     *
+     * @see OdtnPortType
+     */
+    String PORT_TYPE = "odtn-port-type";
+
+    enum OdtnPortType {
+        CLIENT("client"),
+        LINE("line");
+
+        private final String value;
+
+        OdtnPortType(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Returns the value to be used as Annotations value.
+         * @return value
+         */
+        public String value() {
+            return value;
+        }
+
+        /**
+         * Returns the corresponding enum value from a string value.
+         * @param value to look up
+         * @return OdtnPortType
+         *
+         * @throws NullPointerException if {@code value} was null
+         * @throws IllegalArgumentException if non-OdtnPortValue was given
+         */
+        public static OdtnPortType fromValue(String value) {
+            checkNotNull(value);
+            if (value.equalsIgnoreCase(CLIENT.value())) {
+                return CLIENT;
+            } else if (value.equalsIgnoreCase(LINE.value())) {
+                return LINE;
+            } else {
+                throw new IllegalArgumentException("Invalid value: " + value);
+            }
+        }
+    }
 
     /**
      * OpenConfig component property name to store,
      * decimal integer index to be used when creating PortNumber.
+     * <p>
+     * Optional if providing original implementation other than
+     * odtn-driver supplied driver.
      */
     String ONOS_PORT_INDEX = "onos-index";
 
diff --git a/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/OpenConfigDeviceDiscovery.java b/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/OpenConfigDeviceDiscovery.java
index ba98641..d59d5c0 100644
--- a/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/OpenConfigDeviceDiscovery.java
+++ b/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/OpenConfigDeviceDiscovery.java
@@ -179,17 +179,21 @@
             // for now we just need a Port with annotations
             builder.type(Type.OCH);
 
+            props.putIfAbsent(PORT_TYPE, OdtnPortType.LINE.value());
+
             // Just a heuristics to deal with simple transponder
             // if the device declare odtn-connection-id, just use them
             // if not assign same value to relevant ports types
             props.putIfAbsent(CONNECTION_ID, "the-only-one");
             break;
+
         case "oc-platform-types:TRANSCEIVER":
-        //case "oc-opt-types:OPTICAL_CHANNEL":
             // TODO assign appropriate port type & annotations at some point
             // for now we just need a Port with annotations
             builder.type(Type.PACKET);
 
+            props.putIfAbsent(PORT_TYPE, OdtnPortType.CLIENT.value());
+
             // Just a heuristics to deal with simple transponder
             // if the device declare odtn-connection-id, just use them
             // if not assign same value to relevant ports types
