diff --git a/src/encoding/tlv-nfd.hpp b/src/encoding/tlv-nfd.hpp
index dcaed7e..6eff057 100644
--- a/src/encoding/tlv-nfd.hpp
+++ b/src/encoding/tlv-nfd.hpp
@@ -75,14 +75,16 @@
   FaceEventKind                 = 193,
 
   // ForwarderStatus and FaceStatus counters
-  NInInterests  = 144,
-  NInData       = 145,
-  NInNacks      = 151,
-  NOutInterests = 146,
-  NOutData      = 147,
-  NOutNacks     = 152,
-  NInBytes      = 148,
-  NOutBytes     = 149,
+  NInInterests          = 144,
+  NInData               = 145,
+  NInNacks              = 151,
+  NOutInterests         = 146,
+  NOutData              = 147,
+  NOutNacks             = 152,
+  NInBytes              = 148,
+  NOutBytes             = 149,
+  NSatisfiedInterests   = 153,
+  NUnsatisfiedInterests = 154,
 
   // Content Store Management
   CsInfo  = 128,
diff --git a/src/mgmt/nfd/forwarder-status.cpp b/src/mgmt/nfd/forwarder-status.cpp
index 1661aa7..fb583d8 100644
--- a/src/mgmt/nfd/forwarder-status.cpp
+++ b/src/mgmt/nfd/forwarder-status.cpp
@@ -42,6 +42,8 @@
   , m_nOutInterests(0)
   , m_nOutData(0)
   , m_nOutNacks(0)
+  , m_nSatisfiedInterests(0)
+  , m_nUnsatisfiedInterests(0)
 {
 }
 
@@ -56,6 +58,8 @@
 {
   size_t totalLength = 0;
 
+  totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::NUnsatisfiedInterests, m_nUnsatisfiedInterests);
+  totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::NSatisfiedInterests, m_nSatisfiedInterests);
   totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::NOutNacks, m_nOutNacks);
   totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::NOutData, m_nOutData);
   totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::NOutInterests, m_nOutInterests);
@@ -217,6 +221,22 @@
   else {
     BOOST_THROW_EXCEPTION(Error("missing required NOutNacks field"));
   }
+
+  if (val != m_wire.elements_end() && val->type() == tlv::nfd::NSatisfiedInterests) {
+    m_nSatisfiedInterests = readNonNegativeInteger(*val);
+    ++val;
+  }
+  else {
+    BOOST_THROW_EXCEPTION(Error("missing required NSatisfiedInterests field"));
+  }
+
+  if (val != m_wire.elements_end() && val->type() == tlv::nfd::NUnsatisfiedInterests) {
+    m_nUnsatisfiedInterests = readNonNegativeInteger(*val);
+    ++val;
+  }
+  else {
+    BOOST_THROW_EXCEPTION(Error("missing required NUnsatisfiedInterests field"));
+  }
 }
 
 ForwarderStatus&
@@ -331,6 +351,22 @@
   return *this;
 }
 
+ForwarderStatus&
+ForwarderStatus::setNSatisfiedInterests(uint64_t nSatisfiedInterests)
+{
+  m_wire.reset();
+  m_nSatisfiedInterests = nSatisfiedInterests;
+  return *this;
+}
+
+ForwarderStatus&
+ForwarderStatus::setNUnsatisfiedInterests(uint64_t nUnsatisfiedInterests)
+{
+  m_wire.reset();
+  m_nUnsatisfiedInterests = nUnsatisfiedInterests;
+  return *this;
+}
+
 bool
 operator==(const ForwarderStatus& a, const ForwarderStatus& b)
 {
@@ -347,7 +383,9 @@
       a.getNInNacks() == b.getNInNacks() &&
       a.getNOutInterests() == b.getNOutInterests() &&
       a.getNOutData() == b.getNOutData() &&
-      a.getNOutNacks() == b.getNOutNacks();
+      a.getNOutNacks() == b.getNOutNacks() &&
+      a.getNSatisfiedInterests() == b.getNSatisfiedInterests() &&
+      a.getNUnsatisfiedInterests() == b.getNUnsatisfiedInterests();
 }
 
 std::ostream&
@@ -366,7 +404,9 @@
      << "                         Data: {in: " << status.getNInData() << ", "
      << "out: " << status.getNOutData() << "},\n"
      << "                         Nacks: {in: " << status.getNInNacks() << ", "
-     << "out: " << status.getNOutNacks() << "}}\n"
+     << "out: " << status.getNOutNacks() << "},\n"
+     << "                         SatisfiedInterests: " << status.getNSatisfiedInterests() << ",\n"
+     << "                         UnsatisfiedInterests: " << status.getNUnsatisfiedInterests() << "}\n"
      << "              )";
 
   return os;
diff --git a/src/mgmt/nfd/forwarder-status.hpp b/src/mgmt/nfd/forwarder-status.hpp
index f222f80..0991e6c 100644
--- a/src/mgmt/nfd/forwarder-status.hpp
+++ b/src/mgmt/nfd/forwarder-status.hpp
@@ -196,6 +196,24 @@
   ForwarderStatus&
   setNOutNacks(uint64_t nOutNacks);
 
+  uint64_t
+  getNSatisfiedInterests() const
+  {
+    return m_nSatisfiedInterests;
+  }
+
+  ForwarderStatus&
+  setNSatisfiedInterests(uint64_t nSatisfiedInterests);
+
+  uint64_t
+  getNUnsatisfiedInterests() const
+  {
+    return m_nUnsatisfiedInterests;
+  }
+
+  ForwarderStatus&
+  setNUnsatisfiedInterests(uint64_t nUnsatisfiedInterests);
+
 private:
   std::string m_nfdVersion;
   time::system_clock::TimePoint m_startTimestamp;
@@ -211,6 +229,8 @@
   uint64_t m_nOutInterests;
   uint64_t m_nOutData;
   uint64_t m_nOutNacks;
+  uint64_t m_nSatisfiedInterests;
+  uint64_t m_nUnsatisfiedInterests;
 
   mutable Block m_wire;
 };
diff --git a/tests/unit-tests/mgmt/nfd/forwarder-status.t.cpp b/tests/unit-tests/mgmt/nfd/forwarder-status.t.cpp
index 3d91b30..b2c3d48 100644
--- a/tests/unit-tests/mgmt/nfd/forwarder-status.t.cpp
+++ b/tests/unit-tests/mgmt/nfd/forwarder-status.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2013-2017 Regents of the University of California.
+/*
+ * Copyright (c) 2013-2018 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -49,7 +49,9 @@
       .setNInNacks(1234)
       .setNOutInterests(952144445)
       .setNOutData(138198826)
-      .setNOutNacks(4321);
+      .setNOutNacks(4321)
+      .setNSatisfiedInterests(961020)
+      .setNUnsatisfiedInterests(941024);
 }
 
 BOOST_AUTO_TEST_CASE(Encode)
@@ -63,7 +65,7 @@
   //   printf("0x%02x, ", *it);
   // }
   static const uint8_t expected[] = {
-    0x15, 0x65, 0x80, 0x11, 0x30, 0x2e, 0x35, 0x2e, 0x31, 0x2d, 0x31, 0x34,
+    0x15, 0x71, 0x80, 0x11, 0x30, 0x2e, 0x35, 0x2e, 0x31, 0x2d, 0x31, 0x34,
     0x2d, 0x67, 0x30, 0x35, 0x64, 0x64, 0x34, 0x34, 0x34, 0x81, 0x08, 0x00,
     0x00, 0x00, 0x57, 0x5b, 0x42, 0xa6, 0x2d, 0x82, 0x08, 0x00, 0x00, 0x00,
     0xce, 0x50, 0x36, 0xd7, 0x20, 0x83, 0x04, 0x6e, 0x43, 0xe4, 0x78, 0x84,
@@ -71,7 +73,8 @@
     0x04, 0x69, 0x9a, 0x61, 0xf2, 0x87, 0x04, 0x4b, 0x65, 0xe3, 0xf0, 0x90,
     0x04, 0x24, 0x86, 0xc3, 0x5f, 0x91, 0x04, 0x6d, 0xe2, 0xbc, 0xf2, 0x97,
     0x02, 0x04, 0xd2, 0x92, 0x04, 0x38, 0xc0, 0x92, 0x3d, 0x93, 0x04, 0x08,
-    0x3c, 0xbf, 0x2a, 0x98, 0x02, 0x10, 0xe1,
+    0x3c, 0xbf, 0x2a, 0x98, 0x02, 0x10, 0xe1, 0x99, 0x04, 0x00, 0x0e, 0xa9,
+    0xfc, 0x9a, 0x04, 0x00, 0x0e, 0x5b, 0xe0,
   };
   BOOST_CHECK_EQUAL_COLLECTIONS(expected, expected + sizeof(expected),
                                 wire.begin(), wire.end());
@@ -106,7 +109,9 @@
                     "                         CsEntries: 0,\n"
                     "                         Interests: {in: 0, out: 0},\n"
                     "                         Data: {in: 0, out: 0},\n"
-                    "                         Nacks: {in: 0, out: 0}}\n"
+                    "                         Nacks: {in: 0, out: 0},\n"
+                    "                         SatisfiedInterests: 0,\n"
+                    "                         UnsatisfiedInterests: 0}\n"
                     "              )");
 
   status = makeForwarderStatus();
@@ -121,7 +126,9 @@
                     "                         CsEntries: 1264968688,\n"
                     "                         Interests: {in: 612811615, out: 952144445},\n"
                     "                         Data: {in: 1843576050, out: 138198826},\n"
-                    "                         Nacks: {in: 1234, out: 4321}}\n"
+                    "                         Nacks: {in: 1234, out: 4321},\n"
+                    "                         SatisfiedInterests: 961020,\n"
+                    "                         UnsatisfiedInterests: 941024}\n"
                     "              )");
 }
 
