This repository is deprecated; please follow the main search page or use the ‘Related code repos’ widget on the right side of the current page.

Parsing Telemetry data from IOS XR YANG models

GoDoc
Build Status
codecov
Go Report Card
Apache 2.0 License
published

nettable reads an IOS XR Telemetry file and parses relevant info in order to produce a summary table. This exercise is inspired on what was done for tlvdecode. The goal is to illustrate how to organize telemetry data to facilitate connecting the dots between different data sets.

While the examples presented here were created in an IPv6-only enviroment, adding IPv4 support is straight forward (TODO).

Table of Contents

Use

nettable reads an IOS XR Telemetry file, parses fields of interest and produces a summary table. This helps visualizing the data, however this info should be actually sent to a database.

Options

  • Option -f points to the input file
  • Option -i specifies the type of information:
    • IS-IS Interfaces: isis-int
      • Cisco-IOS-XR-clns-isis-oper (:isis/instances/instance/interfaces/interface)
    • IS-IS Neigbors: isis-nbr
      • Cisco-IOS-XR-clns-isis-oper (:isis/instances/instance/neighbors/neighbor)
    • IS-IS LSPs: isis-lsp
      • Cisco-IOS-XR-clns-isis-oper (:isis/instances/instance/levels/level/detailed-lsps/detailed-lsp)
    • BGP Neigbors: bgp-nbr
      • Cisco-IOS-XR-ipv4-bgp-oper (:bgp/instances/instance/instance-active/default-vrf/afs/af/neighbor-af-table/neighbor)
    • Interface Counters: int-count
      • Cisco-IOS-XR-infra-statsd-oper (:infra-statistics/interfaces/interface/latest/generic-counters)
    • Interface Data Rates: int-rate
      • Cisco-IOS-XR-infra-statsd-oper (:infra-statistics/interfaces/interface/data-rate)
    • IPv6 Route Table: rib-ipv6
      • Cisco-IOS-XR-ip-rib-ipv6-oper (:ipv6-rib/vrfs/vrf/afs/af/safs/saf/ip-rib-route-table-names/ip-rib-route-table-name/routes/route)

Examples

IS-IS Interfaces

From showtable example:

$ ./showtable -f ../../input/isis-int.json -i isis-int +------------------------+--------------------+---------------+-----------+--------------------------+--------------------+ | HOSTNAME | INTERFACE | CONFIG | STATUS | FW ADDRESS | PREFIX | +------------------------+--------------------+---------------+-----------+--------------------------+--------------------+ | mrstn-5502-1.cisco.com | Loopback60 | isis-disabled | isis-up | <nil> | 2001:558:2::1/128 | | mrstn-5502-1.cisco.com | Bundle-Ether20 | isis-disabled | isis-down | fe80::28a:96ff:fe46:6cdc | 2001:f00:bc::/64 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/0 | isis-enabled | isis-up | fe80::28a:96ff:fe46:6c00 | 2001:f00:ba::/64 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/1 | isis-enabled | isis-up | fe80::28a:96ff:fe46:6c04 | 2001:db8:cafe::/64 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/1 | isis-enabled | isis-up | fe80::28a:96ff:fe46:6c04 | 2001:f00:bb::/64 | +------------------------+--------------------+---------------+-----------+--------------------------+--------------------+
$ ./showtable -f ../../input/isis-int2.json -i isis-int +------------------------+--------------------+---------------+-----------+--------------------------+--------------------+ | HOSTNAME | INTERFACE | CONFIG | STATUS | FW ADDRESS | PREFIX | +------------------------+--------------------+---------------+-----------+--------------------------+--------------------+ | mrstn-5502-2.cisco.com | Loopback60 | isis-disabled | isis-up | <nil> | 2001:558:2::2/128 | | mrstn-5502-2.cisco.com | Bundle-Ether20 | isis-disabled | isis-down | fe80::28a:96ff:fe46:34db | 2001:f00:bc::/64 | | mrstn-5502-2.cisco.com | Bundle-Ether30 | isis-disabled | isis-down | fe80::28a:96ff:fe46:34da | 2001:f00:bd::/64 | | mrstn-5502-2.cisco.com | Bundle-Ether40 | isis-disabled | isis-down | fe80::28a:96ff:fe46:34d9 | 2001:f00:be::/64 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/0 | isis-enabled | isis-up | fe80::28a:96ff:fe46:3400 | 2001:f00:ba::/64 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/1 | isis-enabled | isis-up | fe80::28a:96ff:fe46:3404 | 2001:db8:cafe::/64 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/1 | isis-enabled | isis-up | fe80::28a:96ff:fe46:3404 | 2001:f00:bb::/64 | +------------------------+--------------------+---------------+-----------+--------------------------+--------------------+

IS-IS Neighbors

From showtable example:

$ ./showtable -f ../../input/isis-nbr.json -i isis-nbr +------------------------+--------------------+--------------+----------------+--------------------------+ | HOSTNAME | INTERFACE | AREA | REMOTE ID | FW ADDRESS | +------------------------+--------------------+--------------+----------------+--------------------------+ | mrstn-5502-1.cisco.com | HundredGigE0/0/0/0 | 49.0000.0162 | 0151.0250.0002 | fe80::28a:96ff:fe46:3400 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/1 | 49.0000.0162 | 0151.0250.0002 | fe80::28a:96ff:fe46:3404 | +------------------------+--------------------+--------------+----------------+--------------------------+
$ ./showtable -f ../../input/isis-nbr2.json -i isis-nbr +------------------------+--------------------+--------------+----------------+--------------------------+ | HOSTNAME | INTERFACE | AREA | REMOTE ID | FW ADDRESS | +------------------------+--------------------+--------------+----------------+--------------------------+ | mrstn-5502-2.cisco.com | HundredGigE0/0/0/0 | 49.0000.0162 | 0151.0250.0001 | fe80::28a:96ff:fe46:6c00 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/1 | 49.0000.0162 | 0151.0250.0001 | fe80::28a:96ff:fe46:6c04 | +------------------------+--------------------+--------------+----------------+--------------------------+

IS-IS LSPs

From showtable example:

$ ./showtable -f ../../input/isis-lsp.json -i isis-lsp +----------------+------------------------+----------------+--------+ | LOCAL ID | HOSTNAME | REMOTE ID | METRIC | +----------------+------------------------+----------------+--------+ | 0151.0250.0001 | mrstn-5502-1.cisco.com | 0151.0250.0002 | 333 | | 0151.0250.0002 | mrstn-5502-2.cisco.com | 0151.0250.0001 | 10 | +----------------+------------------------+----------------+--------+
$ ./showtable -f ../../input/isis-lsp2.json -i isis-lsp +----------------+------------------------+----------------+--------+ | LOCAL ID | HOSTNAME | REMOTE ID | METRIC | +----------------+------------------------+----------------+--------+ | 0151.0250.0001 | mrstn-5502-1.cisco.com | 0151.0250.0002 | 333 | | 0151.0250.0002 | mrstn-5502-2.cisco.com | 0151.0250.0001 | 10 | +----------------+------------------------+----------------+--------+

BGP Neighbors

From showtable example:

$ ./showtable -f ../../input/bgp-nbr.json -i bgp-nbr +------------------------+------------------+-------+--------------+----------+---------+---------+ | HOSTNAME | NEIGHBOR | ASN | STATE | PFX RCVD | PFX ADV | MAX PFX | +------------------------+------------------+-------+--------------+----------+---------+---------+ | mrstn-5502-1.cisco.com | 2001:db8:cafe::2 | 64512 | bgp-st-estab | 7 | 8 | 524288 | | mrstn-5502-1.cisco.com | 2001:f00:bb::2 | 64512 | bgp-st-estab | 7 | 8 | 524288 | +------------------------+------------------+-------+--------------+----------+---------+---------+
$ ./showtable -f ../../input/bgp-nbr2.json -i bgp-nbr +------------------------+------------------+-------+--------------+----------+---------+---------+ | HOSTNAME | NEIGHBOR | ASN | STATE | PFX RCVD | PFX ADV | MAX PFX | +------------------------+------------------+-------+--------------+----------+---------+---------+ | mrstn-5502-2.cisco.com | 2001:db8:cafe::1 | 64512 | bgp-st-estab | 6 | 9 | 524288 | | mrstn-5502-2.cisco.com | 2001:f00:bb::1 | 64512 | bgp-st-estab | 6 | 9 | 524288 | +------------------------+------------------+-------+--------------+----------+---------+---------+

Interface Counters

From showtable example:

$ ./showtable -f ../../input/int-count.json -i int-count +------------------------+---------------------+-----------+-----------+-------+---------+----------+ | HOSTNAME | INTERFACE | PKTS SENT | PKTS RECV | TRANS | IN ERRS | OUT ERRS | +------------------------+---------------------+-----------+-----------+-------+---------+----------+ | mrstn-5502-1.cisco.com | Null0 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-1.cisco.com | Bundle-Ether20 | 769131 | 768015 | 0 | 0 | 0 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/0 | 43764 | 43753 | 5 | 0 | 0 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/47 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/46 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/1 | 1846705 | 1740573 | 19 | 0 | 0 | ... | mrstn-5502-1.cisco.com | HundredGigE0/0/0/21 | 461053 | 461742 | 4 | 0 | 0 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/22 | 308078 | 306273 | 4 | 0 | 0 | ... | mrstn-5502-1.cisco.com | FortyGigE0/0/0/34 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-1.cisco.com | FortyGigE0/0/0/38 | 0 | 0 | 0 | 0 | 0 | +------------------------+---------------------+-----------+-----------+-------+---------+----------+
$ ./showtable -f ../../input/int-count2.json -i int-count +------------------------+---------------------+-----------+-----------+-------+---------+----------+ | HOSTNAME | INTERFACE | PKTS SENT | PKTS RECV | TRANS | IN ERRS | OUT ERRS | +------------------------+---------------------+-----------+-----------+-------+---------+----------+ | mrstn-5502-2.cisco.com | Null0 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | Bundle-Ether20 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | Bundle-Ether30 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | Bundle-Ether40 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | MgmtEth0/RP0/CPU0/0 | 1886191 | 426258 | 3 | 0 | 0 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/0 | 313546 | 313561 | 5 | 0 | 0 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/47 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/46 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/45 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/1 | 741369 | 753244 | 1 | 0 | 0 | ... | mrstn-5502-2.cisco.com | HundredGigE0/0/0/21 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/22 | 0 | 0 | 0 | 0 | 0 | ... | mrstn-5502-2.cisco.com | FortyGigE0/0/0/34 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | FortyGigE0/0/0/14 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | TenGigE0/0/0/10/0 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | TenGigE0/0/0/10/1 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | TenGigE0/0/0/10/2 | 0 | 0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | TenGigE0/0/0/10/3 | 0 | 0 | 0 | 0 | 0 | +------------------------+---------------------+-----------+-----------+-------+---------+----------+

Interface Data Rates

From showtable example:

$ ./showtable -f ../../input/int-rate.json -i int-rate +------------------------+---------------------+---------+----------+-----------+ | HOSTNAME | INTERFACE | IN KBPS | OUT KBPS | BW | +------------------------+---------------------+---------+----------+-----------+ | mrstn-5502-1.cisco.com | Null0 | 0 | 0 | 0 | | mrstn-5502-1.cisco.com | Bundle-Ether20 | 0 | 0 | 0 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/0 | 293 | 293 | 100000000 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/47 | 0 | 0 | 100000000 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/46 | 0 | 0 | 100000000 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/1 | 7 | 10 | 100000000 | ... | mrstn-5502-1.cisco.com | HundredGigE0/0/0/21 | 0 | 0 | 100000000 | | mrstn-5502-1.cisco.com | HundredGigE0/0/0/22 | 0 | 0 | 100000000 | ... | mrstn-5502-1.cisco.com | FortyGigE0/0/0/34 | 0 | 0 | 40000000 | | mrstn-5502-1.cisco.com | FortyGigE0/0/0/38 | 0 | 0 | 40000000 | +------------------------+---------------------+---------+----------+-----------+
$ ./showtable -f ../../input/int-rate2.json -i int-rate +------------------------+---------------------+---------+----------+-----------+ | HOSTNAME | INTERFACE | IN KBPS | OUT KBPS | BW | +------------------------+---------------------+---------+----------+-----------+ | mrstn-5502-2.cisco.com | Null0 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | Bundle-Ether20 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | Bundle-Ether30 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | Bundle-Ether40 | 0 | 0 | 0 | | mrstn-5502-2.cisco.com | MgmtEth0/RP0/CPU0/0 | 1 | 4 | 1000000 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/0 | 178 | 176 | 100000000 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/47 | 0 | 0 | 100000000 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/46 | 0 | 0 | 100000000 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/45 | 0 | 0 | 100000000 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/1 | 7 | 7 | 100000000 | ... | mrstn-5502-2.cisco.com | HundredGigE0/0/0/21 | 0 | 0 | 100000000 | | mrstn-5502-2.cisco.com | HundredGigE0/0/0/22 | 0 | 0 | 100000000 | ... | mrstn-5502-2.cisco.com | FortyGigE0/0/0/34 | 0 | 0 | 40000000 | | mrstn-5502-2.cisco.com | FortyGigE0/0/0/14 | 0 | 0 | 40000000 | | mrstn-5502-2.cisco.com | TenGigE0/0/0/10/0 | 0 | 0 | 10000000 | | mrstn-5502-2.cisco.com | TenGigE0/0/0/10/1 | 0 | 0 | 10000000 | | mrstn-5502-2.cisco.com | TenGigE0/0/0/10/2 | 0 | 0 | 10000000 | | mrstn-5502-2.cisco.com | TenGigE0/0/0/10/3 | 0 | 0 | 10000000 | +------------------------+---------------------+---------+----------+-----------+

IPv6 Routing Table

From showtable example:

$ ./showtable -f ../../input/rib-ipv6.json -i rib-ipv6 +------------------------+-------------------------+-----------+--------------------------+--------------------------+--------+ | HOSTNAME | PREFIX | PROTOCOL | NEXT HOP | SOURCE | METRIC | +------------------------+-------------------------+-----------+--------------------------+--------------------------+--------+ | mrstn-5502-1.cisco.com | ::/0 | static | 2001:420:2cff:1204::1 | 2001:420:2cff:1204::1 | 0 | | mrstn-5502-1.cisco.com | 2001:420:2cff:1204::/64 | bgp | 2001:db8:cafe::2 | 2001:db8:cafe::2 | 0 | | mrstn-5502-1.cisco.com | 2001:558:2::1/128 | local | :: | :: | 0 | | mrstn-5502-1.cisco.com | 2001:558:2::2/128 | isis | fe80::28a:96ff:fe46:3400 | fe80::28a:96ff:fe46:3400 | 334 | | mrstn-5502-1.cisco.com | 2001:db8:33::1/128 | local | :: | :: | 0 | | mrstn-5502-1.cisco.com | 2001:db8:55::/64 | bgp | 2001:db8:cafe::2 | 2001:db8:cafe::2 | 0 | | mrstn-5502-1.cisco.com | 2001:db8:77::/64 | bgp | 2001:db8:cafe::2 | 2001:db8:cafe::2 | 0 | | mrstn-5502-1.cisco.com | 2001:db8:88:88::/64 | connected | :: | :: | 0 | | mrstn-5502-1.cisco.com | 2001:db8:88:88::1/128 | local | :: | :: | 0 | | mrstn-5502-1.cisco.com | 2001:db8:cafe::/64 | connected | :: | :: | 0 | | mrstn-5502-1.cisco.com | 2001:db8:cafe::1/128 | local | :: | :: | 0 | | mrstn-5502-1.cisco.com | 2001:f00:ba::/64 | connected | :: | :: | 0 | | mrstn-5502-1.cisco.com | 2001:f00:ba::1/128 | local | :: | :: | 0 | | mrstn-5502-1.cisco.com | 2001:f00:bb::/64 | connected | :: | :: | 0 | | mrstn-5502-1.cisco.com | 2001:f00:bb::1/128 | local | :: | :: | 0 | +------------------------+-------------------------+-----------+--------------------------+--------------------------+--------+
$ ./showtable -f ../../input/rib-ipv62.json -i rib-ipv6 +------------------------+--------------------------------+-------------+--------------------------+--------------------------+--------+ | HOSTNAME | PREFIX | PROTOCOL | NEXT HOP | SOURCE | METRIC | +------------------------+--------------------------------+-------------+--------------------------+--------------------------+--------+ | mrstn-5502-2.cisco.com | ::/0 | static | 2001:420:2cff:1204::1 | 2001:420:2cff:1204::1 | 0 | | mrstn-5502-2.cisco.com | 4::4/128 | static | :: | :: | 0 | | mrstn-5502-2.cisco.com | 100::100/128 | application | 4::4 | 4::4 | 0 | | mrstn-5502-2.cisco.com | 101::101/128 | application | 5::5 | 5::5 | 0 | | mrstn-5502-2.cisco.com | 102::102/128 | application | 6::6 | 6::6 | 0 | | mrstn-5502-2.cisco.com | 2001:420:2cff:1204::/64 | connected | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:420:2cff:1204::5502:2/128 | local | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:558:2::1/128 | isis | fe80::28a:96ff:fe46:6c00 | fe80::28a:96ff:fe46:6c00 | 11 | | mrstn-5502-2.cisco.com | 2001:558:2::2/128 | local | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:db8:33::1/128 | bgp | 2001:db8:cafe::1 | 2001:db8:cafe::1 | 0 | | mrstn-5502-2.cisco.com | 2001:db8:55::/64 | connected | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:db8:55::1/128 | local | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:db8:77::/64 | connected | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:db8:77::1/128 | local | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:db8:88:88::/64 | bgp | 2001:db8:cafe::1 | 2001:db8:cafe::1 | 0 | | mrstn-5502-2.cisco.com | 2001:db8:cafe::/64 | connected | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:db8:cafe::2/128 | local | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:f00:ba::/64 | connected | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:f00:ba::2/128 | local | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:f00:bb::/64 | connected | :: | :: | 0 | | mrstn-5502-2.cisco.com | 2001:f00:bb::2/128 | local | :: | :: | 0 | +------------------------+--------------------------------+-------------+--------------------------+--------------------------+--------+

Links

View code on GitHub
  • Owner

  • Contributors

    +2Github contributors
  • Categories

  • Products

    IOS XR
  • Programming Languages

    Go
  • License

    BSD 3-Clause "New" or "Revised" License

Code Exchange Community

Get help, share code, and collaborate with other developers in the Code Exchange community.View Community
Disclaimer:
Cisco provides Code Exchange for convenience and informational purposes only, with no support of any kind. This page contains information and links from third-party websites that are governed by their own separate terms. Reference to a project or contributor on this page does not imply any affiliation with or endorsement by Cisco.