Feature #5029
Updated by Teng Liang about 4 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 the following five aspects: 1. **Interest processing** pipelines, the added mechanisms are borrowed from the best route forwarding strategies: * **Interest Retransmission Suppression** ([Code Review](https://gerrit.named-data.net/c/NFD/+/6230/1)) * Add a retransmission suppression decision algorithm that suppresses Interest retransmissions using exponential backoff. * **Interest Retransmission Forwarding** * For a retransmitted Interest that bypass the suppression period, forward it to an unused next hop that has the lowest cost; if all next hops have been used, forward it in round-robin manner starting from the-lowest-cost next hop. * **Add afterCsHit trigger** ([Code Review](https://gerrit.named-data.net/c/NFD/+/6231/)) * Attache PA to cached Data if necessary (#5018) 2. **Data processing** pipelines: ([Code Review](https://gerrit.named-data.net/c/NFD/+/6231/)) * **Creating a unicast Face on receiving data from a multi-access Face** * This feature is designed for WiFi AP-station mode (#4973) 3. **NACK processing** pipelines: ([Code Review](https://gerrit.named-data.net/c/NFD/+/6230/1)) * **NACK handling** * Send Interest to an eligible unused next hop on receiving a no-route NACK * Once all next hops return no-route NACK; if this node is not consumer, send the NACK back to downstream 4. **NFD configuration**: * **Make NFD work out-of-the-box in a local network** * Set self-learning as the default forwarding strategy for `/` in nfd.conf.sample (#5031) 5. **Unit Testing** (#5026) ([Code Review](https://gerrit.named-data.net/c/NFD/+/6226)) 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. Auto-created faces should have "on-demand" persistency. 3. Deal with duplicate transmissions for multiple multicast faces on the same physical interface 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 Read [self-learning packet processing](https://github.com/philoL/NDN-Self-Learning/blob/master/self-learning-v2.pdf) flows for more details.