samedi 25 janvier 2020

1981 - NTP (Network Time Protocol)

En février 1981, David Mills rédige la note IEN173 qui pose les bases d'un protocole de synchronisation des horloges des ordinateurs du réseau DCNET (Réseau de recherche du département informatique de l'Université du Delaware). Suivra rapidement, toujours en avril 1981, la RFC778 (DCNET Internet Clock Service), puis en septembre 1985, la RFC958 (Network Time Protocol).

Dès les années 1980, le besoin d'un mécanisme de synchronisation d'horloge apparait, notamment pour les protocoles de routage. Mais les premières implémentations ne permettent une synchronisation qu'avec une précision d'une centaine de millisecondes. La mise en oeuvre d'un modèle Client-Serveur est nécessaire pour un équipement souhaitant synchroniser son horloge sur un serveur temps.


S'appuyant sur la couche IP, NTP se positionne comme un protocole applicatif basé sur la couche de transport UDP. Il a néanmoins été conçu pour ne pas subir les délais de latence d'UDP, grâce à l'emploi d'un tampon de compensation des latences (appelés aussi "Jitter Buffer"). Il existe des logiciels client NTP pour la plupart des systèmes d'exploitation et ils permettent de se connecter à un serveur NTP (usuellement sur le port UDP 123) afin de récupérer la date et l'heure avec laquelle se synchroniser.

En raison du nombre importants d'équipements (ordinateurs, routeurs, ...) appelés à se synchroniser avec des serveurs NTP, un système en couches hiérarchiques a été mis au point, chaque serveur de la couche N se synchronisant avec un serveur de la couche N-1 (la couche 0 étant la plus haute de la hiérarchie, la couche de référence). Cette hiérarchie évite par ailleurs les problèmes de boucle dans la synchronisation des serveurs.

La composition de la hiérarchie NTP est composée comme suit :

  • Couche 0 : il s'agit principalement de serveurs reliés par interface RS232 à des horloges atomiques, GPS ou Radio. 
  • Couche 1 : serveurs connectés à des serveurs de la couche 0, on les nommé souvent "serveurs temps" 
  • Couche 2 : serveurs connectés à des serveurs de la couche 1 qui auto-détectent toute défaillance d'un serveur de la couche 1 et se synchronisent aussi avec des serveurs de la même couche 
  • Couche 3 : serveurs connectés à des serveurs de la couche 2 qui peuvent supporter de 16 à 256 couches inférieurs (selon la version du protocole NTP) 


NTP est l'un des plus vieux protocoles Internet encore en utilisation et David Mills participe toujours activement à ses évolutions.

Histoire d'Internet

Chronologie globale   Documents historiques  A venir: les newsgroups, le protocole UUCP, Craig's List, Amazon, eBay, Facebook, Yo...