What is Network Automation?

Network automation is the ability to configure and manage network devices via Application Programming Interfaces (APIs). An API offers a method to interact with an application, device, or system by pulling information, or pushing commands, via a well-defined set of instructions or routines.

Traditionally, network devices (like routers, switches, and firewalls) are configured by network engineers and administrators via Command Line Interface (CLI) or Graphical User Interface (GUI). In this context, the network engineer establishes a CLI session via telnet/ssh, or a GUI session via a web browser, and applies a configuration. This network management method is still widely used but destined to be obsolete in the coming years.

Benefits

The driving force behind the shift from human configuration to network automation is simple: it optimizes the way network devices are configured and managed in a way that human configuration cannot. This is possible by enabling software applications to automate the most frequent and repetitive tasks. Having been a network engineer for several years, I realize three quick wins:

  • Reduction of dedicated personnel to configure and manage a network infrastructure
  • Reduction of time required to create new services and scale a network infrastructure
  • Reduction of human driven outages caused by mis-configuration of network devices

Network Automation and Network Engineers

Will network automation cause network engineers’ extinction? I doubt it. For sure, network automation will require less network engineers to operate a network. On the other end, enterprise networks will keep growing in size, and will still require network engineers and architects to handle their design and implementation. It also means that network engineers will start getting more familiar with concepts that were typically part of software development. If you are a network engineer, you may want to start familiarizing with network automation tools and concepts.

First Steps

If you are interested in learning more about it, here are some basic concepts you should start familiarizing with:

  • Data Formats – A data format specifies the way that information is formatted and presented, so it can be transferred from one device to another. Example of data formats are JSON and XML. Here’s the example of a NetBeez test results formatted in JSON and obtained by querying the NetBeez public API:
{"id":19795,"target":"www.google.com","count":0,"interval":5,"timeout":5,"start_ts":"2016-07-25T19:39:13.806-04:00","created_at":"2016-07-25T23:39:13.000Z","updated_at":"2018-12-18T07:06:48.000Z","agent_id":139,"test_type_id":1,"heir_id":5291,"heir_type":"PingTest","ad_hoc":false,"test_name":null,"nb_test_templatable_type":"NbTestTemplate","nb_test_templatable_id":99,"current_alert_mode":"success","nb_target_id":32,"nb_test_template_id":99,"schedule_type":"periodic","alert_mode":"success"}

  • Data models – A data model is a method to describe an object. In the network automation world, data models describe devices, device resources, and services. A data model amply adopted in for network automation is Yang (Yet-Another-Next-Generation), which was developed by the Internet Engineering Task Force (IETF).
  • Communication protocols – There are two communication protocols developed by IEFT to interact with network devices: netconf and restconf. Netfconf was first formalized by RFC4741 in 2006, while restconf in 2017 by RFC8040. There are many differences between the two protocols, one of which is that netconf only supports XML data format, while restconf both XML and JSON. Also, restconf is HTTP-based and makes it more appropriate for web-based network managers and applications.
  • Programming language – A programming language is defined as a set of instructions and rules that enable humans to interact and give instructions to computers by writing an application. One of the most versatile programming languages for network automation is Python. Python is, in general, one of the most widely used programming languages – it’s interpreted, and object oriented. It’s written in human readable instructions and can rely on a vast amount of external libraries developed by a large community. If you are taking network automation seriously, Python is your friend.

Conclusion

This post only scratches the surface of the complex network automation world. I wouldn’t be surprised to find a Gartner report stating that “right now, only a few percentages of companies use network automation, but that in three or four years, 1 out of 2 will”. In my opinion, network automation is a major improvement in the way network engineers interact and manage an enterprise network, and I am very bullish about this new technology.

decoration image

Get your free trial now

Monitor your network from the user perspective

You can share

Twitter Linkedin Facebook

Let's keep in touch

decoration image