Aller au contenu principal

2. Architecture Système

Dans le modèle NTP, un certain nombre de sources de référence primaires (primary reference sources), synchronisées par fil ou radio aux normes nationales, sont connectées à des ressources largement accessibles, telles que les passerelles dorsales, et exploitées comme serveurs de temps primaires. Le but de NTP est de transmettre les informations de chronométrage de ces serveurs à d'autres serveurs de temps via Internet et également de vérifier les horloges et d'atténuer les erreurs dues aux défaillances d'équipement ou de propagation. Un certain nombre d'hôtes ou de passerelles de réseau local, agissant en tant que serveurs de temps secondaires, exécutent NTP avec un ou plusieurs serveurs primaires. Afin de réduire la surcharge de protocole, les serveurs secondaires distribuent le temps via NTP aux hôtes de réseau local restants. Dans l'intérêt de la fiabilité, les hôtes sélectionnés peuvent être équipés d'horloges radio moins précises mais moins coûteuses et utilisés pour la sauvegarde en cas de défaillance des serveurs primaires et/ou secondaires ou des chemins de communication entre eux.

Tout au long de ce document, une nomenclature standard a été adoptée : la stabilité (stability) d'une horloge est la capacité à maintenir une fréquence constante, la précision (accuracy) est la comparaison de sa fréquence et de son temps avec les normes nationales, et l'exactitude (precision) est la précision avec laquelle ces quantités peuvent être maintenues dans un système de chronométrage particulier. Sauf indication contraire, le décalage (offset) de deux horloges est la différence de temps entre elles, tandis que le biais (skew) est la différence de fréquence (dérivée première du décalage par rapport au temps) entre elles. Les horloges réelles présentent une certaine variation du biais (dérivée seconde du décalage par rapport au temps), appelée dérive (drift) ; cependant, dans cette version de la spécification, la dérive est supposée nulle.

NTP est conçu pour produire trois produits : le décalage d'horloge (clock offset), le délai aller-retour (roundtrip delay) et la dispersion (dispersion), tous relatifs à une horloge de référence sélectionnée. Le décalage d'horloge représente la quantité pour ajuster l'horloge locale afin de la mettre en correspondance avec l'horloge de référence. Le délai aller-retour fournit la capacité de lancer un message pour arriver à l'horloge de référence à un moment spécifié. La dispersion représente l'erreur maximale de l'horloge locale par rapport à l'horloge de référence. Étant donné que la plupart des serveurs de temps hôtes se synchroniseront via un autre serveur de temps pair, il y a deux composants dans chacun de ces trois produits, ceux déterminés par le pair par rapport à la source de référence primaire du temps standard et ceux mesurés par l'hôte par rapport au pair. Chacun de ces composants est maintenu séparément dans le protocole afin de faciliter le contrôle des erreurs et la gestion du sous-réseau lui-même. Ils fournissent non seulement des mesures précises du décalage et du délai, mais également des limites d'erreur maximale définitives, de sorte que l'interface utilisateur peut déterminer non seulement le temps, mais aussi la qualité du temps.

Il n'y a aucune disposition pour la découverte de pairs (peer discovery) ou la gestion de circuit virtuel (virtual-circuit management) dans NTP. L'intégrité des données est fournie par les sommes de contrôle IP et UDP. Aucune installation de contrôle de flux ou de retransmission n'est fournie ou nécessaire. La détection de doublons (duplicate detection) est inhérente aux algorithmes de traitement. Le service peut fonctionner en mode symétrique (symmetric mode), dans lequel les serveurs et les clients sont indiscernables, mais maintiennent une petite quantité d'informations d'état, ou en mode client/serveur (client/server mode), dans lequel les serveurs n'ont besoin de maintenir aucun état autre que celui contenu dans la demande du client. Une capacité de gestion d'association (association-management) légère, incluant des mécanismes de disponibilité dynamique (dynamic reachability) et de taux de sondage variable (variable poll-rate), est incluse uniquement pour gérer les informations d'état et réduire les besoins en ressources. Étant donné qu'un seul format de message NTP est utilisé, le protocole est facilement implémenté et peut être utilisé dans une variété de mécanismes de sondage sollicité ou non sollicité.

Il convient de reconnaître que la synchronisation d'horloge nécessite par nature de longues périodes et de multiples comparaisons afin de maintenir un chronométrage précis. Alors que seulement quelques mesures sont généralement suffisantes pour déterminer de manière fiable le temps local à environ une seconde, des périodes de plusieurs heures et des dizaines de mesures sont nécessaires pour résoudre le biais de l'oscillateur et maintenir le temps local à l'ordre d'une milliseconde. Ainsi, la précision atteinte dépend directement du temps pris pour l'atteindre. Heureusement, la fréquence des mesures peut être assez faible et presque toujours non intrusive pour les opérations de réseau normales.

2.1. Modèle d'Implémentation

Dans ce qui peut être le modèle client/serveur le plus courant, un client envoie un message NTP à un ou plusieurs serveurs et traite les réponses au fur et à mesure de leur réception. Le serveur échange les adresses et les ports, écrase certains champs du message, recalcule la somme de contrôle et retourne le message immédiatement. Les informations incluses dans le message NTP permettent au client de déterminer le temps du serveur par rapport au temps local et d'ajuster l'horloge locale en conséquence. De plus, le message inclut des informations pour calculer la précision et la fiabilité de chronométrage attendues, ainsi que pour sélectionner le meilleur parmi plusieurs serveurs possibles.

Bien que le modèle client/serveur puisse suffire pour une utilisation sur des réseaux locaux impliquant un serveur public et peut-être de nombreux clients de postes de travail, la généralité complète de NTP nécessite une participation distribuée d'un certain nombre de clients/serveurs ou pairs organisés dans une configuration hiérarchiquement distribuée et dynamiquement reconfigurable. Il nécessite également des algorithmes sophistiqués pour la gestion des associations, la manipulation des données et le contrôle de l'horloge locale. Dans le reste de ce document, le terme hôte (host) fait référence à une instanciation du protocole sur un processeur local, tandis que le terme pair (peer) fait référence à l'instanciation du protocole sur un processeur distant connecté par un chemin réseau.

La Figure 1 montre un modèle d'implémentation pour un hôte incluant trois processus partageant une base de données partitionnée, avec une partition dédiée à chaque pair, et interconnectés par un système de passage de messages. Le processus de transmission (transmit process), piloté par des minuteries indépendantes pour chaque pair, collecte des informations dans la base de données et envoie des messages NTP aux pairs. Chaque message contient l'horodatage local (local timestamp) lorsque le message est envoyé, ainsi que des horodatages précédemment reçus et d'autres informations nécessaires pour déterminer la hiérarchie et gérer l'association. Le taux de transmission des messages est déterminé par la précision requise de l'horloge locale, ainsi que par les précisions de ses pairs.

Le processus de réception (receive process) reçoit des messages NTP et peut-être des messages dans d'autres protocoles, ainsi que des informations provenant d'horloges radio directement connectées. Lorsqu'un message NTP est reçu, le décalage entre l'horloge du pair et l'horloge locale est calculé et incorporé dans la base de données avec d'autres informations utiles pour la détermination des erreurs et la sélection des pairs. Un algorithme de filtrage décrit dans la Section 4 améliore la précision en rejetant les données inférieures.

La procédure de mise à jour (update procedure) est initiée à la réception d'un message et à d'autres moments. Elle traite les données de décalage de chaque pair et sélectionne la meilleure en utilisant les algorithmes de la Section 4. Cela peut impliquer de nombreuses observations de quelques pairs ou quelques observations de nombreux pairs, selon les précisions requises.

Le processus d'horloge locale (local-clock process) opère sur les données de décalage produites par la procédure de mise à jour et ajuste la phase et la fréquence de l'horloge locale en utilisant les mécanismes décrits dans la Section 5. Cela peut entraîner soit un changement par étapes, soit un ajustement de phase progressif de l'horloge locale pour réduire le décalage à zéro. L'horloge locale fournit une source stable d'informations de temps à d'autres utilisateurs du système et pour référence ultérieure par NTP lui-même.

2.2. Configurations Réseau

Le sous-réseau de synchronisation est un réseau connecté de serveurs de temps primaires et secondaires, de clients et de chemins de transmission d'interconnexion. Un serveur de temps primaire est directement synchronisé avec une source de référence primaire, généralement une horloge radio. Un serveur de temps secondaire dérive la synchronisation, éventuellement via d'autres serveurs secondaires, d'un serveur primaire sur des chemins réseau éventuellement partagés avec d'autres services. Dans des circonstances normales, il est prévu que le sous-réseau de synchronisation des serveurs primaires et secondaires assume une configuration hiérarchique maître-esclave avec les serveurs primaires à la racine et les serveurs secondaires de précision décroissante à des niveaux successifs vers les feuilles.

Suivant les conventions établies par l'industrie téléphonique [BEL86], la précision de chaque serveur est définie par un nombre appelé strate (stratum), le niveau le plus élevé (serveurs primaires) étant attribué comme un et chaque niveau vers le bas (serveurs secondaires) dans la hiérarchie étant attribué comme un de plus que le niveau précédent. Avec la technologie actuelle et les horloges radio disponibles, des précisions d'échantillon unique de l'ordre d'une milliseconde peuvent être atteintes à l'interface réseau d'un serveur primaire. Des précisions de cet ordre nécessitent un soin particulier dans la conception et l'implémentation du système d'exploitation et du mécanisme d'horloge locale, comme décrit dans la Section 5.

À mesure que la strate augmente à partir de un, les précisions d'échantillon unique réalisables se dégraderont en fonction des chemins réseau et des stabilités d'horloge locale. Afin d'éviter les calculs fastidieux [BRA80] nécessaires pour estimer les erreurs dans chaque configuration spécifique, il est utile de supposer que les erreurs de mesure moyennes s'accumulent approximativement proportionnellement au délai mesuré et à la dispersion par rapport à la racine du sous-réseau de synchronisation. L'Annexe H contient une analyse des erreurs, y compris une dérivation de l'erreur maximale en fonction du délai et de la dispersion, où cette dernière quantité dépend de la précision du système de chronométrage, de la tolérance de fréquence de l'horloge locale et de divers résidus. En supposant que les serveurs primaires sont synchronisés au temps standard dans des précisions connues, cela fournit une spécification fiable et déterministe sur les précisions de chronométrage dans tout le sous-réseau de synchronisation.

Encore une fois, en s'inspirant de l'expérience de l'industrie téléphonique, qui a appris de telles leçons à un coût considérable [ABA89], la topologie du sous-réseau de synchronisation doit être organisée pour produire la plus grande précision, mais ne doit jamais être autorisée à former une boucle. Un facteur supplémentaire est que chaque incrément de strate implique un serveur de temps potentiellement peu fiable qui introduit des erreurs de mesure supplémentaires. L'algorithme de sélection utilisé dans NTP utilise une variante de l'algorithme de routage distribué de Bellman-Ford pour calculer les arbres couvrants de poids minimum enracinés sur les serveurs primaires. La métrique de distance utilisée par l'algorithme consiste en la strate (mise à l'échelle) plus la distance de synchronisation, qui elle-même consiste en la dispersion plus la moitié du délai absolu. Ainsi, le chemin de synchronisation prendra toujours le nombre minimum de serveurs vers la racine, avec les égalités résolues sur la base de l'erreur maximale.

En conséquence de cette conception, le sous-réseau se reconfigure automatiquement dans une configuration hiérarchique maître-esclave pour produire le temps le plus précis et le plus fiable, même lorsqu'un ou plusieurs serveurs primaires ou secondaires ou les chemins réseau entre eux échouent. Cela inclut le cas où tous les serveurs primaires normaux (par exemple, horloge radio WWVB hautement précise fonctionnant aux distances de synchronisation les plus basses) sur un sous-réseau possiblement partitionné échouent, mais un ou plusieurs serveurs primaires de sauvegarde (par exemple, horloge radio WWV moins précise fonctionnant à des distances de synchronisation plus élevées) continuent à fonctionner. Cependant, si tous les serveurs primaires dans tout le sous-réseau échouent, les serveurs secondaires restants se synchroniseront entre eux tandis que les distances grimpent vers un maximum présélectionné "infini" en raison des propriétés bien connues de l'algorithme de Bellman-Ford. Lors de l'atteinte du maximum sur tous les chemins, un serveur se déconnectera du sous-réseau et fonctionnera en roue libre en utilisant son dernier temps et fréquence déterminés. Étant donné que ces calculs sont censés être très précis, en particulier en fréquence, même des périodes de panne prolongées peuvent entraîner des erreurs de chronométrage ne dépassant pas quelques millisecondes par jour avec des oscillateurs correctement stabilisés (voir Section 5).

Dans le cas de plusieurs serveurs primaires, le calcul de l'arbre couvrant sélectionnera généralement le serveur à la distance de synchronisation minimale. Cependant, lorsque ces serveurs sont à approximativement la même distance, le calcul peut entraîner des sélections aléatoires parmi eux en raison de délais dispersifs normaux. Ordinairement, cela ne dégrade pas la précision tant que toute divergence entre les serveurs primaires est faible par rapport à la distance de synchronisation. Sinon, les algorithmes de filtre et de sélection sélectionneront le meilleur des serveurs disponibles et rejetteront les valeurs aberrantes comme prévu.