Entendendo o YANG em dispositivos que executam o Junos OS
YANG é uma linguagem de modelagem de dados extensível e baseada em padrões que é usada para modelar a configuração e os dados de estado operacional, chamadas de procedimento remoto (RPCs) e notificações de eventos de servidor de dispositivos de rede. O grupo de trabalho NETMOD da IETF originalmente projetou a YANG para modelar dados de gerenciamento de rede e fornecer um padrão para a camada de conteúdo do modelo de protocolo de configuração de rede (NETCONF). No entanto, o YANG é independente do protocolo, e os modelos de dados YANG podem ser usados independentemente do protocolo de transporte ou RPC e podem ser convertidos em qualquer formato de codificação suportado pelo protocolo de configuração de rede.
A Juniper Networks publica módulos YANG que definem as hierarquias de configuração, comandos operacionais, dados de estado operacional e extensões YANG para dispositivos Junos. Você pode baixar os módulos YANG no site da Juniper Networks ou no repositório GitHub da Juniper Networks para YANG, ou pode gerar os módulos em um dispositivo Junos.
A YANG usa uma sintaxe semelhante a C, uma organização hierárquica de dados, e fornece um conjunto de tipos integrados, bem como a capacidade de definir tipos derivados. A YANG enfatiza a readabilidade, e oferece modularidade e flexibilidade através do uso de módulos e submodules, além de tipos e grupos de nós reutilizáveis.
Um módulo YANG define um único modelo de dados e determina a codificação para esses dados. Um módulo YANG define um modelo de dados por meio de seus dados, e a organização hierárquica de e restrições sobre esses dados. Um módulo pode ser uma entidade completa e independente, ou pode fazer referência a definições em outros módulos e submodules, bem como aumentar outros modelos de dados com nós adicionais.
Um módulo YANG define não apenas a sintaxe, mas também a semântica dos dados. Ela define explicitamente as relações entre e restrições sobre os dados. Isso permite que você crie dados de configuração sintáticamente corretos que atendem aos requisitos de restrição e permite que você valide os dados em relação ao modelo antes de carregá-los e empenhá-los em um dispositivo.
A YANG usa módulos para definir dados de configuração e estado, notificações e RPCs para operações de rede de forma semelhante à forma como a Estrutura de Informações de Gerenciamento (SMI) usa MIBs para modelar dados para operações de SNMP. No entanto, a YANG tem o benefício de poder distinguir entre dados operacionais e de configuração. YANG mantém a compatibilidade com o SNMP SMI versão 2 (SMIv2), e você pode usar libsmi para traduzir módulos SMIv2 MIB em módulos YANG e vice-versa. Além disso, quando você não pode usar um parser YANG, você pode traduzir módulos YANG em YANG Independent Notation (YIN), que é uma sintaxe XML equivalente que pode ser lida por parsers XML e scripts XSLT.
Você pode usar ferramentas baseadas em YANG existentes ou desenvolver aplicativos de gerenciamento de rede personalizados para utilizar módulos YANG para uma programabilidade de rede mais rápida e precisa. Por exemplo, um aplicativo cliente poderia utilizar módulos YANG para gerar dados de configuração específicos do fornecedor para diferentes dispositivos e validar esses dados antes de carregá-los no dispositivo. O aplicativo também pode lidar e solucionar problemas inesperados de respostas e erros de RPC.
Para obter informações sobre YANG, consulte RFC 6020, YANG - Uma linguagem de modelagem de dados para o protocolo de configuração de rede (NETCONF) e RFCs relacionados.