<div dir="ltr">Dear folks<div><br></div><div>I have a question regarding the use of FinalBlockId element in a Data packet that is not the final segment itself.</div><div>Note that "segment" in this message could be replaced with "timestamp", "sequence number", etc, because FinalBlockId is not required to be a segment number.</div><div><br></div><div>NDN Packet Spec <a href="https://named-data.net/doc/NDN-packet-spec/0.3/data.html#finalblockid" target="_blank">defines</a> FinalBlockId as follows:</div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>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.</div></blockquote><div>CCNx <a href="https://github.com/ProjectCCNx/ccnx/blob/5be2b715d0cc6bb4b7c6bb7459d311bddff46834/doc/technical/ContentObject.txt#L82-L88" target="_blank">has the same definition</a>.</div><div><br></div><div>As I remember (but couldn't find records):</div><div>In the final segment, FinalBlockId must equal the last explicit name component.</div><div>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.</div><div>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.</div><div><br></div><div>Change 4651 patchset 26 treats a different FinalBlockId in a stream as an error: <a href="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</a></div><div>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.</div><div><br></div><div>Yours, Junxiao</div><div><br></div></div>