<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hi all,<div><span style="white-space: pre-wrap; font-size: 12pt;"><br></span></div><div><span style="white-space: pre-wrap; font-size: 12pt;">I am trying to develop a </span><span style="white-space: pre-wrap; font-size: 12pt;">scenario for </span><span style="font-size: 12pt; white-space: pre-wrap;">multi-hop wireless ad-hoc network , currently i'm working with a 3 nodes topology A-->B-->C where </span><span style="font-size: 12pt; white-space: pre-wrap;">(A:consumer ; B: forwarder ; C: producer ) and i managed to forward interest packets to node C, by creating a custom forwarding strategy that enable forwarding through the same face. </span></div><div><span style="white-space: pre-wrap; font-size: 12pt;">My problem is that node B receives the returned data packet and it doesn't forward it back to node A since the NFD forwarder doesn't permit forwarding data packet throw the same downstream face </span></div><div><span style="white-space: pre-wrap; font-size: 12pt;"><br></span></div><div><span style="white-space: pre-wrap; font-size: 12pt;">as shown on this file: </span><a href="https://github.com/named-data-ndnSIM/NFD/blob/bd8eea71137bc382fe1fb8225334b926a5484527/daemon/fw/forwarder.cpp#L365" target="_blank" style="font-size: 12pt;">https://github.com/named-data-ndnSIM/NFD/blob/bd8eea71137bc382fe1fb8225334b926a5484527/daemon/fw/forwarder.cpp#L36</a>4</div><div><br><div>and by modifying the Forwarder class to enable it to forward data packets to the same inFace only the first 2 packets were sent and received correctly as you can see on the Forwarder log, i suspect that node C doesn't have a route to the other nodes but i dont quite understand why only 2 packets were sent and received correctly.</div><div><br></div><div>any help will be much appreciated.</div></div><div><br></div><div>Thanks ,</div><div>Ahmed.</div><div><br></div><div><br></div><div><br></div><div>Forwarder Log:</div><div><br></div><div>*****************************First Packet**************************************</div><div><br></div><div><div>1s 0 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=257 interest=/localhost/nfd/faces/events/%FE%05</div><div>1s 0 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss interest=/localhost/nfd/faces/events/%FE%05</div><div>1s 0 nfd.Forwarder:onOutgoingInterest(): [DEBUG] onOutgoingInterest face=1 interest=/localhost/nfd/faces/events/%FE%05</div><div>1.1s 0 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize interest=/localhost/nfd/faces/events satisfied</div><div>3s 0 ndn.ConsumerPush:SendInterestx(): [DEBUG] Sending Interest packet for /test/data/83?ndn.type=F&ndn.InterestLifetime=3000&ndn.Nonce=2814399756</div><div>3s 0 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=258 interest=/test/data/83</div><div>3s 0 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss interest=/test/data/83</div><div>3.0001s 0 nfd.Forwarder:onOutgoingInterest(): [DEBUG] onOutgoingInterest face=256 interest=/test/data/83</div><div>3.00014s 1 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=256 interest=/test/data/83</div><div>3.00014s 1 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss interest=/test/data/83</div><div>3.00024s 1 nfd.Forwarder:onOutgoingInterest(): [DEBUG] onOutgoingInterest face=256 interest=/test/data/83</div><div>3.00029s 2 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=256 interest=/test/data/83</div><div>3.00029s 2 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss interest=/test/data/83</div><div>3.00039s 2 nfd.Forwarder:onOutgoingInterest(): [DEBUG] onOutgoingInterest face=258 interest=/test/data/83</div><div>3.00039s 2 ndn.Sink:OnInterest(): [DEBUG] Received Fetch Interest packet for /test/data/83</div><div>3.00039s 2 ndn.Sink:OnInterest(): [INFO ] node(2) responding with Data: /test/data/83</div><div>3.00039s 2 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData face=258 data=/test/data/83</div><div>3.00039s 2 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData matching=/test/data/83</div><div>3.00039s 2 nfd.Forwarder:onOutgoingData(): [DEBUG] onOutgoingData face=256 data=/test/data/83</div><div>3.00071s 1 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData face=256 data=/test/data/83</div><div>3.00071s 1 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData matching=/test/data/83</div><div>3.00071s 1 nfd.Forwarder:onOutgoingData(): [DEBUG] onOutgoingData face=256 data=/test/data/83</div><div>3.0011s 0 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData face=256 data=/test/data/83</div><div>3.0011s 0 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData256matching=/test/data/83</div><div>3.0011s 0 nfd.Forwarder:onOutgoingData(): [DEBUG] onOutgoingData face=258 data=/test/data/83</div><div>3.0011s 2 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData face=256 data=/test/data/83</div><div>3.0011s 2 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData matching=/test/data/83</div><div>3.0011s 0 ndn.ConsumerPush:OnData(): [DEBUG] Receiving Data packet for /test/data/83</div><div>3.10071s 1 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize interest=/test/data/83 satisfied</div><div>3.1011s 0 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize interest=/test/data/83 satisfied</div><div>3.1011s 2 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize interest=/test/data/83 satisfied</div><div><br></div><div><br></div><div><div>*****************************Second Packet**************************************</div></div><div><br></div><div><br></div><div>7s 0 ndn.ConsumerPush:SendInterestx(): [DEBUG] Sending Interest packet for /test/data/86?ndn.type=F&ndn.InterestLifetime=3000&ndn.Nonce=2210333648</div><div>7s 0 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=258 interest=/test/data/86</div><div>7s 0 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss interest=/test/data/86</div><div>7.0001s 0 nfd.Forwarder:onOutgoingInterest(): [DEBUG] onOutgoingInterest face=256 interest=/test/data/86</div><div>7.00014s 1 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=256 interest=/test/data/86</div><div>7.00014s 1 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss interest=/test/data/86</div><div>7.00024s 1 nfd.Forwarder:onOutgoingInterest(): [DEBUG] onOutgoingInterest face=256 interest=/test/data/86</div><div>7.00029s 0 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=256 interest=/test/data/86</div><div>7.00029s 0 nfd.Forwarder:onInterestLoop(): [DEBUG] onInterestLoop face=256 interest=/test/data/86</div><div>7.00029s 2 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=256 interest=/test/data/86</div><div>7.00029s 2 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss interest=/test/data/86</div><div>7.00039s 2 nfd.Forwarder:onOutgoingInterest(): [DEBUG] onOutgoingInterest face=258 interest=/test/data/86</div><div>7.00039s 2 ndn.Sink:OnInterest(): [DEBUG] Received Fetch Interest packet for /test/data/86</div><div>7.00039s 2 ndn.Sink:OnInterest(): [INFO ] node(2) responding with Data: /test/data/86</div><div>7.00039s 2 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData face=258 data=/test/data/86</div><div>7.00039s 2 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData matching=/test/data/86</div><div>7.00039s 2 nfd.Forwarder:onOutgoingData(): [DEBUG] onOutgoingData face=256 data=/test/data/86</div><div>7.00071s 1 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData face=256 data=/test/data/86</div><div>7.00071s 1 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData matching=/test/data/86</div><div>7.00071s 1 nfd.Forwarder:onOutgoingData(): [DEBUG] onOutgoingData face=256 data=/test/data/86</div><div>7.00106s 0 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData face=256 data=/test/data/86</div><div>7.00106s 0 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData matching=/test/data/86</div><div>7.00106s 0 nfd.Forwarder:onOutgoingData(): [DEBUG] onOutgoingData face=258 data=/test/data/86</div><div>7.00106s 2 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData face=256 data=/test/data/86</div><div>7.00106s 2 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData matching=/test/data/86</div><div>7.00106s 0 ndn.ConsumerPush:OnData(): [DEBUG] Receiving Data packet for /test/data/86</div><div>7.10071s 1 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize interest=/test/data/86 satisfied</div><div>7.10106s 0 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize interest=/test/data/86 satisfied</div><div>7.10106s 2 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize interest=/test/data/86 satisfied</div><div><br></div><div><br></div><div><div>*****************************Third Packet**************************************</div></div><div><br></div><div>11s 0 ndn.ConsumerPush:SendInterestx(): [DEBUG] Sending Interest packet for /test/data/77?ndn.type=F&ndn.InterestLifetime=3000&ndn.Nonce=2999336398</div><div>11s 0 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=258 interest=/test/data/77</div><div>11s 0 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss interest=/test/data/77</div><div>11.0001s 0 nfd.Forwarder:onOutgoingInterest(): [DEBUG] onOutgoingInterest face=256 interest=/test/data/77</div><div>11.0001s 1 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=256 interest=/test/data/77</div><div>11.0001s 1 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss interest=/test/data/77</div><div>11.0002s 1 nfd.Forwarder:onOutgoingInterest(): [DEBUG] onOutgoingInterest face=256 interest=/test/data/77</div><div>11.0003s 0 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=256 interest=/test/data/77</div><div>11.0003s 0 nfd.Forwarder:onInterestLoop(): [DEBUG] onInterestLoop face=256 interest=/test/data/77</div><div>11.0003s 2 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest face=256 interest=/test/data/77</div><div>11.0003s 2 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss interest=/test/data/77</div><div>11.0004s 2 nfd.Forwarder:onOutgoingInterest(): [DEBUG] onOutgoingInterest face=258 interest=/test/data/77</div><div>11.0004s 2 ndn.Sink:OnInterest(): [DEBUG] Received Fetch Interest packet for /test/data/77</div><div>11.0004s 2 ndn.Sink:OnInterest(): [INFO ] node(2) responding with Data: /test/data/77</div><div>11.0004s 2 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData face=258 data=/test/data/77</div><div>11.0004s 2 nfd.Forwarder:onIncomingData(): [DEBUG] onIncomingData matching=/test/data/77</div><div>11.0004s 2 nfd.Forwarder:onOutgoingData(): [DEBUG] onOutgoingData face=256 data=/test/data/77</div><div>11.1004s 2 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize interest=/test/data/77 satisfied</div><div>14s 0 nfd.Forwarder:onInterestUnsatisfied(): [DEBUG] onInterestUnsatisfied interest=/test/data/77</div><div>14s 0 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize interest=/test/data/77 unsatisfied</div><div>14.0001s 1 nfd.Forwarder:onInterestUnsatisfied(): [DEBUG] onInterestUnsatisfied interest=/test/data/77</div><div>14.0001s 1 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize interest=/test/data/77 unsatisfied</div></div><div><br></div><div><br></div>                                       </div></body>
</html>