diff --git a/bin/minindn b/bin/minindn
index b6831af..f43ae53 100755
--- a/bin/minindn
+++ b/bin/minindn
@@ -430,7 +430,8 @@
             "ctime": options.ctime,
             "nPings": options.nPings,
             "strategy": Nfd.STRATEGY_BEST_ROUTE,
-            "pctTraffic": options.pctTraffic
+            "pctTraffic": options.pctTraffic,
+            "nlsrSecurity": options.nlsrSecurity
         }
 
         experiment = ExperimentManager.create(experimentName, experimentArgs)
diff --git a/ndn/experiments/experiment.py b/ndn/experiments/experiment.py
index a13c774..4be2aac 100644
--- a/ndn/experiments/experiment.py
+++ b/ndn/experiments/experiment.py
@@ -35,6 +35,7 @@
         self.nPings = args["nPings"]
         self.strategy = args["strategy"]
         self.pctTraffic = args["pctTraffic"]
+        self.nlsrSecurity = args["nlsrSecurity"]
 
         # Used to restart pings on the recovered node if any
         self.pingedDict = {}
diff --git a/ndn/experiments/prefix_propogation.py b/ndn/experiments/prefix_propogation.py
new file mode 100644
index 0000000..4fe7dee
--- /dev/null
+++ b/ndn/experiments/prefix_propogation.py
@@ -0,0 +1,66 @@
+# -*- Mode:python; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+#
+# Copyright (C) 2015-2017, The University of Memphis,
+#                          Arizona Board of Regents,
+#                          Regents of the University of California.
+#
+# This file is part of Mini-NDN.
+# See AUTHORS.md for a complete list of Mini-NDN authors and contributors.
+#
+# Mini-NDN is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Mini-NDN is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Mini-NDN, e.g., in COPYING.md file.
+# If not, see <http://www.gnu.org/licenses/>.
+
+import sys
+import time
+from ndn.experiments.experiment import Experiment
+
+class PrefixPropogationExperiment(Experiment):
+
+    def __init__(self, args):
+        Experiment.__init__(self, args)
+
+    def setup(self):
+        self.checkConvergence()
+
+    def run(self):
+        firstNode = self.net.hosts[0]
+
+        if self.nlsrSecurity:
+            firstNode.cmd("ndnsec-set-default /ndn/{}-site/%C1.Operator/op".format(firstNode.name))
+
+        print("Testing advertise")
+        firstNode.cmd("nlsrc advertise /testPrefix")
+        time.sleep(30)
+
+        for host in self.net.hosts:
+            if host.name != firstNode.name:
+                if (int(host.cmd("nfdc fib | grep testPrefix | wc -l")) != 1 or
+                   int(host.cmd("nlsrc status | grep testPrefix | wc -l")) != 1):
+                    print("Advertise test failed")
+                    self.net.stop()
+                    sys.exit(1)
+
+        print("Testing withdraw")
+        firstNode.cmd("nlsrc withdraw /testPrefix")
+        time.sleep(30)
+
+        for host in self.net.hosts:
+            if host.name != firstNode.name:
+                if (int(host.cmd("nfdc fib | grep testPrefix | wc -l")) != 0 or
+                   int(host.cmd("nlsrc status | grep testPrefix | wc -l")) != 0):
+                    print("Withdraw test failed")
+                    self.net.stop()
+                    sys.exit(1)
+
+Experiment.register("prefix-propogation", PrefixPropogationExperiment)
