diff --git a/ndn-traffic-client.conf.sample b/ndn-traffic-client.conf.sample
index 6ceed63..0eea0ab 100644
--- a/ndn-traffic-client.conf.sample
+++ b/ndn-traffic-client.conf.sample
@@ -30,6 +30,7 @@
 #ExcludeAfter=NDN Name Component
 #ExcludeBeforeBytes=NNI [>0]
 #ExcludeAfterBytes=NNI [>0]
+#ExcludeRange=NDN Name Component (After),NDN Name Component (Before)
 #ChildSelector=NNI [0-1]
 #MustBeFresh=NNI [0-1]
 #NonceDuplicationPercentage=NNI [0-100]
diff --git a/src/ndn-traffic-client.cpp b/src/ndn-traffic-client.cpp
index be35d52..d6faaf7 100644
--- a/src/ndn-traffic-client.cpp
+++ b/src/ndn-traffic-client.cpp
@@ -115,6 +115,8 @@
         detail += "ExcludeBefore=" + m_excludeBefore + ", ";
       if (!m_excludeAfter.empty())
         detail += "ExcludeAfter=" + m_excludeAfter + ", ";
+      if (!m_excludeRange.empty())
+        detail += "ExcludeRange=" + m_excludeRange + ", ";
       if (m_excludeBeforeBytes > 0)
         detail += "ExcludeBeforeBytes=" + to_string(m_excludeBeforeBytes) + ", ";
       if (m_excludeAfterBytes > 0)
@@ -140,7 +142,7 @@
     bool
     extractParameterValue(const std::string& detail, std::string& parameter, std::string& value)
     {
-      std::string allowedCharacters = ":/+._-%";
+      std::string allowedCharacters = ":/+.,_-%";
       std::size_t i = 0;
 
       parameter = "";
@@ -192,6 +194,8 @@
             m_excludeBeforeBytes = std::stoi(value);
           else if (parameter == "ExcludeAfterBytes")
             m_excludeAfterBytes = std::stoi(value);
+          else if (parameter == "ExcludeRange")
+            m_excludeRange = value;
           else if (parameter == "ChildSelector")
             m_childSelector = std::stoi(value);
           else if (parameter == "MustBeFresh")
@@ -232,6 +236,7 @@
     int m_maxSuffixComponents;
     std::string m_excludeBefore;
     std::string m_excludeAfter;
+    std::string m_excludeRange;
     int m_excludeBeforeBytes;
     int m_excludeAfterBytes;
     int m_childSelector;
@@ -709,6 +714,19 @@
                     interest.setExclude(exclude);
                   }
 
+                if (!m_trafficPatterns[patternId].m_excludeRange.empty()) {
+                  auto& range = m_trafficPatterns[patternId].m_excludeRange;
+
+                  if (range.find(",") != std::string::npos) {
+                    std::string after = range.substr(0, range.find(","));
+                    std::string before = range.substr(range.find(",") + 1, std::string::npos);
+                    exclude.clear();
+                    exclude.excludeRange(name::Component::fromEscapedString(after),
+                                         name::Component::fromEscapedString(before));
+                    interest.setExclude(exclude);
+                  }
+                }
+
                 if (m_trafficPatterns[patternId].m_childSelector >= 0)
                   interest.setChildSelector(m_trafficPatterns[patternId].m_childSelector);
 
