diff --git a/src/main/java/net/floodlightcontroller/routing/Link.java b/src/main/java/net/floodlightcontroller/routing/Link.java
index 436e67c719146aa44a46d24776f3461faa9a7f2e..79585969aadaebd238f268943f4d3f50367eef43 100755
--- a/src/main/java/net/floodlightcontroller/routing/Link.java
+++ b/src/main/java/net/floodlightcontroller/routing/Link.java
@@ -18,6 +18,7 @@
 package net.floodlightcontroller.routing;
 
 import net.floodlightcontroller.core.web.serializers.DPIDSerializer;
+import net.floodlightcontroller.core.web.serializers.UShortSerializer;
 
 import org.codehaus.jackson.annotate.JsonProperty;
 import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -52,6 +53,7 @@ public class Link {
     }
 
     @JsonProperty("src-port")
+    @JsonSerialize(using=UShortSerializer.class)
     public short getSrcPort() {
         return srcPort;
     }
@@ -62,6 +64,7 @@ public class Link {
         return dst;
     }
     @JsonProperty("dst-port")
+    @JsonSerialize(using=UShortSerializer.class)
     public short getDstPort() {
         return dstPort;
     }
@@ -102,11 +105,18 @@ public class Link {
     public String toString() {
         return "Link [src=" + HexString.toHexString(this.src) 
                 + " outPort="
-                + srcPort
+                + (srcPort & 0xffff)
                 + ", dst=" + HexString.toHexString(this.dst)
                 + ", inPort="
-                + dstPort
+                + (dstPort & 0xffff)
                 + "]";
     }
+    
+    public String toKeyString() {
+    	return (HexString.toHexString(this.src) + "|" +
+    			(this.srcPort & 0xffff) + "|" +
+    			HexString.toHexString(this.dst) + "|" +
+    		    (this.dstPort & 0xffff) );
+    }
 }
 
diff --git a/src/main/java/net/floodlightcontroller/topology/NodePortTuple.java b/src/main/java/net/floodlightcontroller/topology/NodePortTuple.java
index 821a1737cbe21bfa6d3684aeada84b9e283e6fa6..4983529d6b6c76e07b8ca1b90e740c3f67c09655 100644
--- a/src/main/java/net/floodlightcontroller/topology/NodePortTuple.java
+++ b/src/main/java/net/floodlightcontroller/topology/NodePortTuple.java
@@ -1,6 +1,7 @@
 package net.floodlightcontroller.topology;
 
 import net.floodlightcontroller.core.web.serializers.DPIDSerializer;
+import net.floodlightcontroller.core.web.serializers.UShortSerializer;
 
 import org.codehaus.jackson.annotate.JsonProperty;
 import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -40,6 +41,7 @@ public class NodePortTuple {
         this.nodeId = nodeId;
     }
     @JsonProperty("port")
+    @JsonSerialize(using=UShortSerializer.class)
     public short getPortId() {
         return portId;
     }
@@ -76,7 +78,13 @@ public class NodePortTuple {
         return true;
     }
     
+    /**
+     * API to return a String value formed wtih NodeID and PortID
+     * The portID is a 16-bit field, so mask it as an integer to get full
+     * positive value
+     * @return
+     */
     public String toKeyString() {
-        return (HexString.toHexString(nodeId)+ "|" + portId);
+        return (HexString.toHexString(nodeId)+ "|" + (portId & 0xffff));
     }
 }