Project

General

Profile

Actions

Bug #5167

closed

Forwarder::insertDeadNonceList should not add the same nonce multiple times

Added by Davide Pesavento over 3 years ago. Updated over 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Tables
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:


Files

issues5167_20210604.txz (20.6 KB) issues5167_20210604.txz Junxiao Shi, 06/04/2021 07:11 AM
Actions #1

Updated by Junxiao Shi over 3 years ago

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:

  1. 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
    
  2. 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.

  3. 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.

  4. 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.

Actions #2

Updated by Davide Pesavento over 3 years ago

  • Description updated (diff)
Actions #3

Updated by Davide Pesavento over 3 years ago

  • Status changed from New to In Progress
  • Assignee set to Davide Pesavento
Actions #4

Updated by Davide Pesavento over 3 years ago

  • 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
Actions #5

Updated by Davide Pesavento over 3 years ago

  • Status changed from Code review to Closed
  • % Done changed from 80 to 100
Actions #6

Updated by Junxiao Shi over 3 years ago

  • Tags set to DeadNonceList
Actions

Also available in: Atom PDF