-
Improvement
-
Resolution: Done
-
Highest
-
None
-
None
This issue is meant to address several drawbacks of the current face design and how we use the fib.
- inability to exploit vpp tunnels due to the face design. Currently a face is identified by a IP address (next hop) and an interface, and it requires the interface to have assigned at least an ip address for the NAT operation. Some tunnels do not have an IP address assigned (e.g., MPLS, GRE etc).
- Every time we need to add a new adjacency type available in VPP we need to implement the corresponding face
- Impossible to exploit control and routing ip updates since updates to hICN entries requires specific cli commands and api
The new design will:
- Implement a single generic face that uses a dpo to move the vlib_buffer to the next node. In this case we are independent to the adjacency implementation and we can stack on top on other dpo that are not an adjacency (compatibility with udp tunnels)
- Use a vrf to contain the hICN routes. The default fib will contain the routes to every routable prefix. hICN prefixes will be contained in the default fib as well and treated as regular ip prefixes. hICN prefixes will have an entry in the vrf as well containing the hicn dpo. Next hops in the hicn dpo will be synchronised with the next hops in the corresponding entry in the default fib. For each next hop in the default fib there will be a face in the hicn dpo in the vrf
- A single api will allow the user to tag a prefix as an hICN prefix which will trigger the synchronisation between the vrf and the fib.