Feature #5029
Updated by Davide Pesavento about 5 years ago
The current version of self-learning forwarding strategy mainly handles the "no-next-hop" case, and uses multicast to one or more eligible faces. next hops. This is far from being useful or robust in real usage, so we plan to improve self-learning in four aspects: * **Interest Retransmission Suppression** * Add a retransmission suppression decision algorithm that suppresses Interest retransmissions using exponential backoff. * **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. * **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 consumer, reinitiate discovery Interest flooding * if this node is not consumer, send the NACK back to downstreams * **Timeout handling** * If the same retransmitted Interest has been forwarded 5 times (`RETX_TRIGGER_BROADCAST_COUNT`), reinitiate Interest flooding. Read [self-learning packet processing](https://github.com/philoL/NDN-Self-Learning/blob/master/self-learning-v2.pdf) flows for more details.