diff --git a/NFD b/NFD
index 85d60eb..bc600d7 160000
--- a/NFD
+++ b/NFD
@@ -1 +1 @@
-Subproject commit 85d60ebaa89fb0a28cad336ff8576fb067847291
+Subproject commit bc600d7ccc3d2bf27e8305cc1d2a5780e10c81d4
diff --git a/model/ndn-l3-protocol.cpp b/model/ndn-l3-protocol.cpp
index 8556db7..33e0113 100644
--- a/model/ndn-l3-protocol.cpp
+++ b/model/ndn-l3-protocol.cpp
@@ -424,13 +424,25 @@
         this->m_inData(data, *face);
       }
     });
+  // TODO Add nack signals
 
-  // TODO: Discover why these signal were removed and fix it
+  auto tracingLink = face->getLinkService();
+  NS_LOG_LOGIC("Adding trace sources for afterSendInterest and afterSendData");
+  tracingLink->afterSendInterest.connect([this, weakFace](const Interest& interest) {
+      shared_ptr<Face> face = weakFace.lock();
+      if (face != nullptr) {
+        this->m_outInterests(interest, *face);
+      }
+    });
 
-  // face->afterSendInterest.connect
-  //   ([this, weakFace](const Interest& interest) { this->m_outInterests(interest, *face); });
+  tracingLink->afterSendData.connect([this, weakFace](const Data& data) {
+      shared_ptr<Face> face = weakFace.lock();
+      if (face != nullptr) {
+        this->m_outData(data, *face);
+      }
+    });
 
-  // face->afterSendData.connect([this, weakFace](const Data& data) { this->m_outData(data, *face); });
+  // TODO Add nack signals
 
   return face->getId();
 }
diff --git a/tests/unit-tests/model/ndn-net-device-face.t.cpp b/tests/unit-tests/model/ndn-net-device-face.t.cpp
index 5269ed9..c33afdb 100644
--- a/tests/unit-tests/model/ndn-net-device-face.t.cpp
+++ b/tests/unit-tests/model/ndn-net-device-face.t.cpp
@@ -27,7 +27,43 @@
 
 BOOST_FIXTURE_TEST_SUITE(ModelNdnNetDeviceFace, ScenarioHelperWithCleanupFixture)
 
-BOOST_AUTO_TEST_CASE(Basic)
+class FixtureWithTracers : public ScenarioHelperWithCleanupFixture
+{
+public:
+  void
+  InInterests(const Interest&, const Face& face)
+  {
+    nInInterests[boost::lexical_cast<std::string>(face)] += 1;
+  }
+
+  void
+  OutInterests(const Interest&, const Face& face)
+  {
+    nOutInterests[boost::lexical_cast<std::string>(face)] += 1;
+  }
+
+  void
+  InData(const Data&, const Face& face)
+  {
+    nInData[boost::lexical_cast<std::string>(face)] += 1;
+  }
+
+  void
+  OutData(const Data&, const Face& face)
+  {
+    nOutData[boost::lexical_cast<std::string>(face)] += 1;
+  }
+
+public:
+  std::map<std::string, uint32_t> nInInterests;
+  std::map<std::string, uint32_t> nOutInterests;
+  std::map<std::string, uint32_t> nInData;
+  std::map<std::string, uint32_t> nOutData;
+
+  // TODO add NACKs
+};
+
+BOOST_FIXTURE_TEST_CASE(Basic, FixtureWithTracers)
 {
   Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("10Mbps"));
   Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms"));
@@ -55,14 +91,44 @@
           "0s", "100s"}
     });
 
+  Config::ConnectWithoutContext("/NodeList/*/$ns3::ndn::L3Protocol/InInterests", MakeCallback(&FixtureWithTracers::InInterests, this));
+  Config::ConnectWithoutContext("/NodeList/*/$ns3::ndn::L3Protocol/OutInterests", MakeCallback(&FixtureWithTracers::OutInterests, this));
+
+  Config::ConnectWithoutContext("/NodeList/*/$ns3::ndn::L3Protocol/InData", MakeCallback(&FixtureWithTracers::InData, this));
+  Config::ConnectWithoutContext("/NodeList/*/$ns3::ndn::L3Protocol/OutData", MakeCallback(&FixtureWithTracers::OutData, this));
+
+  // TODO: implement Nack testing
+  // Config::Connect("/NodeList/*/InNacks", ...);
+  // Config::Connect("/NodeList/*/OutNacks", ...);
+
   Simulator::Stop(Seconds(20.001));
   Simulator::Run();
 
+  BOOST_CHECK_EQUAL(getFace("1", "2")->getCounters().nInInterests, 0);
   BOOST_CHECK_EQUAL(getFace("1", "2")->getCounters().nOutInterests, 100);
   BOOST_CHECK_EQUAL(getFace("1", "2")->getCounters().nInData, 100);
+  BOOST_CHECK_EQUAL(getFace("1", "2")->getCounters().nOutData, 0);
+  BOOST_CHECK_EQUAL(getFace("1", "2")->getCounters().nInNacks, 0);
+  BOOST_CHECK_EQUAL(getFace("1", "2")->getCounters().nOutNacks, 0);
+
+  BOOST_CHECK_EQUAL(nInInterests [boost::lexical_cast<std::string>(*getFace("1", "2"))], 0);
+  BOOST_CHECK_EQUAL(nOutInterests[boost::lexical_cast<std::string>(*getFace("1", "2"))], 100);
+  BOOST_CHECK_EQUAL(nInData      [boost::lexical_cast<std::string>(*getFace("1", "2"))], 100);
+  BOOST_CHECK_EQUAL(nOutData     [boost::lexical_cast<std::string>(*getFace("1", "2"))], 0);
+  // TODO add nacks
 
   BOOST_CHECK_EQUAL(getFace("2", "1")->getCounters().nInInterests, 100);
+  BOOST_CHECK_EQUAL(getFace("2", "1")->getCounters().nOutInterests, 0);
+  BOOST_CHECK_EQUAL(getFace("2", "1")->getCounters().nInData, 0);
   BOOST_CHECK_EQUAL(getFace("2", "1")->getCounters().nOutData, 100);
+  BOOST_CHECK_EQUAL(getFace("2", "1")->getCounters().nInNacks, 0);
+  BOOST_CHECK_EQUAL(getFace("2", "1")->getCounters().nOutNacks, 0);
+
+  BOOST_CHECK_EQUAL(nInInterests [boost::lexical_cast<std::string>(*getFace("2", "1"))], 100);
+  BOOST_CHECK_EQUAL(nOutInterests[boost::lexical_cast<std::string>(*getFace("2", "1"))], 0);
+  BOOST_CHECK_EQUAL(nInData      [boost::lexical_cast<std::string>(*getFace("2", "1"))], 0);
+  BOOST_CHECK_EQUAL(nOutData     [boost::lexical_cast<std::string>(*getFace("2", "1"))], 100);
+  // TODO add nacks
 
   BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(*getFace("1", "2")), "netdev://[00:00:00:ff:ff:01]");
   BOOST_CHECK_EQUAL(boost::lexical_cast<std::string>(*getFace("2", "1")), "netdev://[00:00:00:ff:ff:02]");
