Synchronisation des créneaux
Le type de scénario slot-timing répond à trois questions pour une horloge qui dérive librement entre deux synchronisations et doit maintenir le trafic à l'intérieur d'un créneau indexé sur le temps : un créneau de routage, de tâche ou de contact dont la marge de garde est la plus grande erreur de temps absolue, de part et d'autre, pour laquelle le créneau fonctionne encore.
- Quand la marge de garde est-elle franchie ? Les secondes écoulées depuis la dernière correction jusqu'à ce que l'erreur de temps prédite atteigne la marge de garde, avec chaque terme contributeur détaillé et le terme dominant nommé.
- Combien de temps reste-t-il maintenant ? Le même chiffre moins le temps déjà écoulé depuis la correction.
- À quelle fréquence l'horloge doit-elle prendre une correction ? Le plus grand intervalle entre corrections qui maintient l'erreur dans la marge de garde, net du délai avant qu'une correction prenne effet.
Une section spoofing facultative ajoute le niveau de protection de la synchronisation temporelle (TPL) pour un récepteur en orbite ; voir Leurrage d'un récepteur en orbite.
Exécutez l'exemple fourni avec kshana example slot-timing-ocxo-leo.
Abréviations : GNSS, système mondial de navigation par satellite ; TCXO, oscillateur à quartz compensé en température ; OCXO, oscillateur à quartz thermostaté ; RAFS, étalon de fréquence atomique au rubidium ; CSAC, horloge atomique à l'échelle d'une puce ; USO, oscillateur ultra-stable ; DSAC, horloge atomique pour l'espace lointain ; ADEV, écart-type d'Allan ; FM, modulation de fréquence (ici, le bruit sur la fréquence de l'horloge) ; PM, modulation de phase (le bruit sur sa phase) ; IEEE, Institute of Electrical and Electronics Engineers ; ITU-T, secteur de la normalisation des télécommunications de l'Union internationale des télécommunications ; TIE, erreur d'intervalle de temps ; MTIE, erreur maximale d'intervalle de temps ; TDEV, écart de temps ; max|TE|, erreur de temps absolue maximale ; CUSUM, détecteur de changement par sommes cumulées ; TPL, niveau de protection de la synchronisation temporelle ; LEO, orbite terrestre basse ; NIST SP, publication spéciale du National Institute of Standards and Technology ; UFFC, Ultrasonics, Ferroelectrics, and Frequency Control (une revue de l'IEEE Transactions) ; IGS, International GNSS Service ; GPS, Global Positioning System ; Block IIF, les satellites GPS Block II Follow-on ; SHA-256, l'algorithme de hachage sécurisé (Secure Hash Algorithm) à 256 bits ; PPS, impulsion par seconde.
Le modèle d'erreur#
L'erreur de temps prédite après une marche libre de t secondes depuis une correction est
E(t) = k·√(σ₀² + (σ_f·t)² + σ_x²(t)) + (|y₀| + |c_T·ΔT|)·t + ½·|D|·t²
σ_x²(t) = σ_PM² + q_wf·t + h_F·t² + q_rw·t³/3 + q_rr·t⁵/20
| Symbole | Signification |
|---|---|
k |
facteur de couverture (3 correspond à environ 99,7 % d'une erreur gaussienne) |
σ₀ |
erreur de temps à un sigma de la correction |
σ_f |
erreur à un sigma de la fréquence connue lors de la correction ; une fréquence estimée sur une fenêtre W porte environ σ_y(W) |
σ_PM² |
variance du bruit de phase blanc : gigue de l'erreur de temps, un plancher constant |
q_wf, q_rw, q_rr |
densités de FM blanche, de marche aléatoire et de course aléatoire (les termes de van Loan de holdover::coast_phase_variance) |
h_F |
plancher de FM de scintillation de la variance d'Allan |
y₀ |
écart fractionnaire de fréquence résiduel laissé après la correction |
c_T·ΔT |
écart de fréquence dû à une variation de température ΔT par le coefficient de température c_T |
D |
taux de vieillissement linéaire |
Chaque terme de FM est égal à t²·σ_y²(t) pour son propre type de bruit, avec σ_y²(τ) = 3σ_PM²/τ² + q_wf/τ + h_F + q_rw·τ/3 + q_rr·τ³/20 (Zucca et Tavella, IEEE Trans. UFFC 52(2), 2005). Pour la FM blanche, la marche aléatoire et la course aléatoire, cette relation est exacte. Pour la FM de scintillation, c'est l'estimation conventionnelle de l'erreur de prédiction du temps (Riley, NIST SP 1065) : la FM de scintillation n'a pas de forme fermée sans coupure basse fréquence. Les écarts de fréquence s'ajoutent en valeur absolue parce que leurs signes sont inconnus ; la partie déterministe est donc un pire cas. Chaque terme est non négatif et non décroissant en t, si bien que E(t) = guard a une seule racine, trouvée par encadrement et bissection.
D'où vient l'horloge#
| Source | Clé du scénario | Ce que c'est | Niveau |
|---|---|---|---|
| Valeur par défaut de la classe | oscillator.class |
un ADEV à une seconde cité et un plancher de bruit rouge synthétisé deux et quatre décades en dessous | MODELLED : la réponse pour une horloge stable est gouvernée par le plancher supposé |
| Préréglage de fiche technique | oscillator.preset |
les préréglages de synchronisation des télécommunications (ocxo, rubidium, caesium, csac), chacun étant une fiche technique Microchip nommée |
MODELLED : une enveloppe des maxima des fiches techniques |
| Fiche technique en ligne | oscillator.datasheet |
la propre table d'ADEV du client, son vieillissement et son coefficient de température | MODELLED : une enveloppe des maxima donnés |
| Enregistrement mesuré | oscillator.record |
un enregistrement de phase ; son ADEV avec recouvrement est ajusté par les moindres carrés pondérés | l'inversion est VALIDATED sur un enregistrement réel mis de côté (ci-dessous) |
Les trois classes ajoutées dans la 0.28.0 citent chacune une fiche technique publique :
| Classe | ADEV à une seconde | Source |
|---|---|---|
tcxo |
2.0e-10 | EndRun Technologies, Disciplined Oscillator Options, colonne TCXO de base |
ocxo |
5e-12 | Fiche technique Microchip OX-208, Rev 12-1-2021 |
rafs |
3e-11 | Fiche technique Microchip 8040C Rubidium Frequency Standard, DS00003047A |
Les lignes d'EndRun aux longs temps de moyennage convergent dans l'ensemble de ce tableau (4e-13 pour tous les oscillateurs sauf le TCXO, 8e-13, à 10 000 s, et 6e-14 pour tous à 100 000 s), ce qui laisse penser qu'elles décrivent le produit asservi plutôt que l'oscillateur en marche libre ; elles ne sont donc pas utilisées.
L'ajustement de l'enregistrement est pondéré. Une estimation de variance d'Allan avec edf degrés de liberté équivalents a une variance d'environ 2σ⁴/edf ; chaque point entre donc avec le résidu √(edf/2)·(model/σ² − 1). Un ajustement non pondéré laissait les courts temps de moyennage décider des termes des longs temps de moyennage : sur un enregistrement de test à FM blanche, il produisait un plancher de scintillation parasite qui raccourcissait de 30 % un franchissement à 2 000 s. Une fiche technique ou un enregistrement ne justifie que des temps de moyennage jusqu'à son point le plus long ; un franchissement au-delà est signalé par extrapolated.
Validation : l'inversion sur une horloge réelle mise de côté#
tests/slot_timing_cs5071a_holdout.rs utilise l'enregistrement de 556 990 échantillons d'un étalon au césium 5071A mesuré par rapport à un maser à hydrogène (A. Wallin, distribué avec allantools ; le même enregistrement que celui qu'utilise la référence indépendante de l'estimateur tests/cs5071a_reference.rs). Avec le maser pour référence, l'enregistrement est une marche libre de 6,4 jours.
- Ajuster le modèle de bruit sur le premier tiers seulement de l'enregistrement.
- Prédire, à partir de ce modèle, la durée de dérive libre à laquelle l'erreur de temps à un sigma atteint 0,5, 0,75, 1, 1,5, 2 et 2,5 ns.
- Sur les deux autres tiers, dériver librement à partir d'un point de synchronisation toutes les 997 s, avec la fréquence estimée sur le tiers précédent, et mesurer où l'erreur quadratique moyenne de dérive libre atteint chaque seuil.
Le seuil de réussite, fixé avant la première exécution du test, est que chaque dépassement prédit se situe à moins d'un facteur 1,5 du dépassement mesuré. Un témoin, l'ADEV à une seconde lue comme une FM blanche, doit échouer à ce seuil, afin que le seuil sache distinguer un bon modèle d'un mauvais. Le test affiche son tableau ; une mutation qui divise par deux le niveau de FM blanche le fait échouer. L'enregistrement brut est une donnée tierce ignorée par git : scripts/fetch_cs5071a.sh le récupère, et le workflow realdata-clock exécute le test avec KSHANA_REQUIRE_REALDATA=1, de sorte qu'un fichier manquant fait échouer le test au lieu de le faire sauter.
Ce que cela valide : le chemin ajustement puis inversion, sur un étalon atomique dominé par la FM blanche, pour des dérives libres allant jusqu'à environ 50 000 s. Ce que cela ne valide pas : les sources de fiche technique et de classe, les termes déterministes, et un oscillateur à quartz (section suivante).
La même prédiction sur un véritable oscillateur à quartz : prudente, non validée#
tests/slot_timing_ocxo_holdout.rs utilise un OCXO mesuré : 19 982 lectures de fréquence à une seconde de l'oscillateur de 10 MHz d'un analyseur d'impédance HP, face à un maser à hydrogène (A. Wallin, 2015, distribué avec allantools ; scripts/fetch_ocxo.sh). Le modèle de bruit et une dérive linéaire sont ajustés sur le premier tiers ; chaque dérive libre sur les deux autres tiers part d'une fréquence estimée sur les 100 s précédentes, et le modèle porte l'incertitude de cette estimation (fix_frequency_sigma, l'écart-type d'Allan propre au modèle à 100 s).
| Ajusté sur | Dépassement prédit ÷ mesuré, de 0,2 à 10 ns | Lecture |
|---|---|---|
| le premier tiers (mis de côté) | 0,59 à 0,70 | prudent : jamais plus tardif que le mesuré, le plus souvent hors du seuil de 1,5 |
| le segment d'évaluation lui-même (diagnostic) | 0,98 à 1,17 | l'inversion est correcte ; l'écart sur le segment mis de côté vient de l'évolution de l'oscillateur |
Le plancher de bruit de l'oscillateur a été divisé par deux pendant l'enregistrement : l'écart-type d'Allan du premier tiers se stabilise près de 7.5e-12, celui du reste près de 3.5e-12. Un modèle ajusté tôt surestime le bruit, ce qui va dans le sens sûr. Le cas du quartz n'est donc pas validé et reste MODELLED. Pour un quartz, ajustez sur un enregistrement stabilisé et réajustez à mesure que la pièce vieillit.
Comment le protocole a été choisi, précisé parce qu'il n'était pas en aveugle. Une première exécution exploratoire a réutilisé le protocole du césium (fréquence issue du tiers précédent, sans terme de fréquence) et a prédit des dépassements 1,4 à 2,5 fois plus tardifs que les mesurés : optimiste, le sens dangereux. La fréquence d'un quartz fluctue, donc une fréquence estimée plusieurs heures avant le point de calage est périmée, et le modèle n'avait aucun terme pour la précision avec laquelle la fréquence est connue au point de calage. Le terme fix_frequency_sigma a été ajouté pour cette raison et ce protocole fixé avant l'écriture du test ; le seuil de réussite n'a pas été déplacé. Le test vérifie aussi que, sans ce terme, la prédiction sur l'échantillon d'ajustement est optimiste à chaque seuil, de sorte que le terme est déterminant.
La même prédiction sur des horloges atomiques en orbite : 8 sur 10, non validée#
tests/slot_timing_igs_holdout.rs utilise les horloges combinées finales de l'IGS à 30 s pendant 14 jours (du 17 au 30 août 2025 ; scripts/fetch_igs_clocks.sh, chaque fichier épinglé par SHA-256) : l'horloge de chaque satellite GPS Block IIF face à l'échelle de temps de l'IGS. Le protocole (ensemble de satellites, règle sur les lacunes, fenêtre d'ajustement, une synchronisation toutes les 3 570 s avec la fréquence de l'heure précédente, seuils de 1 à 20 ns, seuil de 1,5, et règle selon laquelle la classe ne réussit que si chaque satellite réussit) a été consigné avant le téléchargement de toute donnée.
| Satellites | Dépassement prédit ÷ mesuré | Verdict |
|---|---|---|
| G06, G08, G09, G10, G24, G26, G27, G32 | 0,76 à 1,46 | dans le seuil |
| G25 | 1,51 à 1,99 | optimiste |
| G30 | 1,20 à 1,61 | optimiste |
| G03 | non évalué | exclu par la règle sur les lacunes (un jour manquant) |
Huit sur dix constituent un élément de preuve utile, mais deux satellites sont prédits comme tenant plus longtemps qu'ils ne l'ont fait, ce qui est le sens dangereux, et le protocole exige que chaque satellite réussisse. Le cas orbital reste donc MODELLED. Les satellites Block IIF embarquent à la fois des étalons au rubidium et au césium et les fichiers de l'IGS n'indiquent pas lequel est actif ; le résultat est donc énoncé pour les satellites, non pour un type d'horloge. La raison pour laquelle G25 et G30 diffèrent n'a pas été étudiée.
Un bench pour une pièce représentative d'un vol (défini, non réalisé)#
L'enregistrement public d'OCXO dure 5,5 heures, provient d'un seul instrument de laboratoire, avec un oscillateur encore en phase de stabilisation. Ce qui validerait le cas du quartz serait une marche libre mesurée plus longue d'un OCXO ou d'un CSAC représentatif d'un vol, face à une référence :
- un compteur d'intervalles de temps comparant le 1 PPS de l'oscillateur à une référence asservie au GNSS ou à un maser, pendant au moins 10 jours à un échantillon par seconde, avec la température consignée ;
- le même protocole avec jeu mis de côté : ajuster sur le premier tiers, prédire les dépassements, mesurer sur le reste, avec le même seuil et le même témoin ;
- l'enregistrement et son empreinte publiés à côté du test, afin que la ligne soit reproductible.
Cela dépend de l'accès à du matériel de référence et n'est pas promis.
Selon quelle métrique de dérive faut-il accepter un créneau ?#
Les normes de synchronisation proposent trois familles de métriques. Pour un créneau indexé sur le temps, une seule mesure ce qui fait échouer le créneau.
- MTIE (ITU-T G.810) est la plus grande amplitude crête à crête de TIE dans une fenêtre de longueur donnée. Elle est aveugle à un décalage constant : une horloge décalée de 1 µs mais parfaitement stable a un MTIE proche de zéro et manque chaque créneau. Elle mesure de combien l'erreur change, non où elle se trouve.
- TDEV (ITU-T G.810) est construit à partir des différences secondes de la phase moyennée. Il supprime un décalage constant et une erreur de fréquence constante, qui sont précisément les termes qui dominent une dérive libre. Il caractérise le type de bruit ; ce n'est pas une métrique d'acceptation pour la synchronisation absolue.
- max|TE| (ITU-T G.8260 ; la métrique de budget de G.8271) est la plus grande erreur de temps absolue par rapport à l'échelle de temps de référence. Elle se compare directement à une garde.
Conclusion. Acceptez un créneau selon max|TE| par rapport à l'échelle de temps de référence du réseau, évalué comme une enveloppe prédite depuis le dernier point de calage à un facteur de couverture indiqué. C'est ce qu'est E(t) : comme chaque terme croît avec t, le maximum sur une dérive libre de durée T est E(T). MTIE et TDEV restent utiles comme diagnostics : TDEV pour identifier quel terme de bruit attaquer, MTIE(L) pour borner de combien l'erreur se déplace pendant un créneau de durée L.
Deux affinements qu'implique le choix de métrique :
- La garde s'applique à l'erreur relative entre deux nœuds. Si l'émetteur et le récepteur dérivent tous deux de façon indépendante, leurs erreurs stochastiques s'ajoutent en quadrature et leurs erreurs déterministes s'ajoutent en valeur absolue. Lorsque la part stochastique domine, on peut attribuer
guard/√2à chaque nœud ; lorsque le vieillissement ou la température domine,guard/2. - Le facteur de couverture est un choix de conception, non une propriété de l'horloge.
k = 3borne environ 99,7 % des erreurs gaussiennes à un instant donné, et non sur tous les créneaux d'une journée ; un plan d'acheminement comportant de nombreux créneaux par jour a besoin du risque par créneau qu'il peut tolérer.
Leurrage d'un récepteur en orbite#
La section spoofing évalue orbital_timing::orbital_timing pour la même horloge :
- Géométrie. Un leurre au sol n'atteint un satellite en orbite basse que tant que le satellite est au-dessus de son horizon : à 550 km, au plus environ douze minutes par passage au zénith. Un leurre qui monte en rampe au taux
ρpeut donc tirer l'horloge d'au plusρfois cette fenêtre, ou fois l'intervalle jusqu'au prochain contrôle indépendant s'il est plus court (ramp_limited_pull_ns). - Dynamique. Un décalage de temps en mode commun déplace chaque pseudo-distance de la même quantité et est absorbé dans le biais d'horloge, non dans la position ; un contrôle de position par propagateur d'orbite ne compte donc pas comme un contre-contrôle de synchronisation temporelle.
- Contre-contrôles. Un satellite dispose rarement d'un second récepteur de synchronisation temporelle indépendant. Il a la dérive libre de sa propre horloge (le moniteur de
tpl), un transfert de temps bidirectionnel avec une station au sol pendant les contacts, et des comparaisons de temps par liaisons inter-satellites. Une liaison croisée n'est indépendante d'un leurre au sol unique que si le voisin se trouve hors de l'empreinte de ce leurre au même instant, ce que le rapport vérifie à partir du nombre de satellites par plan. - Borne conditionnelle. Le plancher du moniteur plus la dérive libre de l'horloge pendant la latence de détection du CUSUM, se réduisant exactement à
tpl::timing_protection_level_nslorsque l'horloge n'a aucun terme de scintillement, de bruit blanc de phase ou de marche aléatoire. Comme cette borne, elle ne vaut que sous réserve de détection.
Tout cela est MODELLED : une Terre sphérique et sans rotation, un passage au zénith, un leurre terrestre unique avec un taux de rampe maximal indiqué. La direction d'arrivée des signaux sur une antenne pointée au zénith est un véritable contre-contrôle qui requiert un diagramme d'antenne et n'est pas modélisé. DECEIVED-TIME.md explique pourquoi un message de commande signé ne supprime pas cette menace.
Non modélisé#
Les sauts de fréquence, les effets du rayonnement et les décalages de fréquence relativistes ; un modèle thermique (la variation de température est un échelon au point de calage) ; le protocole de synchronisation lui-même (un point de calage ramène l'erreur à fix_sigma_ns).