Bodet-Time
  • Accueil
  • Ressources
  • Blog
  • La redondance dans le protocole NTP
La redondance dans le protocole NTP

Pannes et défaillances sont inéluctables pour les réseaux et équipements. C’est également le cas pour les mécanismes de synchronisation temporelle sur lesquels reposent divers services et applications. S’il est impossible de rendre un réseau totalement tolérant aux pannes, il est possible, avec une bonne planification, de le rendre résistant à un nombre conséquent de défaillances.

Pour résister à des pannes et des défaillances, la méthode la plus efficace est de mettre en place une redondance des équipements et des connexions. En effet, la panne d’un équipement n’aura pas de conséquence si un autre prend le relais immédiatement. Dans le cas particulier des réseaux qui utilisent NTP (Network Time Protocol) comme système de synchronisation temporelle, il est possible et souhaitable d’utiliser des mécanismes de redondance pour rendre le système robuste.

Lorsque l’on parle de redondance, il est important d’évaluer tous les aspects du réseau qui peuvent défaillir, comme chaque alimentation électrique ; chaque serveur ; chaque routeur ; etc. Il faut par exemple, s’assurer d’avoir plusieurs sources d’alimentation électrique, dont certaines qui soient indépendantes du réseau électrique.

Lorsqu’on souhaite installer un réseau NTP, il est essentiel de connaitre les mesures à mettre en place pour le rendre résistant aux pannes des différents équipements réseaux (serveurs et routeurs par exemple).

Redondance des sources de temps

La première chose à faire pour garantir la continuité de la synchronisation temporelle lors de défaillances est de synchroniser son réseau sur plusieurs sources de temps. Le protocole NTP est prévu pour fonctionner en utilisant plusieurs sources de temps. Cette redondance va assurer la continuité du fonctionnement lors de la défaillance et/ou d’une panne d’une source de temps. Il faut multiplier les sources de temps mais également penser à varier leur type. En effet, en utilisant uniquement des sources de temps publics comme des serveurs de strate 1, on se rend dépendant du réseau Internet et donc de ses pannes. Idéalement, il faut aussi utiliser des sources de temps de strate 0, comme le GPS.

Dans le cas où chaque horloge se synchronise quand elle reçoit un message, il est évident qu’une simple connexion à plusieurs sources de temps ne permet pas de se prémunir contre les décalages d’une ou plusieurs sources de temps. Il faut alors parvenir à sélectionner la meilleure source de temps ou calculer un temps moyen satisfaisant pour garantir la meilleure synchronisation avec les horloges de référence.

Pour cette tâche, le protocole NTP utilise une variante de l’algorithme de Marzullo appelée algorithme d’intersection. L’algorithme vise à trouver le meilleur serveur à utiliser pour synchroniser l’horloge locale. A partir des caractéristiques des différents serveurs qui envoient leurs horodatages, l’algorithme construit une liste de serveurs parmi lesquels il choisira le meilleur.

Il va ensuite filtrer cette liste pour écarter les serveurs qui ne répondent pas aux critères d’éligibilité, comme une trop grande distance, ou encore l’appartenance du serveur à une strate trop lointaine dans la hiérarchie NTP.

Une fois la liste nettoyée, l’algorithme cherche le meilleur serveur de la liste afin de mettre l’horloge locale à jour.

Pour chaque serveur, on considère un intervalle de temps qui est centré sur l’horodatage envoyé, étendu en fonction de la distance entre l’horloge et le serveur. L’objectif est de trouver une intersection d’intervalles qui regroupe au moins la moitié des serveurs. Si une telle intersection existe, on prend en compte les serveurs qui la compose pour la suite de l’algorithme. Ces serveurs sont ensuite classés en fonction de la qualité de leur horloge : qui dépend du décalage, de la distance au serveur et de la gigue (la variation de la latence). L’algorithme est itératif : il élimine un outlier à chaque tour, jusqu’à tous les faire disparaître.

Dans les cas où il n’y a plus d’outliers, s’il reste suffisamment de serveurs selon les paramètres de l’algorithme (1 par défaut, pour plus de sécurité, il est possible d’augmenter cette valeur), on prend alors le meilleur serveur parmi les restants, pour synchroniser l’horloge locale.

Grâce à l’algorithme Marzullo, en connectant les équipements à suffisamment de sources de temps, il est peu probable de se retrouver sans source de temps fiable pour synchroniser les horloges du réseau.

Redondance dans le réseau

Toutefois, multiplier les sources de temps n’est pas suffisant pour assurer une continuité de service face aux pannes. Il faut effectivement prendre en compte ce qui se passe à l’intérieur du réseau. Une des solutions pour maintenir la synchronisation temporelle lorsque les horloges de référence sont hors service est l’appairage.

Utiliser l’appairage permet à deux équipements d’assurer alternativement les rôles de client et serveur l’un pour l’autre afin de maintenir la synchronisation. A noter que dans le cas de l’appairage, les horloges jouent un rôle symétrique à la fois client ET serveur. Cela ralentit la synchronisation, dans la mesure où les serveurs échangent plus de messages. Les deux horloges étant sur un pied d’égalité, leur objectif est de se synchroniser entre elles et non pas sur une source extérieure. L’appairage permet de maintenir une vraie proximité entre les horloges des pairs. Bien que primordial dans certaines applications, l’appairage ne garantit pas un horodatage cohérent avec une source externe, ce qui peut s’avérer problématique pour des applications comme la journalisation des manipulations de données.

Un autre mécanisme de redondance au sein d’un réseau NTP est d’utiliser le mode Anycast. En effet, dans le mode Anycast, plusieurs serveurs partagent la même adresse Anycast. Les clients ne savent donc pas exactement quel serveur répondra à leur requête. Ce sont les routeurs qui déterminent quel serveur doit répondre à quelle requête en choisissant le serveur le plus proche : que ce soit topologiquement ou au niveau de la latence. Le mode Anycast amène d’autres avantages en plus de la redondance. En effet, étant donné que le réseau de routage choisit automatiquement le serveur le plus proche pour servir la requête, la charge réseau est diminuée ainsi que les délais entre client et serveur. La précision de la synchronisation est donc meilleure.

La configuration Anycast est cependant plus complexe à mettre en place par rapport au mode client/serveur classique. Il faut alors être équipé de serveurs de temps et de matériel compatible. De plus, il faut s’assurer que les serveurs qui se trouvent reliés à une même adresse Anycast soient bien synchronisés entre eux pour que l’horodatage retourné ne dépende pas du serveur qui répond.

Pour ces raisons, il peut être tentant d’utiliser des serveurs publics « pool ». Il s’agit du même principe de fonctionnement que l’Anycast, c’est-à-dire, plusieurs serveurs publics se trouvent reliés à la même adresse IP. Cela permet d’avoir en permanence un serveur qui répond lorsque l’on fait une requête.

Toutefois, s’il n’est pas important de pouvoir identifier quel serveur répond lorsque l’on maîtrise les machines de son réseau, cela devient essentiel lorsqu’on utilise des serveurs publics, serveurs qui fournissent une tâche aussi fondamentale que la synchronisation temporelle. De ce fait, cette approche n’est pas conseillée.

Monitoring et sécurité

La mise en place de mécanismes de redondance ne doit pas faire oublier la sécurité du réseau. En effet, il est important de sécuriser les connexions entre les différents équipements afin de résister, en plus des pannes, aux attaques. Un monitoring efficace permet de profiter pleinement de la redondance NTP. En effet, en surveillant l’activité des serveurs, il devient possible de détecter, au plus tôt, les défaillances qui peuvent survenir sur un équipement. Par conséquent, en cas de défaillances d’un serveur, il est plus facile de synchroniser les équipements aux autres serveurs du réseau afin de ne pas interrompre le service, le temps de réparer l’équipement défectueux.

Expert 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.

Besoin d’accompagnement pour concevoir une architecture de distribution temporelle performante, sécurisée et hautement disponible ?

Contactez-nous

Partagez l'article