diff --git a/tests/chunks/pipeline-interests-aimd.t.cpp b/tests/chunks/pipeline-interests-aimd.t.cpp
index 98ba9ea..2deed18 100644
--- a/tests/chunks/pipeline-interests-aimd.t.cpp
+++ b/tests/chunks/pipeline-interests-aimd.t.cpp
@@ -472,6 +472,30 @@
   BOOST_CHECK_EQUAL(hasFailed, false);
 }
 
+BOOST_AUTO_TEST_CASE(PrintSummaryWithNoRttMeasurements)
+{
+  // test the console ouptut when no RTT measurement is available,
+  // to make sure a proper message will be printed out
+
+  std::stringstream ss;
+
+  // change the underlying buffer and save the old buffer
+  auto oldBuf = std::cerr.rdbuf(ss.rdbuf());
+
+  aimdPipeline->printSummary();
+  std::string line;
+
+  bool found = false;
+  while (std::getline(ss, line)) {
+    if (line == "RTT stats unavailable") {
+      found = true;
+      break;
+    }
+  }
+  BOOST_CHECK(found);
+  std::cerr.rdbuf(oldBuf); // reset
+}
+
 BOOST_AUTO_TEST_SUITE_END() // TestPipelineInterestsAimd
 BOOST_AUTO_TEST_SUITE_END() // Chunks
 
diff --git a/tools/chunks/catchunks/pipeline-interests-aimd.cpp b/tools/chunks/catchunks/pipeline-interests-aimd.cpp
index bf530ff..cdf502d 100644
--- a/tools/chunks/catchunks/pipeline-interests-aimd.cpp
+++ b/tools/chunks/catchunks/pipeline-interests-aimd.cpp
@@ -51,6 +51,7 @@
   , m_nLossEvents(0)
   , m_nRetransmitted(0)
   , m_nCongMarks(0)
+  , m_nSent(0)
   , m_cwnd(m_options.initCwnd)
   , m_ssthresh(m_options.initSsthresh)
   , m_hasFailure(false)
@@ -162,6 +163,7 @@
                                            bind(&PipelineInterestsAimd::handleNack, this, _1, _2),
                                            bind(&PipelineInterestsAimd::handleLifetimeExpiration, this, _1));
   m_nInFlight++;
+  m_nSent++;
 
   if (isRetransmission) {
     SegmentInfo& segInfo = m_segmentInfo[segNo];
@@ -437,15 +439,23 @@
 PipelineInterestsAimd::printSummary() const
 {
   PipelineInterests::printSummary();
-  std::cerr << "Total # of packet loss events: " << m_nLossEvents << "\n"
+  std::cerr << "Total # of lost/retransmitted segments: " << m_nRetransmitted
+            << " (caused " << m_nLossEvents << " window decreases)\n"
             << "Packet loss rate: "
-            << static_cast<double>(m_nLossEvents) / static_cast<double>(m_nReceived) << "\n"
-            << "Total # of retransmitted segments: " << m_nRetransmitted << "\n"
+            << (static_cast<double>(m_nRetransmitted) / static_cast<double>(m_nSent)) * 100 << "%\n"
             << "Total # of received congestion marks: " << m_nCongMarks << "\n"
-            << "RTT min/avg/max = " << std::fixed << std::setprecision(3)
-                                    << m_rttEstimator.getMinRtt() << "/"
-                                    << m_rttEstimator.getAvgRtt() << "/"
-                                    << m_rttEstimator.getMaxRtt() << " ms\n";
+            << "RTT ";
+
+  if (m_rttEstimator.getMinRtt() == std::numeric_limits<double>::max() ||
+      m_rttEstimator.getMaxRtt() == std::numeric_limits<double>::min()) {
+     std::cerr << "stats unavailable\n";
+   }
+   else {
+     std::cerr << "min/avg/max = " << std::fixed << std::setprecision(3)
+                                   << m_rttEstimator.getMinRtt() << "/"
+                                   << m_rttEstimator.getAvgRtt() << "/"
+                                   << m_rttEstimator.getMaxRtt() << " ms\n";
+  }
 }
 
 std::ostream&
diff --git a/tools/chunks/catchunks/pipeline-interests-aimd.hpp b/tools/chunks/catchunks/pipeline-interests-aimd.hpp
index bbc9940..0257e7b 100644
--- a/tools/chunks/catchunks/pipeline-interests-aimd.hpp
+++ b/tools/chunks/catchunks/pipeline-interests-aimd.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2016-2017, Regents of the University of California,
+ * Copyright (c) 2016-2018, Regents of the University of California,
  *                          Colorado State University,
  *                          University Pierre & Marie Curie, Sorbonne University.
  *
@@ -184,6 +184,7 @@
   void
   cancelInFlightSegmentsGreaterThan(uint64_t segNo);
 
+PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   void
   printSummary() const final;
 
@@ -203,6 +204,7 @@
   int64_t m_nLossEvents; ///< # of loss events occurred
   int64_t m_nRetransmitted; ///< # of segments retransmitted
   int64_t m_nCongMarks; ///< # of data packets with congestion mark
+  int64_t m_nSent; ///< # of interest packets sent out (including retransmissions)
 
   double m_cwnd; ///< current congestion window size (in segments)
   double m_ssthresh; ///< current slow start threshold
