Vadims06 / topolograph

Topolograph.com is an online project which can visualize OSPF/ISIS topology based on LSDB output from a single network device. Then you can not only see (and check) the shortest path from source to destination, but also see the outcome from link or node failure along the path to the destination.
https://topolograph.com
MIT License
177 stars 23 forks source link

BIRD Support #1

Closed Denriful closed 3 years ago

Denriful commented 4 years ago

Hi. Do you have plans to add BIRD support ?

Vadims06 commented 4 years ago

Hi, @Denriful, thank you for being the first one who created an issue regarding the topolograph!) Actually, right now i'm focusing on docker's version of the site, but I could try to add BIRD support, if you send me aka show ip ospf database router, show ip ospf database network ,.. summary and external to my email - admin@topolograph.com. I had a look at BIRD's spec and I guess show ospf lsadb could have all necessary output.

Vadims06 commented 4 years ago

Hi @Denriful, docker's version has been released. By now there is only FRR/Quagga, Cisco, Juniper support

Denriful commented 4 years ago

Hi, @Denriful, thank you for being the first one who created an issue regarding the topolograph!) Actually, right now i'm focusing on docker's version of the site, but I could try to add BIRD support, if you send me aka show ip ospf database router, show ip ospf database network ,.. summary and external to my email - admin@topolograph.com. I had a look at BIRD's spec and I guess show ospf lsadb could have all necessary output.

Hi, i send you BIRD data.

benjojo commented 4 years ago

Hi! I'm also very interested in this feature being supported, I can send you a show ospf lsadb as well if you need it

Vadims06 commented 4 years ago

Hi! I'm also very interested in this feature being supported, I can send you a show ospf lsadb as well if you need it

Hi, @benjojo. Thanks for your feedback. I reviewed bird's output and bird doesn't follow RFS2328 OSPFv2 regarding LSA1 router and LSA2 network format output. Based on it, it's not clear to find out is it p2p link or shared with DR. But I can suggest another solution - I can implement Quagga container with an option to setup GRE tunnel from docker's version of Topolograph to an instance with BIRD and setup OSPF adjacency. Then you can get your OSPF domain visual. Is it applicable for you?..

benjojo commented 4 years ago

ah damn, I'll just spin up a Quagga container on my end and just use this tool via that then. Is it not possible to make an imperfect parser based on the bird output?

Vadims06 commented 4 years ago

ah damn, I'll just spin up a Quagga container on my end and just use this tool via that then. Is it not possible to make an imperfect parser based on the bird output?

@benjojo, i will happy to try to make this parser. Could you please kindly send me 'show ospf lsadb type 1/2, and show ospf state all. Additionally, simple picture of topology is needed in order to understand BIRD output logic. It's unnecessary to paint all nodes if you have 100 devices, but a simple triangle topology with 3-5 devices will be perfect.

benjojo commented 4 years ago

Sure, Here are two examples:

image as206924-ospf.txt

This is the network I'm trying to visualise, (The diagram is what I'm trying to verify, hence me finding this tool :) )

Here is your requested setup, stolen from a previous test setup:

image simple.txt The simple.txt taken from the "Bank" node.

Vadims06 commented 4 years ago

many thanks, @benjojo. Few clarifications, because I'm not familiar with BIRD, so I'm curious about this record in as206924-ospf.txt:

router 185.230.223.49
        distance 1
        network [185.230.223.49-2] metric 1

what does the record network [...] mean? In the documentation, it stands as Definition of area IP ranges. This is used in summary LSA origination. but I didn't get the point =) Any assumptions? Another question - there is no router statement, does it mean that 185.230.223.49 doesn't have OSPF adjacency? If so, how do we know about 185.230.223.49 if no adj?)..

benjojo commented 4 years ago

It appears to come from: https://github.com/CZ-NIC/bird/blob/c26c6bc2d78a2fe76f27dcc9fbb5afc95c3a7626/proto/ospf/ospf.c#L1103

NIF being defined here: https://github.com/BIRD/bird/blob/master/proto/ospf/ospf.h#L639

I assume this is because while all of the main nodes are connected via point to point links, 185.230.223.49 is connected on a broadcast link. -2 assuming means it's the second interface ID?

benjojo commented 4 years ago

Just checked, and the OSPF interface on 185.230.223.49 is indeed interface index 2, so i assume that's what it's signalled

Vadims06 commented 4 years ago

@benjojo Added BIRD support on the site and also pushed vadims06/topolograph:2.10 with bird. Please check and give feedback.

benjojo commented 4 years ago

Amazing, Thank you so much!

Vadims06 commented 3 years ago

If no any comments - I can close this request. BIRD is available from 2.10 version. Many thanks @benjojo and Denriful for the help