diff --git a/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/PortStatisticsDiscoveryImpl.java b/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/PortStatisticsDiscoveryImpl.java
index 31c7266..ec8d5cf 100644
--- a/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/PortStatisticsDiscoveryImpl.java
+++ b/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/PortStatisticsDiscoveryImpl.java
@@ -18,7 +18,9 @@
 
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
+import org.apache.commons.lang3.tuple.Pair;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.PortNumber;
 import org.onosproject.net.device.DefaultPortStatistics;
 import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.device.PortStatistics;
@@ -50,6 +52,9 @@
  */
 public class PortStatisticsDiscoveryImpl extends AbstractHandlerBehaviour implements PortStatisticsDiscovery {
 
+    private static final Map<Pair<DeviceId, PortNumber>, Long> PORT_START_TIMES =
+            Maps.newConcurrentMap();
+
     protected final Logger log = LoggerFactory.getLogger(getClass());
 
     /**
@@ -93,10 +98,12 @@
 
         Map<Long, DefaultPortStatistics.Builder> portStatBuilders = Maps.newHashMap();
         deviceService.getPorts(deviceId)
-                .forEach(p -> portStatBuilders.put(p.number().toLong(),
-                                                   DefaultPortStatistics.builder()
-                                                           .setPort(p.number())
-                                                           .setDeviceId(deviceId)));
+                .forEach(p -> portStatBuilders.put(
+                        p.number().toLong(),
+                        DefaultPortStatistics.builder()
+                                .setPort(p.number())
+                                .setDeviceId(deviceId)
+                                .setDurationSec(getDuration(p.number()))));
 
         Set<PiCounterCellId> counterCellIds = Sets.newHashSet();
         portStatBuilders.keySet().forEach(p -> {
@@ -134,6 +141,7 @@
             } else {
                 log.warn("Unrecognized counter ID {}, skipping", counterData);
             }
+
         });
 
         return portStatBuilders
@@ -142,4 +150,13 @@
                 .map(DefaultPortStatistics.Builder::build)
                 .collect(Collectors.toList());
     }
+
+    private long getDuration(PortNumber port) {
+        // FIXME: This is a workaround since we cannot determine the port
+        // duration from a P4 counter. We'll be fixed by gNMI.
+        final long now = System.currentTimeMillis() / 1000;
+        final Long startTime = PORT_START_TIMES.putIfAbsent(
+                Pair.of(data().deviceId(), port), now);
+        return startTime == null ? now : now - startTime;
+    }
 }
