talk-v4ov6-ietf108/slides.tex

260 lines
8.1 KiB
TeX

% vim: spell spelllang=en
\documentclass[11pt,xcolor={usenames,dvipsnames},aspectratio=169]{beamer}
\usetheme{metropolis}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{texlib/my_listings}
\usepackage{texlib/todo}
\usepackage{booktabs}
\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.}
\href{https://datatracker.ietf.org/doc/draft-bastian-babel-v4ov6/}{
draft-bastian-babel-v4ov6}}
\author[\slidecountline]
{Théophile Bastian, joint work with Juliusz Chroboczek}
\date{}
%\subject{}
%\logo{}
\institute{
\href{https://ens.fr/}{ENS Paris},
\href{https://www.irif.fr/}{IRIF},
\href{https://www.nexedi.com/}{Nexedi}}
\begin{document}
\maketitle{}
\begin{frame}{Traditional routing}
Babel: \alert{routing protocol}. Only concern: \alert{build the routing
table}.
\vspace{1em}
\begin{table}
\centering
\textbf{Routing table} \\
\medskip
\begin{tabular}{@{} lcl @{}}
\toprule
Network Prefix (IPv6) & $\rightarrow$ & Next-Hop (IPv6)\\
\midrule{}
2001::/64 & & fd80::42 \\
\bottomrule{}\\
\toprule{}
Network Prefix (IPv4) & $\rightarrow$ & Next-Hop (IPv4)\\
\midrule
10.0.0.0/24 & & 10.0.0.1 \\
10.0.0.0/16 & & 10.0.1.1 \\
10.0.0.0/8 & & \xcancel{fe80::f0} \\
\bottomrule
\end{tabular}
\end{table}
\end{frame}
\begin{frame}{The router's job}
\begin{figure}
\centering
\includegraphics[width=\columnwidth]{imgs/pdf/routing.pdf}
\end{figure}
\end{frame}
\begin{frame}{What's under the hood?}
\begin{figure}
\centering
\only<1>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/01.pdf}}
\only<2>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/02.pdf}}
\only<3>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/03.pdf}}
\only<4>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/04.pdf}}
\only<5>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/05.pdf}}
\only<6>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/06.pdf}}
\only<7>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/07.pdf}}
\only<8>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/08.pdf}}
\only<9>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/09.pdf}}
\only<10>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/10.pdf}}
\only<11>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/11.pdf}}
\only<12>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/12.pdf}}
\end{figure}
\end{frame}
\begin{frame}{The idea behind}
\textbf{New type of route!} v4 prefix with v6 next-hop: \alert{v4-over-v6
route}.
\vspace{2em}
\begin{itemize}
\item Useful to go through a \alert{router with no v4 address}
configured
\item Possible use: v6-only core, still serve v4 to clients
\emph{without tunnel}
\end{itemize}
\vspace{2em}
\textbf{Not an original idea!} BGP had it first:
\href{https://datatracker.ietf.org/doc/draft-ietf-bess-rfc5549revision/}{draft-ietf-bess-rfc5549revision}
\end{frame}
\begin{frame}[fragile]{Linux support}
\textbf{Supported in Linux} since 5.2 --~July 2019!
\begin{minipage}[c]{0.1\textwidth}
\includegraphics[height=1.2em]{imgs/Git-Logo-1788C}
\end{minipage}
\begin{minipage}[c]{0.85\textwidth}
\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}
\end{minipage}
\vspace{2em}
\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{Interface with v4 address:} no changes; just as unextended babel.
\vspace{1em}
\textbf{Interface with only v6 addresses:}
\begin{itemize}
\item{} \alert{Receiving} a v4 route: \alert{install it anyway}, the
router's address is irrelevant.
\item{} \alert{Announcing} a v4 route: use \alert{v4-over-v6}; we need
a next-hop and only have v6 at hand.
\end{itemize}
\end{frame}
\begin{frame}{Backwards compatibility}
\textbf{\alert{Backwards compatibility:} an unextended node \alert{must}}
\begin{itemize}
\item Be able to \alert{ignore v4-over-v6 routes}
\item \alert{Route correctly} pure v4 and v6
\end{itemize}
\vspace{2em}
In \emph{unextended} 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
\end{itemize}
\end{frame}
\begin{frame}{Encoding v4-over-v6 routes: choices}
\textbf{Various encodings possible, among which:}
\begin{enumerate}
\item \emph{[Toke]} An IPv4 route announced without previously setting a valid
next-hop is considered v4-over-v6.
\begin{itemize}
\item Is backwards compatible --~but not obviously so
\item Not clear an extension is being used
\end{itemize}
\item \emph{[Bastian + JCH]} New specific AE for v4-over-v6 routes, and next-hop
is\ldots{}
\begin{enumerate}[i]
\item \ldots{}specific to v4-over-v6 routes
\item \only<1>{\ldots{}same as for v6 routes}
\only<2>{\textbf{\alert{\ldots{}same as for v6 routes}}}
\begin{itemize}
\item[$\rightarrow$] more compact, just as clear
\end{itemize}
\end{enumerate}
\medskip
\begin{itemize}
\item Backwards compatible and clean
\item A tiny bit more verbose
\end{itemize}
\end{enumerate}
\medskip
\pause{}
\begin{center}
\textbf{
{\Large $\leadsto$} 2.ii. \alert{Add a new AE.} No need for new
TLVs.
}
\end{center}
\end{frame}
%%%%%%%%%%% Conclusion frame %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Conclusion}
\begin{itemize}
\item New type of route: \alert{v4-over-v6}, v4 destination, v6 next-hop
\item Route IPv4 over an IPv6 network core. \textit{Look, Ma! No tunnels!}
\item Protocol \alert{described and drafted}
\item \alert{Production-ready implementation} available on the babeld
repository
\end{itemize}
\vspace{1em}
\begin{itemize}
\item \textbf{Intended status: \alert{experimental}}
\item Opinions: should it be adopted by workgroup or carried alone?
\end{itemize}
\vspace{1em}
\begin{columns}[T]
\begin{column}{0.5\textwidth}
\centering
\textbf{\large RFC draft}
\href{https://datatracker.ietf.org/doc/draft-bastian-babel-v4ov6/}{\texttt{\large huit.re/draft-v4ov6}}
\includegraphics[width=0.2\textwidth]{imgs/pdf/qr_draft.pdf}
\end{column}
\begin{column}{0.5\textwidth}
\centering
\textbf{\large These slides}
\href{https://tobast.fr/files/ietf108-v40v6.pdf}{\texttt{\large huit.re/ietf108-v4ov6}}
\includegraphics[width=0.2\textwidth]{imgs/pdf/qr_slide.pdf}
\end{column}
\end{columns}
\end{frame}
\end{document}