Giter VIP home page Giter VIP logo

vadims06 / topolograph Goto Github PK

View Code? Open in Web Editor NEW
159.0 9.0 20.0 56.32 MB

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.

Home Page: https://topolograph.com

License: MIT License

Smarty 100.00%
ospf topology-visualization topology-optimization topology-graph network cisco juniper mikrotik quagga nokia

topolograph's Introduction

Topolograph

Topolograph.com is a Web Python-based tool, which is aimed at visualizing OSPF/ISIS topology and working with the OSPF/ISIS network offline! No any logins and passwords! The Topolograph visualizes OSPF/ISIS network topology based on LinkState DataBase scrapped from a single network device ( thanks OSPF/ISIS =). You can upload a txt file or boot up docker's version of Topolograph on your PC and the Topolograph takes OSPF via NAPALM's methods by itself. Then you can build the shortest path from a source to a destination, get backup paths, emulate link outage along the path or change OSPF/ISIS link cost on the fly! Additionally, you can simulate a device outage and see appropriate network reaction. Build reports about the network.
Once you upload your OSPF/ISIS to Topolograph - you save the state of your network. After any changes on a network (i.e. redistribution from BGP to OSPF via route-maps with prefix-lists) - upload the network once again and compare them between each other.

Real-Time monitoring

Watcher agent for real-time monitoring of changes happened in OSPF/IS-IS domain

Available option

  • Do not require any logins and passwords - accept LSDB from txt file or via Rest API
  • Docker version is available. Launch local copy of Topolograph site on your PC
  • Once you get your network graph - build the shortests paths
  • Simulate a link outage and discover backup paths or backup of backup paths...
  • Simulate a router shutdown. Look at traffic flow around the failed router
  • Find the most loaded nodes and edges, fault tolerant nodes.
  • Check network reaction to IGP cost change on a link
  • Compare the network state at different times
  • Discover backuped/not-backuped networks in Analytics/Network heatmap
  • Discover asymmetric paths
  • Build arbitrary topologies based on YAML. Yaml file topology visualization.

Supported vendors for OSPF visualization

Vendor LSA1 LSA2 LSA5 NAPALM support
Cisco show ip ospf database router show ip ospf database network show ip ospf database external YES
Cisco NX-OS show ip ospf database router detail show ip ospf database network detail show ip ospf database external detail No
Quagga show ip ospf database router show ip ospf database network show ip ospf database external YES
Ruckus show ip ospf database link-state router show ip ospf database link-state network show ip ospf database external-link-state No
Juniper show ospf database router extensive | no-more show ospf database network extensive | no-more show ospf database external extensive | no-more YES
Bird show ospf state all show ospf state all show ospf state all No
Nokia show router ospf database type router detail show router ospf database type network detail show router ospf database type external detail Yes
Mikrotik /routing ospf lsa print detail file=lsa.txt /routing ospf lsa print detail file=lsa.txt /routing ospf lsa print detail file=lsa.txt No
Huawei display ospf lsdb router display ospf lsdb network display ospf lsdb ase No
Paloalto show routing protocol ospf dumplsdb show routing protocol ospf dumplsdb show routing protocol ospf dumplsdb No
Ubiquiti show ip ospf database router show ip ospf database network show ip ospf database external No
Allied Telesis show ip ospf database router show ip ospf database network show ip ospf database external No
Extreme show ospf lsdb detail lstype router show ospf lsdb detail lstype network show ospf lsdb detail lstype as-external No
Ericsson show ospf database router detail show ospf database network detail show ospf database external detail No

LSA 1 and LSA 2 is mandatory and have to exist in the same file. LSA 5 is optional. The output from all commands should be placed in a single file and then be uploaded to Topolograph.

Supported vendors for OSPFv3 visualization

Vendor Command Stub network included External (redistributed) network
Arista show ipv6 ospf database detail YES YES

Supported vendors for ISIS visualization

Vendor Command Stub network included External (redistributed) network
Cisco show isis database detail YES No, (need tested LSDB for adding it)
Juniper show isis database extensive YES, but need tested LSDB for checking it No, (need tested LSDB for adding it)
Nokia show router isis database detail YES, but need tested LSDB for checking it No, (need tested LSDB for adding it)
Huawei display isis lsdb verbose YES, but need tested LSDB for checking it No, (need tested LSDB for adding it)
ZTE show isis database verbose YES, but need tested LSDB for checking it No, (need tested LSDB for adding it)

How to start

  • run commands specifically to your vendor (from Supported vendors table) on single device ( if you have multiple areas - do it on ABR)

  • save all commands output in a single file with .txt or .log extension

  • upload the file to Topolograph

  • or do it programmatically via Rest API. Multi devices LSDBs are supported via API only (v2.34).

Expected file's extension

  • .txt
  • .log

Demo

Upload OSPF LSDB to the Topolograph and Building the shortest paths

This demo shows how to get OSPF topology visual and interact with it.

  1. Upload the file to Topolograph from exicuted commands previously.
  2. Build the shortest paths
  3. Emulate a link outage and see backup paths

Network reaction on the link failure. Backup paths

Pressing on edge we simulate the link outage and can see backup paths
pressing on edge we simulate the link outage and can see backup paths and we can see backup of backup paths as well

OSPF cost changes on the fly. OSPF cost planning.

It's feasible to change OSPF cost on any edge and get network reaction on the fly!
Build the shortest path under General View and set new OSPF cost in new pop-up-ed form - new path will be repainted
This pop-uped form is available under NetworkReactionOnFailure and shows network traffic pattern changes!
On the demo below we changed OSPF cost from 1 to 22 and OSPF rebuilt the shortest path via bottom link.

Sum it up, available features under GeneralView Tab:

  • Build the shortest path, right click on a node and set it as a source or destination.
  • Find backup paths, just press on a colored SPT edge and you will simulate link outage. The network reaction will be showed with using different colors.
  • OSPF edge cost planning right click on an edge and you can change edge's OSPF cost you see new path of your SPT.
  • Find termination node of a network start typing a network in Focus/Source tab and you get a dropdown list with all nodes with this network. Once you choose it - you will be focused on the node.

NetworkReactionOnFailure is covered in how-to

It's possible to simulate a link or router shutdown/outage. The topology will be re-pained with expected changed traffic flow avoiding failed link or router.

  • Blue lines show traffic increasing over the link
  • Grey lines show traffic decreasing over the link

Try to shutdown backup router and see the graph reaction. If this is a true backup router - there shoudn't be network rebuilding too much

Reports

Asymmetric paths

When different costs are configured on different links - asymmetric paths could be in the network. The incoming path from W to F is going via C-D, but the outgoing path is via B-A. Paths can go via different ISPs and come with different delays and, probably, losses. The report is aimed at discovering such cases in order to eliminate it.

Network heatmap

The topolograph knows what networks are advertised by nodes. When the network is terminated on both routers, using VRRP, both nodes advertise the network. The node is marked by red if it has a lot of unbackuped networks, and vise versa.

ECMP backup paths

  • We suggest that if we have multiple links bounded to ECMP and if the main link in ECMP goes down, the backup path should go via the second link in ECMP. passed report
    passed report
  • If backup path goes not via ECMP and chooses completely different path - the report will be treated as failed. failed report
    passed report

Private

Keep your network inside your organization. Run your local copy of Topolograph inside your on-premises network using the docker image.

API

Schema

Full schema description is here

Default credentials

Default credentials are available via environment variables in case of using docker-based version. How to set it described in this case.

Details

Started from v2.19. Scrab your LSDB using your favourite tools like Ansible, netmiko, Nornir, etc and upload your OSPF network graph to Topolograph via a POST request. The response returns:

  • diff comparison with previously uploaded graphs
  • link to get all networks
  • status about passed checks (are there are asymmetric links in the network, etc)
{'diff': {'compared_with_graph_time': '08Jun2021_20h15m26s_13_hosts',
          'graphs_diff': {'all_edges_stats_ll': [{'dst_node': '123.123.110.110',
                                                  'link_cost': 10,
                                                  'link_status': 'old',
                                                  'src_node': '123.123.100.100'],
                          'new_nodes': [],
                          'old_nodes': []},
          'networks_diff': {'new_subnets_attr_dd_ll': [{'rid': '123.30.30.30',
                                                        'subnet': '30.30.30.30/32'}],
                            'old_subnets_attr_dd_ll': []}},
 'graph_time': '08Jun2021_20h15m51s_13_hosts',
 'hosts': {'count': 13},
 'networks': {'backuped': 17,
              'count': 39,
              'notbackuped': 22,
              'url_link': 'https://topolograph.com/api/network/08Jun2021_20h15m51s_13_hosts'},
 'reports': {'ansym_edges_pass_status': False},
 'timestamp': '2021-06-08T20:15:51.724000'}

API graph upload

Upload you OSPF network via python. Supposed that you saved commands output into cisco_lsdb_output.txt.

import requests
from pprint import pprint as pp
with open('cisco_lsdb_output.txt') as f:
  lsdb_output = f.read()
  r_post = requests.post('https://topolograph.com/api/graph', auth=('[email protected]', 'your-pass'), 
                          json={'lsdb_output': lsdb_output, 'vendor_device': 'Cisco', 'igp_protocol': 'ospf'})
  pp(r_post.json())

igp_protocol may include ospf or isis

Get the shortest path

It allows to get the shortest path between two OSPF RID, or it also accepts IP address or IP Subnet as source/destination and returns the following:

  • path's cost
  • the shortest path
  • unbackuped parts of the shortest path (if these links go down, we will lose a connectivity between the source and destination).

src_node and dst_node accepts OSPF RID as a value.

r_post = requests.post('https://topolograph.com/api/path', auth=('', ''), 
json={'graph_time': '27Dec2022_22h46m01s_7_hosts_ospfwatcher', 'src_node': '192.168.100.100', 'dst_node': '10.1.123.23'})  

Reply

r_post.json()
{'cost': 30, 
'spt_path_nodes_name_as_ll_in_ll': [['192.168.100.100', '10.1.1.4', '10.1.1.2', '10.1.123.23']], 
'unbackup_paths_nodes_name_as_ll_in_ll': [['192.168.100.100', '10.1.1.4']]}

A '192.168.100.100' - '10.1.1.4' link is shown as nonbackuped
The visual path

Get backup path

removedEdgesAsNodePairsFromSptPath_ll_in_ll accepts a list of edges which will be treated as down links

r_post = requests.post('https://topolograph.com/api/path', auth=('', ''), 
json={'graph_time': '27Dec2022_22h46m01s_7_hosts_ospfwatcher', 'src_node': '192.168.100.100', 'dst_node': '10.1.123.23', 
'removedEdgesAsNodePairsFromSptPath_ll_in_ll': [['10.1.1.4', '10.1.1.2']]})    
r_post.json()
{'cost': 40, 
'spt_path_nodes_name_as_ll_in_ll': [['192.168.100.100', '10.1.1.4', '10.1.1.3', '10.1.1.2', '10.1.123.23']], 
'unbackup_paths_nodes_name_as_ll_in_ll': [['192.168.100.100', '10.1.1.4']]}

The visual path

get the shortest path for networks

There is a separate method for getting the shortest path, which accepts IP addresses/IP network as an input.
Let's build a path between 192.1.113.99 IP and 192.1.213.0/24 network.

r_post = requests.post('https://topolograph.com/api/path/network', auth=('', ''), 
json={'graph_time': '27Dec2022_22h46m01s_7_hosts_ospfwatcher', 'src_ip_or_network': '192.1.113.99', 'dst_ip_or_network': '192.1.213.0/24'})    

Reply

r_post.json()
{'cost': 20, 
'spt_path_nodes_name_as_ll_in_ll': [['10.1.1.1', '10.1.1.4', '10.1.1.2'], ['10.1.1.1', '10.1.1.3', '10.1.1.2']], 
'unbackup_paths_nodes_name_as_ll_in_ll': []}

The visual path

Network reaction on a failure

We have the following topology
image

Test case

Emulate powering off nodes 10.1.1.2 and 10.1.1.4.

What we would like to test

  • Link over utilisation will occurs?
  • Network reachability will be broken? Some nodes will be isolated?
    Test request:
import requests
from pprint import pprint as pp
r_post = requests.post('http://<topolograph-host>/api/network_reaction/node_failure/', auth=('   ', '    '), 
                          json={"graph_time": "25Nov2021_08h20m45s_7_hosts", "failed_nodes_list": ["10.1.1.2", "10.1.1.4"]})
pp(r_post.json())

Reply

{'affectedLinks': {'sptPathsDecreasedInPercent': {},
                   'sptPathsIncreasedInPercent': {'from': '10.1.1.1',
                                                  'to': '10.1.1.3',
                                                  'value': 60}},
 'disjointedNodes': [['10.1.123.23', '10.1.123.24'],
                     ['192.168.100.100'],
                     ['10.1.1.1', '10.1.1.3']],
 'isGraphStillConnected': False}

Yaml based topology

Topolograph visualizes topologies based on OSPF/IS-IS LSDB files, but starting from v2.32 it accepts YAML to build a graph. It can be used for building arbitrary topologies (not exactly IGP domains), but moreover it can keep the topology updated via Rest API. It's the first version of Network Diagram as a Service (NDAS)!
OSPF/IS-IS LSDB <-> YAML is interchangeable now in both ways, so it allows to make a design of IGP domain from the scratch or based on uploaded a LSDB, add new links/edges between nodes or change igp's cost and then check network reaction based on our changes.

Basic YAML based topology.

Build a graph with defined nodes and edges. https://user-images.githubusercontent.com/20796986/144145217-454c1442-ba6c-4337-a6f2-8dde5d337f1e.png

Node attributes

  • node's name is mandatory. Should be in IP-address format. To change it to any other value - use label
  • Tags of node are optional. Any key (type string): value (str, int, float, dictionary, list) pairs. image
    There is a graph with 6 nodes. Select all primary nodes (ha_role: primary) in the first DC (dc1)
import requests
from pprint import pprint as pp
query_params = {'location': 'dc1', 'ha_role': 'primary'}                                  
r_get = requests.get(f'http://{TOPOLOGRAPH_HOST}:{TOPOLOGRAPH_PORT}/api/diagram/{graph_time}/nodes', auth=('   ', '    '), params=query_params, timeout=(5, 30))

Reply

pp(r_get.json())
[{'ha_role': 'primary',
  'id': 1,
  'label': '10.10.10.2',
  'location': 'dc1',
  'name': '10.10.10.2',
  'size': 15}]

Edge attributes

  • src, dst is mandatory.
  • cost is optional. Default is 1. Equal to OSPF/IS-IS cost.
  • directed is optional. Default is false.
  • Tags of edge are optional. Any key (type string): value (str, int, float, dictionary, list) pairs. image
    Select all edges over verizon ISP between 10.10.10.2 and 10.10.10.4
query_params = {'src_node': '10.10.10.2', 'dst_node': '10.10.10.4', 'isp': 'verizon'}
r_get = requests.get(f'http://{TOPOLOGRAPH_HOST}:{TOPOLOGRAPH_PORT}/api/diagram/{graph_time}/edges', auth=('   ', '    '), params=query_params, timeout=(5, 30))

Reply

pp(r_get.json())                                                                          
[{'bw': 1000,
  'cost': 1,
  'dst': '10.10.10.4',
  'id': 3,
  'isp': 'verizon',
  'media': 'fiber',

Network reaction on adding new link between devices.

Let's add a new link with cost 1 between R3 (10.10.10.3) and R4 (10.10.10.4) device and see how network will react on it. image Obviously, we see traffic increase on direct link R3<->R4 and traffic decrease to R2 (10.10.10.2) and R5 (10.10.10.5).

Online Resources. Contacts

Known issues

If you just upload LSDB and press Delete -> topology will be deleted and added again. Just press Upload LSDB Tab again and then deleting of topology works fine.

Contribution.

Adding new feature into core of Topolograph

Email me admin at topolograph.com and can open the access to the repository.

adding new vendor

In order to project supports different vendors you can help us by creating five separate textfsm files for different LSA types for one vendor. Check Wiki for this.

adding NAPALM support

For adding scrapping OSPF by NAPALM - please create three additional methods and ping me to add it to topolograph. The example based on Cisco IOS NAPALM

    def get_ospf_router_lsa_raw_output(self):
        command_router = 'show ip ospf database router'

        show_ospf_lsdb_router_lsa_output = self._send_command(command_router).strip()
        return show_ospf_lsdb_router_lsa_output

    def get_ospf_network_lsa_raw_output(self):
        command_network = 'show ip ospf database network'

        show_ospf_lsdb_network_lsa_output = self._send_command(command_network).strip()
        return show_ospf_lsdb_network_lsa_output


    def get_ospf_external_lsa_raw_output(self):
        command_external = 'show ip ospf database external'

        show_ospf_lsdb_external_lsa_output = self._send_command(command_external).strip()
        return show_ospf_lsdb_external_lsa_output

Used RFC

RFC 2328

topolograph's People

Contributors

hellt avatar vadims06 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

topolograph's Issues

update topology from Watchers

Update a topology after changes detected by OSPF or IS-IS Watcher via 'Update Now' button in Topolograph, or select triggers for overwriting the current map.

there have been changes in the network, and the existing map is now outdated. Is there a feature that allows for automatic regeneration of the map when there are changes in the network topology, or if the topology differs for a certain period, say X time? Alternatively, is there a way to update the already created map to reflect these changes?

Details: Vadims06/ospfwatcher#8

Print link cost in the graph

Right now you can hover over a link to see the cost but that is not as convenient if I quickly want to compare multiple links and their cost.

It would be an idea to have an option to visualize the cost for links with a color or number. If the cost is not equal on both sides you could maybe print the cost on both sides to show the perspective.

Arista OSPF(v3) support

Hello, I found this project recently and love the concept, we run Arista and would love to know if that's a planned supported platform and if not what steps are required to help you implement it.

Docker version API enhancement

Hi!

API needs the credential and there is no way to create a user/password at the moment of Docker image deployment.
Now we need to create username/password via WEB interface and use the API then. It makes automatic deployment almost impossible. It would be fine to have a default username/password for local Docker image or it would be fine to be able to configure it in docker-compose.yml.
The same is for ip address range for authorised API users. Would be fine to have it enabled by default for 0.0.0.0/0 or to hve an ability to configure it in docker-compose.yml during the deployment.

Also Swagger ReST links (click "try it out") have a "topolograph" http://topolograph.com/api/ in the URL instead of localhost/127.0.0.1/or any other hostname which is used to reach the page.

Issue with point-to-point OSPF adjacency (Cisco Nexus OSPF)

I have a network (mixed Cisco Nexus and FRR, import as Quagga seems to work) OSPF nodes. When I import the LSDB from a Cisco Nexus device any adjacencies that are of type ospf point-to-point fail to import. Links that are ospf type broadcast import correctly.

If I take LSDB for the same network from FRR (import as quagga) all point-to-point and broadcast type links are imported correctly.

host not found in upstream "flask:5000"

It seems like the web server container can't connect to the flask container?

% docker logs flask
[2023-07-26 20:25:17 +0000] [1] [INFO] Starting gunicorn 20.0.4
[2023-07-26 20:25:17 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
[2023-07-26 20:25:17 +0000] [1] [INFO] Using worker: sync
[2023-07-26 20:25:17 +0000] [8] [INFO] Booting worker with pid: 8
[2023-07-26 20:25:17 +0000] [10] [INFO] Booting worker with pid: 10
[2023-07-26 20:25:17 +0000] [12] [INFO] Booting worker with pid: 12
[2023-07-26 20:25:17 +0000] [14] [INFO] Booting worker with pid: 14
%docker logs webserver
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: IPv6 listen already enabled
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
20-envsubst-on-templates.sh: Running envsubst on /etc/nginx/templates/app.conf.template to /etc/nginx/conf.d/app.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2023/07/26 20:27:01 [emerg] 1#1: host not found in upstream "flask:5000" in /etc/nginx/conf.d/app.conf:2
nginx: [emerg] host not found in upstream "flask:5000" in /etc/nginx/conf.d/app.conf:2

It does seem like the flask container is listening on 5000, as I can browse to localhost:5000 and I don't get an error.

OSPF topology to Drawio

I though it can be valuable to have an option to export OSPF topology view to Drawio scheme and then to SVG or PNG format. Please comment if you thing the same.

Add Network Reaction API

Please add a possibility to check how topology is changing in case of link(-s) and node(-s) failure via API.
Typical usage:

  • could we reload a particular router and what will be the impact:
    • Link over utilisation will occurs?
    • Network reachability will be broken? Some nodes will be isolated?

How are nodes and links build from an ospf database

i am building an ospf visualizer kind of thing in react
As far as i have researched,
You need 3 data things, from the terminal of a router
And that we can get from these commands
show IP ospf database
show ip ospf database router
show ip ospf database network
You might also need
show ip ospf database external which I am skipping not to increase the complexity of my project

The problem I am facing is how to create those arrays of nodes and links ?
If u could guide me through, would be a great help

Youtube Video

Focus issues in /yaml-diagram

Hi,

When in "Design Mode" and trying to update YAML on left hand side, every time I type in minus sign, the graph on right hand side zooms out. It looks an issue with focus not being taken away from the graph when editing?

AlliedWare+ support

I use many AT x900 routers in my network, can you add support them? I will provide the examples commands if needed.

IS-IS topology from Cisco IOS-XR

Hello,

Is IS-IS topology from Cisco IOS-XR supported?
I just tested it and I got "The graph is empty. Are you sure, that you uploaded ISIS LSDB from Cisco?"

Thanks!

ISIS DB from Nokia emtpy

Hi! I've built a lab to test the analysis on ISIS networks, but the tool complains with a "The graph is empty. Are you sure that you uploaded ISIS LSDB from Nokia".

The topology I'm using is this one:

image

And the DB is the one I obtained at the router P-11, which is an L2 router.
EDIT: I've updated the DB output since PE-14 was missing in my original post.

A:P-11# show router isis database detail 

===============================================================================
Rtr Base ISIS Instance 0 Database (detail)
===============================================================================

Displaying Level 1 database
-------------------------------------------------------------------------------
Level (1) LSP Count : 0

Displaying Level 2 database
-------------------------------------------------------------------------------
LSP ID    : P-11.00-00                                  Level     : L2 
Sequence  : 0xa                    Checksum  : 0x6406   Lifetime  : 1042
Version   : 1                      Pkt Type  : 20       Pkt Ver   : 1
Attributes: L1L2                   Max Area  : 3        Alloc Len : 1492
SYS ID    : 1720.1600.0011         SysID Len : 6        Used Len  : 260
 
TLVs : 
  Area Addresses:
    Area Address : (3) 49.0002
  Supp Protocols:
    Protocols     : IPv4
  IS-Hostname   : P-11
  Router ID   :
    Router ID   : 172.16.0.11
  Router Cap : 172.16.0.11, D:0, S:0
    TE Node Cap : B E M  P
    SR Cap: IPv4 MPLS-IPv6
       SRGB Base:100000, Range:100001
    SR Alg: metric based SPF
    Node MSD Cap: BMI : 12 ERLD : 15
  IS Neighbors  :
    Virtual Flag  : 0
    Default Metric: (I) 10
    Delay Metric  : (I) 0
    Expense Metric: (I) 0
    Error Metric  : (I) 0
    Neighbor      : P-11.01                             
  IS Neighbors  :
    Virtual Flag  : 0
    Default Metric: (I) 10
    Delay Metric  : (I) 0
    Expense Metric: (I) 0
    Error Metric  : (I) 0
    Neighbor      : P-11.02                             
  Internal Reach:
    Default Metric: (I) 10
    Delay Metric  : (I) 0
    Expense Metric: (I) 0
    Error Metric  : (I) 0
    IP Address    : 10.12.0.0
    IP Mask       : 255.255.255.252
    Default Metric: (I) 10
    Delay Metric  : (I) 0
    Expense Metric: (I) 0
    Error Metric  : (I) 0
    IP Address    : 10.14.0.0
    IP Mask       : 255.255.255.252
    Default Metric: (I) 0
    Delay Metric  : (I) 0
    Expense Metric: (I) 0
    Error Metric  : (I) 0             
    IP Address    : 172.16.0.11       
    IP Mask       : 255.255.255.255   
  I/F Addresses :                     
    I/F Address   : 10.12.0.1         
    I/F Address   : 10.14.0.1         
    I/F Address   : 172.16.0.11       
  TE IS Nbrs   :                      
    Nbr   : P-11.01                             
    Default Metric  : 10              
    Sub TLV Len     : 19              
    IF Addr   : 10.12.0.1             
    LAN-Adj-SID: 17 20 16 00 00 12  Flags:v4VL Weight:0 Label:524287
  TE IS Nbrs   :                      
    Nbr   : P-11.02                             
    Default Metric  : 10              
    Sub TLV Len     : 19              
    IF Addr   : 10.14.0.1             
    LAN-Adj-SID: 17 20 16 00 00 14  Flags:v4VL Weight:0 Label:524285
  TE IP Reach   :                     
    Default Metric  : 10              
    Control Info:    , prefLen 30     
    Prefix   : 10.12.0.0              
    Default Metric  : 10              
    Control Info:    , prefLen 30     
    Prefix   : 10.14.0.0              
    Default Metric  : 0               
    Control Info:   S, prefLen 32     
    Prefix   : 172.16.0.11            
    Sub TLV   :                       
      Prefix-SID Index:1, Algo:0, Flags:NnP
                                      
-------------------------------------------------------------------------------
LSP ID    : P-11.01-00                                  Level     : L2 
Sequence  : 0x7                    Checksum  : 0x8f2a   Lifetime  : 1106
Version   : 1                      Pkt Type  : 20       Pkt Ver   : 1
Attributes: L1L2                   Max Area  : 3        Alloc Len : 1492
SYS ID    : 1720.1600.0011         SysID Len : 6        Used Len  : 81
                                      
TLVs :                                
  IS Neighbors  :                     
    Virtual Flag  : 0                 
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    Neighbor      : P-11.00                             
  IS Neighbors  :                     
    Virtual Flag  : 0                 
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    Neighbor      : P-12.00                             
  TE IS Nbrs   :                      
    Nbr   : P-11.00                             
    Default Metric  : 0               
    Sub TLV Len     : 0               
  TE IS Nbrs   :                      
    Nbr   : P-12.00                             
    Default Metric  : 0               
    Sub TLV Len     : 0               
                                      
-------------------------------------------------------------------------------
LSP ID    : P-11.02-00                                  Level     : L2 
Sequence  : 0x7                    Checksum  : 0x258f   Lifetime  : 1166
Version   : 1                      Pkt Type  : 20       Pkt Ver   : 1
Attributes: L1L2                   Max Area  : 3        Alloc Len : 1492
SYS ID    : 1720.1600.0011         SysID Len : 6        Used Len  : 81
                                      
TLVs :                                
  IS Neighbors  :                     
    Virtual Flag  : 0                 
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    Neighbor      : P-11.00                             
  IS Neighbors  :                     
    Virtual Flag  : 0                 
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    Neighbor      : PE-14.00                            
  TE IS Nbrs   :                      
    Nbr   : P-11.00                             
    Default Metric  : 0               
    Sub TLV Len     : 0               
  TE IS Nbrs   :                      
    Nbr   : PE-14.00                            
    Default Metric  : 0               
    Sub TLV Len     : 0               
                                      
-------------------------------------------------------------------------------
LSP ID    : P-12.00-00                                  Level     : L2 
Sequence  : 0xa                    Checksum  : 0x86b2   Lifetime  : 1075
Version   : 1                      Pkt Type  : 20       Pkt Ver   : 1
Attributes: L1L2                   Max Area  : 3        Alloc Len : 260
SYS ID    : 1720.1600.0012         SysID Len : 6        Used Len  : 260
                                      
TLVs :                                
  Area Addresses:                     
    Area Address : (3) 49.0002        
  Supp Protocols:                     
    Protocols     : IPv4              
  IS-Hostname   : P-12                
  Router ID   :                       
    Router ID   : 172.16.0.12         
  Router Cap : 172.16.0.12, D:0, S:0  
    TE Node Cap : B E M  P            
    SR Cap: IPv4 MPLS-IPv6            
       SRGB Base:100000, Range:100001 
    SR Alg: metric based SPF          
    Node MSD Cap: BMI : 12 ERLD : 15  
  IS Neighbors  :                     
    Virtual Flag  : 0                 
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    Neighbor      : PE-13.02                            
  IS Neighbors  :                     
    Virtual Flag  : 0                 
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    Neighbor      : P-11.01                             
  Internal Reach:                     
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 10.12.0.0         
    IP Mask       : 255.255.255.252   
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 10.23.0.0         
    IP Mask       : 255.255.255.252   
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 172.16.0.12       
    IP Mask       : 255.255.255.255   
  I/F Addresses :                     
    I/F Address   : 10.23.0.1         
    I/F Address   : 10.12.0.2         
    I/F Address   : 172.16.0.12       
  TE IS Nbrs   :                      
    Nbr   : PE-13.02                            
    Default Metric  : 10              
    Sub TLV Len     : 19              
    IF Addr   : 10.23.0.1             
    LAN-Adj-SID: 17 20 16 00 00 13  Flags:v4VL Weight:0 Label:524287
  TE IS Nbrs   :                      
    Nbr   : P-11.01                             
    Default Metric  : 10              
    Sub TLV Len     : 19              
    IF Addr   : 10.12.0.2             
    LAN-Adj-SID: 17 20 16 00 00 11  Flags:v4VL Weight:0 Label:524286
  TE IP Reach   :                     
    Default Metric  : 10              
    Control Info:    , prefLen 30     
    Prefix   : 10.12.0.0              
    Default Metric  : 10              
    Control Info:    , prefLen 30     
    Prefix   : 10.23.0.0              
    Default Metric  : 0               
    Control Info:   S, prefLen 32     
    Prefix   : 172.16.0.12            
    Sub TLV   :                       
      Prefix-SID Index:2, Algo:0, Flags:NnP
                                      
-------------------------------------------------------------------------------
LSP ID    : PE-13.00-00                                 Level     : L2 
Sequence  : 0xc                    Checksum  : 0x20a4   Lifetime  : 1167
Version   : 1                      Pkt Type  : 20       Pkt Ver   : 1
Attributes: L1L2                   Max Area  : 3        Alloc Len : 283
SYS ID    : 1720.1600.0013         SysID Len : 6        Used Len  : 283
                                      
TLVs :                                
  Area Addresses:                     
    Area Address : (3) 49.0005        
  Supp Protocols:                     
    Protocols     : IPv4              
  IS-Hostname   : PE-13               
  Router ID   :                       
    Router ID   : 172.16.0.13         
  Router Cap : 172.16.0.13, D:0, S:0  
    TE Node Cap : B E M  P            
    SR Cap: IPv4 MPLS-IPv6            
       SRGB Base:100000, Range:100001 
    SR Alg: metric based SPF          
    Node MSD Cap: BMI : 12 ERLD : 15  
  IS Neighbors  :                     
    Virtual Flag  : 0                 
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    Neighbor      : PE-13.02                            
  Internal Reach:                     
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 10.5.0.0          
    IP Mask       : 255.255.255.252   
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 10.23.0.0         
    IP Mask       : 255.255.255.252   
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 172.16.0.13       
    IP Mask       : 255.255.255.255   
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 172.16.0.15       
    IP Mask       : 255.255.255.255   
  External Reach:                     
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 10.5.0.0          
    IP Mask       : 255.255.255.252   
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 10.23.0.0         
    IP Mask       : 255.255.255.252   
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 172.16.0.13       
    IP Mask       : 255.255.255.255   
  I/F Addresses :                     
    I/F Address   : 10.5.0.1          
    I/F Address   : 10.23.0.2         
    I/F Address   : 172.16.0.13       
  TE IS Nbrs   :                      
    Nbr   : PE-13.02                            
    Default Metric  : 10              
    Sub TLV Len     : 19              
    IF Addr   : 10.23.0.2             
    LAN-Adj-SID: 17 20 16 00 00 12  Flags:v4VL Weight:0 Label:524287
  TE IP Reach   :                     
    Default Metric  : 10              
    Control Info:    , prefLen 30     
    Prefix   : 10.5.0.0               
    Default Metric  : 10              
    Control Info:    , prefLen 30     
    Prefix   : 10.23.0.0              
    Default Metric  : 0               
    Control Info:   S, prefLen 32     
    Prefix   : 172.16.0.13            
    Sub TLV   :                       
      Prefix-SID Index:3, Algo:0, Flags:NnP
    Default Metric  : 10              
    Control Info:   S, prefLen 32     
    Prefix   : 172.16.0.15            
    Sub TLV   :                       
      Prefix-SID Index:5, Algo:0, Flags:RNnP
                                      
-------------------------------------------------------------------------------
LSP ID    : PE-13.02-00                                 Level     : L2 
Sequence  : 0x7                    Checksum  : 0xded3   Lifetime  : 918
Version   : 1                      Pkt Type  : 20       Pkt Ver   : 1
Attributes: L1L2                   Max Area  : 3        Alloc Len : 81
SYS ID    : 1720.1600.0013         SysID Len : 6        Used Len  : 81
                                      
TLVs :                                
  IS Neighbors  :                     
    Virtual Flag  : 0                 
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    Neighbor      : PE-13.00                            
  IS Neighbors  :                     
    Virtual Flag  : 0                 
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    Neighbor      : P-12.00                             
  TE IS Nbrs   :                      
    Nbr   : PE-13.00                            
    Default Metric  : 0               
    Sub TLV Len     : 0               
  TE IS Nbrs   :                      
    Nbr   : P-12.00                             
    Default Metric  : 0               
    Sub TLV Len     : 0               
                                      
-------------------------------------------------------------------------------
LSP ID    : PE-14.00-00                                 Level     : L2 
Sequence  : 0xa                    Checksum  : 0x41be   Lifetime  : 1065
Version   : 1                      Pkt Type  : 20       Pkt Ver   : 1
Attributes: L1L2                   Max Area  : 3        Alloc Len : 283
SYS ID    : 1720.1600.0014         SysID Len : 6        Used Len  : 283
                                      
TLVs :                                
  Area Addresses:                     
    Area Address : (3) 49.0001        
  Supp Protocols:                     
    Protocols     : IPv4              
  IS-Hostname   : PE-14               
  Router ID   :                       
    Router ID   : 172.16.0.14         
  Router Cap : 172.16.0.14, D:0, S:0  
    TE Node Cap : B E M  P            
    SR Cap: IPv4 MPLS-IPv6            
       SRGB Base:100000, Range:100001 
    SR Alg: metric based SPF          
    Node MSD Cap: BMI : 12 ERLD : 15  
  IS Neighbors  :                     
    Virtual Flag  : 0                 
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    Neighbor      : P-11.02                             
  Internal Reach:                     
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 10.1.0.0          
    IP Mask       : 255.255.255.252   
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 10.14.0.0         
    IP Mask       : 255.255.255.252   
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 172.16.0.14       
    IP Mask       : 255.255.255.255   
    Default Metric: (I) 10            
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 172.16.0.16       
    IP Mask       : 255.255.255.255   
  External Reach:                     
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 10.1.0.0          
    IP Mask       : 255.255.255.252   
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 10.14.0.0         
    IP Mask       : 255.255.255.252   
    Default Metric: (I) 0             
    Delay Metric  : (I) 0             
    Expense Metric: (I) 0             
    Error Metric  : (I) 0             
    IP Address    : 172.16.0.14       
    IP Mask       : 255.255.255.255   
  I/F Addresses :                     
    I/F Address   : 10.1.0.2          
    I/F Address   : 10.14.0.2         
    I/F Address   : 172.16.0.14       
  TE IS Nbrs   :                      
    Nbr   : P-11.02                             
    Default Metric  : 10              
    Sub TLV Len     : 19              
    IF Addr   : 10.14.0.2             
    LAN-Adj-SID: 17 20 16 00 00 11  Flags:v4VL Weight:0 Label:524287
  TE IP Reach   :                     
    Default Metric  : 10              
    Control Info:    , prefLen 30     
    Prefix   : 10.1.0.0               
    Default Metric  : 10              
    Control Info:    , prefLen 30     
    Prefix   : 10.14.0.0              
    Default Metric  : 0               
    Control Info:   S, prefLen 32     
    Prefix   : 172.16.0.14            
    Sub TLV   :                       
      Prefix-SID Index:4, Algo:0, Flags:NnP
    Default Metric  : 10              
    Control Info:   S, prefLen 32     
    Prefix   : 172.16.0.16            
    Sub TLV   :                       
      Prefix-SID Index:6, Algo:0, Flags:RNnP
                                      
Level (2) LSP Count : 7               
-------------------------------------------------------------------------------
Control Info     : D = Prefix Leaked Down
                   S = Sub-TLVs Present
Attribute Flags  : N = Node Flag      
                   R = Re-advertisement Flag
                   X = External Prefix Flag
                   E = Entropy Label Capability (ELC) Flag
Adj-SID Flags    : v4/v6 = IPv4 or IPv6 Address-Family
                   B = Backup Flag    
                   V = Adj-SID carries a value
                   L = value/index has local significance
                   S = Set of Adjacencies
                   P = Persistently allocated
Prefix-SID Flags : R = Re-advertisement Flag
                   N = Node-SID Flag  
                   nP = no penultimate hop POP
                   E = Explicit-Null Flag
                   V = Prefix-SID carries a value
                   L = value/index has local significance
Lbl-Binding Flags: v4/v6 = IPv4 or IPv6 Address-Family
                   M = Mirror Context Flag
                   S = SID/Label Binding flooding
                   D = Prefix Leaked Down
                   A = Attached Flag  
SABM-flags Flags:  R = RSVP-TE        
                   S = SR-TE          
                   F = LFA            
                   X = FLEX-ALGO      
FAD-flags Flags:   M = Prefix Metric  
===============================================================================

Any ideas? Thanks!

DNS for big networks

Hi! So if I have a small network, I can then go to the DNS section and type in the names of the routers.

But I've been trying some big networks (+500 nodes) and doing so by hand is rather a difficult task.

image

Is there another option to accomplish this? May be I'm missing something ...

Thanks!

HP support

Would like to see support for HP / Comware. Can't upload TextFSM files as it's a secure environment.

API doesn't support Extremes

I am trying to upload LSDB from Extreme but unfortunately API doesn't like it

{'detail': "'Extreme' is not one of ['Cisco', 'Juniper', 'Quagga', 'Bird', " "'Nokia', 'Mikrotik', 'Huawei', 'Paloalto', 'Ubiquiti', " "'AlliedTelesis', 'ZTE'] - '0.vendor_device'", 'status': 400, 'title': 'Bad Request', 'type': 'about:blank'}

Which seems a bit off as I can upload it without any issues over the web interface. I think similar issue might be with Ericsson (although I have no output from such device to test).

Mikrotik Routeros 7.x Graphing

I've done some extensive searching to see if there was something I was missing. When I upload a lsdb of a Routeros7.14 router I cannot get any sort of graphing. It parses the information and acts like a graph is available however it will not load the graph itself.

Is there anything I can do to translate it to work within existing confines?

Feature Request - "view graph" page / resizable graph area

When using the tool currently, the graph is shown at the very bottom of the page, and the content at the top (instructions / loading lsdb) is not useful when a file is already loaded.

It would be nice to have a way to view the graph so that it would take up most of the page, instead of devoting the top 60% to the "load lsdb" section. Especially for complex topologies this would make it much easier to view and work with the graph.

Minimally, just allowing the "graph area" to be resized so that it can take up more of the page would be helpful. as of not, it can only fill less than half of the vertical space.

Feature: Multivendor support

Hi,

My understanding is that you need to upload output from one particular vendor. What if you have a mix ie. Juniper and Extremes? Is it doable? I can merge multiple ABRs in one file, but what if those are different vendors?

Thanks!

Cisco XR IS-IS Build Path function is is not showing

I made some corrections in textfsm template file to load Cisco XR IS-IS database. After this It started to load topology correctly, but when I click Build the shortest path it is not showing any reports. I will appreciate it, if you will give some solution.
Thanks in advance!

Code not in repo

Unless I am missing it, the code is not actually in this repository. Is that an oversight? How can I view and contribute to the source?

ISIS Database Integration

Hi,
Is it possible to Integrate this Tool with ISIS database as both are Link State Routing Protocols using the Dijkstra SPF Algorithm

how to analyze separate databases from separate IGP instances, at once?

Hello!

Some times one ABR has different IGP instances, meaning separate processes, which boils down in the end, to separate databases. A common scenario is seamless MPLS, where an ABR, or RouteReflector-in--line (RR-in-line) has an IGP instance to the core (if OSPF, area 0 will face the core) and separate instances facing the access (but since the processes are different, a design could use area-0 to the core, and also area-0 to the access, since the databases are independent).

So, a RR-in-line will have a separate DB with backbone information and a another DB with access information.

Which would be a good way of analyzing this scenario? Could I concatenate the DB files into one? Will topolograph handle that? Is there a good way of having such information in the same plot?

thanks!

CSV Hosts Import

Hi Vadims

I'm trying to import host names with the CSV import feature
I get the not valid IP error, i think i'm not understanding the documentation maybe, you put

"Enter the list of headers followed by one line per record to be imported, using commas to separate values. Device's hostnames will be changed for choosed graph's time."

What do you mean about headers

This is what i'm typing in the import text box

172.16.254.0,La Union (CCR1016)
172.16.254.2,CCR1_CCR1016
172.16.254.3,La Union PowerBox 1 (Vinculos)
172.16.254.4,La Union PowerBox 2 (APs)
172.16.254.5,Powerbox Aparicio (Vinculos)

Thank you for the time, the app is really good

Support for Nokia

Hi there, I tried following the link to generate the textFSM for new vendors, but it's broken.

Still, do you have any plans in supporting nokia? How can I help?

thanks!

Mikrotik Support

Hello,

Are there any plans to add support for Mikrotik routers? I can provide the necessary database outputs if needed.

Thanks!

self-hosted?

Hi! Is there any way to run this app at my servers?

Support for importing Cisco NX-OS DB

I believe the IOS and NX-OS output are sufficiently different that the "Cisco OSPF" import from text fails. I think it may simply be a difference in column names, for example:

LSA1:

        OSPF Router with ID (0.0.0.0) (Process ID 1 VRF default)

                Router Link States (Area 0.0.0.0)

Link ID         ADV Router      Age        Seq#       Checksum Link Count

LSA2:

        OSPF Router with ID (0.0.0.0) (Process ID 1 VRF default)

                Network Link States (Area 0.0.0.0)

Link ID         ADV Router      Age        Seq#       Checksum

LSA5:

        OSPF Router with ID (0.0.0.0) (Process ID 1 VRF default)

                Type-5 AS External Link States

Link ID         ADV Router      Age        Seq#       Checksum Tag

Error parsing OSPF LSDB output: host bits set

I was testing with the lastest docker image and uploading an OSPF LSDB. The uploading works for an IOS-XR LSDB but when I am testing the output from a Cisco IOS LSDB it trows an internal server error. The Flask logs show the following error:

[2021-08-04 08:54:41 +0000] [13] [ERROR] Error handling request /upload-ospf-lsdb
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 134, in handle
    self.handle_request(listener, req, client, addr)
  File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 175, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
  File "/usr/local/lib/python3.6/site-packages/connexion/apps/abstract.py", line 249, in __call__
    return self.app(environ, start_response)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2464, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2450, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1867, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "routes.pyx", line 2063, in routes.upload_file
  File "Helpers.pyx", line 1883, in Helpers.ParsingHelper.doParseLsdbAndBuildGraph
  File "Helpers.pyx", line 1274, in Helpers.ParsingHelper.parse_router_lsa
  File "/usr/local/lib/python3.6/ipaddress.py", line 1519, in __init__
    raise ValueError('%s has host bits set' % self)
ValueError: x.x.x.x/31 has host bits set

The IP address has obiously been obfuscated.

When I check the LSDB output the IP address mentioned in the error is part of a type 1 router LSA. It is first part of a /31 point to point link and also mentioned als a stub network.

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: x.x.x.x
     (Link Data) Router Interface address: x.x.x.x <== IP address with the /31 mask mentioned in the error
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: x.x.x.x <== IP address with the /31 mask mentioned in the error
     (Link Data) Network Mask: 255.255.255.254
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

The Python IP address library is throwing this error because the address mentioned is not the network address it seems, though with a /31 you won't have a dedicated network address. In my case it is the second address in the /31.

I can't check the code to see why and how the IP address is being checked by the ipaddress module so I can't speculate on how to solve it. Would you be willing to add the code to this repository so others might help solving this issue?

logstash issues

no matter what I do I keep getting logstash Stopped with exit code 123, everything else seems to be working, I can see OSPF data however, the hostname import does not seem to remain after refresh or log out.

I am not sure what I am doing wrong with this. I have included the logs from logstash, any help with this would be greatly appreciated.

Using bundled JDK: /usr/share/logstash/jdk
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
Sending Logstash logs to /usr/share/logstash/logs which is now configured via log4j2.properties
[2024-05-13T20:27:56,579][INFO ][logstash.runner ] Log4j configuration path used is: /usr/share/logstash/config/log4j2.properties
[2024-05-13T20:27:56,596][INFO ][logstash.runner ] Starting Logstash {"logstash.version"=>"7.17.0", "jruby.version"=>"jruby 9.2.20.1 (2.5.8) 2021-11-30 2a2962fbd1 OpenJDK 64-Bit Server VM 11.0.13+8 on 11.0.13+8 +indy +jit [linux-x86_64]"}
[2024-05-13T20:27:56,600][INFO ][logstash.runner ] JVM bootstrap flags: [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djruby.compile.invokedynamic=true, -Djruby.jit.threshold=0, -Djruby.regexp.interruptible=true, -XX:+HeapDumpOnOutOfMemoryError, -Djava.security.egd=file:/dev/urandom, -Dlog4j2.isThreadContextMapInheritable=true, -Dls.cgroup.cpuacct.path.override=/, -Dls.cgroup.cpu.path.override=/]
[2024-05-13T20:27:56,675][INFO ][logstash.settings ] Creating directory {:setting=>"path.queue", :path=>"/usr/share/logstash/data/queue"}
[2024-05-13T20:27:56,695][INFO ][logstash.settings ] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/usr/share/logstash/data/dead_letter_queue"}
[2024-05-13T20:27:57,384][INFO ][logstash.agent ] No persistent UUID file found. Generating new UUID {:uuid=>"9739962c-3a3b-4d4f-ac09-932c69a1c65b", :path=>"/usr/share/logstash/data/uuid"}
/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/sinatra-2.2.1/lib/sinatra/base.rb:931: warning: constant Tilt::Cache is deprecated
TimerTask timeouts are now ignored as these were not able to be implemented correctly
TimerTask timeouts are now ignored as these were not able to be implemented correctly
TimerTask timeouts are now ignored as these were not able to be implemented correctly
TimerTask timeouts are now ignored as these were not able to be implemented correctly
[2024-05-13T20:27:58,893][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}
warning: thread "puma reactor (Ruby-0-Thread-4@puma reactor: :1)" terminated with exception (report_on_exception is true):
java.lang.NoSuchMethodError: 'void org.jruby.RubyThread.beforeBlockingCall(org.jruby.runtime.ThreadContext)'
at org.nio4r.Selector.doSelect(Selector.java:237)
at org.nio4r.Selector.select(Selector.java:197)
at org.nio4r.Selector$INVOKER$i$select.call(Selector$INVOKER$i$select.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneBlock.call(JavaMethod.java:577)
at org.jruby.ir.targets.InvokeSite.invoke(InvokeSite.java:197)
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.puma_minus_5_dot_6_dot_8_minus_java.lib.puma.reactor.RUBY$method$select_loop$0(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/puma-5.6.8-java/lib/puma/reactor.rb:75)
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.puma_minus_5_dot_6_dot_8_minus_java.lib.puma.reactor.RUBY$method$select_loop$0$VARARGS(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/puma-5.6.8-java/lib/puma/reactor.rb:69)
at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:70)
at org.jruby.ir.targets.InvokeSite.invoke(InvokeSite.java:207)
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.puma_minus_5_dot_6_dot_8_minus_java.lib.puma.reactor.RUBY$block$run$1(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/puma-5.6.8-java/lib/puma/reactor.rb:39)
at org.jruby.runtime.CompiledIRBlockBody.callDirect(CompiledIRBlockBody.java:138)
at org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:58)
at org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:52)
at org.jruby.runtime.Block.call(Block.java:139)
at org.jruby.RubyProc.call(RubyProc.java:318)
at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:105)
at java.base/java.lang.Thread.run(Thread.java:829)
[2024-05-13T20:28:00,280][FATAL][org.logstash.Logstash ]
java.lang.NoSuchMethodError: 'void org.jruby.RubyThread.beforeBlockingCall(org.jruby.runtime.ThreadContext)'
at org.nio4r.Selector.doSelect(Selector.java:237) ~[nio4r_ext.jar:?]
at org.nio4r.Selector.select(Selector.java:197) ~[nio4r_ext.jar:?]
at org.nio4r.Selector$INVOKER$i$select.call(Selector$INVOKER$i$select.gen) ~[jruby-complete-9.2.20.1.jar:?]
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneBlock.call(JavaMethod.java:577) ~[jruby-complete-9.2.20.1.jar:?]
at org.jruby.ir.targets.InvokeSite.invoke(InvokeSite.java:197) ~[jruby-complete-9.2.20.1.jar:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.puma_minus_5_dot_6_dot_8_minus_java.lib.puma.reactor.RUBY$method$select_loop$0(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/puma-5.6.8-java/lib/puma/reactor.rb:75) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.puma_minus_5_dot_6_dot_8_minus_java.lib.puma.reactor.RUBY$method$select_loop$0$VARARGS(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/puma-5.6.8-java/lib/puma/reactor.rb:69) ~[?:?]
at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:80) ~[jruby-complete-9.2.20.1.jar:?]
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:70) ~[jruby-complete-9.2.20.1.jar:?]
at org.jruby.ir.targets.InvokeSite.invoke(InvokeSite.java:207) ~[jruby-complete-9.2.20.1.jar:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.puma_minus_5_dot_6_dot_8_minus_java.lib.puma.reactor.RUBY$block$run$1(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/puma-5.6.8-java/lib/puma/reactor.rb:39) ~[?:?]
at org.jruby.runtime.CompiledIRBlockBody.callDirect(CompiledIRBlockBody.java:138) ~[jruby-complete-9.2.20.1.jar:?]
at org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:58) ~[jruby-complete-9.2.20.1.jar:?]
at org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:52) ~[jruby-complete-9.2.20.1.jar:?]
at org.jruby.runtime.Block.call(Block.java:139) ~[jruby-complete-9.2.20.1.jar:?]
at org.jruby.RubyProc.call(RubyProc.java:318) ~[jruby-complete-9.2.20.1.jar:?]
at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:105) ~[jruby-complete-9.2.20.1.jar:?]
at java.lang.Thread.run(Thread.java:829) ~[?:?]

largest map-able ospf datasbase?

Is there a size limit for the numbers of nodes in area 0? I currenty tried a large network (1700+ nodes) and nothing would load.

DB graphing

Can this draw a static map (one that doesn't move the nodes around all the time) with minimal overlapping paths, and highlight the default path originator ?

Asymmetric links as a list

From internal emails
"Analytics > Unidirectional and Unsymmetric links" need to write down the information for each link

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.