Las APIs (Application Programming Interfaces) permiten que software externo
consulte y configure dispositivos de red sin usar la CLI. Cada protocolo tiene
sus ventajas y casos de uso.
API basada en HTTP . Es el estándar moderno para interacción con
dispositivos de red y plataformas.
Método
Función
Equivalente CLI
GET
Consultar datos
show
POST
Crear recurso
configure + write
PUT
Actualizar recurso
Reemplazar configuración
PATCH
Modificar parcialmente
Cambiar un elemento
DELETE
Eliminar recurso
no + write
curl -k -X POST https://dna-center.local/api/system/v1/auth/token \
curl -k -X GET https://dna-center.local/api/v1/network-device \
-H "X-Auth-Token: <token>"
"ipAddress" : "192.168.99.1",
R1(config)# restconf # Habilitar RESTCONF
R1(config)# netconf-yang # Habilitar NETCONF
# Consultar hostname vía RESTCONF
curl -k -u admin:password \
https://192.168.99.1/restconf/data/Cisco-IOS-XE-native:native/hostname
"Cisco-IOS-XE-native:hostname" : "R1"
Método
Seguridad
Uso
Basic Auth
Baja (texto plano)
Desarrollo/pruebas
Token (Bearer)
Media
APIs de plataformas
mTLS
Alta
Producción enterprise
OAuth 2.0
Alta
APIs cloud
Protocolo sobre SSH diseñado específicamente para configurar dispositivos
de red. Usa modelos YANG.
┌─────────────────────────┐
├─────────────────────────┤
│ NETCONF (operaciones)│ ← get, edit-config, copy-config
├─────────────────────────┤
├─────────────────────────┤
└─────────────────────────┘
Operación
Función
Equivalente
<get>
Consultar configuración y estado
show running-config
<get-config>
Obtener configuración específica
show running-config | section
<edit-config>
Modificar configuración
configure
<copy-config>
Copiar configuración completa
copy running-config startup-config
<delete-config>
Eliminar configuración
erase startup-config
<lock>
Bloquear configuración
configure terminal (exclusividad)
<unlock>
Liberar bloqueo
end
<!-- Solicitud: editar configuración -->
<native xmlns= "http://cisco.com/ns/yang/Cisco-IOS-XE-native" >
<hostname>R1-NUEVO</hostname>
<!-- Respuesta: éxito -->
R1(config)# netconf-yang # Habilitar NETCONF sobre SSH
R1(config)# netconf-yang port 830 # Puerto (default: 830)
# Probar NETCONF desde Linux
ssh -p 830 admin@192.168.99.1 -s netconf
Protocolo moderno basado en gRPC (no HTTP). Ofrece streaming en tiempo
real y es más eficiente que NETCONF para monitoreo.
Característica
NETCONF
gNMI
Transporte
SSH
gRPC (HTTP/2)
Formato
XML
JSON, ASCII, bytes
Streaming
No
Sí (suscripción en tiempo real)
Velocidad
Media
Alta
Uso
Configuración
Monitoreo + Configuración
Operación
Función
Get
Consultar datos (como show)
Set
Modificar configuración
Subscribe
Recibir actualizaciones en tiempo real
Capabilities
Consultar modelos soportados
# Consultar estado de interfaz
gnmi_cli -address 192.168.99.1:6030 \
-username admin -password password \
-xpath /interfaces/interface[name=GigabitEthernet0/0]/state \
API
Transporte
Formato
Streaming
Escala
Uso principal
REST
HTTP/HTTPS
JSON
No
Alta
APIs web, plataformas
NETCONF
SSH
XML
No
Alta
Configuración de dispositivos
gNMI
gRPC
JSON/ASCII
Sí
Muy alta
Monitoreo en tiempo real
CLI
SSH/Telnet
Texto
No
Baja
Uso manual
# 1. Obtener token de autenticación
TOKEN = $(curl -s -k -X POST https://dna-center/api/system/v1/auth/token \
-u admin:password | jq -r '.token' )
curl -s -k -X GET https://dna-center/api/v1/network-device \
-H "X-Auth-Token: $TOKEN " | jq '.response[] | {hostname, ipAddress}'
# 3. Obtener interfaces de un dispositivo
curl -s -k -X GET "https://dna-center/api/v1/network-device/<id>/interface" \
-H "X-Auth-Token: $TOKEN " | jq '.response[] | {name, ipAddress}'