Compare commits

...

2 commits

View file

@ -10,14 +10,25 @@
\usepackage{texlib/todo}
\usepackage{booktabs}
\usepackage[normalem]{ulem}
\usepackage[thicklines]{cancel}
\renewcommand{\CancelColor}{\color{red}}
%\usepackage{inconsolata}
\lstdefinelanguage{iproute} {
morekeywords={inet6},
sensitive=true,
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{Announcing IPv4 routes with an IPv6 next-hop in the Babel
routing protocol}
\subtitle{\textit{aka.} draft-bastian-babel-v4ov6}
\subtitle{\textit{aka.}
\href{https://datatracker.ietf.org/doc/draft-bastian-babel-v4ov6/}{
draft-bastian-babel-v4ov6}}
\author[\slidecountline]
{Théophile Bastian, Juliusz Chroboczek}
\date{}
@ -34,7 +45,8 @@ routing protocol}
\begin{frame}{Traditional routing}
\begin{align*}
\text{Network prefix (IPvX)} &\longrightarrow \text{Next-Hop (IPvX)}
\text{Network prefix (IPvX)} \quad &\longrightarrow
\quad \text{Next-Hop (IPvX)}
\end{align*}
\pause{}
@ -50,12 +62,11 @@ routing protocol}
default & & 10.42.0.254 \\
10.102.0.0/16 & & 10.102.0.1 \\
10.102.10.0/24 & & 10.102.10.1 \\
\only<3>{10.0.0.0/8 & & \sout{fd80:1::1}} \\
\only<3>{10.0.0.0/8 & & % \makebox[0pt]{\color{red}---}
\xcancel{fd80:1::1}} \\
\bottomrule
\end{tabular}
\end{table}
\todo{Better strikeout}
\end{frame}
\begin{frame}{The router's job}
@ -89,9 +100,72 @@ routing protocol}
\item IPv6 has \alert{link-local} and \alert{automatic addresses}
(SLAAC)
\begin{itemize}
\item no need for DHCP or IP configuration \emph{at all}!
\item no need for DHCP or IP addresses configuration \emph{at all}!
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Supported in Linux since 5.2}
\begin{block}{d1566268 -- 2019-04-05 -- ipv4: Allow ipv6 gateway with ipv4 routes}
\quad{}Add support for \lstbash{RTA_VIA} and allow an IPv6 nexthop for v4
routes.
\end{block}
\vspace{1em}
\begin{itemize}
\item{} Usually, add a v4 route with
\begin{lstlisting}[language=iproute, numbers=none]
# ip route add 10.42.0.0/16 via 10.40.0.42 dev eno1
\end{lstlisting}
\item{} v4-over-v6 (recent kernel):
\begin{lstlisting}[language=iproute, numbers=none]
# ip route add 10.42.0.0/16 via inet6 fe80::a0de:baf:b39b dev eno1
\end{lstlisting}
\end{itemize}
\end{frame}
\section{Babel protocol extension}
\begin{frame}{Advertising v4-over-v6 routes}
\textbf{An IPv4 interface} never announces v4-over-v6 routes
\vspace{1em}
\textbf{A v6-only interface}
\begin{itemize}
\item{} \alert{Installs a v4 route} nevertheless when receiving it
\item{} \alert{Announces a v4-over-v6 route} for each v4 route
\end{itemize}
\end{frame}
\begin{frame}{Introducing a new AE}
In Babel, \alert{Address Encodings} (AEs) define the type of address/prefix
contained in a TLV.
\begin{itemize}
\item IPv4 address
\item IPv6 address
\item link-local IPv6 address
\item[$\bigstar$] \alert{v4-over-v6 address}
\end{itemize}
\end{frame}
\begin{frame}{Backwards compatibility}
\textbf{With older implementations}
\begin{itemize}
\item Ignore v4-over-v6 routes
\item No state updates missed
\end{itemize}
\vspace{2em}
\textbf{With older kernels}
\begin{itemize}
\item Won't advertise a route that cannot be locally set
\item In babeld, detect kernel version
\end{itemize}
\end{frame}
\end{document}