Seconde Intercalaire NTP : leap second, smear et retour d'expérience

Par Richard DEMONGEOT | 20 avril 2026 | Temps de lecture : 12 min

La seconde intercalaire (en anglais leap second) est l'un des mécanismes les plus subtils et les plus redoutés du protocole NTP. Depuis 1972, elle compense le lent ralentissement de la rotation terrestre pour maintenir UTC en phase avec le temps astronomique UT1. Pour un opérateur de serveurs NTP, chaque événement a été une répétition de crise : 24 heures d'alerte, un plan de bascule, et des logs à scruter pendant les 48 heures suivantes.

Cette page couvre ce que tout opérateur ou administrateur NTP doit comprendre : l'origine du mécanisme, l'historique des 27 secondes intercalaires ajoutées depuis 1972, la façon dont NTP les signale, les deux approches concurrentes (step et smear), le comportement de chrony et ntpd, et l'échéance d'abolition votée en 2022.

Sommaire

1. Pourquoi la Terre nous oblige à ajouter des secondes

UTC (Temps Universel Coordonné) est défini depuis 1972 comme le compte des secondes SI émises par un ensemble d'horloges atomiques. UT1, lui, est le temps défini par la rotation réelle de la Terre, mesuré par interférométrie VLBI sur des quasars lointains. Les deux divergent parce que la Terre ralentit : frottement des marées, redistribution des masses internes, interactions noyau-manteau. Sur le long terme, UT1 prend du retard sur UTC d'environ 1 à 2 ms par jour en moyenne — une seconde accumulée tous les 12 à 24 mois.

L'IERS (International Earth Rotation Service) surveille cette dérive et, quand elle approche 0,9 seconde, publie un « Bulletin C » annonçant une seconde intercalaire six mois à l'avance. L'événement prend place au choix le 30 juin ou le 31 décembre à 23:59:59 UTC : la seconde 23:59:60 est insérée (très rare cas d'une minute à 61 secondes), puis 00:00:00 du jour suivant.

En pratique depuis 2020. La rotation terrestre s'est accélérée sur les dernières années au point que certains modèles prédisent une seconde intercalaire négative (retirer une seconde) dans les années à venir — un événement sans précédent. L'IERS n'a pour l'instant jamais eu à en déclencher une, mais les implémentations NTP doivent être prêtes : le Leap Indicator 10 signale ce cas.

2. Les 27 secondes intercalaires depuis 1972

De 1972 à fin 2016, 27 secondes intercalaires ont été ajoutées. Toutes positives. Les cinq dernières, qui sont aussi celles vécues par l'infrastructure RDEM :

Date UTCJour local FranceNombre total depuis 1972
2005-12-31 23:59:601er janvier 2006 à 00:59:6023
2008-12-31 23:59:601er janvier 2009 à 00:59:6024
2012-06-30 23:59:601er juillet 2012 à 01:59:6025
2015-06-30 23:59:601er juillet 2015 à 01:59:6026
2016-12-31 23:59:601er janvier 2017 à 00:59:6027

Depuis le 1er janvier 2017, la différence TAI − UTC est restée fixée à 37 secondes. Aucune seconde intercalaire n'a été ajoutée sur les huit années suivantes — un record historique dû à l'accélération inattendue de la rotation terrestre.

3. Comment NTP signale une seconde intercalaire (Leap Indicator)

Le protocole NTP (RFC 5905) réserve les deux bits de poids fort du premier octet du paquet au champ Leap Indicator (LI). Quatre valeurs possibles :

Valeur LISignificationUsage
00Aucun avertissementFonctionnement normal (99,9 % du temps)
01La dernière minute du jour aura 61 secondesAnnoncé 24 h avant l'ajout d'une seconde
10La dernière minute du jour aura 59 secondesAnnoncé pour un retrait (jamais utilisé à ce jour)
11Horloge non synchronisée (alarme)Équivalent de stratum 16

Quand un serveur Stratum 1 reçoit l'information (via son refclock GPS/DCF77, ou par fichier leap-seconds.list signé par le NIST), il commence à propager LI=01 dans ses réponses 24 heures avant l'échéance. Les clients chrony et ntpd lisent ce bit à chaque poll, et planifient l'insertion locale.

4. Step vs smear : deux écoles

Quand 23:59:60 arrive, il faut choisir ce qui se passe côté système :

4.1 Approche step (insertion d'une seconde 23:59:60)

Conforme à la norme : le noyau insère une vraie minute à 61 secondes. C'est le comportement par défaut de chrony et ntpd avec leapsecmode=system/step sur Linux. Avantage : l'horloge reste strictement alignée sur UTC. Inconvénient : deux timestamps identiques consécutifs, et toute application qui fait timespec.tv_sec - previous peut obtenir 0, ce qui casse les timers à base de secondes.

4.2 Approche smear (étalement)

Popularisée par Google en 2011 : plutôt qu'un saut d'une seconde, on ralentit l'horloge de quelques ppm sur une fenêtre de 20 à 24 heures autour de l'événement. Chaque tick dure 1.000011574 s au lieu de 1.0 s exactement — la seconde est absorbée progressivement. Avantage : aucun timestamp non monotone, aucun timer cassé. Inconvénient : pendant la fenêtre de smear, l'horloge est jusqu'à 0,5 seconde décalée d'UTC, ce qui peut être visible depuis une source externe non-smearée.

Piège opérationnel. Un client qui interroge un serveur smearé et un serveur step-mode pendant la fenêtre de 24 h verra un false ticker — les deux sources divergent de centaines de millisecondes. Règle : homogénéisez la politique leap-second sur tous les serveurs configurés dans un même chrony.conf.

4.3 Qui fait quoi en 2026

OpérateurApprocheFenêtre
Google (time.google.com)Smear24 h autour de minuit UTC
AWS (time.aws.com)Smear24 h autour de minuit UTC
Facebook / MetaSmear (linéaire 18 h)18 h centré sur l'événement
Cloudflare (time.cloudflare.com)Step (conforme)
NIST / time.nist.govStep
NTP Pool (pool.ntp.org)Variable selon l'opérateur
RDEM Systems (ntp.rdem-systems.com)Step (conforme RFC)

5. chrony : leapsecmode, smoothtime, leapsectz

chrony 4.x propose quatre modes, configurables via leapsecmode dans chrony.conf :

# /etc/chrony/chrony.conf

# Mode recommandé pour un serveur Stratum 2+ en production :
# déléguer au noyau Linux l'insertion de la seconde
leapsecmode system

# Alternative 1 : step d'une seconde appliqué immédiatement
# leapsecmode step

# Alternative 2 : correction progressive par slew (taux par défaut 400 ppm)
# leapsecmode slew

# Alternative 3 : smearing, avec smoothtime
# leapsecmode ignore
# smoothtime 400 0.001 leaponly

# Pour tester sans attendre le prochain événement : fichier de liste leap
leapsectz right/UTC
leapseclist /usr/share/zoneinfo/leap-seconds.list

La directive smoothtime 400 0.001 leaponly active un smear limité aux événements leap. L'offset maximal appliqué est 0,5 s, étalé sur ~1000 secondes, ce qui reste compatible avec la plupart des applications sensibles aux sauts.

6. ntpd : leapfile, tinker step, kernel mode

ntpd (référence ou ntpsec) lit le fichier leap-seconds.list maintenu par le NIST :

# /etc/ntp.conf

# Fichier de référence signé, mis à jour par l'IERS/NIST
leapfile /usr/share/zoneinfo/leap-seconds.list

# Comportement par défaut : step d'une seconde conforme
# Désactiver si besoin avec :
# tinker step 0

# Pour bénéficier du mode noyau Linux sur sync :
# enable kernel

Le fichier leap-seconds.list doit être mis à jour régulièrement — il expire 6 mois après son émission. Automatisez via cron :

0 3 * * 1 wget -q -O /usr/share/zoneinfo/leap-seconds.list https://data.iana.org/time-zones/tzdb-leap-seconds.list

7. Ce que RDEM a observé depuis 2005

Retour d'expérience opérateur. Notre infrastructure NTP tourne en continu depuis 2005 et a traversé cinq secondes intercalaires (2005, 2008, 2012, 2015, 2016). Les observations qui reviennent à chaque événement, peu importe l'année :

L'événement 2016-12-31 est celui qui nous a le plus marqué : c'est le dernier à date et celui où les outils grand public (smartphones, box internet) avaient le mieux convergé vers un comportement correct. L'écosystème est plus mûr qu'en 2005 ou 2008, où nous devions encore expliquer à des clients ce qu'était LI=01 dans leurs logs.

Un événement leap exposant vos clients à de faux tickers ? Notre site frère documente la détection et la mitigation du false ticker. Pour observer l'impact en direct sur l'offset pendant la transition, l'outil live de ntp-tester.eu affiche les valeurs seconde par seconde. Pour les entités soumises à NIS 2 — intégrité temporelle auditée, chaque événement leap doit être tracé dans le journal de sync comme preuve de continuité.

8. Préparer le prochain événement

Même sans annonce à l'horizon, maintenir la capacité à gérer un leap second fait partie de l'hygiène NTP :

  1. Vérifier le fichier leap-seconds.list sur chaque serveur : head /usr/share/zoneinfo/leap-seconds.list doit montrer une date d'expiration dans le futur.
  2. Tester le mode leap sur un serveur de staging en injectant manuellement un fichier leap avec une date proche : les logs doivent montrer l'anticipation correcte.
  3. Documenter la politique (step ou smear) pour chaque segment d'infrastructure, et s'assurer qu'un même client ne mélange pas les deux en amont.
  4. Auditer les applications critiques : toute logique qui fait if (new_ts == old_ts) ou assert ts_diff > 0 doit être revue.
  5. Planifier une fenêtre d'observation autour de la date annoncée si un événement est déclenché. La probabilité actuelle d'un leap second d'ici 2035 reste faible mais non nulle.

9. L'abolition de 2035 : quoi anticiper

En novembre 2022, la 27e Conférence Générale des Poids et Mesures (CGPM) a voté la résolution qui abolit la seconde intercalaire d'ici 2035. Le texte prévoit :

Pour NTP, cela ne change rien au protocole — le champ Leap Indicator reste en place pour les archives et les systèmes legacy. Simplement, son activation deviendra exceptionnelle puis nulle. Les implémentations chrony et ntpd continueront à supporter le mécanisme pour des raisons de compatibilité pendant plusieurs décennies.

Pour aller plus loin. Si vous opérez un serveur sur le NTP Pool, consultez notre guide pour opérer un serveur pool qui couvre les bonnes pratiques spécifiques aux opérateurs volontaires. Pour le socle architectural, voir notre infrastructure NTP depuis 2005 et notre serveur Stratum 1 Raspberry Pi + GPS.

Ressources et références