diff --git a/test_route_expiration/README.md b/test_route_expiration/README.md
new file mode 100644
index 0000000..8642bc3
--- /dev/null
+++ b/test_route_expiration/README.md
@@ -0,0 +1,33 @@
+# Route expiration test scenario
+
+Test that routes in the RIB expire when expected
+
+1.  Start NFD (including RIB Daemon) on A,B,C
+
+2.  Add the following routes on A:
+      ndn:/P , nexthop=hostB, expiration=10s
+      ndn:/P , nexthop=hostC, expiration=20s
+      ndn:/Q , nexthop=hostB, expiration=20s
+      ndn:/R , nexthop=hostC, expiration=10s
+      ndn:/S , nexthop=hostB, expiration=3600s
+
+3.  Delay 5 seconds; run nfd-status on A to inspect RIB
+    Expected routes:
+      ndn:/P (hostB expires in 3-8s, hostC expires in 13-18s)
+      ndn:/Q (hostB expires in 13-18s)
+      ndn:/R (hostC expires in 3-8s)
+      ndn:/S (hostB expires in >3000s)
+
+4.  Delay 10 seconds; run nfd-status on A to inspect RIB
+    Expected routes:
+      ndn:/P (hostC expires in 3-8s)
+      ndn:/Q (hostB expires in 3-8s)
+      ndn:/R : entry does not exist
+      ndn:/S (hostB expires in >3000s)
+
+5.  Delay 8 seconds; run nfd-status on A to inspect RIB
+    Expected routes:
+      ndn:/P : entry does not exist
+      ndn:/Q : entry does not exist
+      ndn:/R : entry does not exist
+      ndn:/S (hostB expires in >3000s)
diff --git a/test_route_expiration/include.sh b/test_route_expiration/include.sh
new file mode 100644
index 0000000..047a8d3
--- /dev/null
+++ b/test_route_expiration/include.sh
@@ -0,0 +1,86 @@
+#!/usr/bin/env bash
+
+source ../multi-host.conf
+
+start_nfd() {
+  sudo nfd &> $workdir/logs/nfd.log &
+  ssh $CTRL_B "sudo nfd &"
+  sleep 2
+}
+
+start_nrd() {
+  sudo nrd &> $workdir/logs/nrd.log &
+  ssh $CTRL_B "sudo nrd &"
+  sleep 2
+}
+
+set_up() {
+  workdir=$(pwd)
+  mkdir -p $workdir/logs
+
+  start_nfd
+  start_nrd
+}
+
+clean_up() {
+  nfd-stop
+  exit 0
+}
+
+register() {
+  name=$1
+  expirationPeriod=$2
+  nextHop=$3
+
+  result=$(nfdc register -e $(($expirationPeriod * 1000)) $name udp4://$nextHop | grep -o 'FaceId: [0-9]*' | sed s/'FaceId: '//)
+  echo $result
+}
+
+is_expiration_period_correct() {
+  name=$1
+  nextHop=$2
+  lowerBound=$3
+  upperBound=$4
+
+  expirationPeriod=$(nfd-status -r | grep -iF ''$name'' | grep -o 'faceid='$nextHop' ([a-zA-Z0-9 =]*)' |\
+                     grep -o 'expires=[0-9]*' | sed 's/'expires='//')
+
+  if [[ "$expirationPeriod" -lt $lowerBound || "$expirationPeriod" -gt $upperBound ]]; then
+    echo $name "has an expiration period of $expirationPeriod seconds which is not between the expected $lowerBound-$upperBound seconds"
+    exit 1
+  else
+    echo $name "has a correct expiration period between $lowerBound and $upperBound seconds"
+  fi
+}
+
+expect_entry_does_not_exist() {
+  name=$1
+
+  count=$(nfd-status -r | grep -c ' $name ')
+
+  if [[ $count -gt 0 ]]; then
+    echo $name "exists past its expected expiration period."
+    exit 2
+  else
+    echo $name "has expired successfully"
+  fi
+}
+
+expect_route_does_not_exist() {
+  name=$1
+  faceId=$2
+
+  count=$(nfd-status -r | grep -iF ''$name'' | grep -c 'faceid='$faceId'')
+
+  if [[ $count -gt 0 ]]; then
+    echo "Route for $name with FaceId: $faceId exists past its expected expiration period."
+    exit 2
+  else
+    echo "Route for $name with FaceId: $faceId has expired successfully"
+  fi
+}
+
+sleep_for_seconds() {
+  echo -e "Sleeping for $1 seconds...\n"
+  sleep $1
+}
\ No newline at end of file
diff --git a/test_route_expiration/route-expiration-test.sh b/test_route_expiration/route-expiration-test.sh
new file mode 100755
index 0000000..42361a5
--- /dev/null
+++ b/test_route_expiration/route-expiration-test.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+
+source include.sh
+
+HOST_B=$IP4_B1
+HOST_C=$IP4_C1
+
+set_up
+
+echo "Registering routes..."
+
+P_TO_B_FACE=$(register "/P" 10 $HOST_B)
+P_TO_C_FACE=$(register "/P" 20 $HOST_C)
+Q_TO_B_FACE=$(register "/Q" 20 $HOST_B)
+R_TO_C_FACE=$(register "/R" 10 $HOST_C)
+S_TO_B_FACE=$(register "/S" 3600 $HOST_B)
+
+sleep_for_seconds 5
+
+is_expiration_period_correct "/P" $P_TO_B_FACE 3 8
+is_expiration_period_correct "/P" $P_TO_C_FACE 13 18
+is_expiration_period_correct "/Q" $Q_TO_B_FACE 13 18
+is_expiration_period_correct "/R" $R_TO_C_FACE 3 8
+is_expiration_period_correct "/S" $S_TO_B_FACE 3000 3600
+
+sleep_for_seconds 10
+
+is_expiration_period_correct "/P" $P_TO_C_FACE 3 8
+expect_route_does_not_exist  "/P" $P_TO_B_FACE
+is_expiration_period_correct "/Q" $Q_TO_B_FACE 3 8
+expect_entry_does_not_exist  "/R"
+is_expiration_period_correct "/S" $S_TO_B_FACE 3000 3600
+
+sleep_for_seconds 8
+
+expect_entry_does_not_exist  "/P"
+expect_entry_does_not_exist  "/Q"
+expect_entry_does_not_exist  "/R"
+is_expiration_period_correct "/S" $S_TO_B_FACE 3000 3600
+
+clean_up
diff --git a/test_route_expiration/test_route_expiration.py b/test_route_expiration/test_route_expiration.py
new file mode 100644
index 0000000..bef4309
--- /dev/null
+++ b/test_route_expiration/test_route_expiration.py
@@ -0,0 +1,31 @@
+#!/usr/bin/python2
+# -*- Mode:python; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+#
+# Copyright (C) 2014 The University of Memphis
+# Author: Vince Lehman <vslehman@memphis.edu>
+# See COPYING for copyright and distribution information.
+#
+
+import os
+import unittest
+import subprocess
+
+class test_route_expiration(unittest.TestCase):
+    """Test case for NRD route expiration"""
+
+    def setUp(self):
+        print "\nTesting NRD route expiration"
+        print "***********"
+        os.chdir("test_route_expiration")
+
+    def tearDown(self):
+        print "***********"
+        os.chdir("..")
+
+    def test_nrd(self):
+        ret = subprocess.call(["./route-expiration-test.sh"], shell=True)
+
+        if ret != 0:
+            self.fail("NRD route expiration test FAILED")
+        else:
+            print "NRD route expiration test PASSED"
