Feature #5029
Updated by Teng Liang over 4 years ago
Discussion on May 15 2020 1. NACK discovery Interests from unicast face if there is no next hops. This helps an edge case that an outside network reacts quicker to NACK from a local network with only unicast faces. 2. Created Face from self-learning should be removed after a period of idle time (similar to an on-demand face behavior) 3. Deal with duplicate transmissions for multiple multicast faces on the same physical interface 3. 4. To make self-learning work at gateways * configure self-learning strategy with local name prefix, e.g., /edu/ucla * enable whitelist and blacklist configuration on Face system to indicate which faces can be used for broadcasting * Self-learning strategy uses face flag to determine broadcasting behavior The current version of self-learning forwarding strategy mainly handles the "no-next-hop" case, and uses multicast to one or more eligible faces. This is far from being useful or robust in real usage, so we plan to improve self-learning in four aspects: * **Interest Retransmission Suppression and aggressive Interest broadcast triggering** * Add a retransmission suppression decision algorithm that suppresses Interest retransmissions using exponential backoff. The same as best route strategy. * **Better next hop choice** * If multiple next hops exist, an eligible next hop with the lowest cost should be picked. For a retransmitted Interest that can be forwarded, forward it to an unused next hop with the lowest cost; if all next hops have been tried, pick the first chosen next hop to forward. The same as best route strategy. * **NACK handling** 1. Send Interest to an eligible unused next hop on receiving a no-route NACK 2. Once all next hops return no-route NACK * if this node is not consumer, send the NACK back to downstreams * **Timeout handling** * When a consecutive of Interests have timed out on a FIB entry, the strategy should trigger Interest broadcasting at consumers. (Not working properly) Read [self-learning packet processing](https://github.com/philoL/NDN-Self-Learning/blob/master/self-learning-v2.pdf) flows for more details.