- ntp clock-period とは何か -

Cisco 機器の内部には、時刻を計測する元となる信号があります。一般にクロックと呼 ばれる信号です。これが一定の周波数でパルスを発生させることにより、それが何回発 生したかを数えれば、現在の時刻がわかる仕組みです。
なお、RTC(Real Time Clock)と呼ばれるIC(クロックチップとかカレンダーICなどとも 呼ぶ)を搭載している機器では、電源を切っても日付や時刻を覚えていられるため、電 源を入れた時に「今の日付と時刻」を確認して、そこからは「起動してから何クロック 数えたか」で現在時刻を求めます。
このチップが無い機器の場合は、電源を入れると「今がいつかわからない」ため、とり あえず何か(おそらくCisco独自)の基準である 1993/04/01 になってしまいます。ま ぁ無いものは仕方ないですね。で、そこからは同様に「起動してから何クロック数えた か」で時刻を求めます。

さて、ここまでで「何クロック数えたか」が時刻の元になっていることがご理解いただ けたかと思いますが、ここで1つの問題があります。「このクロックってどのくらい正 確なの?」 これが、機器の時計の精度となりますが、残念ながら高級時計のような精 度はありませんので、だんだん狂ってきます。
そこで、NTP 同期している機器は、一定期間ごとに「NTP で合わせた時刻」と「クロッ クの数」を比べて、自分のクロックがどのくらいの誤差があるのかを計算します。この 計算の結果が、ntp clock-period として現れてくる謎の数字です。そんなわけで、手 動で設定しようとしても、すぐに NTP との誤差を計算して、その値で上書きされてし まいますので、意味がありません。これが「手動設定してはいけない」という作法に繋 がっているのです。



- ntp clock-period は何をするのか -

では、自動的に算出されたこの値は、何に使われるのでしょうか。それは「NTP 同期が できない状態でも、できるだけ正確に時刻を刻むため」に、内蔵クロックに対して補正 をかけて、誤差を補正するためです。つまり、NTP 同期ができない状態の時に役立つも のなのです。
例えば、クロックを数えて1時間経過したと思った時に、NTP の時刻と比べてみたら、 1秒遅れていることがわかったとします。そうすると、clock-period には「1時間に 1秒の割合で時刻を進める」ような値が記録されます。そして、何かのトラブルが発生 して NTP 同期ができなくなってしまった場合は、その値を使用してクロックの数え方 を調整し(この場合は0.028%ぐらい割り増しして)できるだけ正確な時刻を刻むよう に努力します。

補正される量は、クロックを発生させている部品の個体差によるものなので、個体ごと に違う値となります。IOS のバージョン等は関係ありません。あくまでも中で使われて いる部品1つ1つの物理的な特性の誤差です。他の機器で表示された値を別の機器に写 しても、全く意味がありません。
一般的にはクロック発振には水晶振動子が使われています。特別な工夫をしなければ、 通常の発振回路では水晶の公称周波数から 10〜50ppm 程度の誤差があるようです。乱 暴な計算をすれば1日1〜5秒ぐらいの誤差がつきものです。また温度変化などによっ ても周波数が狂います。こちらは10℃の変化で 10ppm ぐらいでしょうか。とにかく 、個体差や環境によって、補正する割合が変わってきます。
ちなみに補正回路によって温度特性の向上を図った TCXO という発振モジュールもあり まして、ただの水晶発振回路よりは精度が良いです。一般的に誤差 1〜5ppm 程度が期 待できます。

表紙のページ 次のページ