diff --git a/src/clients/iterative-query-controller.cpp b/src/clients/iterative-query-controller.cpp
index 3c25505..6bd99bd 100644
--- a/src/clients/iterative-query-controller.cpp
+++ b/src/clients/iterative-query-controller.cpp
@@ -93,6 +93,14 @@
       m_step = QUERY_STEP_QUERY_RR;
     }
     else if (ndnsType == NDNS_RESP) {
+      if (m_rrType == label::NS_RR_TYPE) {
+        Link link(data->wireEncode());
+        if (link.getDelegations().empty()) {
+          m_lastLink = Block();
+        } else {
+          m_lastLink = data->wireEncode();
+        }
+      }
       if (m_nFinishedComps + m_nTryComps == m_dstLabel.size() && m_rrType == label::NS_RR_TYPE) {
         // NS_RR_TYPE is different, since its record is stored at higher level
         m_step = QUERY_STEP_ANSWER_STUB;
@@ -190,6 +198,12 @@
 
   query.setZone(m_dstLabel.getPrefix(m_nFinishedComps));
   query.setInterestLifetime(m_interestLifetime);
+
+  // addLink
+  if (m_lastLink.hasWire()) {
+    query.setLink(m_lastLink);
+  }
+
   switch (m_step) {
   case QUERY_STEP_QUERY_NS:
     query.setQueryType(label::NDNS_ITERATIVE_QUERY);
@@ -214,7 +228,6 @@
     throw std::runtime_error("call makeLatestInterest() unexpected: " + oss.str());
   }
 
-
   Interest interest = query.toInterest();
   return interest;
 }
diff --git a/src/clients/iterative-query-controller.hpp b/src/clients/iterative-query-controller.hpp
index dba1635..8fc2a34 100644
--- a/src/clients/iterative-query-controller.hpp
+++ b/src/clients/iterative-query-controller.hpp
@@ -32,6 +32,7 @@
 #include <ndn-cxx/data.hpp>
 #include <ndn-cxx/interest.hpp>
 #include <ndn-cxx/name.hpp>
+#include <ndn-cxx/link.hpp>
 
 namespace ndn {
 namespace ndns {
@@ -145,6 +146,9 @@
    * used when query the KSK (key signing key), e.g., /net/ndnsim/ksk-1
    */
   size_t m_nTryComps;
+
+private:
+  Block m_lastLink;
 };
 
 std::ostream&
diff --git a/src/clients/query.cpp b/src/clients/query.cpp
index 4e7621b..9853672 100644
--- a/src/clients/query.cpp
+++ b/src/clients/query.cpp
@@ -47,6 +47,13 @@
 
   m_zone = zone;
 
+  if (interest.hasLink()) {
+    m_link = interest.getLink().wireEncode();
+  } else {
+    m_link = Block();
+  }
+
+
   size_t len = zone.size();
   m_queryType = interest.getName().get(len);
 
@@ -64,7 +71,14 @@
       .append(this->m_rrLabel)
       .append(this->m_rrType);
 
-  return Interest(name, m_interestLifetime);
+  Interest interest;
+  interest.setName(name);
+  interest.setInterestLifetime(m_interestLifetime);
+  if (m_link.hasWire()) {
+    interest.setLink(m_link);
+  }
+
+  return interest;
 }
 
 std::ostream&
diff --git a/src/clients/query.hpp b/src/clients/query.hpp
index bf76684..d96d58c 100644
--- a/src/clients/query.hpp
+++ b/src/clients/query.hpp
@@ -24,6 +24,7 @@
 #include "ndns-enum.hpp"
 
 #include <ndn-cxx/name.hpp>
+#include <ndn-cxx/link.hpp>
 
 namespace ndn {
 namespace ndns {
@@ -165,12 +166,31 @@
     m_rrType = rrType;
   }
 
+  /**
+   * @brief set link object
+   */
+  void
+  setLink(const Block& link)
+  {
+    m_link = link;
+  }
+
+  /**
+   * @brief get Link object
+   */
+  const Block&
+  getLink() const
+  {
+    return m_link;
+  }
+
 private:
   Name m_zone;
   name::Component m_queryType;
   Name m_rrLabel;
   name::Component m_rrType;
   time::milliseconds m_interestLifetime;
+  Block m_link;
 };
 
 std::ostream&
