Explore Cisco
How to Buy

Have an account?

  •   Personalized content
  •   Your products and support

Need an account?

Create an account

What Is Network Programming?

Network programming is the act of using computer code to write programs or processes that can communicate with other programs or processes across a network. Programmers use various programming languages, code libraries, and protocols to do the work.

What is infrastructure as code (IaC)?

IaC is a method to define and provision network infrastructure by using definition files that contain code. It's necessary for automating networks and making them programmable.

IaC is enabled through application programming interfaces (APIs). It makes the tasks of unifying separate processes and automating infrastructure provisioning simpler, faster, and more reliable. 

What is network programmability?

Networking programmability generally refers to tools and best practices for deploying, managing, and troubleshooting network devices. 

More precisely, network programmability is the process of using code, concepts based on the software development lifecycle, and other tools to make networks perform actions. 

How is a network "programmable"?

A modern network is more than just routers and switches. It's a collection of interconnected systems that include applications and other software, virtual machines, cloud instances, containers, and more.  

A programmable network has APIs in its infrastructure that developers can use to program applications and other components to interact directly with the network. 

What are some network programmability use cases?

Network programmability, combined with task automation, helps businesses deploy new apps and services faster, even at the network edge. Services also can be orchestrated centrally instead of provisioned separately.

Another use case for network programmability is mitigating security threats. Using APIs, a network can be programmed to block malware or other malicious traffic without disrupting users as network security engineers diagnose and remediate the issue. 

Do programmable networks demand new skills?

Yes—or at least an expansion of core skill sets for network programming. It's becoming increasingly important for network engineers to become familiar with network programmability basics. 

The programmable network is taking center stage in today's application-centric organizations, which are embracing software-defined networking, 5G connectivity, Internet of Things (IoT) applications, and more. 

IT professionals who want to advance their network programming skills and programmability knowledge can earn certifications, attend education programs, or engage in other learning opportunities.

Key network-programming skills and knowledge

Main types of networks to program

Network programming is a rapidly evolving discipline. However, engineers programming networks still need traditional skills and other knowledge. That knowledge includes understanding the main types of networks that many of today's businesses use, such as the following:

LAN (local-area network)

A LAN is a collection of devices connected in one location, such as a building, an office, or a home. A LAN can be small or large, ranging from a home network with one user to an enterprise network with thousands of users and devices.

MAN (metropolitan-area network)

A MAN is a network that may serve a town, city, university campus, or a small geographic region. A MAN is typically larger than a LAN. 

WAN (wide-area network)

In its simplest form, a WAN is a collection of LANs or other networks that communicate with one another. A WAN is essentially a network of networks. The internet is the world's largest WAN.

WLAN (wireless LAN)

A WLAN implements a flexible data communication system, frequently augmenting rather than replacing a wired LAN within a building or campus. WLANs use radio frequency to transmit and receive data over the air, reducing the need for wired connections.

VPN (virtual private network)

A VPN is an encrypted internet connection between a user device and a network. The encrypted connection helps to ensure that sensitive data is transmitted safely. It prevents unauthorized people from accessing the traffic.

VPN technology is widely used in corporate environments, often to support remote workers and hybrid work models.

SAN (storage-area network)

A SAN is a dedicated high-speed network that makes storage devices accessible to servers by attaching storage directly to an operating system. It centralizes storage devices, so they are easier to manage and communicate faster over media.

The OSI model and the 7 layers

The Open Systems Interconnection (OSI) model serves as a guide for network engineers, developers, and others involved with network programming to understand how products and software programs can communicate and interoperate.

This conceptual framework outlines the functions of a networking system. OSI includes seven layers that show how data flows across and within networks. The layers are: physical, data link, network, transport, session, presentation, and application.

Network programming languages

Network programming for network engineers and other IT pros typically requires use of an array of programming languages and tools, such as:

  • Python (open-source programming language)
  • Java (general-purpose, object-oriented programming language)
  • Perl (general-purpose programming language)
  • Bash (command-line-interface tool)
  • Go (statically typed, compiled programming language)
  • Tcl (Tool Command Language, general-purpose dynamic programming language)

Other valuable network programming skills 

Because of the accelerating trend in business toward using programmable networks, network professionals who want to gain network programmability expertise may also consider building skills and knowledge in the following areas:

  • REST (representational state transfer) APIs
  • JSON (open-standard file format and data-interchange format)
  • XML (Extensible Markup Language)
  • git/GitHub (open-source version control software/web-based interface)
  • Linux networking and other skills
  • Ansible (open-source tool for IaC)
  • Docker (open-source containerization platform)
  • NETCONF (protocol)
  • YANG (data-modeling language)
  • NFV (network functions virtualization)

Other valuable skills for network programmability initiatives include container networking, cloud networking, IoT networking, experience with DevOps practices, and knowledge of network controllers, which are used to orchestrate network functions.