[Ndn-interest] Hop-by-Hop Flow Balance

Marc.Mosko at parc.com Marc.Mosko at parc.com
Tue Mar 15 14:22:04 PDT 2016

> On Mar 15, 2016, at 1:31 PM, Tai-Lin Chu <tailinchu at gmail.com> wrote:
>> Not really. What you need is an ability to provoke a pull.
> Do people who want PUSH consider that it is possible to use interest as a notification to provoke a pull?
> (Producer sends an interest to consumer to say, “hey, I have something for you, please fetch it.”)

This technique requires each producer to be individually addressable and adds delay adds message overhead (4 messages instead of 2).  

In the start-write method, you have read request, read, read response, read request ack.  I understand that often people do not do the read request ack, but I believe it is needed for correctness and liveness.  For example, I send a read request to /foo to read /bar.  Then I get an interest for /bar.  After I return /bar, can I delete it?  What if that Interest was from a 3rd party, not from /foo?  What if my response to the Interest for /bar got lost?

0) A: interest to /B/foo to read /A/bar
1) B: interest to /A/bar
2) A: content object /A/bar
3) B: content object to /B/foo giving ACK that it read /A/bar

Because 3 might be at an indeterminate delay from 0, PIT state is likely timed out.  You probably need to actually do something like:

3’) B: interest to /A/bar/FIN with payload that confirms /B/foo read.  You probably need to include a sequence number or something in the start-write Interest (0) that this can ACK.
4) A: delete /A/bar

If you don’t have 3’ (with some authentication), then you could have this situation:

0) A: interest to /B/foo to read /A/bar
1) C: interest to /A/bar
2) A: content object /A/bar
3) A: delete /A/bar
4) B: interest to /A/bar
5) A: NAK

For small-size data, such as IoT, I think it is better to put the data in the Interest and use the Data object as a ACK.


More information about the Ndn-interest mailing list