\chapter{Evaluation}\label{ch:evaluation} To show that Birdvisu is a usable project, we have tried to use it in several network systems, both synthetic and already deployed. Here we summarise our experience with using it. Because our project is mainly an interactive program, we do not present any performance or other measurements. Therefore, we rather focus on the subjective feeling of the project and evaluate the design decision from chapter~\ref{ch:design}. \section{Gennet} Naturally, Gennet, as described in section~\ref{s:gennet} is supported quite well. Since we had complete control of the whole network, we could test e.g. multi-area OSPF deployment, which is not common in real network systems, as far as we are aware. However, only small networks can be simulated in Gennet, because each router requires disk and memory, which may be quite scarce. \section{Our home network} At home, the author relies on a dynamic routing to switch between falling uplinks and to provide a simple way to address virtual machines across the network system. This was one of the reasons we decided to look for visualisations of OSPF topology state. Since it only spans a single room, this system is even smaller than Gennet, containing only three routers and less than 10 networks (the exact number depends on which devices are up at the time). We believe that major issues do not show up at this scale. Naturally, Gennet can be connected to the home network. At that point, our approach to laying out vertices starts feeling suboptimal, because edges cross unnecessarily often. The connections are clear, however, and this can be alleviated by using a fixed layout in a file. In the future, this could be addressed by using some force-based approach for the automatic layout. \section{Department of Applied Mathematics} The department which advised this thesis also uses OSPF in its infrastructure. Again, the main purpose is to address containers and virtual machines in the system. The topology consists of 5 routers and about 27 networks, most of which are stub. Again, the main issue is the automatic vertex layout. Also, since most of the networks are stub (and often only contain a single host), the graph could position these networks near each other, or even collapse them into one vertex. Birdvisu does not unfortunately support that at the moment. \section{Czela.net} Czela.net~\cite{czelanet} is a network system run by a community of network enthusiasts in Čelákovice and the surrounding area. There are about 1600 people connected to Czela.net. This is the typical OSPF deployment, whose main task is to dynamically provide fallbacks in case of outages. It is also an example of a larger network, with 45 routers, 32 transit networks and 178 external routes\footnote{Most of these would be stub routes in other deployments, but there is little difference from the topology perspective.}. Unfortunately, their infrastructure does not use BIRD anywhere and we were not able to connect our instance to any of their transit networks. Therefore we only tested displaying the topology based on a dump from one of their MikroTik routers, which we manually converted to mimic BIRD's format. We believe this should not affect the performance much, because the retrieval of data from BIRD is only occasional and once BIRD dumps the topology, the procedure is the same as with loading the topology from file. This turned out to be helpful for both us and Czela.net. We discovered that our method of highlighting of costs does not work well with too big range of the costs, and on the other hand, we found several misconfigurations in their network (some routers had external routes to transit networks, a few networks with routing-unaware clients were used as transit), even without any other knowledge of their system. We did not notice any performance issues when dealing with the topology. \bigskip Unfortunately, we did not have the opportunity to test in a large network (the Czela.net's one is the largest we tested), so we do not really know the limits of capabilities. Those are even hard to guess, because while we are trying to use rather fast algorithms, they are implemented in Python, which can sometimes be quite slow, and more importantly, does not support threads well. The heavy use of hash tables and indirection can also impair performance. Overall, the testing did not discover any important problems with the design of Birdvisu, we are only aware of issues related to small parts of the project.