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.
As I'm testing SVS interoperability, I noticed an interesting incompatibility between two implementations.
Packet trace: 1.zip
ndn and tcp.stream eq 0filter selects packets for impl-A.ndn and tcp.stream eq 1filter 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:
/ndn/svs/v=3with ChildInherit flag./ndn/svswith 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=3points to impl-A only./ndn/svspoints to impl-B only.Longest Prefix Match rule is strictly applied among the FIB entry:
/ndn/svs/v=3FIB entry and delivers the Sync Interest to impl-A./ndn/svs/v=3FIB 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.