- nack-test.sh
- README.md
- test_nack.py
test_nack/README.md
Test Nack scenario
Topology
B
|
A--D
|
C
Steps
- start NFD on A,B,C,D
- configure NFD on A,C,D to use best-route strategy
- configure NFD on B to use best-route v1 strategy, which will not transmit or process Nack
- 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.
- on D, create a route for prefix ndn:/P toward A
- 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;
- 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.
- configure NFD on B to use best-route strategy
- on B and C, configure unidirectional link delay toward A as 500ms
- 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
- on B, configure unidirectional link delay toward A as 1000ms
- 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.