[Ndn-interest] FinalBlockId in non-final segment

Nick Briggs nicholas.h.briggs at gmail.com
Wed Jun 27 11:34:35 PDT 2018

I agree that NDN should clarify that.

In CCNx the intent was that the FinalBlockId in the packet provided a means to implement "boolean IsFinalBlock(content)", and that it could be implemented without any interpretation of the value of the FinalBlockId.

There was no restriction whatsoever on FinalBlockId values in packets where IsFinalBlock() was false -- any interpretation of FinalBlockId in non-final blocks was above the basic protocol level (e.g., in the generic stream profile, or in a specialized application profile).  The "advanced warning" was one interpretation, others are possible.  If the value of the FinalBlockId field is interpreted care should be given to avoiding failures when unexpected values are presented.

-- Nick

> On Jun 27, 2018, at 10:45 AM, Junxiao Shi <shijunxiao at email.arizona.edu> wrote:
> Dear folks
> I have a question regarding the use of FinalBlockId element in a Data packet that is not the final segment itself.
> Note that "segment" in this message could be replaced with "timestamp", "sequence number", etc, because FinalBlockId is not required to be a segment number.
> NDN Packet Spec defines <https://named-data.net/doc/NDN-packet-spec/0.3/data.html#finalblockid> FinalBlockId as follows:
> The optional FinalBlockId identifies the final block in a sequence of fragments. It should be present in the final block itself, and may also be present in other fragments to provide advanced warning of the end to consumers. The value here should be equal to the last explicit name component of the final block.
> CCNx has the same definition <https://github.com/ProjectCCNx/ccnx/blob/5be2b715d0cc6bb4b7c6bb7459d311bddff46834/doc/technical/ContentObject.txt#L82-L88>.
> As I remember (but couldn't find records):
> In the final segment, FinalBlockId must equal the last explicit name component.
> In earlier segments, producer may include FinalBlockId as an "advanced warning" that a stream is ending. In that case, the segment number in FinalBlockId represents an estimation, and is not required to be exact.
> A use case is that, a video stream is going to end within 5 seconds but the producer does not know the exact segment number of the last segment, so it provides an estimate so that consumers can stop sending Interests much more beyond that segment number.
> Change 4651 patchset 26 treats a different FinalBlockId in a stream as an error: https://gerrit.named-data.net/#/c/ndn-cxx/+/4651/26/src/util/segment-fetcher.hpp@138 <https://gerrit.named-data.net/#/c/ndn-cxx/+/4651/26/src/util/segment-fetcher.hpp@138>
> Although the later merged code has reverted to my view above, I think the NDN protocol should clarify whether FinalBlockId in non-final segment must be exact, or may be an estimation and therefore could change in later segments.
> Yours, Junxiao
> _______________________________________________
> Ndn-interest mailing list
> Ndn-interest at lists.cs.ucla.edu
> http://www.lists.cs.ucla.edu/mailman/listinfo/ndn-interest

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndn-interest/attachments/20180627/bd6a409a/attachment.html>

More information about the Ndn-interest mailing list