Visualisation of OSPF network topology as seen by the BIRD routing daemon.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Go to file
LEdoian 6b2772d160 Extend visualisation.ospf to include styles
A concept/idea stage atm, but seems simple enough and nice.

The builtin style might want to have a sigil. The default possibly too.

The core idea is that everything that is not annotated uses the
"default" style, which is user-tweakable and defaults to the "builtin"
style, which makes sure everything gets drawn in some sane way.

Implementation-wise, a first annotator would lay out the vertices and
shortcut them possibly, second one would lay out the
unpositioned-but-shown vertices (in a similar way to the
random_positioner), third would process the styling graph and annotate
with styling directives. The actual visualisation would then just read
the annotations and topology¹ and draw that into the QGraphicsScene.

¹ We might need to devise a different representation to make sure thaat
the shortcuts work reasonably.

For a very broad overview, something akin to:
	style default
		hide
	style important
		show
		pen color red
could be used.

The styling should possibly be in opposite order: object property
params. This way, we can quickly ignore the irrelevant properties (like
line width for vertices)

An extreme but probably workable idea would be to reuse a TopologyV3.
While the families and addresses make zero sense, it could represent the
reduced graph. However, we would need some way of mapping the new
vertices/edges to the old ones (for Dijkstra &c.), so it is probably
just better to create an Annotator-driven "overlay" in the existing
AnnotatedTopology (reuse a subset of VertexIDs, maybe create own Edges.
Those objects can exist without a TopologyV3, so it is fine. Also, at
that point we do not need to use too-reasonable objects in the
Annotations.)

Regarding the "icon router bleg.svg": We will probably want to only
allow files from assets in the beginning, so that the visualisation
files are portable without any restrictions. In future, we could have a
visualisation-relative resolution and/or directives to add other paths.
(maybe with prefixes, Pelican style)

The styles should possibly be top-level directives, not l2, so that they
are reusable between presets (in the same file)
1 year ago
birdvisu Add module docstring for annotations.analysis 1 year ago
design_notes Add note about supported OSPFv3 2 years ago
docs Ensure, that sphinx works 1 year ago
snippets Merge remote-tracking branch 'gitea/toolchain_setup' 1 year ago
.gitignore Merge branch 'socket_api' 1 year ago
Makefile Add a generator for current state 2 years ago
README.md Unify the two READMEs 1 year ago
poor_mans_visualisation.py Start reimplementing poor_mans_visualisation.py 1 year ago
pyproject.toml Initial version of packaging 2 years ago
reference.ospf Split visualisation directives to separate file. 1 year ago
visualisation.ospf Extend visualisation.ospf to include styles 1 year ago

README.md

A simple tool for visualising OSPF network topology as seen by BIRD

Birdvisu is a library and a graphical app to visualize routing topologies of OSPF. It does not implement OSPF on its own, but rather exports current state from BIRD that's where the name comes from.

The main use case is comparing a reference topology (e.g. a known good one) to the current state. This allows Birdvisu to show failed links and other anomailes in the network.

Also, this is the project for my Bachelor thesis.

Installation

Run pip install -e .. You can use a virtualenv if you wish (recommended).

A demo is located in ./poor_mans_visualisation.py, if that runs, everything should be working.

Documentation

Documentation is built using Sphinx by running make in the docs/ directory.

Licence

I have not decided yet, so please ask for terms if you want to use this in some non-trivial way. Obviously this is source available :-)