Pour mettre en place des mécanismes de synchronisation au sein d’un réseau local, la première question à se poser est celle du choix du protocole. Il existe en effet de nombreux protocoles permettant de synchroniser des équipements au sein d’un tel réseau (PTP, NTP, SNTP, etc.). La réponse la plus évidente est d’utiliser le protocole NTP (Network Time Protocol).
Toutefois, avant d’opter pour le NTP, il faut comprendre son fonctionnement et vérifier si cette solution correspond aux équipements à synchroniser. A noter que l’essence de NTP est la synchronisation temporelle sur le temps UTC, et non pas la gestion de l’heure, qui est – elle – du ressort du système d’exploitation des machines.
Comment fonctionne le protocole NTP ?
Le Network Time Protocol (NTP) a été inventé en 1985, dont une description technique de la version d’origine du protocole se trouve dans la RFC 958. La version la plus utilisée étant la version 3 (RFC 1305), même s’il existe une version 4 depuis 2010 (RFC 5905).
NTP est un protocole de synchronisation temporelle pour des équipements réseaux qui suit une logique de structure hiérarchique dans le séquençage des synchronisations. Chaque étage de la hiérarchie est appelé une strate, d’où le mot stratum qui signifie strate. La norme prévoit jusqu’à 16 strates. L’idée du protocole est que des serveurs d’une même strate partagent une référence temporelle commune et transmettent à la strate suivante cette référence.
La strate 0 est composée des horloges de référence qui peuvent être des horloges atomiques, des GPS, etc. Il s’agit des machines racines du protocole, qui sont garantes du temps exact. Elles vont maintenir ce que l’on appelle le temps UTC (Coordinated Universal Time).
La strate 0 est reliée à la strate 1 via des connexions comme des ports série. La strate 1 est composée des premiers serveurs NTP. Ce sont eux qui vont diffuser les horodatages de synchronisation au reste du réseau. Il existe plusieurs serveurs de strate 1 en France et dans le monde, accessibles publiquement, il n’est toutefois pas recommandé de s’y connecter (voir pourquoi ci-dessous). A partir de la strate 1 et jusqu’à la strate 15, les serveurs peuvent se connecter à des serveurs de la même strate ou des serveurs de la strate du dessous via des liens réseaux comme présenté sur le schéma. Pour connaître la strate d’un serveur il suffit alors de calculer le chemin le plus court qui le relie à une horloge de référence.
Le fonctionnement classique du protocole est le mode client/serveur entre deux machines appartenant à des strates différentes. Le client demande un horodatage au serveur de la strate du dessus auquel il a accès. Le serveur lui répond avec suffisamment d’informations pour que le client puisse estimer le délai de transmission et le décalage entre son horloge et celle du serveur. A cette étape, il est possible que l’estimation du délai et/ou du décalage ne soit pas bonne. Le client va donc introduire un léger décalage entre son horloge et celle du serveur. Toutefois, si le client sert lui-même de serveur pour la strate du dessous, ce décalage se propage et peut s’amplifier plus loin dans le réseau. Par conséquent, même si le protocole NTP prévoit jusqu’à 16 strates, pour des raisons de précision, il n’est pas conseillé d’avoir des serveurs qui se trouvent à une grande distance de la strate 0. En pratique la majorité des clients finaux du protocole NTP se trouvent entre les strates 3 et 4.
De ce fait, lors de la mise en place du protocole NTP sur un réseau local, il est tentant de se connecter au plus haut dans la hiérarchie afin de minimiser le décalage de l’horloge et obtenir une précision optimale.
Etant onéreux et assez difficile d’accéder à une horloge atomique ou GPS pour se trouver sur la strate 1, la solution idéale semble être une connexion directe aux serveurs NTP de strate 1, accessibles publiquement. Cependant, ces derniers sont davantage réservés à la synchronisation des serveurs publics de strate 2. En effet, si chacun connectait sa machine à ces serveurs, ils seraient complètement saturés de requêtes et ne pourraient plus remplir leur mission correctement. Par conséquent, mieux vaut de se connecter un peu plus bas dans la hiérarchie, notamment parce qu’il est peu probable que votre réseau local ait besoin d’une telle précision. Si tel est le cas, le NTP n’est peut-être pas le meilleur protocole pour votre réseau.
Comment organiser les strates à l’intérieur d’un réseau NTP ?
Dans un premier temps, il est important de connecter le réseau à plusieurs sources de temps NTP publiques. Il est effectivement recommandé d’être connecté à 3 serveurs minimum pour obtenir un horodatage fiable et précis.
En effet, si le réseau est connecté à une seule source, celle-ci peut se décaler ou cesser de répondre. Deux sources, quant à elle, peuvent se contredire si l’une d’entre elles se décale. A partir de 3 sources, le réseau est protégé contre ces pannes potentielles. Pour la même raison, il est conseillé de connecter plusieurs serveurs du réseau à l’extérieur. En effet, avec un seul et unique serveur de synchronisation, en cas de panne de ce dernier, le réseau perd son accès aux serveurs publics.
Pour bien organiser un réseau et ses strates NTP, il est important de comprendre les différents moyens qu’ont les machines à l’intérieur d’un réseau NTP pour se synchroniser. Les machines peuvent récupérer un horodatage auprès d’un serveur de la strate supérieure, mais les machines connectées d’une même strate peuvent également discuter pour se synchroniser entre elles. Les serveurs utilisent le même protocole que le mode client/serveur entre strates différentes. A l’exception que la réponse de la machine qui fait office de serveur est interprétée par le client comme une demande. Puis, les rôles s’échangent, la première machine répond à la deuxième en lui envoyant suffisamment d’informations pour qu’elle puisse estimer son décalage. La dernière façon pour les serveurs NTP de communiquer simplement leur horodatage, c’est de diffuser leur horloge sous forme de broadcast (diffusion globale dans le réseau).
Le Network Time Protocol (NTP) fonctionne de manière hiérarchique. Lorsque la connexion d’une ou plusieurs machines d’un réseau local est établie à un ou plusieurs serveurs NTP publics, on peut s’interroger sur l’organisation du reste du réseau. Dès lors, plusieurs recommandations sont à considérer :
- Si l’ensemble du réseau doit être synchronisé, il est important de réduire le nombre de strates à l’interne. En effet, plus le réseau est profond, plus le décalage entre les machines de la première et la dernière strate risque d’être conséquent.
- Il est important que les machines qui ont un rôle identique dans un réseau soient positionnées dans la même strate (cela évite une dérive temporelle entre machines ayant le même rôle)
- Il est conseillé de connecter les machines d’une même strate (les homologues) entre elles. Pas nécessairement par un maillage total si le nombre de machines est important, mais avec une densité suffisante pour assurer une bonne précision de la synchronisation sur le réseau.
En somme, il est important de bien organiser la structure d’un réseau et de choisir les bons équipements pour que les applications critiques puissent se reposer sur une synchronisation temporelle efficace.
Avec plus de 150 ans d’expertise en gestion des temps et présent dans plus de 140 pays, Bodet Time est un acteur français majeur de la synchronisation horaire et du temps fréquence. Notre gamme de serveurs de temps NTP Netsilon permet de synchroniser de façon sécurisée l’ensemble des équipements présents sur un réseau.