diff --git a/defense/czbug.png b/defense/czbug.png new file mode 100644 index 0000000..de69d35 Binary files /dev/null and b/defense/czbug.png differ diff --git a/defense/czmess.png b/defense/czmess.png new file mode 100644 index 0000000..c00b516 Binary files /dev/null and b/defense/czmess.png differ diff --git a/defense/gennet.png b/defense/gennet.png new file mode 100644 index 0000000..5650c48 Binary files /dev/null and b/defense/gennet.png differ diff --git a/defense/slides.tex b/defense/slides.tex new file mode 100644 index 0000000..870b150 --- /dev/null +++ b/defense/slides.tex @@ -0,0 +1,289 @@ +\documentclass{beamer} + +\usetheme{Madrid} +% Ref: https://tex.stackexchange.com/a/692 +\setbeamertemplate{navigation symbols}{} + +% We may as well create a PDF/A, why not. (I am too lazy to invent my +% own header, instead I just pick line from the thesis' one :-)) + +\usepackage[a-2u]{pdfx} +\usepackage[utf8]{inputenc} +\usepackage{lmodern} + +\usepackage{xcolor} +\usepackage{listings} + +\hypersetup{unicode} +\hypersetup{breaklinks=true} + +\def\uv#1{``#1''} + + +\title{Visualising OSPF topology} +\subtitle{Motivation and design of Birdvisu} %FIXME? +\author{Pavel Turinský} +\date{7 September 2023} +%\date{07-09-2023} % Looks weird imho :-/ + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + +\iffalse % Maybe drop, in that case, comment the next line. +%\else +\begin{frame} + \frametitle{Outline} + \begin{itemize} + \item Introduction + \begin{itemize} + \item What is Birdvisu + \item Reasons for creating Birdvisu + \item Goals + \end{itemize} + % intro: + %% what + %% why (comparison) + %% goals + \item Technologies + \begin{itemize} + \item OSPF overview + \item Interaction with BIRD + \end{itemize} + % tech stack + %% OSPF summary + history + %% BIRD: why and how + %%% the dump format + %%% note gennet + \item Design + \begin{itemize} + \item Retrieving topologies + \item Annotation + \item Drawing + \end{itemize} + % design + %% the three phases + \item Results + \begin{itemize} + \item Small networks + \item Large: czela.net + \end{itemize} + % results + %% czela,net + %%% known deficiencies + + \item Future + % future? + %% exports, integration + %% saving layouts + % gennet? + \end{itemize} +\end{frame} +\fi + +%TODO: slide about Birdvisu is, very highlevel + + +\begin{frame} + \frametitle{Project goals} + The Birdvisu project aims to present the network topology, as known + by OSPF, to the administrator and allow them to analyse it. + + \bigskip + + Goals: + \begin{itemize} + \item As independent on other services as possible + \item Easy deployment + \begin{itemize} + \item Runnable on admin's laptop + \end{itemize} + \item No changes to other hosts required + \item It should be easy to create new analysis tools + \item Target: administrators of homelabs to middle-sized systems + \end{itemize} + + \medskip + + To our knowledge, there is no such application yet. + + \medskip + + Birdvisu is implemented in Python 3 and Qt 6. +\end{frame} +% \begin{frame} +% %\frametitle{Why visualise/analyse topologies} +% \frametitle{Motivation and goals} +% Existing analysis/monitoring tools: +% \begin{itemize} +% \item Need to collect data on individual hosts, +% \item do may not have accurate data (network splits) +% \item or need to be deployed on a server +% \end{itemize} +% \dots yet in systems routed by OSPF each router knows all of this. +% +% \vfill +% +% The aim of Birdvisu is to present this information to +% administrators. +% \begin{itemize} +% \item single-host, easy-to-run, few dependencies on services +% \item Target: administrators of homelabs to middle-sized systems +% \end{itemize} +% \end{frame} + +% TODO: wanted features? + +%%% design + +\begin{frame} + \frametitle{Birdvisu design} + % uwu uwu FIXME TODO + The program consists of three main steps: + \begin{itemize} + \item Obtaining the topologies + % shenanigans? + % non-matchability of uwu uwu. + \begin{itemize} + \item Reference (from file), current state + \item Representation: weighted directed multigraph +% \item Reference and current one merged into a single object +% \item Extracted from BIRD or loaded from saved files +% \item Networks can have various forms: orieiwnted weighted multigraph + \end{itemize} + \item Annotating + \begin{itemize} + \item Extending the topology with analysis results, other data, \dots +% \item Many single-purpose annotators +% \item e.g. compute topology differences, find shortest paths + \end{itemize} + \item Displaying the result + % own try of layouting alg + % each highlight has its StyleAnnotator + \begin{itemize} + \item Reduction of the topology to a simple graph + \item Highlight relevant annotator results + + \medskip + + \item Alternatively export the annotated topology (in future) +% \item Use Qt's features: dragging, interaction +% \item Layout loaded from file or determined by ad-hoc +% algorithm +% \item Reuses Annotator design + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{OSPF} + \begin{itemize} + \item Link-state IGP: routers share information about the current state of the system + \item Long evolution (1989), multiple extensions, rather complex + \item Different versions for IPv4 and IPv6 routing + \begin{itemize} + \item Same idea, quite different internals + \end{itemize} + \end{itemize} + + \bigskip + + Instead of implementing OSPF ourselves, we extract the state from existing routing daemon. +\end{frame} + +\begin{frame} + \frametitle{BIRD Internet Routing Daemon} + \begin{itemize} + \item Originally SW project at this faculty, now maintained by CZ.NIC + \item Experience from deployment at home, Dept{.} of Applied Mathematics + \item One of two maintained OSPF daemons for general-purpose HW %FIXME: check BrE + \begin{itemize} + \item future extensions more likely to be implemented + \end{itemize} + \end{itemize} + + \bigskip + + \begin{itemize} + \item Currently no machine-readable export + \begin{itemize} + \item The output for humans contains sufficient information + \end{itemize} + \item No dynamic output -- needs polling + \end{itemize} + + % logo? snippet of output? +\end{frame} + +\begin{frame} + \frametitle{Annotators} + \begin{itemize} + \item Can add arbitrary$^*$ data to vertices and edges + \begin{itemize} + \item Exportable in future + \end{itemize} + \item Can depend on each other + \item Idea: many simple and single-purpose annotators + \item Uses: analysis, providing additional information, \dots + \begin{itemize} + \item e.g. comparing topologies, finding shortest path DAGs + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Visualisation} + \begin{itemize} + \item Reuse Annotators for styling vertices and edges + \item Reduce topology to a simple graph by taking the most relevant edge + \begin{itemize} + \item lightest edge with positive cost + \end{itemize} + \item Layout can be loaded from a file + \begin{itemize} + \item New vertices placed to proximity of neighbours + \end{itemize} + \item Qt provides UI features: dragging, context menus + \end{itemize} +\end{frame} + +% Results and examples + +\begin{frame} + \frametitle{Small network example: Gennet} + \begin{center} + \includegraphics[keepaspectratio,height=0.7\textheight]{gennet.png} + \\ + Highlighting differences from expectation on a test network (Gennet) + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Medium-sized network: Czela.net} + Community network system in Čelákovice, 45 routers, 210 networks (incl. external), about 1600 people + \begin{center} + \includegraphics[keepaspectratio,height=0.6\textheight]{czmess.png} + \\ + Our layouting approach is not great without any initial placements. + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Fixing Czela.net} + \begin{center} + \includegraphics[keepaspectratio,height=0.7\textheight]{czbug.png} + \\ + Misconfiguration, found after some dragging of vertices + \end{center} +\end{frame} + +\begin{frame} + \begin{center} + \begin{Large} + Thank you! + \end{Large} + \end{center} +\end{frame} +\end{document}