<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-family: Calibri, sans-serif; font-size: 14px; color: rgb(0, 0, 0);">
<div>I tested in PyNDN and I confirm the same problem: NFD does not match an incoming data packet with an interest in the PIT which has an implicit digest component (but it does match from the content store).</div>
<div><br>
</div>
<div>Looking at the NFD code, Pit::findAllDataMatches calls m_nameTree.findAllMatches(data.getName(), …) which does a longest prefix match of the data name to the interest name.</div>
<div><a href="https://github.com/named-data/NFD/blob/5e5e44518286e89a0092ea0ad93c22e64128bdd2/daemon/table/pit.cpp#L97">https://github.com/named-data/NFD/blob/5e5e44518286e89a0092ea0ad93c22e64128bdd2/daemon/table/pit.cpp#L97</a></div>
<div><br>
</div>
<div>But the interest name with the implicit digest component in the PIT is longer than the data name, so how can LPM match it? Should NFD strip the implicit digest component before putting the interest name in the PIT’s name tree?</div>
<div><br>
</div>
<div>- Jeff T</div>
<div><br>
</div>
<div>On 2015/12/11, 16:12:07, "Nfd-dev on behalf of <a href="mailto:christian.tschudin@unibas.ch">
christian.tschudin@unibas.ch</a>" <<a href="mailto:nfd-dev-bounces@lists.cs.ucla.edu">nfd-dev-bounces@lists.cs.ucla.edu</a> on behalf of
<a href="mailto:christian.tschudin@unibas.ch">christian.tschudin@unibas.ch</a>> wrote:</div>
<div><br>
</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div>I'm hitting a wall with nfd behavior when it comes to the implicit digest.</div>
<div><br>
</div>
<div>a) What is working correctly:</div>
<div>- first retrieve a packet by ordinary name</div>
<div>- compute the digest of the received packet</div>
<div>- then retrieve the same packet, but this time with the</div>
<div>   special digest component appended and MaxSuffix=0</div>
<div>- this works, the data will probably now be served from the CS</div>
<div>(digest is a3c19829edf901ff9d1a87f6da82af050a1cc302784b9b18ecd3812deef6795d)</div>
<div><br>
</div>
<div>b) What is not working:</div>
<div>- directly retrieve another packet with its (other) name and including</div>
<div>   the special digest component for that data, and MaxSuffix=0</div>
<div>- nfd accepts this request and forwards it upstream</div>
<div>- nfd receives that data packet</div>
<div>- but the received data is not delivered to the downstream</div>
<div>   client (timeout of ndnpeek although I can see that nfd</div>
<div>   received the right packet).</div>
<div>(digest is 65d5baf5960a4151ee64f8aa93ed19c90c50932308d3019848f23b2f59bc0623)</div>
<div><br>
</div>
<div>The content comes in both cases from an upstream node (running </div>
<div>ccn-lite), see the topology below.</div>
<div><br>
</div>
<div>One potential catch is that the two names are almost identical:</div>
<div><br>
</div>
<div>The name in step a) is</div>
<div>/ndn/ch/unibas/repo256/movie7.mp4/_</div>
<div><br>
</div>
<div>The name in step b) is</div>
<div>/ndn/ch/unibas/repo256/movie7.mp4</div>
<div><br>
</div>
<div>Is this a bug in PIT matching? Or has the second data object an internal </div>
<div>problem that lets nfd refuse it (see the attached packet)? Below I also </div>
<div>add the command line logs, FYI.</div>
<div><br>
</div>
<div>Best, christian</div>
<div><br>
</div>
<div>---</div>
<div><br>
</div>
<div># topology</div>
<div><br>
</div>
<div>   ndnpeek --> nfd (UDP 6363) --> ccn-lite-relay (UDP 3636) --> ccn-lite-repo256 (UDP 7777)</div>
<div><br>
</div>
<div><br>
</div>
<div># case a), showing correct behavior</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$ ndnpeek -v /ndn/ch/unibas/repo256/movie7.mp4/_ >pkt-1.bin</div>
<div>INTEREST: /ndn/ch/unibas/repo256/movie7.mp4/_</div>
<div>DATA, RTT: 5ms</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$ shasum -a 256 pkt-1.bin</div>
<div>a3c19829edf901ff9d1a87f6da82af050a1cc302784b9b18ecd3812deef6795d  pkt-1.bin</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$ ndnpeek -v /ndn/ch/unibas/repo256/movie7.mp4/_/sha256digest=a3c19829edf901ff9d1a87f6da82af050a1cc302784b9b18ecd3812deef6795d
</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div>pkt-2.bin</div>
</blockquote>
<div>INTEREST: /ndn/ch/unibas/repo256/movie7.mp4/_/sha256digest=a3c19829edf901ff9d1a87f6da82af050a1cc302784b9b18ecd3812deef6795d</div>
<div>DATA, RTT: 5ms</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$ cmp pkt-1.bin pkt-2.bin</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$</div>
<div><br>
</div>
<div><br>
</div>
<div># case b), showing the error</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$ ndnpeek -v -M 0 /ndn/ch/unibas/repo256/movie6.mp4/sha256digest=bc5f1a0e0712304cb9790aad2639397c6ad3d01fb2adf74a4572b100c5f12885 >pkt-3.bin</div>
<div>INTEREST: /ndn/ch/unibas/repo256/movie6.mp4/sha256digest=bc5f1a0e0712304cb9790aad2639397c6ad3d01fb2adf74a4572b100c5f12885?ndn.MaxSuffixComponents=0</div>
<div>TIMEOUT</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$</div>
<div><br>
</div>
<div><br>
</div>
<div># Log file captured with tcpdump (case b)</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$ sudo tcpdump -i lo 'udp port 6363 or udp port 3636 or udp port 7777' >traffic.log &</div>
<div>[2] 20530</div>
<div>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode</div>
<div>listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$ ndnpeek -v -M 0 /ndn/ch/unibas/repo256/movie7.mp4/sha256digest=65d5baf5960a4151ee64f8aa93ed19c90c50932308d3019848f23b2f59bc0623 >pkt-3.bin</div>
<div>INTEREST: /ndn/ch/unibas/repo256/movie7.mp4/sha256digest=65d5baf5960a4151ee64f8aa93ed19c90c50932308d3019848f23b2f59bc0623?ndn.MaxSuffixComponents=0</div>
<div>TIMEOUT</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$ fg</div>
<div>sudo tcpdump -i lo 'udp port 6363 or udp port 3636 or udp port 7777' > traffic.log</div>
<div>^C6 packets captured</div>
<div>12 packets received by filter</div>
<div>0 packets dropped by kernel</div>
<div><br>
</div>
<div>tschudin@cs-ndn-testbed1:~$ less traffic.log</div>
<div>00:47:08.269244 IP cs-ndn-testbed1.cs.unibas.ch.6363 > cs-ndn-testbed1.cs.unibas.ch.3636: UDP, length 87</div>
<div>00:47:08.270061 IP localhost.3636 > localhost.6363: UDP, length 87</div>
<div>00:47:08.270181 IP localhost.6363 > localhost.3636: UDP, length 100</div>
<div>00:47:08.270362 IP localhost.3636 > localhost.7777: UDP, length 87</div>
<div>00:47:08.271063 IP localhost.7777 > localhost.3636: UDP, length 3862</div>
<div>00:47:08.271227 IP cs-ndn-testbed1.cs.unibas.ch.3636 > cs-ndn-testbed1.cs.unibas.ch.6363: UDP, length 3862</div>
<div><br>
</div>
<div>traffic.log (END)</div>
<div><br>
</div>
<div><br>
</div>
<div># log from the ccn-lite relay (which links to the upstream repo256, both running</div>
<div># on the same machine as nfd but using UDP ports 3636 and 7777, respectively)</div>
<div><br>
</div>
<div>[D] 100.1443: ccnl_core_RX ifndx=0, 87 bytes</div>
<div>[D] 100.1443:   face 9, peer=192.43.193.111/6363</div>
<div>[I] 100.1444:   incoming interest=</ndn/ch/unibas/repo256/movie7.mp4>[65d5..0623]ndn2013 from=192.43.193.111/6363</div>
<div>[D] 100.1444:   searching in CS</div>
<div>[D] 100.1446:   created new interest entry 0x1364f70 (prefix=/ndn/ch/unibas/repo256/movie7.mp4)</div>
<div>[D] 100.1446: ccnl_interest_propagate</div>
<div>[D] 100.1447:   ccnl_interest_propagate, fwd==0x13650d0</div>
<div>[I] 100.1447:   outgoing interest=</ndn/ch/unibas/repo256/movie7.mp4> to=127.0.0.1/6363</div>
<div>[D] 100.1449: udp sendto(87 Bytes) to 127.0.0.1/6363 returned 87/0</div>
<div>[D] 100.1450:   ccnl_interest_propagate, fwd==0x100e1f0</div>
<div>[I] 100.1450:   outgoing interest=</ndn/ch/unibas/repo256/movie7.mp4> to=127.0.0.1/7777</div>
<div>[D] 100.1450: udp sendto(87 Bytes) to 127.0.0.1/7777 returned 87/0</div>
<div>[D] 100.1450: ccnl_core_RX ifndx=0, 100 bytes</div>
<div>[D] 100.1451:   face 2, peer=127.0.0.1/6363</div>
<div>[I] 100.1457:   ndnlp packet</div>
<div>[D] 100.1458: ccnl_core_RX ifndx=0, 3862 bytes</div>
<div>[D] 100.1458:   face 6, peer=127.0.0.1/7777</div>
<div>[I] 100.1458:   incoming data=</ndn/ch/unibas/repo256/movie7.mp4>[65d5..0623]ndn2013 from=127.0.0.1/7777</div>
<div>[I] 100.1458:   outgoing data=</ndn/ch/unibas/repo256/movie7.mp4>ndn2013 to=192.43.193.111/6363</div>
<div>[D] 100.1460: udp sendto(3862 Bytes) to 192.43.193.111/6363 returned 3862/0</div>
<div>[D] 100.1460:   adding content to cache</div>
<div><br>
</div>
<div>---</div>
</blockquote>
</body>
</html>