From 0d53a7606b4da0b4be5f62d81c457a52c5e0ad0c Mon Sep 17 00:00:00 2001 From: Chriztoffer Date: Sun, 1 Sep 2024 22:07:06 +0200 Subject: [PATCH] Add section regarding bgp sendholdtimer --- chapter/layer3.tex | 65 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 17 deletions(-) diff --git a/chapter/layer3.tex b/chapter/layer3.tex index 1b19033..6769d8c 100644 --- a/chapter/layer3.tex +++ b/chapter/layer3.tex @@ -226,12 +226,12 @@ The version of rip supporting ipv6. different to the standard rip in the ng vers \section{Babel} -Babel is built on the principles of 1) \gls{dsdv}, 2) \gls{aodv}, and 3) +Babel is built on the principles of 1) \gls{dsdv}, 2) \gls{aodv}, and 3) \gls{eigrp} protocols. -Made for hybrid networks\footnote{network contains wired and wireless links} +Made for hybrid networks\footnote{network contains wired and wireless links} and can account for a high level of instability on wireless links. -Babel has been reported to be running stable in unstable wireless networks with +Babel has been reported to be running stable in unstable wireless networks with a level of reliability and fast convergence. \begin{itemize} @@ -239,24 +239,24 @@ a level of reliability and fast convergence. \item Uses distributed Bellman-Ford algorithm, \item \rfc{6126} in 45 pages, \textit{(28 are normative)} \begin{enumerate} - \item Updates by \rfc{7298} {\scriptsize (The Babel extension + \item Updates by \rfc{7298} {\scriptsize (The Babel extension mechanism)}, and - \item \rfc{7557} {\scriptsize (Babel \gls{hmac} Cryptographic + \item \rfc{7557} {\scriptsize (Babel \gls{hmac} Cryptographic Authentication)}. \end{enumerate} \item Highly extensible protocol,\cite{BabelDoe86:online} \item Supports \gls{ip4} and \gls{ip6}. \end{itemize} -Babel on \underline{wired} networks uses by default hop-count. Can be +Babel on \underline{wired} networks uses by default hop-count. Can be configured to include several values when computing the metrics. -On \underline{wireless} networks Babel should be configured to take into -account factors such as link latency, packet loss, hop-count, and radio +On \underline{wireless} networks Babel should be configured to take into +account factors such as link latency, packet loss, hop-count, and radio diversity. \subsection{Protocol support} -Currently the following projects include support for Babel: +Currently the following projects include support for Babel: \cite{Babel-al30:online} \begin{itemize} @@ -312,26 +312,26 @@ Route-maps is used to target a select set of routes and either modify/add/remove \begin{enumerate}[label={\alph*)}] \item \Gls{bgp} communities, \item \Gls{ip} prefix, - \item \Gls{bgp} as-path, + \item \Gls{bgp} as-path, \end{enumerate} \end{itemize} An simple example of using route-maps is \begin{cisco} -ip prefix-list 1 permit 172.16.0.0/16 -ip prefix-list 2 permit 192.168.1.0/24 +ip prefix-list 1 permit 172.16.0.0/16 +ip prefix-list 2 permit 192.168.1.0/24 ! -route-map RED permit 10 - match ip address prefix-list 1 +route-map RED permit 10 + match ip address prefix-list 1 set ip next hop 10.1.1.1 continue 20 ! Continues to apply rules normally only ! applied to prefix-list 2. To apply to ! prefix-list 1, too. ! Any attributes set in '20' will ! override any set during '10'. -route-map RED permit 20 - match ip address prefix-list 2 +route-map RED permit 20 + match ip address prefix-list 2 set ip next hop 10.2.2.2 ! Last rule overrides previous rules from ! previous '10' rule-set. \end{cisco} @@ -368,4 +368,35 @@ Problems by running \textit{Full Mesh} is the formula of \[ iBGPsessions = n*(n- \item a \gls{ttl} of 1 is the default\footnote{Multi-hop \gls{ebgp} can thou be configured and therefore increase the max-\gls{ttl} value}, \item distance is set to 20 compared to 200 for \gls{ibgp} routes, \item Next hop does \textit{not} change for \gls{ebgp} routes advertised to \gls{ibgp} neighbours \textit{by-default}\footnote{Often times it is necessary to tell a router to set itself as the next-hop before advertising to \gls{ibgp} neighbours}. -\end{enumerate} \ No newline at end of file +\end{enumerate} + +\subsection[bgpzombies]{Border Gateway Protocol Zombies} + +\gls{bgp} zombies\cite{ietf-idr-bgp-sendholdtimer-00} can occuer for a multitude of reasons. Depending on the implementation. Examples are + +\begin{enumerate} + \item Overloaded control plane + \item Unable to send out update/keepalives due to full out queues + \item Stuck TCP session the \gls{bgp} daemon is unaware of (e.g. tcp window size changed to 0) +\end{enumerate} + +The consequence of \gls{bgp} sessions not being able to close properly. Can sometimes result in zombie routes. Where the router originating the route. Due to having one or more stuck sessions. Are unable to send out WITHDRAW messages. Thereby other routers think the route is still active. And does not withdraw the route from their own \gls{rib}. Ending up with a \gls{rib} containing STALL routes. + +One workaround to get rid of zombie routes is to completely reset your routers \gls{rib}. This can be done by example rebooting network edge routers\cite{Navigati54:online}. + +As of writing (Nov 2023) the following known public implementations have implemented the draft, + +\begin{enumerate} + \item FRRouting\cite{bgpdimpl26:online} + \item neo-bgp\cite{Whatdoes40:online} (bgp.tools) + \item OpenBGPD\cite{Rebgpdse40:online} +\end{enumerate} + +As of writing (Nov 2023) the following known public implementations are working on implementing the draft, + +\begin{enumerate} + \item BIRD \url{https://gitlab.nic.cz/labs/bird/}\\ + branch BGP_SendHoldTimer +\end{enumerate} + +It is unknown when commercial vendors will implement the current internet draft. This will most likely not happen until the draft has been adopted as an official RFC. \ No newline at end of file