diff --git a/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java b/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
index 6e0ab42..e46def2 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
@@ -15,13 +15,15 @@
  */
 package org.onosproject.net.device;
 
+import org.onosproject.net.AbstractAnnotated;
+import org.onosproject.net.Annotations;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 
 /**
  * Default implementation of immutable port statistics.
  */
-public final class DefaultPortStatistics implements PortStatistics {
+public final class DefaultPortStatistics extends AbstractAnnotated implements PortStatistics {
 
     private final DeviceId deviceId;
     private final PortNumber portNumber;
@@ -47,7 +49,9 @@
                                   long packetsRxErrors,
                                   long packetsTxErrors,
                                   long durationSec,
-                                  long durationNano) {
+                                  long durationNano,
+                                  Annotations annotations) {
+        super(annotations);
         this.deviceId = deviceId;
         this.portNumber = portNumber;
         this.packetsReceived = packetsReceived;
@@ -168,7 +172,8 @@
                 "pktRxErr: " + this.packetsRxErrors + ", " +
                 "pktTxErr: " + this.packetsTxErrors + ", " +
                 "pktRxDrp: " + this.packetsRxDropped + ", " +
-                "pktTxDrp: " + this.packetsTxDropped;
+                "pktTxDrp: " + this.packetsTxDropped + ", " +
+                "annotations: " + annotations();
     }
 
     public static final class Builder {
@@ -185,6 +190,7 @@
         long packetsTxErrors;
         long durationSec;
         long durationNano;
+        Annotations annotations;
 
         private Builder() {
 
@@ -349,6 +355,18 @@
         }
 
         /**
+         * Sets the annotations.
+         *
+         * @param anns annotations
+         * @return builder object
+         */
+        public Builder setAnnotations(Annotations anns) {
+            annotations = anns;
+
+            return this;
+        }
+
+        /**
          * Creates a PortStatistics object.
          *
          * @return DefaultPortStatistics object
@@ -366,7 +384,8 @@
                     packetsRxErrors,
                     packetsTxErrors,
                     durationSec,
-                    durationNano);
+                    durationNano,
+                    annotations);
         }
 
     }
diff --git a/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java b/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
index 3b9f19a..f78768e 100644
--- a/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
+++ b/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
@@ -15,12 +15,16 @@
  */
 package org.onosproject.net.device;
 
+import org.onosproject.net.Annotated;
+import org.onosproject.net.Annotations;
 import org.onosproject.net.PortNumber;
 
+import static org.onosproject.net.DefaultAnnotations.EMPTY;
+
 /**
  * Statistics of a port.
  */
-public interface PortStatistics {
+public interface PortStatistics extends Annotated {
 
     /**
      * Returns the port number.
@@ -108,6 +112,11 @@
      */
     long durationNano();
 
+    @Override
+    default Annotations annotations() {
+        return EMPTY;
+    }
+
     /**
      * Returns true if all the port stats are zero, excluding TxErrors and RxErrors.
      *
