53 lines
2.6 KiB
TeX
53 lines
2.6 KiB
TeX
\section{FIB Interaction}
|
|
\label{sec:fib}
|
|
|
|
The FIB module interacts with NFD to perform registrations and
|
|
unregistrations of routes. By registration, what is meant is the
|
|
submission of a RIB route to the local NFD, which includes a name
|
|
prefix, the Face ID of the nexthop, an expiration time, and the
|
|
calculated cost from the Routing Table calculation. Additionally, NLSR
|
|
sets a field to tell NFD that the route originates from NLSR, and sets
|
|
a route inheritance flag.
|
|
|
|
The expiration time for a route is pegged at double the value of the
|
|
LSA refresh time, which is defined by \texttt{lsa-refresh-time} in the
|
|
configuration file. The route inheritance flag is set to capture,
|
|
which forbids NFD from using a shorter prefix of the name prefix for
|
|
forwarding.
|
|
|
|
More information about NFD's RIB can be found on the
|
|
\href{https://redmine.named-data.net/projects/nfd/wiki/RibMgmt}{Redmine
|
|
wiki}. An important thing to note is that NFD has a module called
|
|
the FIB. Anywhere in this guide, the word ``FIB'' refers to the NLSR
|
|
FIB, which models NLSR's expectation of how NFD would forward packets.
|
|
|
|
The FIB is directed by the Name Prefix Table, which registers and
|
|
unregisters routes based on calculations by the Routing Table and
|
|
advertisements from LSAs. The connection between the FIB and the NPT
|
|
is through the \texttt{Fib::update()} method.
|
|
|
|
\subsection{Updating the FIB}
|
|
Generally, updating the FIB looks like this:
|
|
\begin{itemize}
|
|
\item Sort the list of next hops for the prefix, by cost.
|
|
\item Take the cheapest \texttt{max-faces-per-prefix} hops. This can be set to have no limit, so all next hops are registered.
|
|
\item Send a RIB route registration command for each next hop.
|
|
\item Send a RIB route unregistration command for any next hops that
|
|
have dropped out of the list. This includes next hops that became
|
|
invalid since the last Routing Table calculation, as well as valid
|
|
hops that are no longer in the top \texttt{max-faces-per-prefix}
|
|
next hops.
|
|
\end{itemize}
|
|
|
|
If there are more passed next hops than the
|
|
\texttt{max-faces-per-prefix}, the FIB module will only use the first
|
|
\texttt{max-faces-per-prefix} number of next hops from the sorted
|
|
list. If there are less passed next hops than
|
|
\texttt{max-faces-per-prefix}, the FIB module will use all of the next hops.
|
|
Specifically, when the NPT updates the FIB, the FIB creates entries so
|
|
that it can compute the difference between the set of new next hops,
|
|
and the set of old next hops that were registered at the last update.
|
|
These entries are unique on the destination name prefix. The FIB will
|
|
update an existing entry instead of creating a new one, which may
|
|
involve unregistering old next hops, as mentioned above.
|