Get your free DevNet account for access to our developer resources, learning labs, and sandbox.

A few weeks back I shared this blog post New XR Programmability Learning Labs and Sandbox introducing the new IOS-XR Learning Lab and a dedicated sandbox environment for IOS-XR programmability. This IOS-XR Programmability sandbox and learning labs provide an environment where developers and network engineers can explore the programmability options available in this routing platform. Hopefully, you had the chance to try this out!

So, great news for all you IOS-XR programmability fans, we are pleased to bring you even more great XR Programmability learning content. Here is the full list of content, broken down by module and learning labs.


Module One: CLI automation: IOS-XR CLI automation.

Show commands, config-apply, config-replace, and more using on-box bash scripts or remote bash commands

Cisco IOS-XR offers a comprehensive portfolio of APIs at every layer of the network stack, allowing users to leverage automated techniques to provision and manage the lifecycle of a network device. In this module, we start with the basics: the Command Line Interface (CLI) has been the interaction point for expect-style scripters (TCL, expect, pexpect etc.) for ages.  But these techniques rely on send/receive buffers, thus are prone to errors and inefficient code. This is where the new onbox ZTP libraries come in handy. Use them for automated device bring-up automate Day1 and Day2 behavior of the device through deterministic APIs and return values in a rich Linux environment on the router.

  • IOS-XR CLI automation – Bash
  • IOS-XR CLI automation – Python


Setting up a Telemetry Client/Collector with “Pipeline” is a flexible, multi-function collection service that is written in Go.


Module Two: IOS-XR Streaming Telemetry changes networking monitoring for the better

SNMP is dead. It’s time to move away from slow, polling techniques employed by SNMP for monitoring that are unable to meet the cadence or scale requirements associated with modern networks. Further, Automation is often misunderstood to be a one-way street of imperative (or higher-layer declarative) commands that help bring a network to an intended state. However, a core aspect of automation is the ability to monitor real-time state of a system during and post the automation process to accomplish a feedback loop that helps make your automation framework more robust and accurate across varied circumstances. In this module, we learn how Streaming Telemetry capabilities in IOS-XR are all set to change network monitoring for the better – allowing tools to subscribe to structured data, contractually obliged to the YANG models representing operational state of the IOS-XR internal database (SYSDB) at a cadence and scale that are orders of magnitude higher than SNMP.

  • IOS-XR Streaming Telemetry: Monitoring done the right way
  • Creating your first python Telemetry Collector
  • Creating your first c++ Telemetry Collector
  • Deploying a Telemetry Collector on-box
On-Box agents and custom protocols that co-exist with standard protocols to influence routing. Facebook’s Open/R protocol that behaves like an IGP but runs as a third-party application on the router.

Module Three: IOS-XR Service-Layer APIs, programming is exposed through the service layer API

Cisco IOS-XR offers a comprehensive portfolio of APIs at every layer of the network stack. For most automation use cases, the manageability layer that provides the CLI, YANG models and Streaming Telemetry capabilities, is adequate. However, over the last few years, we have seen a growing reliance in web-scale and large-scale Service Provider networks on off-box Controllers or on-box agents.  These extract away the state machine of a traditional protocol, or feature and marry their operation to the requirements of a specific set of applications on the network. These agents/controllers require highly performant access to the lowest layer of the network stack called the Service Layer and the model-driven APIs built at this layer are called the Service-Layer APIs. With the ability to interact with RIB, the Label Switch Database (LSD), BFD events, and interface events. And with more capabilities coming in the future, now is the time to take your automation chops to the next level.

  • Service-Layer APIs: Bring your own Protocol/Controller
  • Your first python service-layer API client
  • Your first c++ service-layer API client
  • Deploying a Service-layer API client on-box

Ready to try it for yourself?

Wherever you are on your network programmability journey, the DevNet developer IOS-XR website is the place you’ll find all kinds of helpful information – including all these learning labs, sandboxes, and API documentation.

And we’re not stopping there … In the upcoming weeks, we will also launch another awesome IOS-XR Programmability learning lab module “IOS-XR Model Driven Automation: Yang Models” with the following two labs:

  • Model-Driven Manageability:  Yang models on IOS-XR
  • IOS-XR Yang Models:  using ncclient over netconf


Bonus round!

The network is changing, now programmability has come to the network. Developing software skills is a must. It can be a little scary at first to newcomers. However, all network engineers should learn how to make API calls and write basic scripts. Looking for some inspiration check out Cisco Code Exchange

In this new video learn how this proven platform adapts to evolving requirements and is the ideal platform to drive new revenue streams for today’s service providers. Join Robb Boyd and his special guests as they focus on the 4th generation Cisco ASR 9000 Series Aggregation Services Router. This “Swiss Army knife” of routers gets better with age with an array of features and higher performance to support 5G and drive new revenue streams!


We’d love to hear what you think. Ask a question or leave a comment below.
And stay connected with Cisco DevNet on social!

Twitter @CiscoDevNet | Facebook | LinkedIn

Visit the new Developer Video Channel


Stuart Clark

Senior Developer Advocate Of Community, AWS