🧠 What is Device Programmability?

Device Programmability means the ability to configure, control, and manage network devices (like routers, switches, firewalls) using software or code, rather than logging in manually and typing CLI commands.

In short β€”
πŸ‘‰ It’s how network automation happens.

Instead of an engineer configuring 100 devices manually, scripts or automation tools push configurations automatically using APIs or programmable interfaces.


βš™οΈ Traditional Networking vs Programmable Networking

FeatureTraditional NetworkingDevice Programmability
Configuration MethodManual CLI (per device)Automated using scripts/APIs
SpeedSlow and error-proneFast and consistent
ScalabilityDifficult for large networksEasily scales to hundreds/thousands of devices
ControlDevice-specificCentralized and programmable
AdaptabilityStaticDynamic (policy-driven and responsive)

🧩 How Device Programmability Works

Modern network devices support APIs or data models that allow software (like SDN controllers or automation tools) to communicate directly with them.

Typical workflow:

  1. Automation script/tool (e.g., Python, Ansible) sends configuration commands.
  2. The device API/agent interprets and applies the change.
  3. The device returns a response/status (success/failure, interface info, etc.).
  4. Software can verify, rollback, or update further based on feedback.

🧱 Key Building Blocks of Device Programmability

1. APIs (Application Programming Interfaces)

2. Data Models

3. Transport Protocols

4. Automation Tools


πŸ”Œ Common Device Programmability Interfaces

ProtocolTypeDescription
NETCONFXML-basedStandard IETF protocol for configuration management using YANG models
RESTCONFHTTP-basedLightweight interface using REST and YANG
gRPC/gNMIBinary protocolHigh-performance API for telemetry and configuration
SNMPLegacyUsed for monitoring, not ideal for configuration
CLI over SSHScript-basedBasic automation using Python (Netmiko, Paramiko)

🧰 Example: Using Python for Device Programmability

Here’s a simple Python example using Netmiko to configure a Cisco router:

from netmiko import ConnectHandler

device = {
    "device_type": "cisco_ios",
    "host": "192.168.1.1",
    "username": "admin",
    "password": "cisco123",
}

conn = ConnectHandler(**device)
config_commands = [
    "interface GigabitEthernet0/1",
    "description Connected_to_Firewall",
    "ip address 10.1.1.1 255.255.255.0",
    "no shutdown"
]
conn.send_config_set(config_commands)
conn.save_config()
conn.disconnect()

βœ… This script logs into a router, configures an interface, and saves the configuration β€” automatically.


🌐 Benefits of Device Programmability


🧩 Real-World Use Cases


πŸ—οΈ Vendors Supporting Device Programmability


🧭 Summary

ConceptDescription
DefinitionAbility to configure/manage devices via APIs or scripts
GoalAutomate and simplify network operations
ProtocolsNETCONF, RESTCONF, gNMI, SNMP
Languages/ToolsPython, Ansible, Terraform
BenefitsAutomation, consistency, scalability, agility
renjithbs Avatar

Posted by

Leave a comment