Task #1124
closedTask #1115: Design Face and Prefix registration protocol
FIB management protocol
100%
Description
Define a FIB management protocol that can insert/delete FIB entry, and add/remove nexthop record.
Each nexthop is associated with a cost.
The cost represents a preference of this nexthop.
A nexthop with lower cost is prefered to a nexthop with higher cost.
Protocol: FibMgmt
Updated by Junxiao Shi almost 11 years ago
- Due date changed from 01/26/2014 to 01/24/2014
- Status changed from New to In Progress
- Start date changed from 01/22/2014 to 01/24/2014
- Estimated time changed from 3.00 h to 1.50 h
Updated by Junxiao Shi almost 11 years ago
- Status changed from In Progress to Resolved
- % Done changed from 0 to 100
Draft is on PrefixRegistration and needs review.
CAPTURE and set strategy on that document should have a separate task, because they are out of this task's scope.
Updated by Junxiao Shi almost 11 years ago
- Subject changed from prefix registration protocol to FIB management protocol
- Description updated (diff)
20140124 meeting decides that child inheritance is the responsibility of control plane process nrd
.
This is renamed as NFD FIB Management protocol.
Updated by Junxiao Shi almost 11 years ago
I notice that @Wentao Shang added ForwardingFlags
field into PrefixRegOptions
.
Please explain the reason.
Updated by Alex Afanasyev almost 11 years ago
It is still defined (as optional) in wiki's description of the protocol... Adding definition of the ForwardingFlags (nonNegativeInteger) was my suggestion, since it was not defined anywhere else.
Updated by Junxiao Shi almost 11 years ago
In RFC, an optional field of a structure means that this field can be present or absent in the structure, but every implementation still needs to understand and process it.
NFD FIB Management protocol does not need ForwardingFlags.
ForwardingFlags should be defined in NRD Prefix Registration protocol.
Updated by Junxiao Shi almost 11 years ago
NFD FIB Management protocol (rev6) is missing one feature: delete a FIB entry.
prefixunreg command removes a nexthop from a FIB entry.
When the last nexthop is removed, the FIB entry is still retained.
Therefore, once a FIB entry is created, it's there forever.
The alternative is, removing the last nexthop deletes the FIB entry.
This makes it impossible to create a FIB entry that has zero nexthop.
I propose to take the alternative: removing the last nexthop deletes the FIB entry.
This is the common case.
If there's a need for having a FIB entry with zero nexthop, a separate command could be defined.
Updated by Alex Afanasyev almost 11 years ago
Updated by Junxiao Shi almost 11 years ago
There is still a problem: FIB entry not only contains the nexthop list, but also indicates a strategy choice.
If a FIB entry contains a strategy choice, but its last nexthop is removed, deleting the FIB entry would also delete the strategy choice.
On the other side, if prefixstrategy command causes insertion of a FIB entry, the nexthop list is copied from its parent.
NRD does not know the existence of a new FIB entry, so it would not update this nexthop list.
Updated by Junxiao Shi almost 11 years ago
I also created a template for NRD wiki page.
NRD does not belong in this project.
A separate project should be created for NRD, and this page should be moved to NRD project.
Updated by Alex Afanasyev almost 11 years ago
Wait a minute. I thought strategy selection is not directly tight to FIB entries. We have (should have) additional table that keeps mapping between namespace and strategy and this table is consulted every time a new FIB entry is created (not parent FIB entry, in UML, there is a map in FibManager for that).
Updated by Junxiao Shi almost 11 years ago
- strategy table defines:
- / uses original strategy
- /A uses broadcast strategy
- Removing the last nexthop of /A deletes the FIB entry
- Interest /A/B matches FIB entry / which says "original strategy", but it should be processed by broadcast strategy.
Updated by Junxiao Shi almost 11 years ago
FIB entry insertion and deletion is now explicit, as decided in 20140129 conference call.
Updated by Alex Afanasyev almost 11 years ago
I will do an update of the FIB management protocol. Having separate definitions for each operation is overkill, I want to have just a generic FibManagementOptions and then define which fields are required for each operation.
Also. I think we should update the base protocol as well (may be later). Instead of just /localhost/nfd/<verb>/...
, we should have /localhost/nfd/<management-module>/<verb>/...
. For example, for FIB management it would be /localhost/nfd/fib/nexthop-insert
.
Updated by Alex Afanasyev almost 11 years ago
One more update of the spec: re-assigned numbers. The types are now assigned from the range specifically reserved for forwarding daemon use (I have updated TLV spec for that). To simplify our future debugging, the type assignment right now is non-overlapping.
Updated by Alex Afanasyev over 10 years ago
- Status changed from Resolved to Closed
Updated by Alex Afanasyev over 10 years ago
- Status changed from Closed to Feedback
I'd like to reopen this issue. I'm really confused about the decision of this explicit FIB creation and having FIB entries without any next hops. What is the point of that?
We can have command to delete FIB entry, but that would simply remove FIB entry and all its next hops, not just an empty FIB entry.
Updated by Junxiao Shi over 10 years ago
- Description updated (diff)
- Due date deleted (
01/24/2014) - Start date deleted (
01/24/2014)
Updated by Junxiao Shi over 10 years ago
20140216 conference call discussed the reason that apps should register prefix with NRD, not with NFD:
- RIB maintenance work is offloaded to NRD: inheritance, etc
- if app registers prefix with NFD, the changes may not be consistent with changes made by routing protocols
NRD should be considered as "part of the forwarding platform", and they must run together.
If either NFD or NRD fails, "forwarding platform" also fails.
In the future, NFD and NRD might be combined into one process, under different threads.
Updated by Junxiao Shi over 10 years ago
- Status changed from Feedback to Closed