Project

General

Profile

Actions

Task #4305

closed

Feature #4279: Self-learning strategy

Self-learning forwarding strategy: issues and design choices

Added by Teng Liang about 7 years ago. Updated about 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
09/27/2017
Due date:
% Done:

0%

Estimated time:

Description

This issue intends to identify and summarize all the problems in implementing the self-learning forwarding strategy in NFD. Besides, it also compares different implementation designs.

Here is the paper about NDN self-learning. The high-level idea of self-learning that a node floods an Interest when no route is found; the Data packet sent back will carry a prefix announcement, and each node along the path will update its FIB and create a route towards the upstream node according to the prefix announcement.

This design is targeted at multi-access and point-to-point link types, ad hoc scenarios are not within the design scope.

Background: the current NFD design - NFD currently implements Ethernet unicast communication in the same way as a UDP tunnel: each NIC has one Ethernet-multicast face configured as either broadcast or ad hoc wireless, and zero or more Ethernet-unicast face for point-to-point communication with specific neighbors.

Issues:

  • #issue-1: how to identify if a multicast face and an unicast face are on the same NIC in a forwarding strategy, so that it doesn't broadcast a packet multiple times to the same shared medium?

  • #issue-2: how to create an unicast ethernet face in a forwarding strategy, since it doesn't have enough information?

  • #issue-3: how to update FIB in a forwarding strategy?

  • #issue-4: suppose a node A creates an unicast face towards the node B, and A sends an Interest through the unicast face to B; when will B create a corresponding unicast face to A? For example, will B receive the Interest and create the face automatically, or this function needs to be added (where to add the code)?

  • #issue-5: how to deal with multiple Interests when FIB states are not set up yet? This is an algorithm design issue.

Junxiao's implementation design

It solves #issue-1 and #issue-2 by refactoring Ethernet unicast/multicast communication and modifying FIB, and it solves #issue-3 by creating a temporary FIB. His design doesn't have the problem in #issue-4, but it doesn't cover #issue-5.

The problem of Junxiao's design is that it is complicated and involves a lot of efforts to solve small problems.

An alternative implementation design:
Keep the current design of ethernet multicast/unicast communication and FIB structure, and solve the issues with other methods.

  • For #issue-1, the localUri attribute in Face can help to identify if faces are on the same NIC and it is available for an forwarding strategy.

  • For #issue-2, NDNLP tags can be used to pass necessary information to an forwarding strategy to create a face.

  • For #issue-3, update FIB through RIB in an forwarding strategy (details are needed).
    Junxiao argued that updating FIB through RIB is asynchronous, which doesn't take effect immediately. Thus it may affect subsequent Interests. I don't think asynchronous operation will make a big difference.

  • For #issue-4, it is similar to UDP unicast scenario (details are needed).

  • For #issue-5, an application probably have some kind of discovery mechanism so it wouldn't send many Interests when the content is not discovered yet. Even an application send many Interests at the same time, as an NFD has no idea if a FIB update will happen soon to serve these Interests, it shouldn't queue these Interests. Thus, these Interests should be flooded when no routes are found.


Files

Actions

Also available in: Atom PDF