タイムサーバーによる「うるう秒」対策の実例
セイコークオリティーの「うるう秒」対応
前回のコラムでは2017年1月1日に挿入される「うるう秒」をトラブルレスで通過するための下記3つの対策について紹介しました。
①OSやアプリケーションを100%信用しない。
②時刻戻りを起こさせない。
③08:59:60 を刻ませない。
「うるう秒」の障害例として、前回、CPUの負荷上昇をご紹介しましたが、「うるう秒」の怖さは目に見える形で発生する障害ばかりではありません。
例えば、②で挙げた時刻戻りがもし商取引ログで発生した場合、取引ログが前後してしまい、決済が未決となるケースが発生することも考えられます。
完璧な「うるう秒」対策の難しさ
上記①~③の対策を確実に実施するには膨大な労力が必要です。さらに、場合によっては「うるう秒」挿入の前日に適用してしまったセキュリティーアップデートが原因で障害が発生する可能性もあります。
また、仮想マシンが活躍している昨今では、各仮想マシンのOS種別やバージョン、動作しているアプリケーションまで全て把握し、全ての要因を検証して初めて「うるう秒」対策は万全だと言うことができます。
主要OSの「うるう秒」動作について
3つの対策を実施する困難さがおわかりいただけたのではないかと思いますが、それでもきちんと対策してほしい!というお客様からのご要求を当然いただくかと思います。
もちろん、セイコーのタイムサーバーをご導入いただくことで簡単・確実に対策いただけるのですが、そのメリットは後述させていただくことにして、まずはシステム構築時に多く利用されるWindows/Linuxの各OS別に、タイムサーバーを利用しない場合の「うるう秒」対策をご紹介いたします。
- Windows OSでの「うるう秒」対応 =未対応(「うるう秒」処理をスルーする)
WindowsはNTPによる時刻同期がサポートされていますが、実際には、「うるう秒」に対する特別な処理は実行されません。
つまり、「うるう秒」が発生する8時59分59秒の次は9時00分00秒となり、標準時から時刻がずれてしまいます。誤差については、次のNTP参照時に解消される仕組みになっています。
PCという枠組みで考えるのであれば「うるう秒」によって引き起こされる障害リスクは少ないOSと言えるでしょう。 - Linux OSでの「うるう秒」対応 =STEPモード or SLEWモードでの対応
Linuxの代表的なディストリビューションの最新バージョンについては、ntpdによる時刻同期を選択している場合、2種類の「うるう秒」処理に対応しています。
ntpdによる時刻同期モードには、STEPモードとSLEWモードと呼ばれる2種類があります。簡単にSTEPモードとSLEWモードの違いを説明します。
STEPモードによる時刻調整
NTPサーバーから取得した時刻情報でシステム時刻を即時変更します。そのため、STEPモードでの時刻補正を行った場合、システム時刻が過去に戻る可能性があります。 ・STEPモードでは、NTPサーバーとシステム時刻に±128ミリ秒以上の差が生じると、NTPサーバー時刻に一気に時刻合わせを行います。 ・この時、時刻が未来もしくは過去に128ミリ秒一気に飛び、連続性が担保されません。もちろん、過去の時刻に戻る現象も発生します。 さらに、「うるう秒」が発生すると話はややこしくなります。 60秒を刻むことを拒否した結果、59秒を2度刻む動作をします。 |
SLEWモードによる時刻調整
NTPサーバーから取得した時刻情報でシステム時刻をジリジリと徐々に補正します。 ・SLEWモードでは、NTPサーバーとシステム時刻に600秒以上の差が生じると、一気に時刻合わせを行います。現実には、システム起動時など大きな時間差を吸収する必要がある場合に利用されます。 ・時刻差が600秒以内の場合、1秒間に最大5ミリ秒ずつシステムの時刻補正を行います。我々はジリジリ合わせなどと呼んでいます。 ・重要なのは、必ず時刻を進める方向で補正をするということです。システム時刻がNTPサーバーに対して遅れ気味な場合、ソフトウエアPLLの値を調整し、少し時計を早める動作を実施します。決して過去の時刻に戻る現象は発生しません。 下記は、「うるう秒」が発生した場合のSLEWモードでの時刻遷移です。 SLEWモードでは、「うるう秒」発生後の数分間、日本標準時との時刻差が生じます。 |
上記のように、同じ「うるう秒」処理でもモードによって大きく異なる振る舞いをします。
加えて、Linux OSのntpdのデフォルト動作はSTEPモードであることも注意が必要です。
タイムサーバーの導入メリットについて
これまでの解説の通り、LinuxでntpdをSLEWモードに設定し運用すれば、過去の時刻に戻ることを避けて運用できることが分かりました。
では、ここからは、タイムサーバーを「うるう秒」挿入前に導入するメリットについて解説します。
タイムサーバーを利用しない場合の時刻同期構成
全てのサーバーの「うるう秒」対応が必要
現在の時刻同期システムにおいて、世界中の複数の原子時計の平均を時刻源とする極めて高精度な時刻を参照する上位サーバーをStratum1サーバーと言います。
代表的なものが公開NTPサーバーで、日本国内ではNICT(情報通信研究機構)の公開サーバーが有名です。
下図のように、公開NTPサーバーでは、NTPパケット内のLIビット(Leap Indicator)にて、うるう秒の情報が下位サーバーに転送されます。
そのため、タイムサーバーを利用しない構成では、末端のNTPクライアントまで、「うるう秒」挿入のトリガーとするためにLIビットを転送する必要があり、構成する全てのサーバーが「うるう秒」に対応している必要があるのです。
セイコーのタイムサーバーを利用しない時刻同期構成 |
セイコーのタイムサーバーを利用した場合の時刻同期構成
タイムサーバーシリーズは、GPSやテレホンJJYなどの高精度な時刻ソースを直接参照するStratum1のNTPサーバーです。
タイムサーバーの「うるう秒」の調整方法は、以下の2種類の方法があります。
- 即時調整(工場初期設定値)
「うるう秒」実施の約24時間前より、NTPの「うるう秒」指示子LIビットに”01”(1秒挿入)をセットします。 2017年1月1日9:00の直前に1秒遅らせます。 - アジャスト調整 ※1
「うるう秒」実施の約120分前より一定の割合で徐々に時間を遅らせ、2017年1月1日9:00に調整を完了します。調整にかける時間は60分から400分まで設定できます。
(アジャスト調整については前回のコラムもご参照ください)
(※1)うるう秒指示子 LIビットは”00”のままとなります。
用途に合わせた最適な「うるう秒」調整モードが選択可能
タイムサーバーシリーズは、以上2種類の「うるう秒」の調整方法に対応していることにより、用途に合わせた最適な調整モードを選択することができます。
即時調整がおすすめのパターン
①うるう秒対応クライアント(ntpdなど)を使用している。
②協定世界時に合わせた時刻を配信したい。
③1秒程度の誤差(時刻戻り)が発生しても、業務運用上問題が発生しない。
アジャスト調整がおすすめのパターン
①時刻が連続的にならないとシステムに問題が発生する。
②NTPのうるう秒指示子が”00”、“11”以外の場合、対応できない機器がある。
③うるう秒指示子対応、非対応機器が混在している。
アジャスト調整の動作解説
セイコーのタイムサーバーの特徴的な動作として、タイムサーバーをアジャストモードで利用した場合の動作を説明します(下図参照)。
この場合、下位のNTPクライアントに対してLIビットを通知しません。前回のコラムでご紹介したように、「うるう秒」の処理はタイムサーバー内で完結します。
セイコーのタイムサーバー利用した場合の時刻同期構成・タイムサーバーを利用しアジャストモードを選択した場合の時刻同期構成 |
重要なのでもう一度記載します。
タイムサーバーをアジャストモードに設定した場合、うるう秒の挿入2時間前から1秒につき1/7200秒を分散挿入します。
アジャストモードなら、「うるう秒」を知っているのはタイムサーバーのみとなりますので、安心して「うるう秒」を迎えることができるのではないでしょうか。
さて次回は、タイムサーバーによる「うるう秒」シミュレーション試験について紹介させていただきます。
疑似的に「うるう秒」を何度も発生させて、前もって実際に「うるう秒」のテストが行えるタイムサーバーならではのうるう秒対策になります。ご期待ください。
著者プロフィール
橋本 直也
セイコーソリューションズ株式会社
製品企画部門で、マーケティング・プロジェクトマネージメントを担当
■経歴
1992年~ 2004年 沖電気工業株式会社にてATM交換機のハードウェア開発に従事
2004年 入社
2004年~ 2013年4月までハードウェア開発エンジニア、主に方式設計に従事
2013年~ 製品企画部門へ異動
近年は、PTP IEEE1588時刻同期関連製品の研究開発、マーケティング業務に従事。現在に至る。
講習実績
- セイコーの『うるう秒』対策セミナー
「うるう秒」を乗り越えるために -基礎知識と障害事例・対策実例-
Timer Serverシリーズのご紹介 -「うるう秒」デバッグ実演-
高精度時刻同期プロトコルIEEE1588 PTPのご紹介 - Interop Tokyo 2016 ShowNetステージ
PTP IEEE1588時刻同期プロトコル
「IP通信でナノ秒オーダーの時刻精度を実現する仕組み・ユーケース」