\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}