Task #3033
closedForwarding design: Nack
Added by Junxiao Shi over 9 years ago. Updated over 5 years ago.
100%
Description
Design forwarding pipelines and strategy API to support Nack.
Files
forwarding-nack_20150719.pptx (52.1 KB) forwarding-nack_20150719.pptx | Junxiao Shi, 07/19/2015 05:23 PM | ||
forwarding-nack_20150729.pptx (50.9 KB) forwarding-nack_20150729.pptx | Junxiao Shi, 07/29/2015 08:47 AM | ||
forwarding-nack_20150913.pptx (51.9 KB) forwarding-nack_20150913.pptx | Junxiao Shi, 09/13/2015 08:51 PM | ||
forwarding-nack_20150924.pptx (52.6 KB) forwarding-nack_20150924.pptx | Junxiao Shi, 09/24/2015 05:01 PM |
Updated by Junxiao Shi over 9 years ago
- File forwarding-nack_20150719.pptx forwarding-nack_20150719.pptx added
- % Done changed from 0 to 40
Initial design contains changes in forwarding pipelines, strategy API, and best-route strategy.
Some forwarding pipelines design is copied from nack_20140731.pptx
.
A major problem in forwarding pipelines is: it's unclear how NACK works on a multi-access link.
Another problem is in the current design for best-route strategy:
- FIB entry has upstreams P,Q
- consumer sends Interest, which is forwarded to P
- P returns Congestion, which is returned to consumer
- consumer retransmits Interest, which is forwarded to Q
- Q returns NoRoute
At this moment, "least severe" (per #3032 note-2 rule) among all NackReasons is Congestion, but we've already returned that.
Should we clear recorded NackReasons when the previous NACK is returned, and return NoRoute this time?
Updated by Junxiao Shi over 9 years ago
- File forwarding-nack_20150729.pptx forwarding-nack_20150729.pptx added
- % Done changed from 40 to 50
20150720 conference call discussed the second problem in note-2.
We conclude that "least severe" is still correct in this case, because when downstream is told "Congestion" and retransmits, the Interest can still go to P.
Updated by Junxiao Shi over 9 years ago
- Related to Task #3032: Determine rules to combine NackReasons added
Updated by Junxiao Shi about 9 years ago
20150903 conference call approves the design in note-3.
This issue will remain open until NACK behavior of all strategies are designed.
Updated by Junxiao Shi about 9 years ago
- Related to Feature #3156: NACK in forwarding and best-route added
Updated by Junxiao Shi about 9 years ago
best-route design in note-3 has a limitation:
P
|
R
/ \
B---C
| |
A D
In this topology, P announces /P prefix, every link has a delay of 10ms, retransmission suppression is configured at 2ms.
- 0ms: A and D express Interest /P/1 at the same time. A's Interest is forwarded along A-B-R; B's Interest is forwarded along D-C-R.
- 5ms: A and D retransmits the Interest at the same time. A's Interest is forwarded along A-B-C; B's Interest is forwarded along D-C-B.
- 20ms: R receives the two Interests from step1, but notices R-P link has failed, and thus returns a Nack to B and C.
- 25ms: B and C receive the two Interests from step2, and forward them again to R.
- 30ms: B and C receive the Nack from R. B is still waiting for the response from C, so it will not return the Nack to A and C at this moment. C is still waiting for the response from B, so it will not return the Nack to D and B at this moment.
- 35ms: R receives the two Interests from step4, and returns Nack again because R-P link is still down.
- 45ms: B and C receive the Nack again from R. But B is still waiting for C, and C is still waiting for B.
Both B and C are waiting for each other, until InterestLifetime expires. No Nack can be sent in this situation.
Updated by Anonymous about 9 years ago
I think the time of 2. should be "15ms" so that the other times match up.
Isn't the retransmission timeout of the scenario (5ms? 15ms?) shorter than expected from real applications?
Does the problem still exist when the retx timeout is higher than the RTT to the producer? (my guess would be that it would not)
Updated by Junxiao Shi about 9 years ago
Reply to note-8:
The timestamp is note-7 step2 is intended to be 5ms. The Interest expressed by A in this step arrives at B at +15ms, and arrives at C at +25ms in step4, where C forwards it to R.
Consumers can set any retransmission timer as they want. The "exponential suppression" procedure (#1913) permits the first retx after 1ms, so a retransmission after 5ms will be forwarded.
Even if we could blame the consumer in this scenario, a slightly different case would be: there are two consumers A1 and A2 connected to B; A1 expresses an Interest in step1, and A2 expresses an Interest in step2. This leads to the same situation.
Updated by Junxiao Shi about 9 years ago
20150910 conference call discussed note-7 "live deadlock" problem.
The solution is:
At step5, B should return NACK to C, because at this moment B is unable to satisfy C's Interest without using C as an upstream.
But B shouldn't return NACK to A yet, because C could return Data to satisfy A.
C does the same and returns NACK to B.
After B receives the NACK from C, B would be able to return NACK to A because both R and C have returned NACK.
I'll update the design to fix this problem.
Updated by Junxiao Shi about 9 years ago
- File forwarding-nack_20150913.pptx forwarding-nack_20150913.pptx added
- % Done changed from 50 to 70
Updated by Junxiao Shi about 9 years ago
- File forwarding-nack_20150924.pptx forwarding-nack_20150924.pptx added
- Subject changed from Forwarding design: NACK to Forwarding design: Nack
- Description updated (diff)
Design is updated to disable Nack on multi-access faces. See #3156 note-15 note-16.
Updated by Junxiao Shi about 9 years ago
- Status changed from In Progress to Closed
- % Done changed from 70 to 100
Updated by Teng Liang over 5 years ago
Note-7 only describes a 2-node scenario, which can be easily extend to an "n-node live deadlock" case. Therefore, a more general condition to handle nack is that - if all upstreams that are not downstream have returned NACK, a NACK is sent back to all downstream.
Updated by Junxiao Shi over 5 years ago
"n-node live deadlock" case.
Draw a topology and write a packet timing sequence to explain what this is.