Annexes : schémas, glossaire, ressources#

Schéma d’architecture complet#

───────────────────────────── ESPACE PHYSIQUE ──────────────────────────────

                ┌───────────────────────────────────────────────────────┐
                │  Constellations GNSS (GPS, Galileo, GLONASS, Beidou)  │
                └───────────────────────────────────────────────────────┘
                                            │
                                            ▼ ondes électromagnétiques
                                  ┌──────────────────┐
                                  │  Antenne active  │
                                  └──────────────────┘
                                            │
                                            ▼ coax 50 Ω (~5 ns/m)
                              ┌───────────────────────────┐
                              │      Récepteur GNSS       │
                              │  NMEA/UBX + PPS hardware  │
                              └───────────────────────────┘

─────────────────────────────── RASPBERRY PI ───────────────────────────────

                                            │
                  ┌─────────────────────────┴─────────────────────────┐
                  │ UART                                          PPS │
                  ▼                                                   ▼
           ┌─────────────┐                                  ┌───────────────────┐
           │  /dev/gps0  │                                  │     pps-gpio      │
           │   (NMEA)    │                                  │  (module kernel)  │
           └─────────────┘                                  └───────────────────┘
                  │                                                   │
                    ASCII                               front montant
                  ▼                                                   ▼
      ┌──────────────────────┐                                 ┌─────────────┐
      │         gpsd         │                                 │  IRQ pps0   │
      │  (Core 0, Nice -10)  │                                 │  (FIFO 99)  │
      └──────────────────────┘                                 └─────────────┘
                  │                                                   │
                  └─────────────────────────┬─────────────────────────┘
                                            ▼
                      ┌──────────────────────────────────────────┐
                      │        chronyd  (Core 1, FIFO 98)        │
                      │    filtre médian, PLL, ratelimit, NTS    │
                      └──────────────────────────────────────────┘
                                            │
                            ┌───────────────┴───────────────┐
                            ▼                               ▼
                 ┌─────────────────────┐         ┌─────────────────────┐
                 │   CLOCK_REALTIME    │────────►│       phc2sys       │
                 │  (horloge système)  │         │  (Core 1, FIFO 90)  │
                 └─────────────────────┘         └─────────────────────┘
                            │                               │
                            │                               ▼
                            │                        ┌─────────────┐
                            │                        │  /dev/ptp0  │
                            │                        │    (PHC)    │
                            │                        └─────────────┘
                            │                               │
                            └───────────────┬───────────────┘
                                            ▼
                             ┌────────────────────────────┐
                             │      NTP/NTS clients       │  interface réseau (Core 2, horodatage matériel)
                             └────────────────────────────┘

gpsd (CPUAffinity=0, Nice=-10) et chronyd (CPUAffinity=1, ordonnancement FIFO priorité 98) sont chacun explicitement épinglés, respectivement aux chapitres Acquisition GNSS/PPS et Chrony. Voir le schéma d’attribution des cœurs et interruptions au chapitre Firmware pour la vue d’ensemble des 4 cœurs.

Glossaire#

TermeDéfinition
StratumNiveau hiérarchique NTP : distance (en sauts) par rapport à une référence physique. Stratum 1 = directement relié à une horloge de référence.
PPSPulse Per Second : impulsion électrique précise émise chaque seconde par une référence de temps (récepteur GNSS, horloge atomique).
PHCPTP Hardware Clock : horloge matérielle embarquée dans une carte réseau, utilisée pour l’horodatage matériel des paquets.
NTSNetwork Time Security (RFC 8915) : extension chiffrée et authentifiée du protocole NTP.
PREEMPT_RTPatch noyau Linux rendant les sections critiques du kernel préemptibles, pour un “quasi” temps réel.
RMS offsetÉcart type de l’erreur de synchronisation mesurée par chrony, métrique de précision.
SkewDérive de fréquence de l’oscillateur local, en parties par million (ppm).
GNSSGlobal Navigation Satellite System : terme générique couvrant GPS, Galileo, GLONASS, BeiDou.
DOPDilution Of Precision : mesure de la qualité géométrique de la constellation de satellites visibles.
conntrackSous-système Linux de suivi des connexions réseau, désactivable pour un protocole sans état comme NTP.
tmpfsSystème de fichiers vivant entièrement en RAM, volatile au redémarrage.

Ressources et références#

RFC et spécifications normatives#

  • RFC 5905, Network Time Protocol Version 4: Protocol and Algorithms Specification, D. Mills et al., 2010.
  • RFC 8915, Network Time Security for the Network Time Protocol, D. Franke, D. Sibold et al., 2020.
  • RFC 8446, The Transport Layer Security (TLS) Protocol Version 1.3, 2018.
  • IS-GPS-200, GPS Interface Specification (format des trames de navigation L1 C/A).
  • IEEE 1588, Precision Time Protocol (standardise le PHC et l’horodatage matériel).

Ouvrages et publications#

  • D. Mills, Computer Network Time Synchronization: The Network Time Protocol on Earth and in Space, 2006.
  • P. Misra, P. Enge, Global Positioning System: Signals, Measurements, and Performance, 2011.
  • K. Marzullo, thèse de doctorat sur la tolérance aux fautes distribuée (algorithme de sélection de sources), Stanford, 1984.
  • M. Lichvar (mainteneur de chrony), présentations Linux.conf.au.

Logiciels utilisés#

Ce que ce guide ne couvre pas#

Pour rester centré sur l’objectif “Stratum 1 fonctionnel”, ce guide exclut volontairement :

  • Le bus I2C utilisateur et les HAT additionnels (écrans, capteurs)
  • Tout dispositif d’affichage physique externe
  • Le déploiement multi-serveurs ou la redondance géographique
  • L’intégration à des systèmes de supervision centralisés externes (Prometheus, Grafana…) : Munin, plus simple à auto-héberger, a été retenu ici
  • Les approfondissements de sécurité et de durcissement au-delà de ce qui est couvert : contrôle d’accès obligatoire (SELinux/AppArmor), surveillance d’intégrité de fichiers (AIDE), envoi centralisé des journaux vers un collecteur distant, authentification SSH à plusieurs facteurs, pistes déjà signalées au fil des chapitres (Lynis, Système de fichiers) sans être mises en œuvre ici
  • Les approfondissements de précision au-delà du pseudo-TCXO logiciel : passage à un oscillateur matériel compensé ou thermostaté (TCXO, OCXO), voire une référence atomique (rubidium, CSAC), pour gagner en tenue de fréquence et surtout en holdover pendant une panne GNSS prolongée (chapitre Du quartz nu au pseudo-TCXO)
  • Le protocole PTP complet (Precision Time Protocol, IEEE 1588) : ce guide exploite le PHC en interne pour l’horodatage matériel des paquets NTP (chapitre PHC/phc2sys), mais ne déploie pas de démon PTP (ptp4l) pour distribuer l’heure sur un réseau local, un cas d’usage différent (finance, broadcast, télécoms), avec ses propres clients et ses propres contraintes

Ces sujets restent des extensions naturelles une fois la base opérationnelle et validée.