Feature #5029
Updated by Teng Liang about 6 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. 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 at consumer.
flooding.
Read [self-learning packet processing](https://github.com/philoL/NDN-Self-Learning/blob/master/self-learning-v2.pdf) flows for more details.