Re: [icnrg] Comments on FLIC
Dirk Kutscher <ietf@dkutscher.net> Mon, 04 May 2020 10:09 UTC
Return-Path: <ietf@dkutscher.net>
X-Original-To: icnrg@ietfa.amsl.com
Delivered-To: icnrg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 99D1B3A077C for <icnrg@ietfa.amsl.com>; Mon, 4 May 2020 03:09:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8zsALT0pR606 for <icnrg@ietfa.amsl.com>; Mon, 4 May 2020 03:09:30 -0700 (PDT)
Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 05B533A0778 for <icnrg@irtf.org>; Mon, 4 May 2020 03:09:29 -0700 (PDT)
Received: from [192.168.1.69] ([77.21.26.188]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MDygG-1jLcQA1Vi8-009x95; Mon, 04 May 2020 12:09:22 +0200
From: Dirk Kutscher <ietf@dkutscher.net>
To: Ken Calvert <calvert@netlab.uky.edu>
Cc: icnrg@irtf.org
Date: Mon, 04 May 2020 12:09:20 +0200
X-Mailer: MailMate (1.13.1r5671)
Message-ID: <ABDC2D49-6542-43BA-9E0B-DF90257B1A68@dkutscher.net>
In-Reply-To: <E249BBED-4D99-40FC-9DCE-82ADB3A20DBF@netlab.uky.edu>
References: <E249BBED-4D99-40FC-9DCE-82ADB3A20DBF@netlab.uky.edu>
MIME-Version: 1.0
Content-Type: text/plain; format="flowed"
X-Provags-ID: V03:K1:ax+Q+ZYoJuMDDKoS+I6u5TNkb+p5v7CBKm8z2I0+xQgrk7Pxxc7 GB0SmoznOY0oWKxE/Wwz9FulAh3fpPOyEkClCYGvp16+7ieRwJWojGCXcY9zBDMcpS77/tW jNbJhDIT9Bh6wSkp8XWUpaNCliD4D7Hef5OnH4mbO0+K86lYQmK8YhrVfaDY5hRzV1KMgmT jW4gNQHMIgRL6y1qiov+g==
X-UI-Out-Filterresults: notjunk:1;V03:K0:OG3yZ+PMKZc=:bP7JwicgVB1sl4CtZpnOBI JUwfBAmVjS2oNYNGNTxWi66Mzn+7NAma0ab1AJJTS4bGLpTZ8dLUjHgRnGrVWcmDAdYkp07At rB860rPLiDVOvjn43Lax1my2ZkPU5JfczDtF/ji7ktyGh+XEBOtfoAU88UEHxYBldQULNWLov LWRDVKTSq9NzlBKx5iOEX10gKgo5p0G+jXXqwH01SIOBFkhhfA/Evk1WRC7GkGMSis0RBkaGc wuzhOFkp/xLYBwvcY7ownObVJ2reQEeBL3jvQ2+dDSTpmhY/+jbj+E9p0LGTqE9vHrNJGyQSy 6J/PJeLlR2t5ib+pG9jaYfSPzx/SYmqW899TcaQ3ZN/JPfNUUGBtQMKVZ4JR1BARuj6PVJWVu iiop8Pcl8lpeeUenudybj11cEdBqsNRFl17gqoY7WKXoiaR55tZq5qRZJByItbbpQujb5VvrQ WtFT73TLccebyuE57u9kZDYn5G+T7lGDA5AYiql+g/kvmPuS4ZMNIhlvLavxqq//ZRnJX8dgN /J7smEObHahvemC3oJagrMLhXfJ70KMu+LhiuY6PXbHTwTHnvyaPYUeh/ETHbVT8X5ePIZDsN 6pwf1oBSj7xARYA6lQkNCO1ugZ7AanhDd8FB90pex0bWZbBOltoBeezQQsxveiSl8lkPLIyg+ A5vrazYelDnmOrfbVpFYI2Mmx4ZxjFwrRrCm42EC1IdWYn/q9f2BkdE0K5hXWKQ4myiyeNvXh EnozRCUpXzRQf8JNgVpWznOPOhI13Td8s6syo9qzhEI8r7SPVB7MWqN03RrVpPQyEYjOxqpoi Pe9mc+gP1NF/Y2gm5tcbKbg8ElrUaLSVkfjyBOVK/myYht9RiV39t8S6SrRhPQob4tQD2Zj
Archived-At: <https://mailarchive.ietf.org/arch/msg/icnrg/GZflG8UX-_2CDeGQgQiIq-riw9o>
Subject: Re: [icnrg] Comments on FLIC
X-BeenThere: icnrg@irtf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Information-Centric Networking research group discussion list <icnrg.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/icnrg>, <mailto:icnrg-request@irtf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/icnrg/>
List-Post: <mailto:icnrg@irtf.org>
List-Help: <mailto:icnrg-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/icnrg>, <mailto:icnrg-request@irtf.org?subject=subscribe>
X-List-Received-Date: Mon, 04 May 2020 10:09:33 -0000
Hi Ken, thanks a lot -- this is really helpful. Would be great if we could consider these comments for a FLIC update. > Context: I came to the document with general knowledge of CCN/NDN and > understanding of the manifest concept, but without knowledge of the > details of any proposed implementation. I approached it as if I were > going to implement or use the protocol from scratch. There may be > relevant drafts I haven't read, which would affect my understanding. No, I don't think there are other relevant drafts that should have been read before other than the CCNx specs. Thanks, Dirk > Two parts to this: (I) high-level suggestions on presentation, and > (II) corrections and nits. > > I. High-level/global suggestions > ----------------------------------------- > > 0. Define a consistent terminology early, giving the meanings in terms > of BOTH CCNx and NDN standard terminology, and then use that > throughout. Currently some terms are defined only in CCNx terms, while > others need to be more precisely defined in standard terms. I guess > what I'm saying is the "Terminology" section 3.1 did not help me much. > Example: the relationship among Links, Locators, Namespaces, Names, > and Prefixes all need to be made clear. Some of this may be due to > this draft not yet reflecting the RFC terminology. (I'd volunteer to > help with that, as it would help me understand the latter better.) > > 1. The inode analogy is useful in the document's abstract and > introduction for giving some intuition, but it may not be helpful > beyond that. The term "pointer", for example, is a basic computer > science concept, and could be defined without citing inodes. In some > places (Section 4 and Appendix A) the inode model does seem most > appropriate, while in others (Section 3), trees seem like the more > useful paradigm, but because I was expecting inode-like structure, it > was confusing. > > 2. Section 2 is more like a list of features than a set of "Design > Goals". Stating design goals is fine, but they should be formulated as > such, rather than as selling points of the protocol. (This would also > help reviewers of the specification.) > > 3. Move the use cases (Sections 4.1, 4.3-4.5) earlier in the document. > The notation used is self-explanatory, and IMO illustrates the > utility and flexibility of the design better than what comes before. > For example, the earlier sections give the impression that it is > necessary (or at least usual) to have BOTH Root and Top manifests > (i.e., two levels of indirection); the use cases show that this isn't > required, but also how it can be useful. > > 4. Putting the section containing the grammar earlier in Section 3 > might make the rest of that section easier to understand. But I'm not > sure - see also #0 above. > > 5. I think "preferred" should be avoided in a specification. Better > to state what an approach or technique is good for (and why!), and let > the reader decide whether it applies to any particular case (see also > #3 above). I also suggest avoiding "typical" unless the scope is > clear. > > > II. Corrections/nits > -------------------- > > 1. Introduction > 7th paragraph - the sentence "A FLIC manifest encodes locators the > same for both ICN protocols, though they are encoded differently in > the underlying protocol." is self-contradictory. Suspect the first > "encodes" should be something else. Is this sentence necessary? > > 3.1 Terminology > Internal Manifest - last sentence, s/direct manifests/direct > pointers/ . > > 3.3 Namespaces > "If using namespaces, typically there are two defined: one for the > manifest namespace and one for the application data namespace. If the > two are the same, they can share a namespace." This seems to be a > tautology, although perhaps it's just semantic ambiguity about what > "the two" refers to. > > 3.4 Manifest Metadata > 2nd paragraph seems out of place - it's completely unclear what it has > to do with the first paragraph, or with the section header. > > 3.7.1 Traversal > "The algorithms in Figure 2 show the in-order forward traversal code > ..." Actually the code shows preorder [sic] traversal; "in-order" is a > different thing. > > Next-to-last line of reverse_preorder should be indented; the last > line should not be indented. > > 3.8 - I did not go over this carefully. > > 3.9.1 and 3.9.2 - both contain, in places, sentences like: "The Root > Manifest content object has a name used to fetch the manifest....It > has a set of Locators used to fetch the remainder of the manifest." > This makes it seem like double-indirection is required. Should there > be an "if any" or similar in there somewhere? > > 3.10 Figure 9 - Including this figure at this point is not very useful > - the reader understands indirection by this point, and it just raises > the question why you would want to require three-deep manifest > retrievals and 55% overhead to get to the actual data. > > 4.2 Seeking > > "...how to compute the byte offset of the data pointed at by pointer > P_i, offset_i. In this formula, let P_i represent the Size value of > the i-th pointer." > I think you mean to say "...by pointer P_i, *call it* offset_i" in the > first sentence, then "let P_i.size represent..." in the second > sentence. > > In the formula "offset_i = \sum_{i=1}^{i-1} P_i.size", RHS should be > \sum_{k=1}^{i-1} P_k.size. > > The code after the second paragraph is also wrong, the condition > should be > if (P < offset + P_i.size) ... > Also the code indentation is a little off. > > Paragraph below Figure 13 is garbled, the P_i in the last sentence > should be P_N, and the formula should be: > > D - ((N-1) * L) > > Then the sentence after that basically says the same thing again. The > algorithm seems right though. > > 4.5 Re-publishing a FLIC under a new name. > > Second bullet - "would like a local result to appear." - not clear > what this means. Apparently here prefixes (/beta, /gamma) are being > used as names of "sites". One gets the idea that there is some common > understanding that some parts of the namespace are tied to topology. > If that's the case, can some documentation be cited? > > Same paragraph, "maniest" -> manifest. > > Appendix A - code for building trees - I think interior_direct() is > not indented properly, should be at the same level as > interior_indirect(). > > Also, the statement in interior_indirect(): "reserve_count = min(m, > segment.tail - segment.head)" - I suspect that should be > > reserve_count = min(k, segment.tail - segment.head) > > When I worked an example with 100 data blocks, k=20 and m = 5, I got a > top manifest with 5 direct pointers and 4 indirect pointers, the > latter pointing to 2nd-level manifests with 20, 25, 25, and 25 direct > pointers, respectively. The 5 direct pointers (when there is room for > 20) seems to contradict the comment that "we want the top of the tree > packed". With the suggested change, I end up with 20 direct pointers > and 4 indirect in the top manifest, with the 2nd-level manifests > containing 5, 25, 25 and 25 direct pointers. > > Ken > > > > > > > _______________________________________________ > icnrg mailing list > icnrg@irtf.org > https://www.irtf.org/mailman/listinfo/icnrg
- [icnrg] Comments on FLIC Ken Calvert
- Re: [icnrg] Comments on FLIC Dirk Kutscher
- Re: [icnrg] Comments on FLIC David R. Oran