Bug #5167
closed
This bug can possibly cause seemingly persistent loop, if a FIB entry has a large number of nexthops, such as the /ndn/broadcast
prefix used on the global NDN testbed.
This condition can be simulated on two physical servers with the following steps:
Install nfd
, nfd-autoreg
, and ndnping
packages on node F.
The default configuration of nfd-autoreg
would insert /ndn/broadcast
route on every UDP face.
NFD version 0.7.1-23-g6a699be8 starting
Built with GNU C++ version 9.3.0, with GNU libstdc++ version 20200808, with Boost version 1.71.0, with libpcap version 1.9.1 (with TPACKET_V3), with WebSocket++ version 0.8.1, with ndn-cxx version 0.7.1-33-g3f13f359
Run the attached program on node G with this command line:
go run . --target fde0:fd0a:3557:c346::6 --pairs 32 --delay 200ms
This program creates 64 faces on NFD side.
Face creation is triggered by sending an Interest that violates ScopeControl; that Interest would be dropped by NFD forwarding, but the face remains in place.
More importantly, nfd-autoreg
service would insert a /ndn/broadcast
route toward the face.
These faces are then pairs into 32 loop pairs.
Whenever an Interest is received on one face in a loop pair, it is sent out via the other face in the loop pair after a 200ms delay.
The program also prints a log line when an Interest is received on a face.
Send a burst of Interests under /ndn/broadcast
prefix on node F.
ndnping -i 1 -c 1000 /ndn/broadcast
This transmits 1000 Interests within 1 second.
From the program log on G we can see that Interests are coming into the program continuously, several minutes after the ndnping
consumer program has exited.
This is, however, not necessarily a persistent loop.
With the above parameters, the traffic stops after about 3 minutes.
Different parameters (e.g. --pairs 512
or --delay 500ms
) could make the looping traffic more than 10 minutes, but probably not forever.
Nevertheless, this is not expected behavior of a network forwarder: the forwarder should have detected an Interest loop when the same Interest arrives for the second time.
- Description updated (diff)
- Status changed from New to In Progress
- Assignee set to Davide Pesavento
- Category changed from Forwarding to Tables
- Status changed from In Progress to Code review
- Assignee changed from Davide Pesavento to Varun Patil
- % Done changed from 0 to 80
- Status changed from Code review to Closed
- % Done changed from 80 to 100
- Tags set to DeadNonceList
Also available in: Atom
PDF