DefinitionsNetwork Programmability and Automation

Network Programmability and Automation. Introduction

What is Network Programmability?

Network Programmability is currently defined as a set of practical software tools to deploy, verify, manage, and troubleshoot network problems. A network that is programmable must have tools that allow devices, functionalities, and parameter changes to be implemented quickly, regardless of whether there are 1 or 50 devices. In the same way, for troubleshooting, it must give the possibility of collecting data from any network segment and executing actions on the devices.

This concept is born from the benefits of saving time, reducing human errors, innovation and customization.

The Need for Network Programmability

The times when devices were configured and managed one by one are disappearing. In the new world of DevOps, software development and test environments are built and destroyed in minutes thanks to virtualization. Bringing applications and updates to production are now accomplished smoothly and continuously. However, with networks this flexibility and agility had not been seen.

A Systems Engineer today is capable of building a functional server infrastructure for a new solution or product in minutes. But the same cannot be said for a Network Engineer who needs to configure the network to support this new product and offer the required quality of service.

Network device manufacturers have seen and accepted this need. They are adopting solutions in different phases to achieve this. They have opened up the possibility of implementing Programmability to networks with more robust Programmable Application Interfaces (APIs).

API Concept

Communication between software tools and networking platforms occurs because manufacturers have enabled better application programming interfaces or APIs for short. This allows networks and services to be programmed and deployed in a more agile and flexible way. It even opens up the possibility of integrating into the same automated gear that builds the server infrastructure.

Among the network platforms, the REST API has been one of the most popular. For this reason it is important to know the theoretical and practical foundations of this API.

API REST. Communication between a client and a REST API Server

What is Network Automation?

Network automation is the process of automating the configuration, administration and deployment of services and devices within a network. In other words, it consists of taking the tools developed for network programmability and adding intelligence to them so that they carry out tasks and make decisions on their own, without the intervention of an individual.

One of the great challenges for those of us who work in Network Operations is that the growth of the network and the increased criticality of services have begun to exceed the capabilities of engineers. Addressing the networks manually is becoming increasingly difficult. The demands of reducing implementation time and problem solutions lead to configuration errors and create inconsistencies in the network.

Network Programmability and Automation are two processes that work together to make human intervention even less required in implementations and operations. To better visualize this cooperation, let’s look at the application in two cases, one operational case and the other a implementation case , without considering any proprietary automation and orchestration platform.

Network Operations Case

Scenario 1

In a ISP (Internet Service Provider) a critical fiber outage occurs that causes traffic saturation on a Backbone link in the network. The alarms of the cut and the high traffi utilizations arrive at the Network Operations Center (NOC).

In an environment with 0 application of Network Programmability and Automation we will probably see the engineers taking the following actions:

  • Validate that it is a real fiber cut connecting to the devices, verifying the logs and the optical power levels at the ends.
  • Report and assign a ticket to the fiber maintenance team to proceed with case investigation and fiber repair.
  • Identify other routes to balance traffic.
  • Design traffic engineering tunnels to divert part of the traffic along routes with capacity.
  • Connect to the devices and configure the tunnels.
  • Monitor and keep adjusting the tunnels configurations until high utilization is reduced.
Network Programmability applied to the Operation

The network programmability that can be applied in this case is:

  • Develop in Python a tool that given the IP and interfaces of the routers, validates if there is a fiber cut.
  • Develop a tool that given the devices IP, it create traffic engineering tunnels explicitly for the indicated jumps.
Network Automation applied to the Operation

Network automation can be applied in the following way:

  • With the received alarms, a process is triggered that connects to the routers and validates the fiber cut. Once validated, an automatic ticket is created for the fiber maintenance team.
  • Another process detects high utilization in the links, calculates all possible routes, and automatically creates tunnels for balancing traffic.
  • Once the fiber has been repaired and the alarms have been cleaned, a rollback or network normalization process begins.

Network Equipment Implementation Case

Scenario 1

We have a project that requires expanding the mobile network of a service provider to 100 new locations. For the network engineer this requires configuring and implementing 100 routers. The most common and repetitive tasks to achieve the objectives are:

  • Reserve IP addressing for the devices in the IPAM.
  • Get the list of the names of the 100 locations for documentation in the devices access banner, the options in SNMP, among others.
  • Prepare the configuration files for the 100 routers using a template.
  • Configure the routers by loading the configuration files.
  • Configuration of adjacencies with neighboring routers that are already in production.
  • Add the devices to the monitoring systems.

In a culture with zero application of Programmability and Automation each one of these tasks would be executed manually. It would take long months to get this done with a team of 3 engineers.

Network Programmability applied to the project

This project is a common case in which Network Programmability can be applied. The application would be done by developing tools that:

  • Connect to IPAM, make the reservation of the IPs of the 100 devices and extract this information.
  • Extract the names of the 100 locations from the Site Documentation System.
  • Build the 100 devices configuration files.
  • Given the IPs of the devices the configuration is executed.
  • Connect to management and monitoring platforms to add the 100 devices.

It stands to reason that these developments save time and reduce human error. However, there is still a lot of human intervention and it takes time to combine what has been obtained with each tool. This is where we conclude that we must apply Network Automation.

Network Automation applied to the project

Automation can be applied in this project as follows:

  • The 100 locations to be implemented are entered into a provisioning system. This system automatically triggers multiple processes that make the reservation of IPs and generate the configuration files and then save them on a configuration management platform.
  • Taking advantage of the Zero Touch Provisioning (ZTP) functionality that comes in routers today, devices are carried in bulk from the warehouse to its locations. Connecting these routers to their neighbors automatically starts the ZTP process for device autoconfiguration.

At this level of automation, human intervention is only required to setup the 100 locations and the physical work of taking the devices to the localities and connecting them with their neighbors.

Benefits of network and automation programmability

We have been defining the concepts of programmability and automation and at the same time we have mentioned several benefits. Let’s take a closer look at some other benefits below:

Benefits from the Business point of view

  • Decreased waiting time for the provision of new services.
  • It could allow enabling a scheduled bandwidth service. Allowing customers to self-serve and request increases in bandwidth at specific times.

Benefits from the point of view of the network engineer

  • For engineers as such, a first benefit is the reduction in the time it takes to implement changes in the network.
  • A second benefit is that they reduce network downtime times. There are studies that show that half of the network outputs are due to bad configurations, made manually.
  • It keeps the network consistent and standardized.

Network Programming and Automation is not New

Programmability and automation, although it has become popular in recent years, are not new concepts. Engineers have used the command line to program. Over the years there have been resources like TCL (Tool Command Language) Scripting that interpret and execute CLI commands to automate administrative tasks. Cisco has long offered its Cisco EEM (Embedded Event Manager) tool embedded in the Cisco IOS operating system. With this tool it is possible to automate actions based on events that occur in the devices. Also trigger scheduled actions.

In one way or another, the programmability and automation of networks has existed. However, the difference with the before and now is the level of integration between platforms that you want to reach. You want to reach a full level of orchestration in service provisioning or network management. A manufacturer-independent orchestration using standard programmable interfaces and protocols.

The strategy in these times is to provide platforms that provide agile services by enabling programmability on the network. Not only do servers need to be agile, but the network needs to be agile in its construction, provisioning, and troubleshooting.

How do we practically enter this world?

Network Programmability via CLI

Even if in your job, the leaders have not yet invested in training for automation, start by yourself, make your tasks easier by automating the process.

I have found for those of us who still operate networks through the CLI, that SecureCRT provides us with an excellent opportunity to get started with Network Programmability and Automation. Routine configuration or verification tasks can be developed using the powerful “Scripting” capabilities it brings. SecureCRT contains a built-in Python interpreter, which means that Python scripts can be run from SecureCRT without having to install additional software.

Community Resources

In addition to the content that you will find every week in this Blog, in the community there are different resources in which we can learn about Programmability and Network Automation. Below I share some of the ones I have used and recommend.

Platforms and Videos

Books

Some books that I recommend:

By Michael Alvarez

Leave a Reply

Your email address will not be published. Required fields are marked *