Le "Network Time Protocol"

L’histoire du Network Time Protocol

Qu’est-ce qu’un protocole ? Exposé de Monsieur LE CROSNIER Hervé, université de Caen,  dont nous donnons ici un  extrait :

Le NTP, « Network Time Protocol », ou « Protocole d’heure réseau », est le protocole informatique utilisé par la totalité des ordinateurs connectés pour se maintenir en permanence à l’heure, en se synchronisant sur des ordinateurs de référence.

La première version du NTP a été lancée en 1985. Déjà à l’époque, il offrait une précision supérieure à la seconde. C’est un des protocoles les plus anciens d’internet, ce qui prouve sa grande utilité. Il remplace le TP, « Time protocol », sorti deux ans plus tôt, qui offrait moins de précision et de fiabilité. Ce protocole fonctionne avec son logiciel, le logiciel NTP, développé en même temps que le réseau par l’Université du Delaware. De nos jours, la version la plus utilisée du NTP est la version 3, sortie en 1992. Cependant, une quatrième version a récemment vu le jour, en 2010.

Le NTP est basé sur un système d’échange de l’heure. À la base de tout, il y a des horloges atomiques, telle que celle de Francfort, qui fournissent l’heure exacte à des serveurs.

Untitled

Ces serveurs, reliés entre eux, échangent l’heure, et selon leur position, vérifient son exactitude. L’heure est ensuite envoyée aux ordinateurs clients.

La réception se fait par radio ou satellite, ou directement depuis l’horloge atomique selon l’emplacement du serveur de la strate 1. Par la suite, les serveurs de la strate 2 récupèrent l’heure de référence auprès des serveurs de la strate 1, et les clients ou d’autres serveurs de la strate 3 ou 4 récupèrent cette heure de référence. Ce système est très hiérarchisé, tous ces serveurs sont synchronisés avec les serveurs de la strate supérieure et la strate 0 est formée par les horloges atomiques. Les serveurs clients sont eux-mêmes des serveurs NTP et reçoivent l’heure qu’ils communiquent à d’autres serveurs de la même strate.

Dans le protocole NTP, le temps est représenté par un entier de 64 bits avec un encodage qui permet de connaître le nombre de secondes, minutes, heures, jours, mois et années. Par convention, tout cela est donné par rapport au 1er Janvier 1970. Pour en savoir plus sur l’encodage du NTP, voir l’onglet « Le décodage ».

Pourquoi utiliser un protocole ?

Il est d’abord important de préciser que les ordinateurs ne communiquent pas seulement pour savoir l’heure. En effet, ils peuvent vouloir échanger des fichiers, ou échanger du  courriel. Ainsi, les ordinateurs utilisent des protocoles pour préciser leur demande. Un protocole correspond à une tâche particulière : le Network Time Protocol (NTP) et le protocole qui demande l’heure à une autre machine, le Simple Mail Transfer Protocol (SMTP) celui qui permet d’envoyer des mails…

Une vidéo de CanalU explique cette notion (40 mn) : Les protocoles internet

Chaque protocole débute par un élément phatique. Ce sont des éléments que nous utilisons nous-mêmes dans la vie courante : « Oh ! Bonjour, il faut beau aujourd’hui, n’est-ce pas ? ». Cela permet de démarrer une conversation. Pour les ordinateurs, il faut dire « bonjour », se présenter, dire à qui on veut parler…

Un ordinateur interroge un autre ordinateur,  comme s’il frappait à une porte, à un guichet numéroté : la porte 22 pour la programmation, la porte 25 pour les mails, la porte 123 pour l’heure. Il faut frapper à la porte 123 (et pas à une autre, sinon, on ne respecte pas le protocole), et dire : « Est-ce bien vous qui donnez l’heure ? ». On doit savoir à qui on parle ; le but est de s’adresser à un niveau supérieur ; les ordinateurs sont donc organisés en pyramide, dont la pointe est nommée le « strate 0 »

Ainsi, il y a 3 cas de figure :

  • Quand un ordinateur de la strate 3 s’allume, il va voir un ordinateur de la strate 2 pour lui demander l’heure, et celui-ci la lui donne.
  • Quand un ordinateur de la strate 3 s’allume, il va voir un ordinateur de la strate 2 pour lui demander l’heure. Si celui-ci est éteint, il cherche un autre ordinateur de la strate 2 pour pouvoir l’interroger. Si tous les ordinateurs de la strate 2 sont éteints, l’ordinateur garde l’heure qu’il a déjà acquise et ira interroger un ordinateur de la strate 2 plus tard.
  • Quand un ordinateur de la strate 3 s’allume pour la première fois, il cherche à aller interroger un ordinateur de la strate 2. Si tous les ordinateurs de la strate 2 sont éteints, on doit rentrer l’heure manuellement. C’est ce que l’on appelle le « bootstrap ».

photo(6)
Afin de garder l’heure en local sur la machine, et de ne pas interroger trop fréquemment un ordinateur  de la strate 2, on utilise une pile 2130 au lithium (cf photo). Il y a aussi une petite horloge (horloge à quartz). Elle dérive légèrement, mais pour peu que l’ordinateur ait déjà été initialisé, on dispose  d’une heure pas trop erronée, et le NTP sert à corriger.

Donc, quand un ordinateur s’allume, il cherche à voir s’il peut rentrer en contact avec un ordinateur d’une strate supérieure.

Il possède une liste (document texte) de machines à interroger pour savoir l’heure.

NTP est configuré par l’intermédiaire du fichier/etc/ntp.conf comme décrit dans la page de manuel ntp.conf(5). Voici un exemple simple:

server ntplocal.example.com prefer
server timeserver.example.org
server ntp2a.example.net

driftfile /var/db/ntp.drift

Cependant, lorsqu’une machine en interroge une autre, cela prend un certain temps. C’est comme lorsque nous nous envoyons des lettres : on les date, c’est le protocole. Lorsque le destinataire reçoit la demande, il peut étudier le temps de propagation (par exemple, en tamponnant la lettre avec : « Reçu le … », et ainsi, corriger l’information qu’il transmet.

Quelle est la nécessité d’utiliser un protocole ?

Tout d’abord, il faut interroger le bon guichet, sans être intempestif. Ainsi, au début du protocole, on dit d’abord qui l’on est : « Bonjour, je suis 46.253… »  Et le serveur note qui vient l’interroger. Il fait cela pour deux raisons :

  • Tout d’abord, il a besoin d’effectuer ses propres statistiques. Si on lui pose la question 53 millions de fois, c’est qu’il a des raisons d’être. Sinon, il est préférable de supprimer. Les ordinateurs de la strate inférieure iront interroger un autre ordinateur de la strate supérieure.
    Il ne faut pas oublier que tout ce système est subventionné (par l’État, par l’intermédiaire des observatoires et des universités). Ce système ne peut pas être privé, car il n’est pas payant (comme l’est l’horloge parlante). Néanmoins, à terme, l’horloge parlante est un investissement rentable : Le tarif en mai 2012 à partir d’un poste fixe est de 0,562 €. Multiplié par le nombre d’interrogations, on imagine facilement le chiffre d’affaire.
  • Noter permet également de voir si quelqu’un vient demander l’heure trop souvent. Si un ordinateur vient tous les jours, c’est normal, il ne dérive pas trop. Mais si le même ordinateur demande l’heure 500 fois en 3 minutes, c’est sûrement qu’il veut faire du déni de service. L’ordinateur, occupé à répondre au hackeur, ne peut plus répondre aux autres. Mais, puisqu’on a noté son nom, il est possible de mettre en place un filtre : on fait un firewall, et une blacklist.

Enfin, comme cela a été mentionné plus haut, le protocole permet de calculer les décalages possibles entre la demande et la réception de la demande. Il calcule et corrige le délai de propagation, ce qui lui permet de comparer.

Les questions relatives aux délais de propagation sont exposées ici en anglais ( 3m 30s ; source www/spirent.com) :