Ondersteuning voor schrikkelseconden in FreeBSD

1. Introductie

Een schrikkelseconde is een ad-hoc correctie van één seconde om de atomaire tijd te synchroniseren met de omwenteling van de aarde. Dit artikel beschrijft hoe FreeBSD omgaat met schrikkelseconden.

Op het moment van schrijven zal de volgende schrikkelseconde plaatsvinden op 2015-juni-30 23:59:60 UTC. Deze schrikkelseconde zal plaatsvinden op een werkdag voor Noord- en Zuid-Amerika en het Aziatische/Pacifische gebied.

Schrikkelseconden worden aangekondigd door IERS op Bulletin C.

Het standaardgedrag van schrikkelseconden is beschreven in RFC 7164. Zie ook time2posix(3).

2. De standaardomgang met schrikkelseconden op FreeBSD

De eenvoudigste manier om met schrikkelseconden om te gaan is met de tijdregels van POSIX die FreeBSD standaard gebruikt, gecombineerd met NTP. Wanneer ntpd(8) draait en de tijd gesynchroniseerd is met de bovenliggende NTP-servers die schrikkelseconden correct afhandelen, zal de schrikkelseconde ervoor zorgen dat de systeemtijd automatisch de laatste seconde van de dag herhaalt. Er zijn geen andere aanpassingen nodig.

Als de bovenliggende NTP-servers schrikkelseconden niet correct afhandelen, zal ntpd(8) de tijd met één seconde laten verspringen nadat de foutieve bovenliggende server dit opgemerkt heeft en zelf is versprongen.

Als NTP niet wordt gebruikt, is het nodig om de systeemklok handmatig aan te passen nadat de schrikkelseconde is verstreken.

3. Waarschuwingen

Schrikkelseconden worden wereldwijd op hetzelfde moment ingevoegd: middernacht UTC. In Japan is dit in het midden van de ochtend, in het Pacifisch gebied in het midden van de dag, in Amerika in de namiddag en in Europa in de nacht.

We geloven en verwachten dat FreeBSD, mits voorzien van een correcte en stabiele NTP-dienst, zal werken als ontworpen tijdens deze schrikkelseconde, zoals het tijdens de voorgaande deed.

We waarschuwen echter dat praktisch geen enkele toepassing de kernel ooit om schrikkelseconden heeft gevraagd. Onze verwachting is dat, zoals ontworpen, schrikkelseconden in feite een herhaling zijn van de seconde voor de schrikkelseconde, wat een verassing is voor de meeste toepassingsprogrammeurs.

Andere besturingssystemen en computers kunnen de schrikkelseconde op een andere manier dan FreeBSD afhandelen, en systemen zonder correcte en stabiele NTP-dienst zullen in het geheel niks van schrikkelseconden weten.

Het komt voor dat computers crashen vanwege schrikkelseconden, en ervaring laat zien dat een groot gedeelte van alle publieke NTP-servers de schrikkelseconde onjuist kunnen aankondigen en afhandelen.

Probeer er alstublieft voor te zorgen dat er niks ergs gebeurt vanwege de schrikkelseconde.

4. Testen

Het is mogelijk om te kijken of een schrikkelseconde zal worden gebruikt. Vanwege de aard van NTP kan de test tot 24 uur voor de schrikkelseconde werken. Sommige grote bronnen van referentieklokken kondigen schrikkelseconden slechts één uur van te voren aan. Ondervraag de daemon NTP:

% ntpq -c 'rv 0 leap'

Uitvoer die leap_add_sec bevat wijst op correcte ondersteuning van de schrikkelseconde. Voorafgaand aan de 24 uur die tot de schrikkelseconde leiden, of nadat de schrikkelseconde is verstreken, zal leap_none zichtbaar zijn.

5. Conclusie

In de praktijk zijn schrikkelseconden meestal geen probleem op FreeBSD. We hopen dat dit overzicht helpt met wat te verwachten en hoe schrikkelseconden gladder te laten verlopen.