diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/NullProviders.java b/providers/null/src/main/java/org/onosproject/provider/nil/NullProviders.java
index ed870f4..be0f753 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/NullProviders.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/NullProviders.java
@@ -350,7 +350,6 @@
         topologyMutationDriver.start(mutationRate, linkService, deviceService,
                                      linkProviderService, deviceProviderService,
                                      simulator);
-        portStatsDriver.start(deviceService, deviceProviderService);
     }
 
     // Selects the simulator based on the specified name.
@@ -431,6 +430,19 @@
                                                              NONE));
     }
 
+    /**
+     * Enables or disables simulated port statistics.
+     *
+     * @param on true to enable
+     */
+    public void enablePortStats(boolean on) {
+        if (on) {
+            portStatsDriver.start(deviceService, deviceProviderService);
+        } else {
+            portStatsDriver.stop();
+        }
+    }
+
     // Null provider base class.
     abstract static class AbstractNullProvider extends AbstractProvider {
         protected AbstractNullProvider() {
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/PortStatsDriver.java b/providers/null/src/main/java/org/onosproject/provider/nil/PortStatsDriver.java
index 8ad269c..81ebdae 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/PortStatsDriver.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/PortStatsDriver.java
@@ -61,10 +61,12 @@
      */
     void start(DeviceService deviceService,
                DeviceProviderService deviceProviderService) {
-        stopped = false;
-        this.deviceService = deviceService;
-        this.deviceProviderService = deviceProviderService;
-        executor.execute(this);
+        if (stopped) {
+            stopped = false;
+            this.deviceService = deviceService;
+            this.deviceProviderService = deviceProviderService;
+            executor.execute(this);
+        }
     }
 
     /**
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullPortStatsControlCommand.java b/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullPortStatsControlCommand.java
new file mode 100644
index 0000000..109d0cf
--- /dev/null
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/cli/NullPortStatsControlCommand.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2015-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.provider.nil.cli;
+
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.onosproject.cfg.ComponentConfigService;
+import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.cli.StartStopCompleter;
+import org.onosproject.provider.nil.NullProviders;
+
+import static org.onosproject.cli.StartStopCompleter.START;
+
+/**
+ * Starts or stops topology simulation.
+ */
+@Service
+@Command(scope = "onos", name = "null-port-stats",
+        description = "Starts or stops port statistics simulation")
+public class NullPortStatsControlCommand extends AbstractShellCommand {
+
+    @Argument(index = 0, name = "cmd", description = "Control command: start/stop",
+            required = true)
+    @Completion(StartStopCompleter.class)
+    String cmd = null;
+
+    @Override
+    protected void doExecute() {
+        ComponentConfigService service = get(ComponentConfigService.class);
+        NullProviders npService = get(NullProviders.class);
+        npService.enablePortStats(cmd.equals(START));
+    }
+
+}
