- ntp clock-period の値の計算方法 -
まず、show ntp status を表示します。こんな内容が表示されるはずです。
Cisco2611#show ntp status
Clock is unsynchronized, stratum 16, no reference clock
nominal freq is 249.5901 Hz, actual freq is 249.5901 Hz, precision is 2**16
reference time is 00000000.00000000 (09:00:00.000 JST Mon Jan 1 1900)
clock offset is 0.0000 msec, root delay is 0.00 msec
root dispersion is 0.00 msec, peer dispersion is 0.00 msec
Cisco2611#
もし show ntp status で何も表示されなかったら、ntp server 10.1.1.1 など、適当
なアドレスを指定して一旦 ntp の仮設定をしてください。一度設定した事実があれば
良いだけなので、直後に no ntp server 10.1.1.1 で消しましょう。
まず、上記で赤くした数字、これが内蔵クロックの何かです。電子回路としては、発振
しているクロック周波数はもっと高いのですが、clock-period の計算に使うのはこの
周波数です。ここに例示した 249.5901 Hz の他に、250.0000 Hz と 119.2092 Hz を見
かけました。もしかしたら他の周波数も存在しているかも知れません。
何かの基本となる周波数がわかったら、4294967296 をこの周波数で割り算します。上
記の例の場合は 4294967296 ÷ 249.5901 = 17208083.55… ということで、
clock-period の基準値が 17208083 であることがわかりました。この数字は「内蔵ク
ロックが全く誤差がない状態」に現れる数字です。
Cisco2611#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Cisco2611(config)#ntp clock-period 17208083
Cisco2611(config)#end
Cisco2611#
*Mar 1 09:05:25.207: %SYS-5-CONFIG_I: Configured from console by console
Cisco2611#show running-config | include period
ntp clock-period 17208083
Cisco2611#
ちなみに 4294967296 という数字は 232 です。16進数で 0x100000000 で
す。小難しい話をすると「249.5901 Hz ごとに 17208083 ずつカウントして、32ビット
のカウンタが1回転する時間が1秒」という計算をしているようです。
- ntp clock-period 実験 -
さて、ではこの数字を故意に変更すると、どうなるでしょう? ということで実験をし
てみました。まずはとんでもない値から。
Cisco2611(config)#ntp clock-period 10000000
%NTP: unreasonable value
Cisco2611(config)#
怒られました。では、基準からちょっとずつ範囲を広げてみます。
Cisco2611(config)#ntp clock-period 17300000
Cisco2611(config)#ntp clock-period 17400000
%NTP: unreasonable value
Cisco2611(config)#ntp clock-period 17380000
Cisco2611(config)#
Cisco2611(config)#ntp clock-period 17390000
%NTP: unreasonable value
Cisco2611(config)#
まぁキリが無いので結論を言うと、上限は 17380158 で下限は 17035998 でした。つま
り±約1%の範囲まで指定できるようです。そこで、まずは上限の値を設定して、どの
くらい時計が狂うのか試してみました。
Cisco2611#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Cisco2611(config)#ntp clock-period 17380158
Cisco2611(config)#end
Cisco2611#
*Mar 1 09:16:12.314: %SYS-5-CONFIG_I: Configured from console by console
Cisco2611#
【これから計測開始】
Cisco2611#show clock
*09:20:00.062 JST Mon Mar 1 1993
Cisco2611#
【ここで1000秒待機】
Cisco2611#show clock
*09:36:50.146 JST Mon Mar 1 1993
Cisco2611#
1000秒後に約10秒進んでました。計算通りですね。続いて
下限の値でも試してみます。
Cisco2611#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Cisco2611(config)#ntp clock-period 17035998
Cisco2611(config)#end
Cisco2611#
*Mar 1 09:39:08.070: %SYS-5-CONFIG_I: Configured from console by console
Cisco2611#
【これから計測開始】
Cisco2611#show clock
*09:39:59.935 JST Mon Mar 1 1993
Cisco2611#
【ここで1000秒待機】
Cisco2611#show clock
*09:56:29.981 JST Mon Mar 1 1993
Cisco2611#
1000秒後に約10秒遅れました。こちらも計算通りですね。
ということで、基準値に対して特定の倍率を掛けて設定すると、その倍率分だけ内蔵時
計を進めたり遅らせたりできることがわかりました。
前のページ 次のページ