diff --git a/test_interest_loop/NDNTrafficClient.conf b/test_interest_loop/NDNTrafficClient.conf
new file mode 100644
index 0000000..439a96f
--- /dev/null
+++ b/test_interest_loop/NDNTrafficClient.conf
@@ -0,0 +1,6 @@
+##########
+TrafficPercentage=100
+Name=ndn:/test-loop/A
+ExpectedContent=AAAAAAAA
+NameAppendBytes=8
+##########
diff --git a/test_interest_loop/README.md b/test_interest_loop/README.md
new file mode 100644
index 0000000..87d8941
--- /dev/null
+++ b/test_interest_loop/README.md
@@ -0,0 +1,10 @@
+Steps:
+
+1.  Start NFD on A,B,C.
+2.  On host A, create UDP face to host B, and add nexthop for `ndn:/test-loop` toward this face.  
+    On host B, create UDP face to host C, and add nexthop for `ndn:/test-loop` toward this face.  
+    On host C, create UDP face to host A, and add nexthop for `ndn:/test-loop` toward this face.
+3.  On every host, set strategy of `ndn:/test-loop` to *strategy under test*.
+4.  On host A, execute ndn-traffic-client to send 100 Interests to `ndn:/test-loop/A/<random>`.
+5.  On every host, execute nfd-status to see face counters.  
+    Fail if NInInterests or NOutInterests counter of a UDP face is greater than 200.
diff --git a/test_interest_loop/__init__.py b/test_interest_loop/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test_interest_loop/__init__.py
diff --git a/test_interest_loop/add-nexthop.sh b/test_interest_loop/add-nexthop.sh
new file mode 100755
index 0000000..c7bab48
--- /dev/null
+++ b/test_interest_loop/add-nexthop.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+ipaddr=$1
+strategy=$2
+faceid=$(nfdc create udp4://$ipaddr | grep -Po 'FaceId: .*?,' | sed 's/FaceId: //' | sed 's/,//')
+nfdc add-nexthop ndn:/test-loop $faceid
+nfdc set-strategy ndn:/test-loop $strategy
diff --git a/test_interest_loop/interest-loop-test.sh b/test_interest_loop/interest-loop-test.sh
new file mode 100755
index 0000000..0cc616e
--- /dev/null
+++ b/test_interest_loop/interest-loop-test.sh
@@ -0,0 +1,80 @@
+#!/usr/bin/env bash
+source ../multi-host.conf
+a_ipaddr=$IP4_A1
+b_ipaddr=$IP4_B1
+c_ipaddr=$IP4_C1
+strategy=$1
+echo "host A IP address $a_ipaddr"
+echo "host B IP address $b_ipaddr"
+echo "host C IP address $c_ipaddr"
+echo "Strategy: $strategy"
+mkdir -p logs
+workdir=$(pwd)
+
+clean_up() {
+    echo "cleaning up..."
+    r=$(sudo killall nfd 2>&1)
+    r=$(ssh $b_ipaddr "sudo killall nfd 2>&1" 2>&1)
+    r=$(ssh $c_ipaddr "sudo killall nfd 2>&1" 2>&1)
+}
+
+# get keys
+echo "getting keys..."
+cp -r /usr/local/etc/ndn/keys $workdir/
+ssh $CTRL_B "cp -r /usr/local/etc/ndn/keys $workdir/"
+ssh $CTRL_C "cp -r /usr/local/etc/ndn/keys $workdir/"
+
+# start NFD on three nodes and set nexthop to create loop
+echo "start NFD on three nodes and set nexthop to create loop..."
+ssh $CTRL_B "mkdir -p $workdir/logs;\
+    sudo nfd --config $workdir/nfd.conf > $workdir/logs/nfd.log 2>&1 &"
+ssh $CTRL_C "mkdir -p $workdir/logs;\
+    sudo nfd --config $workdir/nfd.conf > $workdir/logs/nfd.log 2>&1 &"
+sudo nfd --config $workdir/nfd.conf > $workdir/logs/nfd.log 2>&1 &
+sleep 5
+ssh $CTRL_B "$workdir/add-nexthop.sh $c_ipaddr $strategy"
+ssh $CTRL_C "$workdir/add-nexthop.sh $a_ipaddr $strategy"
+$workdir/add-nexthop.sh $b_ipaddr $strategy
+
+# use ndn-traffic client to send 100 interests
+echo "using ndn-traffic client to send 100 interests..."
+ndn-traffic -c 100 -i 200 NDNTrafficClient.conf > $workdir/logs/client.log 2>&1
+
+# collect nfd-status from B and C
+echo "collecting nfd-status from B and C..."
+ssh $CTRL_B "nfd-status -f > $workdir/logs/nfd-status-B.log 2>&1"
+scp $CTRL_B:$workdir/logs/nfd-status-B.log  $workdir/logs/nfd-status-B.log
+ssh $CTRL_C "nfd-status -f > $workdir/logs/nfd-status-C.log 2>&1"
+scp $CTRL_C:$workdir/logs/nfd-status-C.log  $workdir/logs/nfd-status-C.log
+nfd-status -f > $workdir/logs/nfd-status-A.log 2>&1
+
+# analyze results
+echo "analyzing results..."
+for host in {A..C}
+do
+    echo "Host $host:"
+    cat $workdir/logs/nfd-status-$host.log | grep udp4 | while read line
+    do
+        ini=$(echo "$line" | grep -Po "in={.*?i" | sed 's/in={//g' | sed 's/i//g')
+        outi=$(echo "$line" | grep -Po "out={.*?i" | sed 's/out={//g' | sed 's/i//g')
+        echo "        $ini in, $outi out"
+        if [[ $ini -gt 200 ]]
+        then
+            echo "FAIL: counter for incoming interest on host $host is greater than 200"
+            echo "$line"
+            clean_up
+            exit 1
+        fi
+        if [[ $outi -gt 200 ]]
+        then
+            echo "FAIL: counter for outgoing interest on host $host is greater than 200"
+            echo "$line"
+            clean_up
+            exit 2
+        fi
+    done
+done
+
+# clean up
+clean_up
+echo "Interest Loop Test PASSED"
diff --git a/test_interest_loop/nfd.conf b/test_interest_loop/nfd.conf
new file mode 100644
index 0000000..7c16261
--- /dev/null
+++ b/test_interest_loop/nfd.conf
@@ -0,0 +1,46 @@
+log
+{
+}
+
+face_system
+{
+  unix
+  {
+    listen yes
+    path /var/run/nfd.sock
+  }
+
+  tcp
+  {
+    listen yes
+    port 6363
+  }
+
+  udp
+  {
+    port 6363
+    idle_timeout 600
+    keep_alive_interval 25
+
+    mcast no ; Turn off UDP multicast.
+  }
+
+  ether
+  {
+    mcast no ; Turn off Ethernet multicast.
+  }
+}
+
+authorizations
+{
+  authorize
+  {
+    certfile keys/default.ndncert
+    privileges
+    {
+      faces
+      fib
+      strategy-choice
+    }
+  }
+}
diff --git a/test_interest_loop/test_interest_loop.py b/test_interest_loop/test_interest_loop.py
new file mode 100644
index 0000000..595d037
--- /dev/null
+++ b/test_interest_loop/test_interest_loop.py
@@ -0,0 +1,56 @@
+#!/usr/bin/python2
+# -*- Mode:python; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+#
+# Copyright (C) 2014 University of Arizona
+# Author: Yi Huang <ltr120@email.arizona.edu>
+# See COPYING for copyright and distribution information.
+#
+
+import os
+import unittest
+import subprocess
+
+class test_interest_loop(unittest.TestCase):
+    """Test case for Interest loop scenario"""
+
+    errormsg = {
+        1 : "Counter for incoming interest is greater than 200.",
+        2 : "Counter for outgoing interest is greater than 200.",
+    }
+
+    def setUp(self):
+        print "\nTesting Interest loop scenario"
+        print "******************************"
+        os.chdir("test_interest_loop")
+
+    def tearDown(self):
+        print "******************************"
+        os.chdir("..")
+
+    def test_broadcast(self):
+        print ">>> Testing with Broadcast Strategy <<<"
+        ret = subprocess.call(["./interest-loop-test.sh ndn:/localhost/nfd/strategy/broadcast"], shell=True)
+        print "Test script return value:", ret
+        if ret != 0:
+            self.fail(self.errormsg[ret])
+
+    def test_best_route(self):
+        print ">>> Testing with Best-route Strategy <<<"
+        ret = subprocess.call(["./interest-loop-test.sh ndn:/localhost/nfd/strategy/best-route"], shell=True)
+        print "Test script return value:", ret
+        if ret != 0:
+            self.fail(self.errormsg[ret])
+
+    def test_client_control(self):
+        print ">>> Testing with Client Control Strategy <<<"
+        ret = subprocess.call(["./interest-loop-test.sh ndn:/localhost/nfd/strategy/client-control"], shell=True)
+        print "Test script return value:", ret
+        if ret != 0:
+            self.fail(self.errormsg[ret])
+
+    def test_ncc(self):
+        print ">>> Testing with NCC Strategy <<<"
+        ret = subprocess.call(["./interest-loop-test.sh ndn:/localhost/nfd/strategy/ncc"], shell=True)
+        print "Test script return value:", ret
+        if ret != 0:
+            self.fail(self.errormsg[ret])
