blob: c5aa51f61066b334bb43208000144bcba7f7838a [file] [log] [blame]
Neale Rannsdfd39542020-11-09 10:09:42 +00001.. _missing:
2
3Missing Functionality
4---------------------
5
6A list of functionality that the FIB does not currently provide.
7
8
9PIC Edge Backup Paths
10^^^^^^^^^^^^^^^^^^^^^
11
12FIB supports the concept of path 'preference'. Only paths that have
13the best preference contribute to forwarding. Only once all the paths with
14the best preference go down do the paths with the next best preference
15contribute.
16
17In BGP PIC edge, BGP would install the primary paths and the backup
18paths. With expectation that backups are only used once all primaries
19fail; this is the same behaviour that FIB's preference sets provide.
20
21However, in order to get prefix independent convergence, one must be
22able to only modify the path-list's load-balance map (LBM) to choose the
23paths to use. Hence the paths must already be in the map, and
24conversely must be in the fib_entry's load-balance (LB). In other
25words, to use backup paths with PIC, the fib_entry's LB must include
26the backup paths, and the path-lists LBM must map from the backups to
27the primaries.
28
29This is change that is reasonably easy w.r.t. to knowing what to
30change, but hard to get right and hard to test.
31
32
33Loop Free Alternate Paths
34^^^^^^^^^^^^^^^^^^^^^^^^^^
35
36Contrary to the BGP approach for path backups, an IGP could install a
37loop free alternate (LFA) path to achieve fast re-route (FRR).
38
39Because of the way the LFA paths are calculated by the IGP an LFA backup
40path is always paired with a primary. VPP FIB does not support this
41primary-backup pair relationship.
42
43In intent of LFA FRR is/was to get below the magic 50ms mark. To do
44this the expectation is/was that one would need in the forwarding
45graph an object that represents a path's state. This object would be
46checked for each packet being sent. If the path is up, the graph (an
47adjacency since it's the IGP) for the primary path is taken, if it's
48down the graph for the backup is taken. When a path goes down only
49this indirection object needs to be updated to affect all
50routes. Naturally, the indirection would incur a performance cost, but
51we know that there are many performance-convergence trade-offs in a
52FIB design.
53
54Should VPP's FIB support this feature? It all depends on the
5550ms. LFA FRR comes from the era when routers ran on lower performance
56CPUs and interface down was an interrupt. VPP typically has plenty of
57gas but runs as a user space process. So, can it update all routes in
58under 50ms on a meaty CPU and can the OS deliver the interface down
59within the time requirements? I don't have the answers to either
60question.
61
62
63Extranets for Multicast
64^^^^^^^^^^^^^^^^^^^^^^^
65
66When a unicast prefix is present in two different tables, then it
67refers to a different set of devices. When the prefix is imported it
68refers to the same set of devices. If the set of paths to reach the
69prefix is different in the import and export table, it doesn't matter,
70since they both refer to the same devices, so either set can be
71used. Therefore, FIB's usual source preference rules can apply. The
72'import' source is lower priority.
73
74When a multicast prefix is present in two different tables, then it's
75two different flows referring to two different set of receivers. When
76the prefix is imported, then it refers to the same flow and two
77different sets of receivers. In other words, the receiver set in the
78import table needs to be the super set of receivers.
79
80There are two ways one might consider doing this; merging the
81path-lists or replicating the packet first into each table.
82
83
84Collapsing
85^^^^^^^^^^
86
87Read :ref:`fastconvergence`
88
89Collapsing the DPO graph for recursive routes doesn't have to be an
90all or nothing. Easy cases:
91
92
93- A recursive prefix with only one path and a path-list that is not
94 popular, could stack directly on the LB of the via entry.
95- A recursive prefix with only multiple paths and a path-list that is not
96 popular, could construct a new load balance using the choices
97 present in each bucket of its via entries. The choices in the new LB
98 though would need to reflect the relative weighting.
99
100
101The condition of an non-popular path-list means that the LB doesn't
102have an LB map and hence it needs to be updated for convergence to
103occur.
104
105The more difficult cases come when the recursive prefix has labels
106which need to be stack on the via entries' choices.
107
108You might also envision a global configuration that always collapses all
109chains, which could be used in deployments where convergence is not a
110priority.