From 4d9da9378595ae9880e594db65b36c8ff8ba41a4 Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Sat, 19 Mar 2022 17:11:44 +0100 Subject: [PATCH] Final version? --- donar.tex | 365 ++++++++++++++++++++------------------ img/donar-tor-diagram.pdf | Bin 0 -> 62340 bytes img/nsdi.png | Bin 0 -> 5374 bytes main.tex | 2 +- 4 files changed, 193 insertions(+), 174 deletions(-) create mode 100644 img/donar-tor-diagram.pdf create mode 100644 img/nsdi.png diff --git a/donar.tex b/donar.tex index 3c78df4..adb4b45 100644 --- a/donar.tex +++ b/donar.tex @@ -1,24 +1,18 @@ %\section{Tor performances \\ \& VoIP requirements} -\begin{frame}{What are voice calling requirements?} - \tikzsetnextfilename{rtapp} - \begin{tikzpicture}[scale=1] - \node (micro) at (0,0) {\includegraphics{img/microphone.pdf}}; - \node (speaker) at (7.5,0) {\includegraphics{img/speaker.pdf}}; - \draw[->, solid, black,line width=1mm] (micro) edge node[sloped,anchor=north,text width=6.5cm]{ - \Large Call Requirements \\ - \normalsize - \underline{Single call}\\ - \textbf{Interactive:} $99^{th}$-perc delay $<$ 360 ms\\ - \underline{System}\\ - \textbf{Acceptable:} $>$ 80\% \\ - \textbf{Drop:} $<$ 2\% \\ - \textbf{Duration:} 5 min avg, up to 90 min \\ - \textbf{Anonymity:} 2-way anonymity\\ - \small Alice is anonymous to Bob,\\Bob is anonymous to Alice - } (speaker); - \end{tikzpicture} +\begin{frame}{Our system requirements} + \Large Preliminary definitions\\ + \normalsize \textbf{Interactive call:} $99^{th}$-perc delay $<$ 360 ms \\ + \textbf{Call duration:} 5 min avg, up to 90 min \\ + + \vspace{0.5cm} + \Large System requirements \\ + \normalsize + \textbf{Interactivity:} \textcolor{blue}{interactive calls $>$ 80\%}\\ + \textbf{Stability:} \textcolor{blue}{dropped calls $<$ 2\%} \\ + \textbf{Anonymity:} \textcolor{blue}{both caller and callee} \\ + %\small Alice is anonymous to Bob,\\Bob is anonymous to Alice \begin{center} @@ -158,25 +152,27 @@ Do Onion Service are stable enough?\\ \end{column} \begin{column}{0.5\textwidth} -\vspace{0.5cm} + \vspace{0.5cm} -\normalsize \underline{5-minute calls $<$ 360ms}\\ -\Large \textcolor{red}{9\%} + +\normalsize \underline{Interactive call definition}\\$99^{th}$-perc delay $<$ 360 ms \vspace{0.5cm} -\normalsize \underline{90-minute calls $<$ 360ms}\\ -\Large \textcolor{red}{3\%} +\normalsize \underline{System interactivity}\\ +\Large \textcolor{blue}{$>$ 80\%} \normalsize goal, of interactive calls\\ +\Large \textcolor{red}{9\%} \normalsize for 5-minute calls\\ +\Large \textcolor{red}{3\%} \normalsize for 90-minute calls \end{column} \end{columns} \begin{center} -\Large \includegraphics[scale=0.4]{img/stop.pdf} \color{red} Onion Services' delays are too high +\Large \includegraphics[scale=0.4]{img/stop.pdf} \color{red} Calls are not interactive \end{center} \end{frame} -\begin{frame}{What is we use 2-hop circuits?} +\begin{frame}{And what if we use 2-hop circuits?} \tikzsetnextfilename{petitschema2} \begin{tikzpicture} @@ -204,26 +200,25 @@ Do Onion Service are stable enough?\\ \vspace{0.5cm} +\normalsize \underline{Interactive call definition}\\$99^{th}$-perc delay $<$ 360 ms -\normalsize \underline{5-minute calls $<$ 360ms}\\ -\Large \textcolor{red}{44\%} \vspace{0.5cm} -\normalsize \underline{90-minute calls $<$ 360ms}\\ -\Large \textcolor{red}{23\%} - -\end{column} +\normalsize \underline{System interactivity}\\ +\Large \textcolor{blue}{$>$ 80\%} \normalsize goal, interactive calls\\ +\Large \textcolor{red}{44\%} \normalsize for 5-minute calls\\ +\Large \textcolor{red}{23\%} \normalsize for 90-minute calls\end{column} \end{columns} \begin{center} -\Large \includegraphics[scale=0.4]{img/stop.pdf} \color{red} With 2-hop circuits, delays are still too high + \Large \includegraphics[scale=0.4]{img/stop.pdf} \color{red} Calls are \underline{still} not interactive \end{center} \end{frame} -\begin{frame}{Do onion services are stable enough for calls?} +\begin{frame}{Are onion services stable enough for calls?} \tikzsetnextfilename{os3ss} \begin{tikzpicture} @@ -266,40 +261,35 @@ Do Onion Service are stable enough?\\ \vspace{0.3cm} -\normalsize \underline{Dropped 5-minute calls}\\ -\Large \textcolor{red}{5\%} \normalsize for 2 hops \\ -\Large \textcolor{red}{10\%} \normalsize for 3 hops - -\vspace{0.3cm} - -\normalsize \underline{Dropped 90-minute calls}\\ -\Large \textcolor{red}{10\%} \normalsize for 2 hops\\ -\Large \textcolor{red}{17\%} \normalsize for 3 hops +\normalsize \underline{System stability}\\ +\Large \textcolor{blue}{$<$ 2\%} \normalsize goal, dropped calls \\ +\Large \textcolor{red}{5\%} \normalsize for 2 hops, 5-minute calls \\ +\Large \textcolor{red}{10\%} \normalsize for 3 hops, 5-minute calls \\ +\Large \textcolor{red}{10\%} \normalsize for 2 hops, 90-minute calls \\ +\Large \textcolor{red}{17\%} \normalsize for 3 hops, 90-minute calls \end{column} \end{columns} \begin{center} -\Large \includegraphics[scale=0.4]{img/stop.pdf} \color{red} Calls are dropped too often ($>$ 2\%) +\Large \includegraphics[scale=0.4]{img/stop.pdf} \color{red} Calls are not stable \end{center} \end{frame} - +\iffalse \begin{frame}{Understanding Latency Spike Properties} \includegraphics[width=0.7\textwidth]{img/circuit.pdf} -\begin{center} For most circuits,\\ \Large \includegraphics[scale=0.4]{img/stop.pdf} \color{red} the $99^{th}$ latency is too high, \\ \includegraphics[scale=0.4]{img/ok.pdf} \color{black!50!green} the median latency is acceptable,\\ \includegraphics[scale=0.6]{img/question.pdf} \color{blue} Tor is able to deliver \underline{only some} packets on time -\end{center} \end{frame} - +\fi \section{Our contribution: Donar} @@ -318,126 +308,41 @@ For most circuits,\\ \begin{frame}{Donar Overview} -\Large Donar is a set of \textbf{multipath} components \\ - \underline{Alternate}, \underline{Double Send} and \underline{Path Ranking} +\Large Donar is a \textbf{multipath} proxy\\ + made of 2 components: \\ + \underline{Link Selection} and \underline{Scheduling Policies} \vspace{0.7cm} -We make 2 flavors with them: -\vspace{0.5cm} +\includegraphics[width=0.8\textwidth]{img/proxy.png} - \begin{columns} - \begin{column}{0.45\textwidth} -\normalsize -\underline{Anticipate Failures} +%We make 2 flavors with them: -\Large Donar Alternate +%\vspace{0.5cm} -\Large Donar Double Send - \end{column} - \begin{column}{0.45\textwidth} -\normalsize -\underline{React to Failures} - -\Large + Path Ranking - -\Large + Path Ranking - \end{column} - \end{columns} +% \begin{columns} +% \begin{column}{0.45\textwidth} +%\normalsize +%\underline{Anticipate Failures} +% +%\Large Donar Alternate +% +%\Large Donar Double Send +% \end{column} +% \begin{column}{0.45\textwidth} +%\normalsize +%\underline{React to Failures} +% +%\Large + Path Ranking +% +%\Large + Path Ranking +% \end{column} +% \end{columns} \end{frame} -\begin{frame}[t]{Alternate Strategy} -\tikzsetnextfilename{padding} -\begin{tikzpicture}[scale=1] - \node (alice) at (1,5) {\includegraphics[scale=0.26]{img/computer.pdf}}; - \node[below=0cm of alice] (alicet) {Alice}; - \node (bob) at (10,5) {\includegraphics[scale=0.26]{img/computer.pdf}}; - \node[below=0cm of bob] (bobt) {Bob}; - \node[circle,fill=black,minimum size=1mm,right=0cm of alice] (j0) {}; - \node[circle,fill=black,minimum size=1mm,left=0cm of bob] (j4) {}; - \coordinate (a1) at (3,6.5) {}; - \coordinate (a2) at (3,5.5) {}; - \coordinate (a3) at (3,4.5) {}; - \coordinate (a4) at (3,3.5) {}; - \coordinate (b1) at (8,6.5) {}; - \coordinate (b2) at (8,5.5) {}; - \coordinate (b3) at (8,4.5) {}; - \coordinate (b4) at (8,3.5) {}; - \coordinate (a5) at (3,2.5) {}; - \coordinate (a6) at (3,7.5) {}; - \coordinate (b5) at (8,2.5) {}; - \coordinate (b6) at (8,7.5) {}; - \draw[-, solid, black] (j0) -- (a1) -- (b1) -- (j4); - \draw[-, solid, black] (j0) -- (a2) -- (b2) -- (j4); - \draw[-, solid, black] (j0) -- (a3) -- (b3) -- (j4); - \draw[-, solid, black] (j0) -- (a4) -- (b4) -- (j4); - \draw[-, solid, black] (j0) -- (a5) -- (b5) -- (j4); - \draw[-, solid, black] (j0) -- (a6) -- (b6) -- (j4); - - - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p11) at (7,5.5) {1}; - \node[rectangle,draw=black,fill=black,minimum width=5mm] (p11p) at (6.5,5.5) {\color{black}1}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p13) at (4.6,3.5) {3}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p13p) at (4.1,3.5) {2}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p22) at (5.8,4.5) {2}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p22p) at (5.3,4.5) {1}; - \node[text width=10cm,align=center] (expl) at (5.5, 1.0) {\Large - \textbf{Alternate} schedule packets across links and leverages Tor's padding - }; -\end{tikzpicture} -\end{frame} - -\begin{frame}[t]{Donar Double Send} -\tikzsetnextfilename{doublesend} -\begin{tikzpicture}[scale=1] - \node (alice) at (1,5) {\includegraphics[scale=0.26]{img/computer.pdf}}; - \node[below=0cm of alice] (alicet) {Alice}; - \node (bob) at (10,5) {\includegraphics[scale=0.26]{img/computer.pdf}}; - \node[below=0cm of bob] (bobt) {Bob}; - \node[circle,fill=black,minimum size=1mm,right=0cm of alice] (j0) {}; - \node[circle,fill=black,minimum size=1mm,left=0cm of bob] (j4) {}; - \coordinate (a1) at (3,6.5) {}; - \coordinate (a2) at (3,5.5) {}; - \coordinate (a3) at (3,4.5) {}; - \coordinate (a4) at (3,3.5) {}; - \coordinate (b1) at (8,6.5) {}; - \coordinate (b2) at (8,5.5) {}; - \coordinate (b3) at (8,4.5) {}; - \coordinate (b4) at (8,3.5) {}; - \coordinate (a5) at (3,2.5) {}; - \coordinate (a6) at (3,7.5) {}; - \coordinate (b5) at (8,2.5) {}; - \coordinate (b6) at (8,7.5) {}; - \draw[-, solid, black] (j0) -- (a1) -- (b1) -- (j4); - \draw[-, solid, black] (j0) -- (a2) -- (b2) -- (j4); - \draw[-, solid, black] (j0) -- (a3) -- (b3) -- (j4); - \draw[-, solid, black] (j0) -- (a4) -- (b4) -- (j4); - - \draw[-, solid, black] (j0) -- (a5) -- (b5) -- (j4); - \draw[-, solid, black] (j0) -- (a6) -- (b6) -- (j4); - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p11) at (7,5.5) {1}; - \node[rectangle,draw=black,fill=black,minimum width=5mm] (p11p) at (6.5,5.5) {\color{black}1}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p13) at (4.6,3.5) {3}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p13p) at (4.1,3.5) {2}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p22) at (5.8,4.5) {2}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p22p) at (5.3,4.5) {1}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p31) at (7,7.5) {1}; - \node[rectangle,draw=black,fill=black,minimum width=5mm] (p31p) at (6.5,7.5) {\color{black}1}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p33) at (4.6,2.5) {3}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p33p) at (4.1,2.5) {2}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p42) at (5.8,6.5) {2}; - \node[rectangle,draw=black,fill=white,minimum width=5mm] (p42p) at (5.3,6.5) {1}; - \node[text width=10cm,align=center] (expl) at (5.5, 1.0) {\Large -\textbf{Double Send} extends Alternate by adding on-wire duplication -\normalsize - }; -\end{tikzpicture} -\end{frame} - - -\begin{frame}[t]{Path Ranking} +\begin{frame}[t]{Link Selection} \tikzsetnextfilename{scheduling} \begin{tikzpicture}[scale=1] \node (alice) at (1,5) {\includegraphics[scale=0.26]{img/computer.pdf}}; @@ -474,12 +379,13 @@ We make 2 flavors with them: \node[below=0cm of a5] (a5t) {~F}; \only<1> { - \draw[-, solid, black] (j0) -- (a2) -- (b2) -- (j4); - \draw[-, solid, black] (j0) -- (a3) -- (b3) -- (j4); - \draw[-, solid, black] (j0) -- (a1) -- (b1) -- (j4); - \draw[-, solid, black] (j0) -- (a6) -- (b6) -- (j4); + \draw[-, solid, black!30!cyan, line width = 0.4mm] (j0) -- (a2) -- (b2) -- (j4); + \draw[-, solid, black!30!cyan, line width = 0.4mm] (j0) -- (a3) -- (b3) -- (j4); + \draw[-, solid, black!30!cyan, line width = 0.4mm] (j0) -- (a1) -- (b1) -- (j4); + \draw[-, solid, black!30!cyan, line width = 0.4mm] (j0) -- (a6) -- (b6) -- (j4); + \iffalse \node[rectangle,draw=black,fill=white,minimum width=5mm] (p11) at (5.8,5.5) {1}; \node[rectangle,draw=black,fill=black,minimum width=5mm] (p11p) at (5.3,5.5) {\color{black}1}; \node[rectangle,draw=black,fill=white,minimum width=5mm] (p13) at (4.1,5.5) {3}; @@ -492,11 +398,12 @@ We make 2 flavors with them: \node[rectangle,draw=black,fill=white,minimum width=5mm] (p33p) at (4.1,7.5) {2}; \node[rectangle,draw=black,fill=white,minimum width=5mm] (p42) at (7,6.5) {2}; \node[rectangle,draw=black,fill=white,minimum width=5mm] (p42p) at (6.5,6.5) {1}; + \fi - \node[text width=10cm,align=left] (expl) at (5.5, 1.2) {\Large - \Large \includegraphics[scale=0.6]{img/question.pdf} \color{blue} We want to schedule only on fastest links \\ - }; + \node[text width=10cm,align=left] (expl) at (5.5, 1.2) {\Large + \Large \includegraphics[scale=0.6]{img/question.pdf} \color{blue} We want to schedule only on fastest links \\ + }; } \only<2> { @@ -553,26 +460,127 @@ We make 2 flavors with them: \end{tikzpicture} \end{frame} + + + +\begin{frame}[t]{Scheduling Policy: Alternate} +\tikzsetnextfilename{padding} +\begin{tikzpicture}[scale=1] + \node (alice) at (1,5) {\includegraphics[scale=0.26]{img/computer.pdf}}; + \node[below=0cm of alice] (alicet) {Alice}; + \node (bob) at (10,5) {\includegraphics[scale=0.26]{img/computer.pdf}}; + \node[below=0cm of bob] (bobt) {Bob}; + \node[circle,fill=black,minimum size=1mm,right=0cm of alice] (j0) {}; + \node[circle,fill=black,minimum size=1mm,left=0cm of bob] (j4) {}; + \coordinate (a1) at (3,6.5) {}; + \coordinate (a2) at (3,5.5) {}; + \coordinate (a3) at (3,4.5) {}; + \coordinate (a4) at (3,3.5) {}; + \coordinate (b1) at (8,6.5) {}; + \coordinate (b2) at (8,5.5) {}; + \coordinate (b3) at (8,4.5) {}; + \coordinate (b4) at (8,3.5) {}; + \coordinate (a5) at (3,2.5) {}; + \coordinate (a6) at (3,7.5) {}; + \coordinate (b5) at (8,2.5) {}; + \coordinate (b6) at (8,7.5) {}; + \draw[-, solid, black] (j0) -- (a1) -- (b1) -- (j4); + \draw[-, solid, black] (j0) -- (a2) -- (b2) -- (j4); + \draw[-, solid, black] (j0) -- (a3) -- (b3) -- (j4); + \draw[-, solid, black] (j0) -- (a4) -- (b4) -- (j4); + \draw[-, solid, black] (j0) -- (a5) -- (b5) -- (j4); + \draw[-, solid, black] (j0) -- (a6) -- (b6) -- (j4); + + + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p11) at (7,5.5) {1}; + \node[rectangle,draw=black,fill=black,minimum width=5mm] (p11p) at (6.5,5.5) {\color{black}1}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p13) at (4.6,3.5) {3}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p13p) at (4.1,3.5) {2}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p22) at (5.8,4.5) {2}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p22p) at (5.3,4.5) {1}; + \node[text width=10cm,align=center] (expl) at (5.5, 1.0) {\Large + \textbf{Alternate} schedule packets across links and leverages Tor's padding + }; +\end{tikzpicture} +\end{frame} + +\begin{frame}[t]{Scheduling Policy: Double Send} +\tikzsetnextfilename{doublesend} +\begin{tikzpicture}[scale=1] + \node (alice) at (1,5) {\includegraphics[scale=0.26]{img/computer.pdf}}; + \node[below=0cm of alice] (alicet) {Alice}; + \node (bob) at (10,5) {\includegraphics[scale=0.26]{img/computer.pdf}}; + \node[below=0cm of bob] (bobt) {Bob}; + \node[circle,fill=black,minimum size=1mm,right=0cm of alice] (j0) {}; + \node[circle,fill=black,minimum size=1mm,left=0cm of bob] (j4) {}; + \coordinate (a1) at (3,6.5) {}; + \coordinate (a2) at (3,5.5) {}; + \coordinate (a3) at (3,4.5) {}; + \coordinate (a4) at (3,3.5) {}; + \coordinate (b1) at (8,6.5) {}; + \coordinate (b2) at (8,5.5) {}; + \coordinate (b3) at (8,4.5) {}; + \coordinate (b4) at (8,3.5) {}; + \coordinate (a5) at (3,2.5) {}; + \coordinate (a6) at (3,7.5) {}; + \coordinate (b5) at (8,2.5) {}; + \coordinate (b6) at (8,7.5) {}; + \draw[-, solid, black] (j0) -- (a1) -- (b1) -- (j4); + \draw[-, solid, black] (j0) -- (a2) -- (b2) -- (j4); + \draw[-, solid, black] (j0) -- (a3) -- (b3) -- (j4); + \draw[-, solid, black] (j0) -- (a4) -- (b4) -- (j4); + + \draw[-, solid, black] (j0) -- (a5) -- (b5) -- (j4); + \draw[-, solid, black] (j0) -- (a6) -- (b6) -- (j4); + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p11) at (7,5.5) {1}; + \node[rectangle,draw=black,fill=black,minimum width=5mm] (p11p) at (6.5,5.5) {\color{black}1}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p13) at (4.6,3.5) {3}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p13p) at (4.1,3.5) {2}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p22) at (5.8,4.5) {2}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p22p) at (5.3,4.5) {1}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p31) at (7,7.5) {1}; + \node[rectangle,draw=black,fill=black,minimum width=5mm] (p31p) at (6.5,7.5) {\color{black}1}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p33) at (4.6,2.5) {3}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p33p) at (4.1,2.5) {2}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p42) at (5.8,6.5) {2}; + \node[rectangle,draw=black,fill=white,minimum width=5mm] (p42p) at (5.3,6.5) {1}; + \node[text width=10cm,align=center] (expl) at (5.5, 1.0) {\Large +\textbf{Double Send} extends Alternate by adding on-wire duplication +\normalsize + }; +\end{tikzpicture} +\end{frame} + +\begin{frame}{Security} + +Multiple paths = less security? + +\vspace{0.5cm} +\includegraphics[width=0.8\textwidth]{img/donar-tor-diagram.pdf} + +Guards = Fixed relays = Decouple path opening from de-anonimization + +\end{frame} + \section{Evaluation} \begin{frame}[t]{Evaluation Setup} \underline{Configurations \& Goals:}\\Same as our preliminary analysis -\underline{Our algorithms} - +\underline{Our 2 Variants} \normalsize \textbf{Donar Alternate}\\ -Alternate + Ranking (6/12 active paths) +Scheduling policy: Alternate (use less bandwidth) \textbf{Donar Double Send}\\ -Double Send + Ranking (6/12 active paths) +Sechduling policy: Double Send (better stability) \scriptsize Implemented in \texttt{C}, notable API/lib: \texttt{epoll}, \texttt{gstreamer}, \texttt{glib}\\ \normalsize -\underline{State of the Art algorithms} +\underline{Baselines} \textbf{Simple:} Baseline introduced in the preliminary analysis \\ %Same data consumption as Donar Alternate @@ -605,7 +613,8 @@ Double Send + Ranking (6/12 active paths) \begin{column}{0.5\textwidth} \vspace{1cm} -\normalsize \underline{Acceptable 90-minute calls}\\ +\normalsize \underline{System interactivity}\\ +\large \textcolor{blue}{$>$ 80\%} \normalsize goal, interactive calls \\ \large \textcolor{black!50!green}{87\%} \normalsize for Donar Alternate\\ \large \textcolor{black!50!green}{95\%} \normalsize for Donar Double Send\\ \large \textcolor{red}{25\%} \normalsize for Torfone\\ @@ -651,7 +660,8 @@ Double Send + Ranking (6/12 active paths) \vspace{1cm} -\normalsize \underline{Acceptable 90-minute calls}\\ +\normalsize \underline{System interactivity}\\ +\large \textcolor{blue}{$>$ 80\%} \normalsize goal, interactive calls \\ \large \textcolor{red}{58\%} \normalsize for Donar Alternate\\ \large \textcolor{black!50!green}{87\%} \normalsize for Donar Double Send\\ \large \textcolor{red}{31\%} \normalsize for Torfone\\ @@ -672,10 +682,19 @@ Double Send + Ranking (6/12 active paths) \includegraphics[width=0.8\textwidth]{img/call_drop.pdf} -\begin{center} + \begin{columns} + \begin{column}{0.5\textwidth} +\normalsize \underline{System stability}\\ +\large \textcolor{blue}{$<$ 2\%} \normalsize goal, dropped calls \\ +\large \textcolor{black!50!green}{0\%} \normalsize Donar Alternate, 2 hops\\ +\large \textcolor{black!50!green}{0\%} \normalsize Donar Double Send, 2 hops + default\\ + + \end{column} + \begin{column}{0.5\textwidth} \large \includegraphics[scale=0.4]{img/ok.pdf} \color{black!50!green} Donar Alternate \\ \large \includegraphics[scale=0.4]{img/ok.pdf} \color{black!50!green} Donar Double Send -\end{center} + \end{column} + \end{columns} \end{frame} \section{Conclusion} diff --git a/img/donar-tor-diagram.pdf b/img/donar-tor-diagram.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c01512f9e71886a4d7addeb3c29d208c984dd625 GIT binary patch literal 62340 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 N>}ZsfVlTwe{uhPp^SA&2 literal 0 HcmV?d00001 diff --git a/img/nsdi.png b/img/nsdi.png new file mode 100644 index 0000000000000000000000000000000000000000..b7e40c351e509c6728c6378a637dd2524016ba1b GIT binary patch literal 5374 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 RH`qTVVf2i3%d~Ia|1V!G(>(wH literal 0 HcmV?d00001 diff --git a/main.tex b/main.tex index e5d9aa5..312c05d 100644 --- a/main.tex +++ b/main.tex @@ -67,7 +67,7 @@ diagonal fill/.style 2 args={fill=#2, path picture={ \title{Donar: Anonymous VoIP over Tor} -\date{April 4, 2022} +\date{\includegraphics[height=0.5cm]{img/nsdi.png} - April 4, 2022 - Renton, WA, USA} \author{Yérom-David Bromberg, \underline{Quentin Dufour}, Davide Frey, Etienne Rivière} \institute{Univ Rennes, Inria, CNRS, IRISA - UCLouvain, Belgium} \begin{document}