Cisco Blogs
Share

Network Programmability at Cisco Live Melbourne


February 28, 2018 - 3 Comments

With only a few days before Cisco Live Australia and New Zealand kicks off, and still with a couple of open registration spots available, I want to invite the attendees of this event to sign up for the two workshops I will be running in Melbourne:
DEVNET-2101:NXOS in the real world using NX-API REST
DEVNET-2556:Dive into leveraging Python on IOS-XE.

Both of these workshops are part of the network programmability track. We will be covering both data center technologies with NX-OS, as well as enterprise switching with IOS-XE. If you are just getting started with network programmability, or if you are looking for more intermediate or advanced content, these two sessions will have something for you. In order to make the most out of them though, there are a few pre-requisites: a basic level of Python programming language is nice to have, as well as basic Linux/UNIX commands and of course NX-OS syntax. Familiarity with Apple MacBooks Pro and MacOS is also required, as each workshop participant will have access to one for the hands-on part of the workshop.

In DEVNET-2101: NX-OS in the real world using NX-API REST we will start with an overview of Cisco data center technologies using NX-OS. If you’ve ever attended any of my workshops, you might’ve noticed that I try to keep the PowerPoint side of the presentation to a minimum, and focus extensively on hands-on, code, and Q&A. This session is no exception to this rule. We will not cover Cisco ACI in this session, but we will explain the differences between running the Nexus family of switches in fabric mode with an APIC controller, and in standalone mode and having them as part of a programmable network. We will go into details about the advantages of Open NX-OS compared to classic IOS and why having a Linux based kernel is a game changer. Going down memory lane, we will remember the challenges around automating device configuration and management using TCL and Expect scripts and the limitations that they bring.

Next, we will cover NX-API CLI, what it is, why would you use it and how to configure a Nexus switch using this API. At this point, we will switch to the hands-on part of the workshop. If you’ve never seen the NX-API Developer Sandbox that gets enabled when we turn on the nxapi feature, you will be in a for big surprise! We have made it extremely easy to start working with the NX-OS APIs, and we even generate Python code automatically that you can take as is and use it in your infrastructure to start automating your configurations.

At this point we are ready to take it to the next level. Start exploring NX-API REST, what advantages it brings, how to start using it and troubleshooting around it. We’ll also go into the object model that is the foundation of Open NX-OS and why this model changes everything. We will wrap up with a presentation on nxtoolkit, a Python library readily available to everybody in a public github.com repository that you can clone and start using right away. Time permitting, we will split into groups of two, and configure BGP sessions using NX-API REST between two Nexus switches.

By the end of the workshop, we expect you’ll see how easy it is to work with both NX-API CLI and REST, have written Python code to accomplish common management and monitoring tasks that usually are performed by a network administrator over the CLI, and be able to take this knowledge and start using it right away in your day to day job.

rian_Iliesiu-Cisco-DevNet_CLMEL

In DEVNET-2556: Dive into leveraging Python on IOS-XE we cover the network programmability features that were recently released for IOS-XE. We start with guest shell, and just like in the previous workshop we ask what is it, why would you use it and why this is such a major upgrade for the switching enterprise networking. Next we go into more details on Python running in guest shell and the custom modules we have available for IOS-XE. We will cover cli, the Python library specifically designed to be able to run CLI commands in Python.

My colleague Ryan Shoemaker has an 8 module, step by step guide on how to become more familiar with Python on IOS-XE, EEM, NETCONF and YANG. We will go over all these steps together. I will briefly cover what NETCONF and YANG are and we will see how we can integrate EEM with monitoring the status of an interface on a CSR1000V, and call a Python script running in guestshell that uses NETCONF to automatically reconfigure the service policy on the WAN interface. This use case is very useful for enterprise networks that have at least 2 WAN uplinks. The status of the links can be monitored by EEM and QoS parameters are dynamically changed based on this. Let’s say one of the uplinks goes offline, this change gets picked up by EEM which calls the Python script that will re-configure the service-policy on the other WAN interfaces. This way we make sure that QoS parameters for applications sensitive to bandwidth limitations and jitter like voice and video get a consistent treatment that dynamically adapt to outside constraints.

I really look forward to this year’s Cisco Live Australia and New Zealand. I hope the workshop descriptions above offer just enough information to stir your interest and hope to see you all in the DevNet Zone. Please bring your questions. If you want to extend the discussions before, during or after the event feel free to direct message me on twitter @aidevnet.



In an effort to keep conversations fresh, Cisco Blogs closes comments after 60 days. Please visit the Cisco Blogs hub page for the latest content.

3 Comments

  1. what are the specific use cases and outcomes that could be seen in this zone ?

  2. should be an awesome pair of sessions for the CiscoLive Audience. Pretty small investment of time (2 sessions) for some great value.

  3. I recommend either (or both!) of these workshops for anyone who is running Data Center/Enterprise networks on the Nexus or ASR/ISR/Catalyst platforms. Once you get into some depth, you'll see a lot of the efficiency benefits to using programability for automation, along with some risk mitigation and less chance of human error.