tree: 9cf6f2e4f05b1f68a68a9a6ecb3c9c05c2299da5 [path history] [tgz]
  1. nack-test.sh
  2. README.md
  3. test_nack.py
test_nack/README.md

Test Nack scenario

Topology

B
|
A--D
|
C

Steps

  1. start NFD on A,B,C,D
  2. configure NFD on A,C,D to use best-route strategy
  3. configure NFD on B to use best-route v1 strategy, which will not transmit or process Nack
  4. on A, create a route for prefix ndn:/P toward B and C, set the cost toward B to be 10. set the cost toward C to be 20.
  5. on D, create a route for prefix ndn:/P toward A
  6. on D, express an Interest for ndn:/P/1 with InterestLifetime=4000ms and no consumer retransmission; wait 8000ms since expressing Interest, fail the scenario if Nack comes back;
  7. on D, express an Interest for ndn:/P/2 with InterestLifetime=4000ms, and retransmit with a new Nonce after 200ms; wait 8000ms since expressing first Interest, fail the scenario if Nack comes back; reason: A shouldn't return a Nack when some upstream times out, even if some other upstream returns Nack.
  8. configure NFD on B to use best-route strategy
  9. on B and C, configure unidirectional link delay toward A as 500ms
  10. on D, express an Interest for ndn:/P/3 with InterestLifetime=4000ms, and retransmit with nonce2 after 200ms; wait 3000ms since expressing first Interest, expect exactly one Nack comes back where Reason is NoRoute and Nonce equals nonce2, otherwise fail the scenario; reason: A should return a Nack after both upstreams have returned Nack
  11. on B, configure unidirectional link delay toward A as 1000ms
  12. on D, express an Interest for ndn:/P/4 with InterestLifetime=4000ms, and retransmit with nonce2 after 200ms; wait 3000ms since expressing first Interest, expect exactly one Nack comes back where Reason is NoRoute and Nonce equals nonce2, otherwise fail the scenario; reason: the Nack should carry the latest incoming Nonce from downstream, not the Nonce from last incoming Nack.