Network Configuration Protocol (NETCONF)
NETCONF ha cambiado la forma en la que los dispositivos de la red se comunican entre
ellos y como los usuarios pueden extraer y parsear información de los dispositivos de
red de una forma más sencilla. Ahora los Routers y Switches cuentan con APIs lo que
abre la ventana a la programabilidad, las respuestas de las peticiones, que
generalmente se da en formato JSON o XML hace que los datos se traten de forma muy
fácil desde lenguajes de programación como python.
NETCONF cuyas siglas significan Network Configuration es un protocolo de transporte
entre dispositivos de red, utilizado con modelos de datos YANG. Los mensajes enviados
con NETCONF utilizan llamadas a procedimiento remoto (RPC), basado en la
comunicación cliente-servidor.
Con NETCONF, el cliente envía el mensaje con formato XML al servidor, la solicitud va
dentro de un elemento XML <rpc>. El server devuelve resultados dentro de un <rpc-
reply>.
Uno de los atributos principales de NETCONF es su capacidad para utilizar diferentes
bases de datos. La mayoría de los ingenieros están familiarizados con running-config y
startup. NETCONF utiliza un tercer almacén de datos llamada configuración candidata,
el cual contiene objetos de configuración que aún no se han aplicado al dispositivo.
NETCONF se implementa comúnmente utilizando SSH como transporte.
1
Entre los requerimientos de NETCONF destacamos:
Debe ser una sesión orientada a la conexión y, por lo tanto, debe haber una
conexión constante entre un cliente y un servidor.
Las sesiones de NETCONF deben proporcionar un medio de autenticación,
integridad de datos, confidencialidad.
Aunque NETCONF se puede implementar con otros protocolos de transporte,
cada implementación debe admitir SSH como mínimo.
Los mensajes que podemos encontrar en la comunicación vía NETCONF son los
siguientes:
<get-config>
Devuelve parte o toda la configuración especificada ( running, candidate, or startup).
<copy-config>
Crea o reemplaza un almacén de datos de configuración con el contenido de otro
almacén de datos de configuración.
<delete-config>
Elimina la configuración de una base de datos
<lock>
Bloque al configuracion de la DB que está actualizando para que no haya solapes.
<unlock>
Desbloquea un bloqueo emitido anteriormente en un almacén de datos de
configuración.
<close-session>
Solicita terminar una sesión
<kill-session>
Fuerza inmediatamente la finalización de una sesión
Para jugar con NETCONF podemos hacerlo con los ejemplos que hay subidos en el repo
de Github de CiscoDevnet.