Notre serveur NTP Stratum 1 : Raspberry Pi, GPS et retour d'expérience

Par Richard DEMONGEOT | 14 janvier 2026 | Temps de lecture : 12 min
Raspberry Pi avec module GPS pour serveur NTP Stratum 1

Notre serveur NTP Stratum 1 : un Raspberry Pi avec module GPS et signal PPS, au coeur de l'infrastructure RDEM Systems.

Au coeur de notre infrastructure de synchronisation temporelle se trouve un petit appareil aux capacités remarquables : un Raspberry Pi équipé d'un récepteur GPS qui fournit l'heure avec une précision de l'ordre de la microseconde. Ce serveur de strate 1 constitue la référence absolue pour tous les autres serveurs NTP de notre réseau, dont vous pouvez suivre l'état en direct sur notre page de status & monitoring.

Strate 0 : Les références de temps atomique

Les sources de Strate 0 ne sont pas des serveurs NTP a proprement parler. Ce sont des dispositifs physiques qui fournissent une référence de temps absolue :

  • Horloges atomiques : Utilisent les vibrations des atomes de césium ou de rubidium. Précision de l'ordre de la nanoseconde sur plusieurs millions d'années.
  • Récepteurs GPS/GNSS : Les satellites GPS embarquent des horloges atomiques et diffusent un signal de temps. Le signal PPS (Pulse Per Second) offre une précision sub-microseconde.
  • Signaux radio : DCF77 (Allemagne), MSF (Royaume-Uni), WWVB (USA) - émetteurs synchronises sur des horloges atomiques nationales.

Strate 1 : Notre serveur GPS

Notre serveur Stratum 1 est construit autour d'un Raspberry Pi équipé d'un module GPS avec sortie PPS. Voici comment fonctionne cette configuration :

Le récepteur GPS et le signal PPS

Le module GPS fournit deux types d'informations :

  1. Données NMEA : Trames textuelles contenant la position, la date et l'heure (précision ~1 seconde)
  2. Signal PPS : Une impulsion électrique précisément au début de chaque seconde (précision < 1 microseconde)
Sortie cgps montrant les satellites GPS et la précision

Sortie de la commande cgps : 12+ satellites en vue, position fixée avec précision de +/- 8 mètres, offset temporel de 0.257ms.

La combinaison des deux est essentielle : NMEA donne la seconde courante (mais avec un délai variable), tandis que PPS donne l'instant exact du changement de seconde. Le daemon NTP utilise NMEA pour "savoir quelle heure il est" et PPS pour "savoir exactement quand la seconde change".

Configuration ntpd avec GPS

Dans notre configuration, le daemon ntpd utilise les drivers de mémoire partagée (SHM) pour communiquer avec gpsd :

# /etc/ntp.conf - Configuration Stratum 1 GPS

driftfile /var/lib/ntp/ntp.drift

# Statistiques pour analyse
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Source NMEA via gpsd (SHM 0) - noselect car moins precis
server 127.127.28.0 minpoll 8 noselect
fudge  127.127.28.0 time1 0.304 time2 0.280 refid NMEA

# Source PPS via gpsd (SHM 1) - REFERENCE PRINCIPALE
server 127.127.28.1 minpoll 1 maxpoll 2 prefer iburst
fudge  127.127.28.1 refid PPS stratum 0

# Serveurs Stratum 1 de validation (non publics)
# Configuration avec plusieurs instituts metrologiques
# pour validation croisee du signal GPS
server [serveur-stratum-1-A] iburst
server [serveur-stratum-1-B] iburst
server [serveur-stratum-1-C] iburst
# ...

# Serveurs RDEM Stratum 2 (validation croisee)
server ntp1.rdem-systems.com iburst
server ntp2.rdem-systems.com iburst
# ... jusqu'a ntp10

L'algorithme de sélection des pairs NTP

NTP n'utilise pas simplement "la première source disponible". Il implémente un algorithme sophistique pour sélectionner la meilleure source de temps parmi toutes celles configurées.

Les métriques de sélection

Pour chaque source, NTP calcule plusieurs métriques :

Métrique Description Idéal
Stratum Niveau dans la hiérarchie NTP Le plus bas possible
Delay Temps aller-retour vers le serveur < 50ms
Offset Différence entre l'horloge locale et le serveur < 10ms
Jitter Variation de l'offset dans le temps < 5ms
Reach Historique de réponses (octal, 377 = 8/8 succès) 377

Interprétation de ntpq -c peers

Sortie ntpq -c peers montrant les sources NTP

Sortie de ntpq -c peers : le caractère * indique la source sélectionnée (ici PPS), + les candidats valides, - les outliers rejetés.

Les caractères en début de ligne ont une signification précise :

Symbole Signification
* sys.peer - Source actuellement sélectionnée pour la synchronisation
+ candidate - Source valide, candidate au remplacement si la principale échoue
- outlier - Source rejetée par l'algorithme de sélection (écart trop important)
# selected - Distance trop grande, mais sinon acceptable
x falseticker - Source considérée comme fournissant un temps incorrect

L'algorithme d'intersection

NTP utilise un algorithme d'intersection (Marzullo's algorithm) pour déterminer quelles sources sont cohérentes entre elles. Le principe est simple : si la majorité des sources s'accordent sur une plage de temps, les sources qui s'en écartent sont considérées comme "falsetickers" et exclues.

Les grandes sources de temps fiables dans le monde

Pour une infrastructure NTP robuste, il est essentiel de connaître les sources de temps les plus fiables. Voici les principales références mondiales :

Instituts métrologiques nationaux (Stratum 1)

Organisme Pays Accès
PTB (Physikalisch-Technische Bundesanstalt) Allemagne Accès restreint / sur demande
Observatoire de Paris (LNE-SYRTE) France Accès restreint / sur demande
NIST (National Institute of Standards) USA Accès restreint / sur demande
NPL (National Physical Laboratory) UK Accès restreint / sur demande

Services NTP des géants du web

Fournisseur Serveurs Particularité
Google Public NTP time.google.com Leap smearing (lissage des secondes intercalaires)
Cloudflare Time time.cloudflare.com NTS (Network Time Security) disponible
Apple time.apple.com Utilise pour les appareils Apple
Meta time.facebook.com Leap smearing

La seconde intercalaire (Leap Second)

La seconde intercalaire est un ajustement d'une seconde applique au temps UTC pour compenser le ralentissement progressif de la rotation terrestre. Contrairement au temps atomique (TAI) qui s'écoule de manière parfaitement régulière, le temps UTC doit rester synchronise avec la rotation de la Terre (temps astronomique).

Pour NTP, la seconde intercalaire est annoncée via le leap indicator dans les paquets NTP. Les serveurs Stratum 1 connectes aux horloges atomiques reçoivent cette information et la propagent a leurs clients. Le daemon ntpd gère automatiquement l'insertion de la seconde supplémentaire.

Le projet pool.ntp.org

Le NTP Pool Project est une initiative collaborative qui regroupe des milliers de serveurs NTP volontaires a travers le monde. Les adresses 0.pool.ntp.org a 3.pool.ntp.org (ou leurs variantes régionales comme fr.pool.ntp.org) redirigent automatiquement vers des serveurs proches et disponibles.

RDEM Systems contribue activement au pool NTP français avec 12 serveurs Stratum 2. Vous pouvez consulter notre score de fiabilité sur notre page officielle NTP Pool, ainsi que le scoreboard live de ce Stratum 1 spécifique : ntppool.org/scores/82.65.124.136.

Notre configuration en détail

Matériel utilise

  • Raspberry Pi 3 Model B Rev 1.2 (1 Go RAM) dans un boîtier avec dissipateur
  • Module GPS USB PZSMOCN (puce MediaTek MTK-3301) avec antenne externe et sortie PPS
  • Connexion Ethernet (pas de WiFi pour minimiser la latence)
  • Alimentation stabilisée pour éviter les micro-coupures

Logiciels

  • Raspberry Pi OS (Debian-based)
  • gpsd - Daemon de gestion du GPS
  • ntpd - Daemon NTP (version référence)
  • pps-tools - Outils pour le signal PPS

Architecture de notre infrastructure

                    [Satellites GPS]
                          |
                    [Signal PPS + NMEA]
                          |
                    [Raspberry Pi - Stratum 1]
                    ntp-0-hq.rdem-systems.com
                          |
            +-------------+-------------+
            |             |             |
    [Stratum 2]    [Stratum 2]    [Stratum 2]
    ntp1.rdem      ntp2.rdem      ntp3.rdem ...
            |             |             |
            +-------------+-------------+
                          |
                    [Pool NTP FR]
                          |
                    [Vos serveurs]

🔍 Vous pouvez valider la synchronisation de votre infrastructure avec check-ntp.net (diagnostic en temps réel depuis un réseau tiers)

Déploiements réels

📎 Cas client : 4,2 s de dérive corrigée en production — audit de synchronisation NTP réalisé par nos équipes, méthode et résultats détaillés.

Outils NTP gratuits

Trois outils indépendants pour diagnostiquer votre synchronisation de temps :