Task #1214
closedForward Interest according to app-chosen nexthops
100%
Description
Allow an "app-chosen nexthops" field in LocalControlHeader attached to an Interest.
This field can contain one or more FaceIds.
When this field is specified and the packet comes from an eligible Face, it is a suggestion to the strategy responsible for the namespace.
Develop a forwarding strategy that recognizes and follows "app-chosen nexthops" when available.
For packets without "app-chosen nexthops" suggestion, it follows to the first nexthop as specified in FIB.
Updated by Junxiao Shi almost 11 years ago
Potential design problem:
Should PIT entry, InRecord, OutRecord indicate that app-chosen nexthops have been used?
Forwarding strategy should not be invoked when PIT entry is satisfied, because it's not invoked during Interest processing, and would get confused.
The complication is that a PIT entry may aggregate both downstreams with app-chosen nexthops, and downstreams without this option.
Updated by Alex Afanasyev almost 11 years ago
Good question... Having reference to strategy in PIT (or out record) seem to solve the problem, but it also looks like additional overhead...
May be we should update the processing and instead of bypassing the strategy, just use the list of supplied FaceId as a suggested input to the strategy (instead of FIB-based nexthops). Would that be better?
Updated by Junxiao Shi almost 11 years ago
When app-chosen nexthops is used, the Interest MUST go to all these nexthops immediately.
Strategy has different behavior: send all, try one by one, or ignore nexthop list completely.
Strategy should not be relied on (and should not be required) to deal with app-chosen nexthops.
Updated by Alex Afanasyev almost 11 years ago
We talked yesterday and there is actually a very simple solution to the problem. Bypassing the strategy is actually not a common operation that should work for all possible prefixes, but a special operation that should work at least for the routing daemon.
So. What we have decided is that we require a special strategy to be set for the prefix, and this special strategy would require explicit FaceId in LocalControlHeader in order to do any kind of forwarding. In other words, we not going to have any special treatment for LocalControlHeader, rather we make a separate strategy that known exclusively about the LocalControlHeader. Given this, the Interest processing pipeline gets a little simpler, and the problem you mentioned will not exist anymore.
Updated by Alex Afanasyev almost 11 years ago
There is an option to use Faces specified in LocalControlHeader as a suggestion for the strategy. But this still is not necessary and having a special dedicated strategy for dealing with LocalControlHeader-specified faces is enough.
This approach would work for both routing application and traceroute. In traceroute case, the trace server is actually registering a special /trace/
prefix and does (directed) forwarding only within this prefix (e.g., to trace /ndn/edu/ucla
, ndn-traceroute will try to send interests to /trace/ndn/edu/ucla
, which will be handled entirely by the traceroute daemon).
Updated by Junxiao Shi almost 11 years ago
- Description updated (diff)
- Due date deleted (
01/31/2014) - Start date deleted (
01/31/2014)
Updated by Junxiao Shi almost 11 years ago
- Status changed from New to In Progress
- Assignee set to Junxiao Shi
Updated by Junxiao Shi almost 11 years ago
- Status changed from In Progress to Code review
- % Done changed from 0 to 70
- Estimated time changed from 4.00 h to 2.00 h
Updated by Junxiao Shi almost 11 years ago
- Status changed from Code review to Closed
- % Done changed from 70 to 100