diff --git a/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/JuniperUtils.java b/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/JuniperUtils.java
index e283f3a..60baded 100644
--- a/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/JuniperUtils.java
+++ b/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/JuniperUtils.java
@@ -105,6 +105,7 @@
     private static final String LLDP_LO_PORT = "lldp-local-port-id";
     private static final String LLDP_REM_CHASS = "lldp-remote-chassis-id";
     private static final String LLDP_REM_PORT = "lldp-remote-port-id";
+    private static final String LLDP_REM_PORT_DES = "lldp-remote-port-description";
     private static final String REGEX_ADD =
             ".*Private base address\\s*([:,0-9,a-f,A-F]*).*";
     private static final Pattern ADD_PATTERN =
@@ -525,11 +526,13 @@
                 MacAddress mac = MacAddress.valueOf(
                         neighbor.getString(LLDP_REM_CHASS));
                 long remotePortIndex =
-                        neighbor.getInt(LLDP_REM_PORT);
+                        neighbor.getInt(LLDP_REM_PORT, -1);
+                String remotePortDescription = neighbor.getString(LLDP_REM_PORT_DES, null);
                 LinkAbstraction link = new LinkAbstraction(
                         localPortName,
                         mac.toLong(),
-                        remotePortIndex);
+                        remotePortIndex,
+                        remotePortDescription);
                 neighbour.add(link);
             }
         }
@@ -543,11 +546,13 @@
         protected String localPortName;
         protected ChassisId remoteChassisId;
         protected long remotePortIndex;
+        protected String remotePortDescription;
 
-        protected LinkAbstraction(String pName, long chassisId, long pIndex) {
+        protected LinkAbstraction(String pName, long chassisId, long pIndex, String pDescription) {
             this.localPortName = pName;
             this.remoteChassisId = new ChassisId(chassisId);
             this.remotePortIndex = pIndex;
+            this.remotePortDescription = pDescription;
         }
     }
 
diff --git a/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/LinkDiscoveryJuniperImpl.java b/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/LinkDiscoveryJuniperImpl.java
index 613f6d4..af93653 100644
--- a/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/LinkDiscoveryJuniperImpl.java
+++ b/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/LinkDiscoveryJuniperImpl.java
@@ -19,6 +19,7 @@
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
+import org.onosproject.net.AnnotationKeys;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Port;
@@ -109,15 +110,18 @@
             //find destination port by interface index
             Optional<Port> remotePort = deviceService.getPorts(remoteDevice.id())
                     .stream().filter(port -> {
-                if (port.number().toLong()
-                                == linkAbs.remotePortIndex) {
+                if (port.number().toLong() == linkAbs.remotePortIndex) {
+                    return true;
+                }
+                if (port.annotations().value(AnnotationKeys.PORT_NAME) != null
+                        && port.annotations().value(AnnotationKeys.PORT_NAME).equals(linkAbs.remotePortDescription)) {
                     return true;
                 }
                 return false;
             }).findAny();
             if (!remotePort.isPresent()) {
-                log.warn("Port number {} does not exist in device {}",
-                         linkAbs.remotePortIndex, remoteDevice.id());
+                log.warn("Port number {} and Port description {} do not exist in device {}",
+                         linkAbs.remotePortIndex, linkAbs.remotePortDescription, remoteDevice.id());
                 continue;
             }
 
