Compare commits
No commits in common. 'master' and 'v18T0717' have entirely different histories.
@ -1,5 +1,5 @@
|
|||||||
% Metadata k uložení do PDF, podrobnější popis viz dokumentace balíčku pdfx.
|
% Metadata k uložení do PDF, podrobnější popis viz dokumentace balíčku pdfx.
|
||||||
|
|
||||||
\Author{Pavel Turinský}
|
\Author{Jméno Příjmení}
|
||||||
\Title{Vizualizace topologie OSPF}
|
\Title{Název práce}
|
||||||
\Publisher{Univerzita Karlova}
|
\Publisher{Univerzita Karlova}
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
Binary file not shown.
Before Width: | Height: | Size: 211 KiB |
Binary file not shown.
Before Width: | Height: | Size: 31 KiB |
@ -1,289 +0,0 @@
|
|||||||
\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}
|
|
@ -1,5 +1,5 @@
|
|||||||
% Metadata to be stored in PDF, see documentation of the pdfx package for more details.
|
% Metadata to be stored in PDF, see documentation of the pdfx package for more details.
|
||||||
|
|
||||||
\Author{Pavel Turinský}
|
\Author{Name Surname}
|
||||||
\Title{Visualizing OSPF topology}
|
\Title{Thesis title}
|
||||||
\Publisher{Charles University}
|
\Publisher{Charles University}
|
||||||
|
@ -1,31 +1,4 @@
|
|||||||
\chapter*{Glossary}\label{ch:glossary}
|
\chapter*{Glossary}\label{ch:glossary}
|
||||||
\addcontentsline{toc}{chapter}{Glossary}
|
\addcontentsline{toc}{chapter}{Glossary}
|
||||||
|
|
||||||
% This is hard to format reasonably, so we at least try to do it consistently.
|
\XXX{TODO}
|
||||||
|
|
||||||
\strut\indent{}A \emph{bridge} is a networking device, which forwards link-level
|
|
||||||
frames between interfaces.
|
|
||||||
|
|
||||||
The term \emph{community wireless network}
|
|
||||||
describes a system of often wireless networks, which is managed by a community
|
|
||||||
rather than by an ISP.
|
|
||||||
|
|
||||||
\emph{Dual-stack} networks can forward and process both IPv4 and IPv6 packets.
|
|
||||||
|
|
||||||
When a program is run without being able to display graphical elements, it is said to be run \emph{headless}.
|
|
||||||
|
|
||||||
A \emph{homelab} is a small infrastructure, on which a network enthusiast can experiment and thus improve their networking skills.
|
|
||||||
|
|
||||||
\emph{Netsplit} is just a short form for \uv{network split}.
|
|
||||||
|
|
||||||
A \emph{next hop} is the name for the following router a packet is forwarded to.
|
|
||||||
|
|
||||||
In Linux distributions, a \emph{package} is a common way to distribute software.
|
|
||||||
|
|
||||||
\emph{Quad-dotted notation} denotes writing a
|
|
||||||
32-bit number as four decimal numbers representing individual bytes, with dots
|
|
||||||
between them. The numbers are written in the network order, also known as big-endian.
|
|
||||||
|
|
||||||
A \emph{routing daemon} is a program running on a router that exchanges routing information with other routers.
|
|
||||||
|
|
||||||
Python's current way of distributing compiled software is called \emph{wheel}.
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 55 KiB |
@ -1 +0,0 @@
|
|||||||
*.pdf
|
|
@ -1,4 +0,0 @@
|
|||||||
all: dot.pdf neato.pdf circo.pdf sfdp.pdf fdp.pdf twopi.pdf
|
|
||||||
|
|
||||||
%.pdf: source.dot
|
|
||||||
$* -Tpdf -o$@ $<
|
|
@ -1,16 +0,0 @@
|
|||||||
graph "This is not good" {
|
|
||||||
rou_x -- {net_7 net_6};
|
|
||||||
rou_a -- {net_6 net_4};
|
|
||||||
rou_b -- {net_6 net_5};
|
|
||||||
rou_c -- {net_4 net_2};
|
|
||||||
rou_d -- {net_4 net_3};
|
|
||||||
rou_e -- {net_5 net_2};
|
|
||||||
rou_f -- {net_5 net_3};
|
|
||||||
rou_g -- {net_3 net_1};
|
|
||||||
rou_h -- {net_2 net_1};
|
|
||||||
rou_i -- {net_1};
|
|
||||||
pm -- {internet vl16};
|
|
||||||
qs -- {internet vl16};
|
|
||||||
tr -- {internet vl15 vl16 vl2 vl42};
|
|
||||||
zr -- {net_7 vl101 vl16};
|
|
||||||
}
|
|
Loading…
Reference in New Issue