diff --git a/nlsr.conf b/nlsr.conf
index d5421ed..3f01975 100644
--- a/nlsr.conf
+++ b/nlsr.conf
@@ -19,6 +19,9 @@
   ; InterestLifetime (in seconds) for LSA fetching
   lsa-interest-lifetime 4    ; default value 4. Valid values 1-60
 
+  ; sync interest lifetime of ChronoSync in milliseconds
+  sync-interest-lifetime 60000  ; default value 60000. Valid values 1000-120,000
+
   seq-dir       /var/lib/nlsr        ; path for sequence directory (Absolute path)
 }
 
diff --git a/src/communication/sync-logic-handler.cpp b/src/communication/sync-logic-handler.cpp
index 6b392af..6257be5 100644
--- a/src/communication/sync-logic-handler.cpp
+++ b/src/communication/sync-logic-handler.cpp
@@ -53,7 +53,7 @@
 }
 
 void
-SyncLogicHandler::createSyncSocket(const ndn::Name& syncPrefix)
+SyncLogicHandler::createSyncSocket(const ndn::Name& syncPrefix, const ndn::time::milliseconds& syncInterestLifetime)
 {
   if (m_syncSocket != nullptr) {
     NLSR_LOG_WARN("Trying to create Sync socket, but Sync socket already exists");
@@ -72,7 +72,9 @@
   std::shared_ptr<ndn::Face> facePtr(&m_syncFace, NullDeleter<ndn::Face>());
 
   m_syncSocket = std::make_shared<chronosync::Socket>(m_syncPrefix, m_nameLsaUserPrefix, *facePtr,
-                                                      std::bind(&SyncLogicHandler::onChronoSyncUpdate, this, _1));
+                                                      std::bind(&SyncLogicHandler::onChronoSyncUpdate, this, _1),
+                                                      chronosync::Socket::DEFAULT_NAME, chronosync::Socket::DEFAULT_VALIDATOR,
+                                                      syncInterestLifetime);
 
   if (m_confParam.getHyperbolicState() == HYPERBOLIC_STATE_OFF) {
     m_syncSocket->addSyncNode(m_adjLsaUserPrefix);
diff --git a/src/communication/sync-logic-handler.hpp b/src/communication/sync-logic-handler.hpp
index 46bb18f..f4bd31a 100644
--- a/src/communication/sync-logic-handler.hpp
+++ b/src/communication/sync-logic-handler.hpp
@@ -22,6 +22,7 @@
 #ifndef NLSR_SYNC_LOGIC_HANDLER_HPP
 #define NLSR_SYNC_LOGIC_HANDLER_HPP
 
+#include "conf-parameter.hpp"
 #include "test-access-control.hpp"
 #include "signals.hpp"
 #include "lsa.hpp"
@@ -90,10 +91,13 @@
    *
    * In a typical situation this only needs to be called once, when NLSR starts.
    * \param syncPrefix The sync prefix you want this ChronoSync to use
+   * \param syncInterestLifetime ChronoSync sends a periodic sync interest every \p syncInterestLifetime / 2 ms
    * \sa Nlsr::initialize
    */
   void
-  createSyncSocket(const ndn::Name& syncPrefix);
+  createSyncSocket(const ndn::Name& syncPrefix,
+                   const ndn::time::milliseconds& syncInterestLifetime =
+                     ndn::time::milliseconds(SYNC_INTEREST_LIFETIME_DEFAULT));
 
 PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   /*! \brief Simple function to glue Name components together
diff --git a/src/conf-file-processor.cpp b/src/conf-file-processor.cpp
index e93ef35..d388221 100644
--- a/src/conf-file-processor.cpp
+++ b/src/conf-file-processor.cpp
@@ -287,6 +287,19 @@
     return false;
   }
 
+  uint32_t syncInterestLifetime = section.get<uint32_t>("sync-interest-lifetime", SYNC_INTEREST_LIFETIME_DEFAULT);
+  if (syncInterestLifetime >= SYNC_INTEREST_LIFETIME_MIN &&
+      syncInterestLifetime <= SYNC_INTEREST_LIFETIME_MAX) {
+    m_nlsr.getConfParameter().setSyncInterestLifetime(syncInterestLifetime);
+  }
+  else {
+    std::cerr << "Wrong value for sync-interest-lifetime. "
+              << "Allowed value:" << SYNC_INTEREST_LIFETIME_MIN << "-"
+              << SYNC_INTEREST_LIFETIME_MAX << std::endl;
+
+    return false;
+  }
+
   try {
     std::string seqDir = section.get<std::string>("seq-dir");
     if (boost::filesystem::exists(seqDir)) {
diff --git a/src/conf-parameter.hpp b/src/conf-parameter.hpp
index ee22764..ac32e04 100644
--- a/src/conf-parameter.hpp
+++ b/src/conf-parameter.hpp
@@ -106,6 +106,12 @@
   HYPERBOLIC_STATE_DEFAULT = 0
 };
 
+enum {
+  SYNC_INTEREST_LIFETIME_MIN = 1000,
+  SYNC_INTEREST_LIFETIME_DEFAULT = 60000,
+  SYNC_INTEREST_LIFETIME_MAX = 120000,
+};
+
 /*! \brief A class to house all the configuration parameters for NLSR.
  *
  * This class is conceptually a singleton (but not mechanically) which
@@ -421,6 +427,18 @@
   }
 
   void
+  setSyncInterestLifetime(uint32_t syncInterestLifetime)
+  {
+    m_syncInterestLifetime = ndn::time::milliseconds(syncInterestLifetime);
+  }
+
+  const ndn::time::milliseconds&
+  getSyncInterestLifetime() const
+  {
+    return m_syncInterestLifetime;
+  }
+
+  void
   writeLog();
 
 private:
@@ -459,7 +477,7 @@
   uint32_t m_maxFacesPerPrefix;
 
   std::string m_seqFileDir;
-
+  ndn::time::milliseconds m_syncInterestLifetime;
 };
 
 } // namespace nlsr
diff --git a/src/nlsr.cpp b/src/nlsr.cpp
index 120092b..ebc469d 100644
--- a/src/nlsr.cpp
+++ b/src/nlsr.cpp
@@ -260,7 +260,8 @@
   m_nlsrLsdb.getSequencingManager().setSeqFileDirectory(m_confParam.getSeqFileDir());
   m_nlsrLsdb.getSequencingManager().initiateSeqNoFromFile(m_confParam.getHyperbolicState());
 
-  m_nlsrLsdb.getSyncLogicHandler().createSyncSocket(m_confParam.getChronosyncPrefix());
+  m_nlsrLsdb.getSyncLogicHandler().createSyncSocket(m_confParam.getChronosyncPrefix(),
+                                                    m_confParam.getSyncInterestLifetime());
 
   // Logging start
   m_confParam.writeLog();
diff --git a/tests/test-conf-file-processor.cpp b/tests/test-conf-file-processor.cpp
index 2249dab..65f3ee5 100644
--- a/tests/test-conf-file-processor.cpp
+++ b/tests/test-conf-file-processor.cpp
@@ -44,6 +44,7 @@
   "  lsa-refresh-time 1800\n"
   "  lsa-interest-lifetime 3\n"
   "  router-dead-interval 86400\n"
+  "  sync-interest-lifetime 10000\n"
   "  seq-dir /tmp\n"
   "}\n\n";
 
@@ -176,6 +177,7 @@
   BOOST_CHECK_EQUAL(conf.getLsaRefreshTime(), 1800);
   BOOST_CHECK_EQUAL(conf.getLsaInterestLifetime(), ndn::time::seconds(3));
   BOOST_CHECK_EQUAL(conf.getRouterDeadInterval(), 86400);
+  BOOST_CHECK_EQUAL(conf.getSyncInterestLifetime(), ndn::time::milliseconds(10000));
   BOOST_CHECK_EQUAL(conf.getSeqFileDir(), "/tmp");
 
   // Neighbors
diff --git a/tests/test-lsa-rule.cpp b/tests/test-lsa-rule.cpp
index e776942..5aadaac 100644
--- a/tests/test-lsa-rule.cpp
+++ b/tests/test-lsa-rule.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2017,  The University of Memphis,
+ * Copyright (c) 2014-2018,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -90,6 +90,8 @@
     nlsr.getConfParameter().setNetwork("/ndn");
     nlsr.getConfParameter().setSiteName("/edu/test-site");
     nlsr.getConfParameter().setRouterName("/%C1.Router/router1");
+    // Otherwise code coverage node fails with default 60 seconds lifetime
+    nlsr.getConfParameter().setSyncInterestLifetime(1000);
 
     // Initialize NLSR to initialize the keyChain
     nlsr.initialize();
diff --git a/tests/test-statistics.cpp b/tests/test-statistics.cpp
index c74ab38..51797e5 100644
--- a/tests/test-statistics.cpp
+++ b/tests/test-statistics.cpp
@@ -45,6 +45,8 @@
     conf.setSiteName("/site");
     conf.setRouterName("/%C1.Router/this-router");
     conf.buildRouterPrefix();
+    // Otherwise code coverage node fails with default 60 seconds lifetime
+    conf.setSyncInterestLifetime(1000);
 
     addIdentity(conf.getRouterPrefix());
 
diff --git a/tests/update/test-prefix-update-processor.cpp b/tests/update/test-prefix-update-processor.cpp
index 5bb61f1..70d18c9 100644
--- a/tests/update/test-prefix-update-processor.cpp
+++ b/tests/update/test-prefix-update-processor.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2017,  The University of Memphis,
+ * Copyright (c) 2014-2018,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -117,6 +117,8 @@
     nlsr.getConfParameter().setSiteName("/edu/test-site");
     nlsr.getConfParameter().setRouterName("/%C1.Router/this-router");
     nlsr.getConfParameter().buildRouterPrefix();
+    // Otherwise code coverage node fails with default 60 seconds lifetime
+    nlsr.getConfParameter().setSyncInterestLifetime(1000);
 
     addIdentity(ndn::Name("/ndn/edu/test-site/%C1.Router/this-router"));
 
