\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 (9,0) {\includegraphics{img/speaker.pdf}}; \draw[->, solid, black,line width=1mm] (micro) edge node[sloped,anchor=north,text width=7cm]{ \Large Call Requirements \\ \normalsize \textbf{Delay:} $99^{th}$-perc delay $<$ 360 ms \\ \textbf{Drop:} Dropped calls $<$ 2\% \\ \textbf{Duration:} avg: 5 min \& up to: 90 min \\ \textbf{Anonymity:} 2-way anonymity\\ \small Alice is anonymous to Bob,\\Bob is anonymous to Alice } (speaker); \end{tikzpicture} \begin{center} \Large \includegraphics[scale=0.6]{img/question.pdf} \color{blue} Which Tor configuration should we use? \\ \Large \includegraphics[scale=0.6]{img/question.pdf} \color{blue} Can Tor satisfy these requirements? \end{center} \end{frame} \begin{frame}[t]{Which Tor configuration should we use?} \small \underline{For 2-way anonymity: Onion Services} \begin{figure} \tikzsetnextfilename{os1ss} \begin{tikzpicture} \node (j0) at (4,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[left=0cm of j0] (j0t) {Alice}; \node (j4) at (8.5,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[right=0cm of j4] (j4t) {Bob}; \draw[-, solid, black, line width=0.2mm] (j0) edge (j4); \draw[fill=black] (5,5) circle(1mm); \draw[fill=black] (5.5,5) circle(1mm); \draw[fill=black] (6,5) circle(1mm); \draw[fill=black] (6.5,5) circle(1mm); \draw[fill=black] (7,5) circle(1mm); \draw[fill=black] (7.5,5) circle(1mm); \node (lock) at (2,5) {\includegraphics[scale=0.4]{img/shield.pdf}}; \node (lt) at (2,4.5) {\emph{Security-first}}; \node (aaa) at (6.25,4.5) {\emph{6 relays, 3-hop circuits}}; \end{tikzpicture} \end{figure} \small \underline{To reduce latency: Reduce circuits length} 2-hops circuits have been discussed as a possible optimization\footnotemark[2] \begin{figure} \tikzsetnextfilename{os2ss} \begin{tikzpicture} \node (j0) at (4,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[left=0cm of j0] (j0t) {Alice}; \node (j4) at (8.5,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[right=0cm of j4] (j4t) {Bob}; \draw[-, solid, black, line width=0.2mm] (j0) edge (j4); \draw[fill=black] (5.5,5) circle(1mm); \draw[fill=black] (6,5) circle(1mm); \draw[fill=black] (6.5,5) circle(1mm); \draw[fill=black] (7,5) circle(1mm); \node (aaa) at (6.25,4.5) {\emph{4 relays, 2-hop circuits}}; \node (lock) at (2,5) {\includegraphics[width=0.5cm]{img/gauge.pdf}}; \node (lt) at (2,4.5) {\emph{Performance-first}}; \end{tikzpicture} \end{figure} \footnotetext[2]{\fullcite{bauer_optimal_nodate}} \end{frame} \begin{frame}[t]{How do we test Tor?} \normalsize \underline{2 Tor Configurations} \begin{figure} \tikzsetnextfilename{os3ss} \begin{tikzpicture} \node (j0) at (4,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[left=0cm of j0] (j0t) {Alice}; \node (j4) at (8.5,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[right=0cm of j4] (j4t) {Bob}; \draw[-, solid, black, line width=0.2mm] (j0) edge (j4); \draw[fill=black] (5,5) circle(1mm); \draw[fill=black] (5.5,5) circle(1mm); \draw[fill=black] (6,5) circle(1mm); \draw[fill=black] (6.5,5) circle(1mm); \draw[fill=black] (7,5) circle(1mm); \draw[fill=black] (7.5,5) circle(1mm); \node (lock) at (2,5) {\includegraphics[scale=0.4]{img/shield.pdf}}; \end{tikzpicture} \tikzsetnextfilename{os4ss} \begin{tikzpicture} \node (j0) at (4,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[left=0cm of j0] (j0t) {Alice}; \node (j4) at (8.5,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[right=0cm of j4] (j4t) {Bob}; \draw[-, solid, black, line width=0.2mm] (j0) edge (j4); \draw[fill=black] (5.5,5) circle(1mm); \draw[fill=black] (6,5) circle(1mm); \draw[fill=black] (6.5,5) circle(1mm); \draw[fill=black] (7,5) circle(1mm); \node (lock) at (2,5) {\includegraphics[width=0.5cm]{img/gauge.pdf}}; \end{tikzpicture} \end{figure} \underline{Simulated Calls}\\ 5-minute and 90-minute calls\\ Each configuration is repeated 64 times\\ \underline{Questions}\\ Do Onion Service meet latency requirements?\\ Do Onion Service are stable enough?\\ Get insights on Onion Services' latency \end{frame} \begin{frame}{Do onion services meet latency requirements?} \begin{figure} \tikzsetnextfilename{petitschema1} \begin{tikzpicture} \node (j0) at (4,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[left=0cm of j0] (j0t) {Alice}; \node (j4) at (8.5,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[right=0cm of j4] (j4t) {Bob}; \draw[-, solid, black, line width=0.2mm] (j0) edge (j4); \draw[fill=black] (5,5) circle(1mm); \draw[fill=black] (5.5,5) circle(1mm); \draw[fill=black] (6,5) circle(1mm); \draw[fill=black] (6.5,5) circle(1mm); \draw[fill=black] (7,5) circle(1mm); \draw[fill=black] (7.5,5) circle(1mm); \node (lock) at (2,5) {\includegraphics[scale=0.4]{img/shield.pdf}}; \end{tikzpicture} \end{figure} \begin{columns} \begin{column}{0.5\textwidth} \includegraphics[width=\textwidth]{img/x1.pdf} \end{column} \begin{column}{0.5\textwidth} \normalsize \underline{Acceptable 5-minute calls}\\ \Large \textcolor{red}{9\%} \vspace{0.5cm} \normalsize \underline{Acceptable 90-minute calls}\\ \Large \textcolor{red}{3\%} \end{column} \end{columns} \begin{center} \Large \includegraphics[scale=0.4]{img/stop.pdf} \color{red} Onion Services' delays are too high \end{center} \end{frame} \begin{frame}{Even with onion service using 2-hop circuits?} \begin{figure} \tikzsetnextfilename{petitschema2} \begin{tikzpicture} \node (j0) at (4,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[left=0cm of j0] (j0t) {Alice}; \node (j4) at (8.5,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[right=0cm of j4] (j4t) {Bob}; \draw[-, solid, black, line width=0.2mm] (j0) edge (j4); \draw[fill=black] (5.5,5) circle(1mm); \draw[fill=black] (6,5) circle(1mm); \draw[fill=black] (6.5,5) circle(1mm); \draw[fill=black] (7,5) circle(1mm); \node (lock) at (2,5) {\includegraphics[width=0.5cm]{img/gauge.pdf}}; \end{tikzpicture} \end{figure} \begin{columns} \begin{column}{0.5\textwidth} \includegraphics[width=\textwidth]{img/x2.pdf} \end{column} \begin{column}{0.5\textwidth} \normalsize \underline{Acceptable 5-minute calls}\\ \Large \textcolor{red}{44\%} \vspace{0.5cm} \normalsize \underline{Acceptable 90-minute calls}\\ \Large \textcolor{red}{23\%} \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 \end{center} \end{frame} \begin{frame}{Do onion services are stable enough for calls?} \begin{figure} \tikzsetnextfilename{os3ss} \begin{tikzpicture} \node (j0) at (4,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[left=0cm of j0] (j0t) {Alice}; \node (j4) at (8.5,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[right=0cm of j4] (j4t) {Bob}; \draw[-, solid, black, line width=0.2mm] (j0) edge (j4); \draw[fill=black] (5,5) circle(1mm); \draw[fill=black] (5.5,5) circle(1mm); \draw[fill=black] (6,5) circle(1mm); \draw[fill=black] (6.5,5) circle(1mm); \draw[fill=black] (7,5) circle(1mm); \draw[fill=black] (7.5,5) circle(1mm); \node (lock) at (2,5) {\includegraphics[scale=0.4]{img/shield.pdf}}; \end{tikzpicture} \tikzsetnextfilename{os4ss} \begin{tikzpicture} \node (j0) at (4,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[left=0cm of j0] (j0t) {Alice}; \node (j4) at (8.5,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[right=0cm of j4] (j4t) {Bob}; \draw[-, solid, black, line width=0.2mm] (j0) edge (j4); \draw[fill=black] (5.5,5) circle(1mm); \draw[fill=black] (6,5) circle(1mm); \draw[fill=black] (6.5,5) circle(1mm); \draw[fill=black] (7,5) circle(1mm); \node (lock) at (2,5) {\includegraphics[width=0.5cm]{img/gauge.pdf}}; \end{tikzpicture} \end{figure} \begin{columns} \begin{column}{0.45\textwidth} \includegraphics[width=\textwidth]{img/x3.pdf} \end{column} \begin{column}{0.5\textwidth} \normalsize \underline{Dropped 5-minute calls}\\ \Large \textcolor{red}{5\%} \normalsize for 2 hops \\ \Large \textcolor{red}{10\%} \normalsize for 3 hops \vspace{0.5cm} \normalsize \underline{Dropped 90-minute calls}\\ \Large \textcolor{red}{10\%} \normalsize for 2 hops\\ \Large \textcolor{red}{17\%} \normalsize for 3 hops \end{column} \end{columns} \begin{center} \Large \includegraphics[scale=0.4]{img/stop.pdf} \color{red} Calls are dropped too often \end{center} \end{frame} \begin{frame}{Understanding Latency Spike Properties} \includegraphics[width=\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 has latency spikes but is able to deliver some packets on time \end{center} \end{frame} \begin{frame}{Our contribution} \normalsize \underline{Our goal:} \Large Building a communication abstraction to provide stable low-latency packet delivery\\over the existing Tor network %by leveraging on link diversity, scheduling and redundancy. \vspace{0.5cm} \normalsize \underline{Our proposal's codename:} \Large Donar (the other name of Thor) \end{frame} \begin{frame}{Donar Overview} \Large Donar is a set of \textbf{multipath} components \\ \underline{Alternate}, \underline{Double Send} and \underline{Path Ranking} \vspace{0.7cm} We make 2 flavors with them: \vspace{0.5cm} \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} \tikzsetnextfilename{scheduling} \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) {}; \draw[-, dashed, black] (j0) -- (a1) -- (b1) -- (j4); \draw[-, dashed, black] (j0) -- (a2) -- (b2) -- (j4); \draw[-, dashed, black] (j0) -- (a3) -- (b3) -- (j4); \draw[-, dashed, black] (j0) -- (a4) -- (b4) -- (j4); \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[-, dashed, black] (j0) -- (a5) -- (b5) -- (j4); \draw[-, dashed, black] (j0) -- (a6) -- (b6) -- (j4); \node[below=0cm of a6] (a6t) {~A}; \node[below=0cm of a1] (a1t) {~B}; \node[below=0cm of a2] (a2t) {~C}; \node[below=0cm of a3] (a3t) {~D}; \node[below=0cm of a4] (a4t) {~E}; \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); \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}; \node[rectangle,draw=black,fill=white,minimum width=5mm] (p13p) at (3.6,5.5) {2}; \node[rectangle,draw=black,fill=white,minimum width=5mm] (p22) at (6.3,4.5) {2}; \node[rectangle,draw=black,fill=white,minimum width=5mm] (p22p) at (5.8,4.5) {1}; \node[rectangle,draw=black,fill=white,minimum width=5mm] (p31) at (6.5,7.5) {1}; \node[rectangle,draw=black,fill=black,minimum width=5mm] (p31p) at (6,7.5) {\color{black}1}; \node[rectangle,draw=black,fill=white,minimum width=5mm] (p33) at (4.6,7.5) {3}; \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}; \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> { \draw[-, solid, black!50!red, line width = 0.4mm] (j0) -- (a2) -- (b2) -- (j4); \draw[-, solid, black!50!green, line width = 0.4mm] (j0) -- (a3) -- (b3) -- (j4); \draw[-, solid, black!50!green, line width = 0.4mm] (j0) -- (a1) -- (b1) -- (j4); \draw[-, solid, black!50!green, line width = 0.4mm] (j0) -- (a6) -- (b6) -- (j4); \node[below=0cm of bobt, text width=3cm] (bobr) { \textbf{Path Ranking}\\ \textcolor{black!50!green}{1. B}\\ \textcolor{black!50!green}{2. D}\\ \textcolor{black!50!green}{3. A}\\ \textcolor{black!50!red}{4. C} }; \node[text width=8cm,align=center] (expl) at (4, 1.2) {\Large Bob ranks paths and informs Alice that stops using the slowest ones }; } \only<3> { \draw[-, solid, black!30!cyan, line width = 0.4mm] (j0) -- (a5) -- (b5) -- (j4); \draw[-, solid, black] (j0) -- (a3) -- (b3) -- (j4); \draw[-, solid, black] (j0) -- (a1) -- (b1) -- (j4); \draw[-, solid, black] (j0) -- (a6) -- (b6) -- (j4); \node[below=0cm of bobt, text width=3cm] (bobr) { \textbf{Path Ranking}\\ 1. ...\\ 2. ...\\ 3. ...\\ 4. ... }; \node[text width=8cm,align=center] (expl) at (4, 1.2) {\Large Alice selects a new path }; } \only<4> { \draw[-, solid, black!50!green, line width = 0.4mm] (j0) -- (a5) -- (b5) -- (j4); \draw[-, solid, black!50!green, line width = 0.4mm] (j0) -- (a3) -- (b3) -- (j4); \draw[-, solid, black!50!red, line width = 0.4mm] (j0) -- (a1) -- (b1) -- (j4); \draw[-, solid, black!50!green, line width = 0.4mm] (j0) -- (a6) -- (b6) -- (j4); \node[below=0cm of bobt, text width=3cm] (bobr) { \textbf{Path Ranking}\\ \textcolor{black!50!green}{1. F}\\ \textcolor{black!50!green}{2. A}\\ \textcolor{black!50!green}{3. D}\\ \textcolor{black!50!red}{4. B} }; \node[text width=8cm,align=center] (expl) at (4, 1.2) {\Large Ranking is re-computed regularly }; } \end{tikzpicture} \end{frame} \begin{frame}[t]{Evaluation Setup} \underline{Configurations \& Goals:} Same as our preliminary analysis \underline{Our algorithms} \normalsize \textbf{Donar Alternate}\\ Alternate + Ranking (6/12 active paths) \textbf{Donar Double Send}\\ Double Send + Ranking (6/12 active paths) \scriptsize Implemented in \texttt{C}, notable API/lib: \texttt{epoll}, \texttt{gstreamer}, \texttt{glib} \normalsize \underline{State of the Art algorithms} \textbf{Simple:} Baseline introduced in the preliminary analysis \\ %Same data consumption as Donar Alternate \textbf{Torfone:} Duplicates packets on 2 paths \\ %Same data consumption as Donar Double Send \end{frame} \begin{frame}{Does Donar reduce latency enough with 2-hop circuits?} \begin{figure} \tikzsetnextfilename{petitschema4} \begin{tikzpicture} \node (j0) at (4,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[left=0cm of j0] (j0t) {Alice}; \node (j4) at (8.5,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[right=0cm of j4] (j4t) {Bob}; \draw[-, solid, black, line width=0.2mm] (j0) edge (j4); \draw[fill=black] (5.5,5) circle(1mm); \draw[fill=black] (6,5) circle(1mm); \draw[fill=black] (6.5,5) circle(1mm); \draw[fill=black] (7,5) circle(1mm); \node (lock) at (2,5) {\includegraphics[width=0.5cm]{img/gauge.pdf}}; \end{tikzpicture} \end{figure} \begin{columns} \begin{column}{0.5\textwidth} \includegraphics[width=\textwidth]{img/x5.pdf} \end{column} \begin{column}{0.5\textwidth} \normalsize \underline{Acceptable 90-minute 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\\ \large \textcolor{red}{23\%} \normalsize for Simple (our baseline)\\ \end{column} \end{columns} \begin{center} \large \includegraphics[scale=0.4]{img/ok.pdf} \color{black!50!green} Both Donar variants succeed most of their calls \end{center} \end{frame} \begin{frame}{Does Donar reduce latency enough?} \begin{figure} \tikzsetnextfilename{petitschema33} \begin{tikzpicture} \node (j0) at (4,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[left=0cm of j0] (j0t) {Alice}; \node (j4) at (8.5,5) {\includegraphics[scale=0.1]{img/computer.pdf}}; \node[right=0cm of j4] (j4t) {Bob}; \draw[-, solid, black, line width=0.2mm] (j0) edge (j4); \draw[fill=black] (5,5) circle(1mm); \draw[fill=black] (5.5,5) circle(1mm); \draw[fill=black] (6,5) circle(1mm); \draw[fill=black] (6.5,5) circle(1mm); \draw[fill=black] (7,5) circle(1mm); \draw[fill=black] (7.5,5) circle(1mm); \node (lock) at (2,5) {\includegraphics[scale=0.4]{img/shield.pdf}};\end{tikzpicture} \end{figure} \begin{columns} \begin{column}{0.5\textwidth} \includegraphics[width=\textwidth]{img/x4.pdf} \end{column} \begin{column}{0.5\textwidth} \normalsize \underline{Acceptable 90-minute 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\\ \large \textcolor{red}{3\%} \normalsize for Simple (our baseline)\\ \end{column} \end{columns} \begin{center} \large \includegraphics[scale=0.4]{img/stop.pdf} \color{red} Even with Donar Alternate, many calls still fail\\ \large \includegraphics[scale=0.4]{img/ok.pdf} \color{black!50!green} With Donar Double Send, most calls succeed \end{center} \end{frame} \begin{frame}{Does Donar maintain calls over time?} \includegraphics[width=\textwidth]{img/call_drop.pdf} \begin{center} \Large \includegraphics[scale=0.4]{img/ok.pdf} \color{black!50!green} Donar provides stable calls \end{center} \end{frame} \begin{frame}{Conclusion} \underline{We contributed} \Large Foundations \\ \normalsize to build a Tor softphone with stable latency \Large Insights \\ \normalsize to understand delays on Tor from a real-time perspective \end{frame}