Composable strategy building blocks
Design a framework for composing strategy from building blocks.
A building block is a functional unit in forward strategy.
A forwarding strategy can be composed by connecting building blocks in a certain way, so that it has certain features and behaviors.
The design should answer the following:
- What building blocks are needed?
- How building blocks can be connected together?
- How do building blocks store information (such as measurements)?
- Can stored information be shared?
- Demonstrate how to compose commonly used strategies.
- How to protect against a malicious strategy?
- How to improve efficiency of a composed strategy?
Updated by Junxiao Shi almost 5 years ago
I received one scenario which can potentially be solved by composing a strategy:
it's a specific case that I don't want a local face, which has the matching FIB entry for an interest, to receive that interest from one local application, while it can receive that interest from another remote application
Updated by Nicholas Gordon about 3 years ago
This may only be tangentially related, and it may already be well-known by Junxiao and others, but I've recently read the Click router paper (https://github.com/kohler/click), and I think it is very closely related to this idea. This can at least serve as collected knowledge on this issue.
Updated by Junxiao Shi about 3 years ago
Click modular router is exactly where this idea comes from. NFD's forwarding pipelines design is also inspired by Click.
However, implementing the whole NDN router in Click is difficult, because NDN makes heavy use of states. Each table can be translated into an element in Click, but the complexity of such element violates Click's principle of composing simple elements together.
Dear folks, I was asked to look into this task. There is not too much information in this thread over 5 years. Due to my limited experience with NFD, could someone help answer the following questions?
- Is it possible to implement this for the current NFD?
- If possible, what are the hard parts? (or why nobody touches this task in 5 years)
Updated by Junxiao Shi 2 months ago
- Assignee deleted (
This is a design task, not an implementation task.
Is it possible to implement this for the current NFD?
Yes, everything is possible.
If possible, what are the hard parts? (or why nobody touches this task in 5 years)
It needs to completely rewrite forwarding pipelines into a modular structure.
The difficulty in getting agreement with reviewers make me scared.