diff --git a/src/encoding/tlv-nfd.hpp b/src/encoding/tlv-nfd.hpp
index 12ef55b..dcaed7e 100644
--- a/src/encoding/tlv-nfd.hpp
+++ b/src/encoding/tlv-nfd.hpp
@@ -69,6 +69,7 @@
   LinkType                      = 134,
   BaseCongestionMarkingInterval = 135,
   DefaultCongestionThreshold    = 136,
+  Mtu                           = 137,
   FaceQueryFilter               = 150,
   FaceEventNotification         = 192,
   FaceEventKind                 = 193,
diff --git a/src/mgmt/nfd/control-command.cpp b/src/mgmt/nfd/control-command.cpp
index 07e8b17..f851bf1 100644
--- a/src/mgmt/nfd/control-command.cpp
+++ b/src/mgmt/nfd/control-command.cpp
@@ -105,6 +105,7 @@
     .optional(CONTROL_PARAMETER_FACE_PERSISTENCY)
     .optional(CONTROL_PARAMETER_BASE_CONGESTION_MARKING_INTERVAL)
     .optional(CONTROL_PARAMETER_DEFAULT_CONGESTION_THRESHOLD)
+    .optional(CONTROL_PARAMETER_MTU)
     .optional(CONTROL_PARAMETER_FLAGS)
     .optional(CONTROL_PARAMETER_MASK);
   m_responseValidator
@@ -114,6 +115,7 @@
     .required(CONTROL_PARAMETER_FACE_PERSISTENCY)
     .optional(CONTROL_PARAMETER_BASE_CONGESTION_MARKING_INTERVAL)
     .optional(CONTROL_PARAMETER_DEFAULT_CONGESTION_THRESHOLD)
+    .optional(CONTROL_PARAMETER_MTU)
     .required(CONTROL_PARAMETER_FLAGS);
 }
 
diff --git a/src/mgmt/nfd/control-parameters.cpp b/src/mgmt/nfd/control-parameters.cpp
index 65360a5..4d826ef 100644
--- a/src/mgmt/nfd/control-parameters.cpp
+++ b/src/mgmt/nfd/control-parameters.cpp
@@ -51,6 +51,9 @@
 {
   size_t totalLength = 0;
 
+  if (this->hasMtu()) {
+    totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::Mtu, m_mtu);
+  }
   if (this->hasDefaultCongestionThreshold()) {
     totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::DefaultCongestionThreshold,
                                                   m_defaultCongestionThreshold);
@@ -228,6 +231,12 @@
   if (this->hasDefaultCongestionThreshold()) {
     m_defaultCongestionThreshold = readNonNegativeInteger(*val);
   }
+
+  val = m_wire.find(tlv::nfd::Mtu);
+  m_hasFields[CONTROL_PARAMETER_MTU] = val != m_wire.elements_end();
+  if (this->hasMtu()) {
+    m_mtu = readNonNegativeInteger(*val);
+  }
 }
 
 bool
@@ -368,6 +377,10 @@
     os << "DefaultCongestionThreshold: " << parameters.getDefaultCongestionThreshold() << ", ";
   }
 
+  if (parameters.hasMtu()) {
+    os << "Mtu: " << parameters.getMtu() << ", ";
+  }
+
   os << ")";
   return os;
 }
diff --git a/src/mgmt/nfd/control-parameters.hpp b/src/mgmt/nfd/control-parameters.hpp
index c325e0b..2291096 100644
--- a/src/mgmt/nfd/control-parameters.hpp
+++ b/src/mgmt/nfd/control-parameters.hpp
@@ -49,6 +49,7 @@
   CONTROL_PARAMETER_FACE_PERSISTENCY,
   CONTROL_PARAMETER_BASE_CONGESTION_MARKING_INTERVAL,
   CONTROL_PARAMETER_DEFAULT_CONGESTION_THRESHOLD,
+  CONTROL_PARAMETER_MTU,
   CONTROL_PARAMETER_UBOUND
 };
 
@@ -67,7 +68,8 @@
   "ExpirationPeriod",
   "FacePersistency",
   "BaseCongestionMarkingInterval",
-  "DefaultCongestionThreshold"
+  "DefaultCongestionThreshold",
+  "Mtu"
 };
 
 /**
@@ -559,6 +561,44 @@
     return *this;
   }
 
+  bool
+  hasMtu() const
+  {
+    return m_hasFields[CONTROL_PARAMETER_MTU];
+  }
+
+  /** \brief get MTU (measured in bytes)
+   *
+   *  This value is capped at MAX_NDN_PACKET_SIZE, even if the MTU of the face is unlimited.
+   */
+  uint64_t
+  getMtu() const
+  {
+    BOOST_ASSERT(this->hasMtu());
+    return m_mtu;
+  }
+
+  /** \brief set MTU (measured in bytes)
+   *
+   *  This value is capped at MAX_NDN_PACKET_SIZE, even if the MTU of the face is unlimited.
+   */
+  ControlParameters&
+  setMtu(uint64_t mtu)
+  {
+    m_wire.reset();
+    m_mtu = mtu;
+    m_hasFields[CONTROL_PARAMETER_MTU] = true;
+    return *this;
+  }
+
+  ControlParameters&
+  unsetMtu()
+  {
+    m_wire.reset();
+    m_hasFields[CONTROL_PARAMETER_MTU] = false;
+    return *this;
+  }
+
   const std::vector<bool>&
   getPresentFields() const
   {
@@ -615,6 +655,7 @@
   FacePersistency     m_facePersistency;
   time::nanoseconds   m_baseCongestionMarkingInterval;
   uint64_t            m_defaultCongestionThreshold;
+  uint64_t            m_mtu;
 
 private:
   mutable Block m_wire;
diff --git a/src/mgmt/nfd/face-status.cpp b/src/mgmt/nfd/face-status.cpp
index 0c127ae..dc74eb1 100644
--- a/src/mgmt/nfd/face-status.cpp
+++ b/src/mgmt/nfd/face-status.cpp
@@ -63,6 +63,9 @@
   totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::NInNacks, m_nInNacks);
   totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::NInData, m_nInData);
   totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::NInInterests, m_nInInterests);
+  if (m_mtu) {
+    totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::Mtu, *m_mtu);
+  }
   if (m_defaultCongestionThreshold) {
     totalLength += prependNonNegativeIntegerBlock(encoder, tlv::nfd::DefaultCongestionThreshold,
                                                   *m_defaultCongestionThreshold);
@@ -187,6 +190,14 @@
     m_defaultCongestionThreshold = nullopt;
   }
 
+  if (val != m_wire.elements_end() && val->type() == tlv::nfd::Mtu) {
+    m_mtu = readNonNegativeInteger(*val);
+    ++val;
+  }
+  else {
+    m_mtu = nullopt;
+  }
+
   if (val != m_wire.elements_end() && val->type() == tlv::nfd::NInInterests) {
     m_nInInterests = readNonNegativeInteger(*val);
     ++val;
@@ -309,6 +320,22 @@
 }
 
 FaceStatus&
+FaceStatus::setMtu(uint64_t mtu)
+{
+  m_wire.reset();
+  m_mtu = mtu;
+  return *this;
+}
+
+FaceStatus&
+FaceStatus::unsetMtu()
+{
+  m_wire.reset();
+  m_mtu = nullopt;
+  return *this;
+}
+
+FaceStatus&
 FaceStatus::setNInInterests(uint64_t nInInterests)
 {
   m_wire.reset();
@@ -390,6 +417,8 @@
       a.hasDefaultCongestionThreshold() == b.hasDefaultCongestionThreshold() &&
       (!a.hasDefaultCongestionThreshold() ||
        a.getDefaultCongestionThreshold() == b.getDefaultCongestionThreshold()) &&
+      a.hasMtu() == b.hasMtu() &&
+      (!a.hasMtu() || a.getMtu() == b.getMtu()) &&
       a.getNInInterests() == b.getNInInterests() &&
       a.getNInData() == b.getNInData() &&
       a.getNInNacks() == b.getNInNacks() &&
@@ -426,6 +455,10 @@
     os << "     DefaultCongestionThreshold: " << status.getDefaultCongestionThreshold() << " bytes,\n";
   }
 
+  if (status.hasMtu()) {
+    os << "     Mtu: " << status.getMtu() << " bytes,\n";
+  }
+
   os << "     Flags: " << AsHex{status.getFlags()} << ",\n"
      << "     Counters: {Interests: {in: " << status.getNInInterests() << ", "
      << "out: " << status.getNOutInterests() << "},\n"
diff --git a/src/mgmt/nfd/face-status.hpp b/src/mgmt/nfd/face-status.hpp
index 30a97f5..3de21fe 100644
--- a/src/mgmt/nfd/face-status.hpp
+++ b/src/mgmt/nfd/face-status.hpp
@@ -119,6 +119,33 @@
   FaceStatus&
   unsetDefaultCongestionThreshold();
 
+  bool
+  hasMtu() const
+  {
+    return !!m_mtu;
+  }
+
+  /** \brief get MTU (measured in bytes)
+   *
+   *  This value is capped at MAX_NDN_PACKET_SIZE, even if the MTU of the face is unlimited.
+   */
+  uint64_t
+  getMtu() const
+  {
+    BOOST_ASSERT(hasMtu());
+    return *m_mtu;
+  }
+
+  /** \brief set MTU (measured in bytes)
+   *
+   *  This value is capped at MAX_NDN_PACKET_SIZE, even if the MTU of the face is unlimited.
+   */
+  FaceStatus&
+  setMtu(uint64_t mtu);
+
+  FaceStatus&
+  unsetMtu();
+
   uint64_t
   getNInInterests() const
   {
@@ -195,6 +222,7 @@
   optional<time::milliseconds> m_expirationPeriod;
   optional<time::nanoseconds> m_baseCongestionMarkingInterval;
   optional<uint64_t> m_defaultCongestionThreshold;
+  optional<uint64_t> m_mtu;
   uint64_t m_nInInterests;
   uint64_t m_nInData;
   uint64_t m_nInNacks;
diff --git a/tests/unit-tests/mgmt/nfd/control-command.t.cpp b/tests/unit-tests/mgmt/nfd/control-command.t.cpp
index 3d826cc..4db3752 100644
--- a/tests/unit-tests/mgmt/nfd/control-command.t.cpp
+++ b/tests/unit-tests/mgmt/nfd/control-command.t.cpp
@@ -47,6 +47,7 @@
     .setFacePersistency(FACE_PERSISTENCY_PERMANENT)
     .setBaseCongestionMarkingInterval(100_ms)
     .setDefaultCongestionThreshold(10000)
+    .setMtu(8192)
     .setFlags(0x3)
     .setMask(0x1);
   BOOST_CHECK_NO_THROW(command.validateRequest(p1));
@@ -82,6 +83,7 @@
     .setFacePersistency(FACE_PERSISTENCY_PERMANENT)
     .setBaseCongestionMarkingInterval(500_ns)
     .setDefaultCongestionThreshold(12345)
+    .setMtu(2048)
     .setFlags(0x3);
   BOOST_CHECK_NO_THROW(command.validateResponse(p1));
 
@@ -161,6 +163,12 @@
   BOOST_CHECK_NO_THROW(command.validateRequest(p5));
   BOOST_CHECK_THROW(command.validateResponse(p5), ControlCommand::ArgumentError);
   BOOST_CHECK_EQUAL(p5.getFaceId(), 0);
+
+  ControlParameters p6;
+  p6.setFaceId(1)
+    .setMtu(1024);
+  BOOST_CHECK_THROW(command.validateRequest(p6), ControlCommand::ArgumentError);
+  BOOST_CHECK_THROW(command.validateResponse(p6), ControlCommand::ArgumentError);
 }
 
 BOOST_AUTO_TEST_CASE(FaceDestroy)
diff --git a/tests/unit-tests/mgmt/nfd/face-status.t.cpp b/tests/unit-tests/mgmt/nfd/face-status.t.cpp
index 3cae12a..0ed7aca 100644
--- a/tests/unit-tests/mgmt/nfd/face-status.t.cpp
+++ b/tests/unit-tests/mgmt/nfd/face-status.t.cpp
@@ -45,6 +45,7 @@
       .setExpirationPeriod(10_s)
       .setBaseCongestionMarkingInterval(5_ns)
       .setDefaultCongestionThreshold(7)
+      .setMtu(9)
       .setNInInterests(10)
       .setNInData(200)
       .setNInNacks(1)
@@ -67,17 +68,17 @@
   //   printf("0x%02x, ", *it);
   // }
   static const uint8_t expected[] = {
-    0x80, 0x67, 0x69, 0x01, 0x64, 0x72, 0x15, 0x74, 0x63, 0x70,
+    0x80, 0x6a, 0x69, 0x01, 0x64, 0x72, 0x15, 0x74, 0x63, 0x70,
     0x34, 0x3a, 0x2f, 0x2f, 0x31, 0x39, 0x32, 0x2e, 0x30, 0x2e,
     0x32, 0x2e, 0x31, 0x3a, 0x36, 0x33, 0x36, 0x33, 0x81, 0x16,
     0x74, 0x63, 0x70, 0x34, 0x3a, 0x2f, 0x2f, 0x31, 0x39, 0x32,
     0x2e, 0x30, 0x2e, 0x32, 0x2e, 0x32, 0x3a, 0x35, 0x35, 0x35,
     0x35, 0x35, 0x6d, 0x02, 0x27, 0x10, 0x84, 0x01, 0x01, 0x85,
     0x01, 0x01, 0x86, 0x01, 0x01, 0x87, 0x01, 0x05, 0x88, 0x01,
-    0x07, 0x90, 0x01, 0x0a, 0x91, 0x01, 0xc8, 0x97, 0x01, 0x01,
-    0x92, 0x02, 0x0b, 0xb8, 0x93, 0x01, 0x04, 0x98, 0x01, 0x02,
-    0x94, 0x04, 0x4f, 0x41, 0xe7, 0x7b, 0x95, 0x04, 0x3b, 0x8d,
-    0x37, 0x30, 0x6c, 0x01, 0x07,
+    0x07, 0x89, 0x01, 0x09, 0x90, 0x01, 0x0a, 0x91, 0x01, 0xc8,
+    0x97, 0x01, 0x01, 0x92, 0x02, 0x0b, 0xb8, 0x93, 0x01, 0x04,
+    0x98, 0x01, 0x02, 0x94, 0x04, 0x4f, 0x41, 0xe7, 0x7b, 0x95,
+    0x04, 0x3b, 0x8d, 0x37, 0x30, 0x6c, 0x01, 0x07,
   };
   BOOST_CHECK_EQUAL_COLLECTIONS(expected, expected + sizeof(expected),
                                 wire.begin(), wire.end());
@@ -127,6 +128,7 @@
                     "     LinkType: multi-access,\n"
                     "     BaseCongestionMarkingInterval: 5 nanoseconds,\n"
                     "     DefaultCongestionThreshold: 7 bytes,\n"
+                    "     Mtu: 9 bytes,\n"
                     "     Flags: 0x7,\n"
                     "     Counters: {Interests: {in: 10, out: 3000},\n"
                     "                Data: {in: 200, out: 4},\n"
