[Ndn-interest] [EXT] Custom TLV vs library

Junxiao Shi shijunxiao at email.arizona.edu
Wed Jan 20 15:48:50 PST 2021

Hi Varun

> You can choose either one, but you should write down the schema first. In
>> other words, CBOR is not an excuse for not writing the schema.
> At least for my use case, there isn't a schema - I just need to encode an
> unordered_map<string, int>. Which is why CBOR seemed ideal.

Even if it's an unordered_map<string, int>, you still need to write a
The schema would answer questions like:

   - Is the string a byte string (major type 2) or a text string (major
   type 3)?
   - Is it allowable to encode the integer as bignum format?

If you are referring to the version vector

   - It's more than an unordered_map<string, int>. There are three items in
   each tuple.
   - It should not be "unordered" because allowing arbitrary order would
   cause different network nodes to encode this component differently,
   reducing the effectiveness of Interest aggregation.
   - If the string is actually a name, you should use its NDN-TLV encoding,
   not the URI format. Canonical URI is standardized but less compact.
   Alternate URI is implementation dependent - PSync made the mistake of using
   alternate URI, so it's not portable.

Version vector encoded in NDN-TLV would be something like:
; items should be sorted by Name in NDN canonical order


SeqNum = SequenceNumNameComponent

              TLV-LENGTH ; zero



; Name defined in NDN Packet Format v0.3
; SequenceNumNameComponent is defined in NDN Naming Conventions rev02

Version vector encoded in CBOR would be something like:
version-vector = {
  *name => version-vector-value

name = bstr ; Name TLV-VALUE, as defined in NDN Packet Format

version-vector-value = [
  uint, ; sequence number
  bool, ; is important
Map item ordering should follow RFC8949 section 4.2, which differs from NDN
canonical order.
Also note that the name is encoded as TLV-VALUE only, because the
"NAME-TYPE TLV-LENGTH" portion is redundant. As mentioned above, you should
not use the URI format.

Yours, Junxiao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndn-interest/attachments/20210120/639b70ea/attachment.html>

More information about the Ndn-interest mailing list