Cisco Live Melbourne 2023 – Cisco 8000 Peering Telemetry Demo

2 minutes read

Introduction

This video aims to list the requirements of an Internet peering router. It demonstrates how Cisco 8000 series routers, powered by Silicon One and IOS XR can meet them.
The video shows live examples of telemetry collection: RPKI, FIB, Netflow, BGP, QoS, uRPF/RTBH/SRTBH and BGP Flowspec.

Demo Details

This silent/audio-less video was recorded for Cisco Live Melbourne 2023 and was the support of a World of Solutions demo.

The test is done on a Cisco 8201-32FH fixed system running IOS XR 7.10.1. It aims to represent a realistic Internet peering router, including:

  • multiple BGP sessions to simulate PNI and Transit, all dual-stack
  • typical Internet peeering router feature-set and scale
  • industry BCOP (Best Current Operational Practices) configured and deployed
  • a DDoS mitigation platform (emulated with a BGP daemon to craft BGP and BGP-FS updates)

Video

Telemetry Configuration

The configuration used for this demo can be found below. It must be tuned and adapted before being deployed: the sampling interval is sometimes very agressive and is only relevant for a lab application.


telemetry model-driven
 destination-group TME-JUMP
  address-family ipv4 1.63.51.21 port 57500
   encoding self-describing-gpb
   protocol grpc no-tls
  !
 !
 sensor-group OFA
  sensor-path Cisco-IOS-XR-platforms-ofa-oper:ofa
 !
 sensor-group BGP-COUNTERS
  sensor-path openconfig-bgp:bgp/global/state
  sensor-path Cisco-IOS-XR-ipv4-bgp-oper:bgp/bpm-instances-table/bpm-instances
  sensor-path Cisco-IOS-XR-ipv4-bgp-oper:bgp/instances/instance/instance-active/default-vrf/neighbors/neighbor
  sensor-path Cisco-IOS-XR-ipv4-bgp-oper:bgp/instances/instance/instance-active/default-vrf/afs/af/af-process-info
  sensor-path Cisco-IOS-XR-ipv4-bgp-oc-oper:oc-bgp/bgp-rib/afi-safi-table/ipv4-unicast/open-config-neighbors/open-config-neighbor/adj-rib-in-post/num-routes/num-routes
  sensor-path Cisco-IOS-XR-ipv4-bgp-oc-oper:oc-bgp/bgp-rib/afi-safi-table/ipv6-unicast/open-config-neighbors/open-config-neighbor/adj-rib-in-post/num-routes/num-routes
 !
 sensor-group FIB-COUNTERS
  sensor-path Cisco-IOS-XR-fib-common-oper:fib/nodes/node/protocols/protocol/vrfs/vrf/summary
 !
 sensor-group QOS-COUNTERS
  sensor-path Cisco-IOS-XR-qos-ma-oper:qos/interface-table/interface[interface-name='FourHundredGigE0/0/0/26']/input/service-policy-names/service-policy-instance[service-policy-name='RATE-LIMIT-DDOS']/statistics/class-stats
 !
 sensor-group RIB-COUNTERS
  sensor-path Cisco-IOS-XR-ip-rib-ipv4-oper:rib/rib-table-ids/rib-table-id/summary-protos/summary-proto/proto-route-count
  sensor-path Cisco-IOS-XR-ip-rib-ipv6-oper:ipv6-rib/rib-table-ids/rib-table-id/summary-protos/summary-proto/proto-route-count/active-routes-count
 !
 sensor-group RPKI-COUNTERS
  sensor-path Cisco-IOS-XR-ipv4-bgp-oper:bgp/instances/instance/instance-active/rpki-summary
 !
 sensor-group URPF-COUNTERS
  sensor-path Cisco-IOS-XR-fib-common-oper:fib-statistics/nodes/node/drops
 !
 sensor-group BGPFS-COUNTERS
  sensor-path Cisco-IOS-XR-flowspec-oper:flow-spec/summary
  sensor-path Cisco-IOS-XR-flowspec-oper:flow-spec/vrfs/vrf/afs/af/table-summary
  sensor-path Cisco-IOS-XR-flowspec-oper:flow-spec/vrfs/vrf/afs/af/flows/flow/flow-statistics
 !
 sensor-group MEMORY-COUNTERS
  sensor-path Cisco-IOS-XR-nto-misc-oper:memory-summary/nodes/node/detail
  sensor-path Cisco-IOS-XR-procmem-oper:processes-memory/nodes/node/process-ids/process-id
 !
 sensor-group NETFLOW-COUNTERS
  sensor-path Cisco-IOS-XR-ofa-netflow-oper:net-flow/statistics/statistic/server/flow-exporters/flow-exporter/exporter
 !
 sensor-group BGP-PROCESS-COUNTERS
  sensor-path Cisco-IOS-XR-procmem-oper:processes-memory/nodes/node[node-name='0/RP0/CPU0']/process-ids/process-id[process-id='10996']/process-id
 !
 sensor-group SYSTEM-CPU-MEMORY-COUNTERS
  sensor-path Cisco-IOS-XR-wdsysmon-fd-oper:system-monitoring
  sensor-path Cisco-IOS-XR-wdsysmon-fd-oper:system-monitoring/cpu-utilization
  sensor-path Cisco-IOS-XR-nto-misc-oper:memory-summary/nodes/node/summary
 !
 subscription CONVERGENCE
  sensor-group-id OFA sample-interval 1000
  sensor-group-id BGP-COUNTERS sample-interval 1000
  sensor-group-id FIB-COUNTERS sample-interval 1000
  sensor-group-id RIB-COUNTERS sample-interval 1000
  destination-id TME-JUMP
 !
 subscription SUBSCRIPTION
  sensor-group-id OFA sample-interval 1000
  sensor-group-id BGP-COUNTERS sample-interval 1000
  sensor-group-id FIB-COUNTERS sample-interval 1000
  sensor-group-id QOS-COUNTERS sample-interval 30000
  sensor-group-id RIB-COUNTERS sample-interval 1000
  sensor-group-id RPKI-COUNTERS sample-interval 30000
  sensor-group-id URPF-COUNTERS sample-interval 30000
  sensor-group-id BGPFS-COUNTERS sample-interval 30000
  sensor-group-id MEMORY-COUNTERS sample-interval 30000
  sensor-group-id NETFLOW-COUNTERS sample-interval 30000
  sensor-group-id SYSTEM-CPU-MEMORY-COUNTERS sample-interval 30000
  destination-id TME-JUMP

Telegraf Configuration

Here is the relevant part of telegraf.conf file, containing the embedded_tags:


[[inputs.cisco_telemetry_mdt]]
   transport = "grpc"
   service_address = ":57500"

#  ## Define (for certain nested telemetry measurements with embedded tags) which fields are tags

   embedded_tags = ["Cisco-IOS-XR-lpts-pre-ifib-oper:lpts-pifib/nodes/node/pifib-hw-flow-policer-stats/police-info/flow-name","Cisco-IOS-XR-lpts-pre-ifib-oper:lpts-pifib/nodes/node/pifib-hw-flow-policer-stats/police-info/npu-id", "Cisco-IOS-XR-fib-common-oper:fib/nodes/node/protocols/protocol/fib-summaries/fib-summary/prefix-masklen-distribution/unicast-prefix/mask-length", "Cisco-IOS-XR-platforms-ofa-oper:ofa/stats/nodes/node/Cisco-IOS-XR-8000-platforms-npu-resources-oper:hw-resources-datas/hw-resources-data/npu-hwr/npu-id", "Cisco-IOS-XR-platforms-ofa-oper:ofa/stats/nodes/node/Cisco-IOS-XR-8000-platforms-npu-resources-oper:hw-resources-datas/hw-resources-data/npu-hwr/bank/bank-name", "Cisco-IOS-XR-platforms-ofa-oper:ofa/stats/nodes/node/Cisco-IOS-XR-8000-platforms-npu-resources-oper:hw-resources-datas/hw-resources-data/npu-hwr/bank/lt-hwr/name", "Cisco-IOS-XR-ipv4-bgp-oper:bgp/instances/instance/instance-active/default-vrf/neighbors/neighbor/af-data/af-name", "Cisco-IOS-XR-ip-rib-ipv4-oper:rib/rib-table-ids/rib-table-id/summary-protos/summary-proto/name", "Cisco-IOS-XR-procmem-oper:processes-memory/nodes/node/process-ids/name", "Cisco-IOS-XR-qos-ma-oper:qos/interface-table/interface/input/service-policy-names/service-policy-instance/statistics/class-stats/class-name"]

Grafana Dashboard

The Grafana dashboard used for the demo has been exported in JSON and uploaded into the xrdocs.io GitHub repo. It can be imported in your own environment. Following parameters must be adapted:

  • datasource: you must put your own TSDB, configured in Grafana
  • source: you must put your exact device hostname

Conclusion

Cisco 8000 is a great fit for peering role. It offers multiple form factors to cover all the capacity needs. With more than 20 year of field exposure in carrier-class environment, IOS XR BGP stack is fast, scalable, reliable and secure. Cisco Silicon One feature-set and associated scale is complete for this network function. Last, as demonstrated in the video, IOS XR YANG modules can provide full visibility on multiple critical components used for this role.

Leave a Comment