diff --git a/test_congestionmark/README.md b/test_congestionmark/README.md
new file mode 100644
index 0000000..0f54a79
--- /dev/null
+++ b/test_congestionmark/README.md
@@ -0,0 +1,37 @@
+# Test CongestionMark tag and LP field
+
+## Topology
+
+C--A--D
+
+## Steps
+
+### Setup
+
+1.  Start NFD on A, C, and D.
+2.  Set route for /arizona/cs toward A on C and toward D on A. Set route for /ucla/cs toward A on C and toward D on A. Set route for /ucsd/caida toward A on C and toward D on A.
+3.  On A, set the strategy for the /arizona/cs namespace to the CongestionMarkStrategy to introduce a congestion mark (value=1) to traversing Interests under this namespace, overriding any previously-set congestion marks.
+4.  D starts a producer for /arizona/cs. This producer will copy any congestion marks on a received Interest to any Data packets produced as a result.
+5.  D starts a producer for /ucla/cs. This producer will copy any congestion marks on a received Interest to any Data packets produced as a result.
+6.  D starts a producer for /ucsd/caida. This producer will copy any congestion marks on a received Interest to any Data packets produced as a result.
+
+### Test Case 1
+
+7.  Start a consumer on C that sends an Interest for /arizona/cs.
+8.  A will add a congestion mark (value=7) to the traversing Interest to indicate congestion.
+9.  D will propagate the congestion mark on the outgoing Interest, if it exists.
+10. If the consumer on C did not receive a Data satisfying its Interest within the timeout or that did not contain a congestion mark (with value=7), fail the test.
+
+### Test Case 2
+
+11. Start a consumer on C that sends an Interest for /ucla/cs.
+12. If the consumer on C did not receive a Data without a congestion mark satisfying its Interest within the timeout, fail the test.
+
+### Test Case 3
+
+13. On C, set the strategy for the /ucsd/caida namespace to the CongestionMarkStrategy to introduce a congestion mark (value=2) to traversing Interests under this namespace, overriding any previously-set congestion marks.
+14. On A, set the strategy for the /ucsd/caida namespace to the CongestionMarkStrategy to introduce a congestion mark (value=3) to traversing Interests under this namespace, overriding any previously-set congestion marks.
+15. Start a consumer on C that sends an Interest for /arizona/cs.
+16. C will add a congestion mark (value=2) to the traversing Interest to indicate congestion.
+17. A will override the congestion mark (setting value=3) on the traversing Interest.
+18. If the consumer on C did not receive a Data satisfying its Interest within the timeout or that did not contain a congestion mark (with value=3), fail the test.
diff --git a/test_congestionmark/congestionmark-test.sh b/test_congestionmark/congestionmark-test.sh
new file mode 100755
index 0000000..10e3747
--- /dev/null
+++ b/test_congestionmark/congestionmark-test.sh
@@ -0,0 +1,164 @@
+#!/bin/bash
+source ../multi-host.conf
+
+echo "host A IP addresses $IP4_A1 and $IP4_A2"
+echo "host C IP address $IP4_C1"
+echo "host D IP address $IP4_D1"
+
+clean_up() {
+  r=$(ssh $CTRL_C "sudo killall nfd" 2>&1)
+  r=$(ssh $CTRL_D "sudo killall test-congestionmark-producer" 2>&1)
+  r=$(ssh $CTRL_D "sudo killall nfd" 2>&1)
+  r=$(sudo killall nfd 2>&1)
+}
+
+### Setup
+
+# Start NFD on hosts A, C, and D
+workdir=$(pwd)
+echo "starting nfd on host A..."
+mkdir -p $workdir/logs; sudo nfd > $workdir/logs/nfd.log 2>&1 &
+sleep 1
+
+echo "starting nfd on host C..."
+ssh $CTRL_C "mkdir -p $workdir/logs; sudo nfd &> $workdir/logs/nfd.log &"
+sleep 1
+
+echo "starting nfd on host D..."
+ssh $CTRL_D "mkdir -p $workdir/logs; sudo nfd &> $workdir/logs/nfd.log &"
+sleep 1
+
+# Create faces
+ssh $CTRL_C "nfdc face create udp4://$IP4_A1"
+nfdc face create udp4://$IP4_D1
+
+# Set up routes
+ssh $CTRL_C "nfdc route add /arizona/cs udp4://$IP4_A1"
+if [[ $? -ne 0 ]]; then
+  echo "C: Failed to create route for /arizona/cs toward A"
+  clean_up
+  exit 1
+fi
+
+ssh $CTRL_C "nfdc route add /ucla/cs udp4://$IP4_A1"
+if [[ $? -ne 0 ]]; then
+  echo "C: Failed to create route for /ucla/cs toward A"
+  clean_up
+  exit 1
+fi
+
+ssh $CTRL_C "nfdc route add /ucsd/caida udp4://$IP4_A1"
+if [[ $? -ne 0 ]]; then
+  echo "C: Failed to create route for /ucsd/caida toward A"
+  clean_up
+  exit 1
+fi
+
+nfdc route add /arizona/cs udp4://$IP4_D1
+if [[ $? -ne 0 ]]; then
+  echo "A: Failed to create route for /arizona/cs toward D"
+  clean_up
+  exit 1
+fi
+
+nfdc route add /ucla/cs udp4://$IP4_D1
+if [[ $? -ne 0 ]]; then
+  echo "A: Failed to create route for /ucla/cs toward D"
+  clean_up
+  exit 1
+fi
+
+nfdc route add /ucsd/caida udp4://$IP4_D1
+if [[ $? -ne 0 ]]; then
+  echo "A: Failed to create route for /ucsd/caida toward D"
+  clean_up
+  exit 1
+fi
+
+### TestCase 1
+
+# A: Use CongestionMarkStrategy (value=7) strategy for /arizona/cs namespace
+nfdc strategy set /arizona/cs /localhost/nfd/strategy/congestion-mark/%FD%01/7/true
+if [[ $? -ne 0 ]]; then
+  echo "A: Failed to set CongestionMarkStrategy for /arizona/cs prefix"
+  clean_up
+  exit 2
+fi
+
+# D: Start producer for /arizona/cs
+ssh $CTRL_D "test-congestionmark-producer /arizona/cs &>/dev/null &"
+
+# C: Send Interest for /arizona/cs
+output=$(ssh $CTRL_C "test-congestionmark-consumer /arizona/cs")
+status=$?
+if [[ $? -ne 0 ]]; then
+  echo "Consumer for Interest /arizona/cs did not exit with status 0"
+  echo "Actual: $status"
+  clean_up
+  exit 6
+fi
+if [[ $output != "CongestionMark=7" ]]; then
+  echo "Interest /arizona/cs not answered with a Data containing a congestion mark with a value of 7"
+  echo "Actual: $output"
+  clean_up
+  exit 3
+fi
+
+### TestCase 2
+
+# D: Start producer for /ucla/cs
+ssh $CTRL_D "test-congestionmark-producer /ucla/cs &>/dev/null &"
+
+# C: Send Interest for /ucla/cs
+output=$(ssh $CTRL_C "test-congestionmark-consumer /ucla/cs")
+status=$?
+if [[ $? -ne 0 ]]; then
+  echo "Consumer for Interest /ucla/cs did not exit with status 0"
+  echo "Actual: $status"
+  clean_up
+  exit 6
+fi
+if [[ $output != "CongestionMark=0" ]]; then
+  echo "Interest /ucla/cs not answered with a Data without a congestion mark"
+  echo "Actual: $output"
+  clean_up
+  exit 4
+fi
+
+### TestCase 3
+
+# D: Start producer for /ucsd/caida
+ssh $CTRL_D "test-congestionmark-producer /ucsd/caida &>/dev/null &"
+sleep 1
+
+# C: Use CongestionMarkStrategy (value=2) strategy for /ucsd/caida namespace
+ssh $CTRL_C "nfdc strategy set /ucsd/caida /localhost/nfd/strategy/congestion-mark/%FD%01/2/true"
+if [[ $? -ne 0 ]]; then
+  echo "C: Failed to set CongestionMarkStrategy for /ucsd/caida prefix"
+  clean_up
+  exit 2
+fi
+
+# A: Use CongestionMarkStrategy (value=3, override) strategy for /ucsd/caida namespace
+nfdc strategy set /ucsd/caida /localhost/nfd/strategy/congestion-mark/%FD%01/3/false
+if [[ $? -ne 0 ]]; then
+  echo "A: Failed to set CongestionMarkStrategy for /ucsd/caida prefix"
+  clean_up
+  exit 2
+fi
+
+# C: Send Interest for /ucsd/caida
+output=$(ssh $CTRL_C "test-congestionmark-consumer /ucsd/caida")
+status=$?
+if [[ $? -ne 0 ]]; then
+  echo "Consumer for Interest /ucsd/caida did not exit with status 0"
+  echo "Actual: $status"
+  clean_up
+  exit 6
+fi
+if [[ $output != "CongestionMark=3" ]]; then
+  echo "Interest /ucsd/caida not answered with a Data containing a congestion mark with a value of 3"
+  echo "Actual: $output"
+  clean_up
+  exit 5
+fi
diff --git a/test_congestionmark/test_congestionmark.py b/test_congestionmark/test_congestionmark.py
new file mode 100644
index 0000000..e9d5a0a
--- /dev/null
+++ b/test_congestionmark/test_congestionmark.py
@@ -0,0 +1,37 @@
+#!/usr/bin/python2
+# -*- Mode:python; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+#
+# Copyright (C) 2017 The University of Arizona
+# Author: Eric Newberry <enewberry@cs.arizona.edu>
+# See COPYING for copyright and distribution information.
+#
+
+import os
+import unittest
+import subprocess
+
+class test_congestionmark(unittest.TestCase):
+    """Test case for CongestionMark field"""
+
+    def setUp(self):
+        print "\nTesting CongestionMark"
+        print "*****************"
+        os.chdir("test_congestionmark")
+
+    def tearDown(self):
+        print "*****************"
+        os.chdir("..")
+
+    def test_congestionmark(self):
+        ret = subprocess.call(["./congestionmark-test.sh"], shell=True)
+        print "Test script return value:", ret
+        errormsg = {
+            1 : "Failed to create required routes",
+            2 : "Failed to set CongestionMarkStrategy",
+            3 : "Interest /arizona/cs timed out, was nacked, or did not contain a congestion mark with a value of 1",
+            4 : "Interest /ucla/cs timed out, was nacked, or contained a congestion mark",
+            5 : "Interest /ucsd/caida timed out, was nacked, or did not contain a congestion mark with a value of 3",
+            6 : "Consumer did not exit with status 0",
+        }
+        if (ret != 0):
+            self.fail(errormsg[ret])
