Passa al contenuto principale

Appendice D. Differenze dalle Versioni Precedenti

Questa appendice riassume le differenze tra NTP Versione 3 e le versioni precedenti (Versione 2 e Versione 1). Le modifiche sono state apportate per migliorare accuratezza, stabilità e affidabilità, nonché per chiarire le ambiguità nella specifica. La maggior parte delle modifiche sono raffinamenti e miglioramenti che non influenzano l'interoperabilità con le versioni precedenti.

Modifiche della Versione 3 rispetto alla Versione 2

1. Algoritmo dell'Orologio Locale

L'algoritmo dell'orologio locale è stato completamente riprogettato per migliorare stabilità e accuratezza. Il nuovo algoritmo utilizza un design a loop a aggancio di fase (PLL) con controllo adattivo della larghezza di banda. Le modifiche chiave includono:

  • Compensazione di frequenza migliorata che può tracciare la deriva dell'oscillatore più accuratamente
  • Costante di tempo adattiva che si regola automaticamente in base alle condizioni di rete
  • Logica di soglia passo/slew migliorata per gestire meglio le correzioni ampie
  • Timer watchdog per impedire che dati di offset obsoleti influenzino l'orologio

Il nuovo algoritmo è descritto in dettaglio nella Sezione 5 e nell'Appendice G. Le implementazioni sono fortemente incoraggiate ad adottare il nuovo algoritmo, sebbene il vecchio algoritmo rimanga compatibile.

2. Algoritmo di Combinazione dell'Orologio

È stato aggiunto un nuovo algoritmo opzionale per combinare gli offset da più peer (Appendice F). Questo algoritmo:

  • Utilizza la media ponderata basata sulla distanza di sincronizzazione
  • Migliora l'accuratezza quando sono disponibili più peer
  • Riduce l'impatto di valori anomali e percorsi asimmetrici
  • Si basa su tecniche utilizzate dai laboratori di standard nazionali

L'algoritmo di combinazione dell'orologio è opzionale e non influisce sull'interoperabilità.

3. Raffinamenti del Budget di Errore

Il modo in cui vengono calcolati ritardo, offset e dispersione è stato raffinato:

  • Il calcolo della dispersione ora include tutti i componenti di errore (errore di misurazione, accumulo di skew, dispersione del filtro)
  • Il calcolo del ritardo è semplificato spostando i termini di errore alla dispersione
  • La distanza di sincronizzazione ora tiene correttamente conto di tutte le fonti di errore
  • I limiti di errore possono essere formalmente provati sotto ipotesi dichiarate (vedi Appendice H)

Queste modifiche forniscono una base più rigorosa per le asserzioni di correttezza ma non influenzano significativamente il funzionamento normale.

4. Algoritmo di Selezione dell'Orologio

La procedura di selezione dell'orologio è stata modificata per migliorare l'affidabilità:

  • L'algoritmo di intersezione adottato dal Digital Time Service (DTS) sostituisce il passaggio di ordinamento precedente
  • L'algoritmo di clustering è stato raffinato per gestire meglio più candidati
  • Il rilevamento di falsi cronometristi è stato migliorato utilizzando l'algoritmo di Marzullo
  • La selezione dei sopravvissuti ora considera sia lo strato che la distanza di sincronizzazione

Il nuovo algoritmo è più robusto nel rilevare e rifiutare orologi difettosi mantenendo la compatibilità con le versioni precedenti.

5. Algoritmo del Filtro dell'Orologio

Raffinamenti minori all'algoritmo del filtro dell'orologio:

  • Il calcolo della dispersione del filtro è stato migliorato per rappresentare meglio la varianza del campione
  • La gestione del registro a scorrimento è stata raffinata per prestazioni migliori
  • L'invecchiamento della dispersione ora tiene correttamente conto del tempo trascorso dall'ultimo aggiornamento
  • Il taglio della dispersione massima previene l'overflow numerico

6. Gestione dei Secondi Intercalari

Miglioramenti alla gestione dei secondi intercalari:

  • I bit indicatore di salto ora vengono propagati correttamente attraverso la sottorete di sincronizzazione
  • La procedura dell'orologio locale è stata migliorata per gestire correttamente i minuti di 61 e 59 secondi
  • L'intervallo minimo di passo è stato aggiunto per prevenire cambiamenti di passo prematuri durante gli eventi di salto
  • Le tabelle dei secondi intercalari possono essere aggiornate senza modifiche al codice

7. Gestione dell'Intervallo di Polling

La gestione dell'intervallo di polling è stata raffinata:

  • Polling adattivo basato sulla conformità e stabilità dell'orologio locale
  • Intervalli di polling minimo e massimo ora configurabili
  • Taglio dell'intervallo di polling per la fonte di sincronizzazione selezionata
  • Isteresi per prevenire rapidi cambiamenti dell'intervallo di polling

8. Modifiche alle Variabili di Stato

Diverse variabili di stato sono state aggiunte o modificate:

  • Il contatore peer.valid è stato aggiunto per tracciare i campioni validi
  • Il timestamp peer.update è stato aggiunto per l'invecchiamento della dispersione
  • sys.poll è stato aggiunto per controllare il comportamento di polling a livello di sistema
  • Vari parametri rinominati o riorganizzati per chiarezza

9. Formato del Pacchetto

Il formato del pacchetto rimane identico alla Versione 2, con un'eccezione:

  • L'interpretazione del campo identificatore di riferimento è stata chiarita per gli strati 0 e 1
  • L'interpretazione del campo di precisione è stata raffinata
  • Il campo intervallo di polling ora viene interpretato coerentemente come potenza di due

10. Autenticazione

Il meccanismo di autenticazione rimane invariato rispetto alla Versione 2, ma:

  • Le procedure di gestione delle chiavi sono state chiarite
  • Le considerazioni sulle prestazioni sono state documentate
  • L'interazione con le procedure dell'orologio è stata specificata più precisamente

Modifiche della Versione 2 rispetto alla Versione 1

Per completezza, i principali cambiamenti dalla Versione 1 alla Versione 2 sono riassunti:

1. Formato del Pacchetto

  • Il campo strato è stato espanso da 2 a 8 bit
  • Il campo di precisione è stato aggiunto per indicare la precisione dell'orologio
  • I campi ritardo radice e dispersione radice sono stati aggiunti
  • Il campo identificatore di riferimento è stato modificato per supportare stringhe ASCII

2. Algoritmo di Sincronizzazione

  • L'algoritmo di selezione del peer è stato raffinato per utilizzare strato e distanza di sincronizzazione
  • Il meccanismo di raggiungibilità è stato aggiunto per rilevare guasti di connettività
  • L'algoritmo del filtro dell'orologio è stato aggiunto per levigare i campioni

3. Orologio Locale

  • Il registro di conformità è stato aggiunto per tracciare la stabilità dell'orologio locale
  • La compensazione di frequenza è stata migliorata
  • Gli aggiustamenti di fase graduali sono stati raffinati

4. Modalità di Funzionamento

  • La modalità broadcast è stata aggiunta per ambienti LAN
  • La distinzione client/server è stata chiarita
  • Le modalità simmetriche sono state raffinate

5. Messaggi di Controllo

  • La funzionalità messaggio di controllo opzionale è stata aggiunta (Appendice B)

Considerazioni di Interoperabilità

NTP Versione 3 è progettato per interoperare con le versioni precedenti:

  • Le implementazioni Versione 2 e Versione 3 possono interoperare senza restrizioni
  • Le implementazioni Versione 1 possono interoperare ma potrebbero non raggiungere la stessa accuratezza
  • Le reti miste funzioneranno correttamente, con le implementazioni Versione 3 che traggono vantaggio dai nuovi algoritmi

Linee Guida di Compatibilità

  1. Il campo versione dovrebbe essere impostato su 3 nei messaggi trasmessi
  2. I messaggi con versione 2 dovrebbero essere accettati ed elaborati normalmente
  3. I messaggi con versione 1 dovrebbero essere accettati con funzionalità ridotta
  4. I messaggi di controllo dovrebbero essere inviati solo ai peer noti per supportarli

Percorso di Aggiornamento

Le organizzazioni possono aggiornare alla Versione 3 in modo incrementale:

  1. I server primari dovrebbero essere aggiornati per primi per sfruttare gli algoritmi migliorati
  2. I server secondari possono essere aggiornati quando conveniente
  3. I client possono essere aggiornati per ultimi, poiché beneficiano dell'accuratezza migliorata del server
  4. Le versioni miste possono coesistere indefinitamente senza problemi

Note di Implementazione

Le implementazioni dovrebbero:

  • Adottare nuovi algoritmi dove possibile per prestazioni migliorate
  • Mantenere la compatibilità con le versioni precedenti
  • Documentare le estensioni al protocollo standard
  • Fornire opzioni di configurazione per abilitare/disabilitare funzionalità opzionali
  • Testare l'interoperabilità con implementazioni esistenti

Le modifiche nella Versione 3 rappresentano l'esperienza accumulata di diversi anni di funzionamento su Internet. Forniscono miglioramenti significativi in accuratezza, stabilità e affidabilità mantenendo la piena compatibilità retroattiva.