Skip to content

Name of FIB entry / prefix registration #19

Description

@yoursunny

As I'm testing SVS interoperability, I noticed an interesting incompatibility between two implementations.
Packet trace: 1.zip

  • ndn and tcp.stream eq 0 filter selects packets for impl-A.
  • ndn and tcp.stream eq 1 filter selects packets for impl-B.

The Sync Interests from both implementations are encoded perfectly.
However, NFD would not deliver Sync Interests sent by impl-A to impl-B.

Upon further inspection, I noticed that the two implementations are registering prefixes differently:

  • impl-A registered /ndn/svs/v=3 with ChildInherit flag.
  • impl-B registered /ndn/svs with Capture flag.

The exact semantics of these route inheritance flags are not very important here, but NFD would have the following FIB entries:

  • /ndn/svs/v=3 points to impl-A only.
  • /ndn/svs points to impl-B only.

Longest Prefix Match rule is strictly applied among the FIB entry:

  • When impl-B transmits a Sync Interest, NFD finds the /ndn/svs/v=3 FIB entry and delivers the Sync Interest to impl-A.
  • When impl-A transmits a Sync Interest, NFD finds the /ndn/svs/v=3 FIB entry and cannot deliver the Sync Interest to impl-B.

This incompatibility can be resolved if the State Vector Sync protocol specifies the prefix registration behavior of the application.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions