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

Support for importing Cisco NX-OS DB #31

Closed kirk444 closed 1 year ago

kirk444 commented 1 year ago

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
Vadims06 commented 1 year ago

Hi @kirk444 , thank you for this feedback. Yeah, I guess it has different output and I will be happy to add NX-OS support into Topolograph. Could you please send the samples of LSA1,2 and 5 at admin at topolograph.com? Or if you feel confident to fix existed templates by yourself I would be also grateful for getting textfsm templates. I will add them to Topolograph.

kirk444 commented 1 year ago

Here's the same output with some sample data in it, is this sufficient?

Fixed below.

Vadims06 commented 1 year ago

Hi @kirk444 , it looks like show ip ospf database command's output. show ip ospf database router detail has a different format, are you sure that it is show ip ospf database router/network/external detailcommand?

kirk444 commented 1 year ago

Sorry, that's the output from the commands mentioned for Cisco IOS. Detail output:

# show ip ospf database router detail
        OSPF Router with ID (x.x.x.x) (Process ID 1 VRF default)

                Router Link States (Area 0.0.0.0)

   LS age: 59
   Options: 0x2 (No TOS-capability, No DC)
   LS Type: Router Links
   Link State ID: 10.83.83.1
   Advertising Router: 10.83.83.1
   LS Seq Number: 0x80001967
   Checksum: 0x827a
   Length: 60
    Number of links: 3

     Link connected to: a Stub Network
      (Link ID) Network/Subnet Number: 10.83.83.0
      (Link Data) Network Mask: 255.255.255.0
       Number of TOS metrics: 0
         TOS   0 Metric: 40

     Link connected to: a Stub Network
      (Link ID) Network/Subnet Number: 10.83.83.0
      (Link Data) Network Mask: 255.255.255.0
       Number of TOS metrics: 0
         TOS   0 Metric: 40

     Link connected to: a Transit Network
      (Link ID) Designated Router address: 10.83.254.106
      (Link Data) Router Interface address: 10.83.254.107
       Number of TOS metrics: 0
         TOS   0 Metric: 20

   LS age: 997
   Options: 0x2 (No TOS-capability, No DC)
   LS Type: Router Links
   Link State ID: 10.86.86.1
   Advertising Router: 10.86.86.1
   LS Seq Number: 0x800064f7
   Checksum: 0xb513
   Length: 60
    Number of links: 3

     Link connected to: a Stub Network
      (Link ID) Network/Subnet Number: 10.86.86.0
      (Link Data) Network Mask: 255.255.255.0
       Number of TOS metrics: 0
         TOS   0 Metric: 40

     Link connected to: a Transit Network
      (Link ID) Designated Router address: 10.11.12.203
      (Link Data) Router Interface address: 10.11.12.203
       Number of TOS metrics: 0
         TOS   0 Metric: 10

     Link connected to: a Transit Network
      (Link ID) Designated Router address: 10.11.12.200
      (Link Data) Router Interface address: 10.11.12.201
       Number of TOS metrics: 0
         TOS   0 Metric: 10
# show ip ospf database network detail
        OSPF Router with ID (x.x.x.x) (Process ID 1 VRF default)

                Network Link States (Area 0.0.0.0)

   LS age: 852
   Options: 0x2 (No TOS-capability, No DC)
   LS Type: Network Links
   Link State ID: 10.11.12.100 (Designated Router address)
   Advertising Router: x.x.x.x
   LS Seq Number: 0x8000533c
   Checksum: 0xbf2f
   Length: 32
   Network Mask: /31
         Attached Router: x.x.x.x
         Attached Router: x.x.x.x

   LS age: 1201
   Options: 0x2 (No TOS-capability, No DC)
   LS Type: Network Links
   Link State ID: 10.11.12.102 (Designated Router address)
   Advertising Router: x.x.x.x
   LS Seq Number: 0x80006192
   Checksum: 0xf48f
   Length: 32
   Network Mask: /31
         Attached Router: x.x.x.x
         Attached Router: x.x.x.x
        OSPF Router with ID (x.x.x.x) (Process ID 1 VRF default)

                Type-5 AS External Link States

   LS age: 927
   Options: 0x2 (No TOS-capability, No DC)
   LS Type: Type-5 AS-External
   Link State ID: 10.0.2.0 (Network address)
   Advertising Router: x.x.x.x
   LS Seq Number: 0x80001ca8
   Checksum: 0x7883
   Length: 36
   Network Mask: /24
         Metric Type: 2 (Larger than any link state path)
         TOS: 0
         Metric: 1
         Forward Address: 0.0.0.0
         External Route Tag: 2804

   LS age: 927
   Options: 0x2 (No TOS-capability, No DC)
   LS Type: Type-5 AS-External
   Link State ID: 10.1.0.0 (Network address)
   Advertising Router: x.x.x.x
   LS Seq Number: 0x80001ca8
   Checksum: 0x827a
   Length: 36
   Network Mask: /16
         Metric Type: 2 (Larger than any link state path)
         TOS: 0
         Metric: 1
         Forward Address: 0.0.0.0
         External Route Tag: 2804

   LS age: 896
   Options: 0x2 (No TOS-capability, No DC)
   LS Type: Type-5 AS-External
   Link State ID: 10.7.113.0 (Network address)
   Advertising Router: x.x.x.x
   LS Seq Number: 0x80003323
   Checksum: 0x2597
   Length: 36
   Network Mask: /24
         Metric Type: 2 (Larger than any link state path)
         TOS: 0
         Metric: 1
         Forward Address: 0.0.0.0
         External Route Tag: 65080
Vadims06 commented 1 year ago

Did you try to save it into a single file and upload to Topolograph?

kirk444 commented 1 year ago

Yeah, they return "The graph is empty. Are you sure, that you uploaded OSPF LSDB from Cisco?"

Vadims06 commented 1 year ago

Got it, I will check it

Vadims06 commented 1 year ago

Fixed some tiny differences:

  1. Metrics: -> Metric:
  2. network/subnet Number: -> Network/Subnet Number: Please test it on v2.29.1 version and give me an update. Could you also please configure one link as point-to-point and re-send me show ip ospf database router detail again?
kirk444 commented 1 year ago

The import now completes successfully from show ip ospf database router detail, but not from either network or external.

I don't think the import is correct in the case that it imports, it seems to generate the nodes and the networks properly, but no paths are displayed in the output, just the nodes/dots.

For the "point-to-point" topic, I can not change any of these existing links, but I will try to set something up in a test network to generate the output you're looking for.

Vadims06 commented 1 year ago

Hi @kirk444 , did you upload only single file with router detail output? It's needed to save the outputs from three commands into the single txt file and upload it into the Topolograph...

kirk444 commented 1 year ago

Yup, I sure did! That definitely helps answer my question about how this was supposed to work with only one of those views! This appears to be working just fine in 2.29.1, once I imported correctly (all outputs in one file). Sorry for the confusion.