Feature #5029
Updated by Teng Liang about 5 years ago
Self-learning mainly handles When receiving a no-route NACK from one next hop, the no-nexthop case, while best-route handles better with multiple forwarding plane should be able to try other next hops and Interest retransmission. To provide a better strategy, we plan to merge self-learning into best-route. if there are any. The ideal case is to make self-learning a module that can be easily added to strategies. However, how to modularize self-learning is not the task of this issue. After the code merging, the main issue left is how to handle NACK. The current NACK handler picks the NACK with the least severe reason (if there are multiple NACKs), and send it back to downstreams. Currently, Best-route strategy uses this handler. In our tests, where there are two paths to different producers. Best-route picks one path and gets NACK (because we killed the producer), then it forwards the NACK back to consumer instead of trying an alternative path. If the consumer app gives up on receiving no-route NACK (e.g., ndncatchunks), it This task is over. To improve the NACK handling, we give a different design, i.e., when receiving a no-route NACK from one next hop, the forwarding plane should be able to try other next hops if there are any. More specifically, add operations including: * Send Interest to an alternative unused next hop on receiving a no-route NACK in best-route strategy * Once all next hops return no-route NACK * if this node is consumer, reinitiate discovery Interest flooding in the self-learning module * if this node is not consumer, send the NACK back to downstreams It is better to implement the new NACK handler as a module, so other strategies can use it.