Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

IRIS ou bien un whois REST ?

Première rédaction de cet article le 18 mars 2011


À la réunion ICANN de San Francisco, le 16 mars, un intéressant débat a eu lieu autour de la question de l'évolution technique de whois : son successeur théorique, IRIS, a t-il une chance, face à la mode actuelle du whois REST ?

Le débat était introduit par Andy Newton, d'ARIN, lui-même un des concepteurs d'IRIS mais qui a fait une présentation très unilatérale des avantages de REST. Un peu d'histoire : le protocole whois est aujourd'hui normalisé dans le RFC 3912. Mais il est bien plus ancien que cela, sa première description ayant apparemment été faite en 1982 dans le RFC 812. Il a des tas d'inconvénients (bien décrits dans le RFC 3912 lui-même, ou dans le cahier des charges RFC 3707 qui réclamait un remplacement) : pas d'internationalisation, pas d'authentification, pas de fonctions de recherche élaborées et pas de structuration des résultats. Il aurait logiquement dû être remplacé depuis longtemps et les candidats n'ont pas manqué : LDAP a été proposé, ainsi que des protocoles spécifiques comme whois++ (RFC 1834) ou rwhois (RFC 2167). Aucun n'avait connu le moindre succès et whois reste le protocole d'accès aux données des registres (qu'ils soient de noms de domaines ou d'adresses IP).

Le candidat officiel à la succession de whois est désormais IRIS (RFC 3981), normalisé en 2005. Compliqué à programmer, IRIS n'a connu que très peu de déploiements. Les principaux se limitent à la fonction de disponibilité d'un domaine (RFC 5144). Selon son auteur, IRIS a été « requirment by lawyers, design by committee », ce qui n'est pas un compliment.

Y a-t-il une alternative ? Oui, selon Newton, REST fait tout cela et mieux (son exposé était très unilatéral en faveur de REST). L'idée est de définir un service analogue à whois (mais sur un protocole complètement différent : le terme de RESTful whois est donc maladroit car ce n'est pas du whois) en suivant les principes REST :

  • Utilise HTTP, et à fond, avec ses codes de retour (404 : objet inexistant, etc), sa négociation de contenu et tout,
  • Un URL qui identifie l'objet,
  • Les verbes HTTP qui expriment les actions sur l'objet (principe CRUD), le service d'ARIN permettant désormais la modification d'objets, pas uniquement leur récupération,
  • Résultat sous une forme structurée.

Ainsi, ARIN a un tel service en production aujourd'hui. Si je tape (POC = Point Of Contact) :


% curl http://whois.arin.net/rest/poc/KOSTE-ARIN
<?xml version='1.0'?>
<?xml-stylesheet type='text/xsl'  href='http://whois.arin.net/xsl/website.xsl' ?>
<poc>
<registrationDate>2009-10-02T00:00:00-04:00</registrationDate>
<city>Chantilly</city><companyName>ARIN</companyName>
<iso3166-1><code2>US</code2><code3>USA</code3><name>UNITED STATES</name><e164>1</e164></iso3166-1>
<firstName>Mark</firstName><handle>KOSTE-ARIN</handle><lastName>Kosters</lastName>
...

je récupère sous une forme structurée (ici en XML), les informations disponible sur le contact KOSTE-ARIN.

Quels sont les avantages de REST, tels que décrits par Newton ? Essentiellement la simplicité de développement. Il existe des bibliothèques HTTP pour tous les langages de programmation, des clients en ligne de commande existants (comme curl que j'utilise plus haut), et, grâce à l'instruction <?xml-stylesheet qu'on voit plus haut, la requête peut même être faite dans un navigateur Web ordinaire. On constate que très peu de clients IRIS ont été développés alors que tout le monde, même sans le savoir, a un client REST.

Tiens, une remarque sur le format de sortie : un sujet de polémique classique dans le monde REST concerne celui-ci. JSON ou XML ? Heurement, le service de l'ARIN permet les deux, en utilisant la négociation de contenu HTTP :

% curl -H "Accept: application/json" http://whois.arin.net/rest/ip/209.118.190.4
{"net":
...
"registrationDate":{"$":"2001-01-02T00:00:00-05:00"},
...
"handle":{"$":"NET-209-116-0-0-1"},"name":{"$":"ALGX-ABI-BLK14"},
...
"netBlocks":{"netBlock":{"cidrLength":{"$":"14"},
...
"description":{"$":"Direct Allocation"},"type":{"$":"DA"},"startAddress":{"$":"209.116.0.0"}}},
"orgRef":{"@name":"XO Communications",
...

Le RIPE-NCC dispose également d'un tel service, apparemment en mode expérimental. À noter qu'il n'existe pour le moment pas de schéma standard pour l'URL de la requête, ni pour les résultats. Un tel schéma apparaîtra-t-il ? IRIS s'imposera-t-il avant REST ? Nous le saurons plus tard... Mais il est symptômatique que personne dans la salle ne se soit levé pour défendre IRIS.

(Depuis, IRIS n'a eu en effet aucun succès et, en mars 2015, un autre candidat à la succession de whois est apparu, fondé sur REST, le protocole RDAP.)

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)