YANG est le langage standard à
l'IETF
pour décrire des modèles de données, afin de, par exemple, gérer
automatiquement des ressources. Ce RFC décrit le module YANG
iana-dns-class-rr-type
, qui rassemble les
définitions des types d'enregistrements DNS.
YANG est normalisé dans le RFC 7950, et d'innombrables RFC décrivent des modules YANG pour de
nombreux protocoles. YANG est utilisé par des protocoles de gestion
à distance de ressources, comme RESTCONF (RFC 8040) ou NETCONF (RFC 6241). Mais ce RFC est le premier qui va utiliser YANG
pour le DNS. L'un
des objectifs (à long terme pour l'instant) est d'utiliser RESTCONF
ou un équivalent pour gérer des serveurs DNS, résolveurs ou serveurs faisant
autorité. (C'est un très vieux
projet que cette gestion automatisée et normalisée des
serveurs DNS.) Un mécanisme standard de gestion des serveurs
nécessite un modèle de données commun, et c'est là que YANG est
utile. Notre RFC est encore loin d'un modèle complet, il ne définit
que le socle, le type des données que le DNS manipule. C'est la
version YANG de deux registres IANA, celui des
types d'enregistrements DNS et celui des
classes (même si ce dernier concept est bien
abandonné aujourd'hui).
Le registre
IANA pour le DNS contient treize sous-registres. Le RFC n'en
passe que deux en YANG, les classes et les types
d'enregistrement. Les autres devront attendre un autre RFC. Les
types d'enregistrement sont modélisés ainsi :
typedef rr-type-name {
type enumeration {
enum A {
value 1;
description
"a host address";
reference
"RFC 1035";
}
enum NS {
value 2;
description
"an authoritative name server";
...
Et les classes (mais, rappelez-vous, seule la classe
IN
compte aujourd'hui) :
typedef dns-class-name {
type enumeration {
enum IN {
value 1;
description
"Internet (IN)";
reference
"RFC 1035";
}
enum CH {
value 3;
description
"Chaos (CH)";
reference
"D. Moon, 'Chaosnet', A.I. Memo 628, Massachusetts Institute of
Technology Artificial Intelligence Laboratory, June 1981.";
}
...
Le module YANG complet se retrouve
dans
le registre IANA (créé par le RFC 6020).
Le module YANG devra suivre l'actuel registre IANA, qui utilise
un autre format. Pour faciliter la synchronisation, le RFC contient
une feuille de style XSLT pour convertir
l'actuel format, qui est la référence, vers le format YANG. La
feuille de style est dans l'annexe A du RFC mais vous avez une copie ici. Voici
comment produire et vérifier le module YANG :
% wget https://www.iana.org/assignments/dns-parameters/dns-parameters.xml
% xsltproc iana-dns-class-rr-type.xsl dns-parameters.xml > iana-dns-class-rr-type.yang
% pyang iana-dns-class-rr-type.yang
Le moteur XSLT xsltproc fait partie de la
libxslt. Le vérificateur YANG Pyang
est
distribué via
GitHub mais on peut aussi l'installer avec pip (
pip
install pyang
).