IBM i でNTPとSNTPって違いますか?
Question
IBM i (AS/400)で時刻同期を設定しようとしています。
従来はCHGNTPAコマンドを使用していましたが、ADD_TIME_SERVER のAPIを使用してNTPクライアントの設定をしたにもかかわらず、どうもSNTPクライアントとして動いているように見えます。
参考:IBMドキュメント・ADD_TIME_SERVER
https://www.ibm.com/docs/ja/i/7.6.0?topic=services-add-time-server-procedure
SNTPとNTPの違いや、正しく時刻同期を利用するための設定方法を教えてください。
Answer
まず、SNTP(Simple Network Time Protocol)はNTPサーバーからの情報を簡易的に取得する機能、NTP(Network Time Protocol)はより高度な時刻同期・補正を行う機能となります。
今回お客様が行いたいのは、SNTPではなくNTPでの時間同期という事ですね。
IBM i (AS/400)では、7.3以降で本格的なNTPサービスがサポートされ、従来の簡易的なSNTPとは全く別のサービスとして稼働します。そのため、SNTPではなくNTPを利用する場合は以下の手順で構成を行う必要があります。
※SNTPとNTPを同時に起動すると時刻が前後に揺れる不具合が発生する恐れがあるため、NTP利用時はSNTPを停止(ENDTCPSVR SERVER(*NTP))してください。
IBM i (AS/400)における NTP の設定手順(2通り)環境に合わせて以下の①②いずれかの方法で設定を行ってください。
ntp.conf を直接編集する方法(一般的な方法)
IFS上の設定ファイルを編集し、一般的なNTPとほぼ同じ書き方で柔軟な構成が可能です。
対象ファイル:/QIBM/UserData/OS400/TCPIP/NTP/ntp.conf
(例) driftfile /QIBM/UserData/OS400/TCPIP/NTP/ntp.drift logfile /QIBM/UserData/OS400/TCPIP/NTP/ntp.log server ntp1.example.co.jp iburst server ntp2.example.co.jp iburst restrict default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict ::1API (ADD_TIME_SERVER等) を使う方法
登録したサーバーがNTP構成リストとして管理され、NTPサービス起動時に自動的に反映されます。SQLベースで管理したい場合に運用しやすい方法です。
(例:SQLから実行) CALL QSYS2.ADD_TIME_SERVER('ntp1.example.co.jp'); CALL QSYS2.ADD_TIME_SERVER('ntp2.example.co.jp');
■ NTPの起動と動作確認
NTPとSNTPの起動コマンド自体は同じSTRTCPSVR SERVER(*NTP)を用います。
Navigator for i 上の設定により、SNTP/NTPクライアントのどちらを起動するかが変わります。
デフォルトではSNTPクライアントとなっているため、NTPクライアントにしたい場合は設定の変更が必要になります。
以下を参考にNTPクライアントが起動するよう設定してください。
参考: IBMドキュメント・ネットワークタイムプロトコル(NTP)による時刻同期
https://www.ibm.com/docs/ja/i/7.6.0?topic=mfa-network-time-protocol-ntp-time-synchronization
設定後、NTPサービスの起動をお試しください。
状態確認は、PASE環境(CALL QP2TERM コマンド)から ntpq -p を実行します。
表示されるリストで * が付いているサーバーが現在の同期先であり、reach が 377 になっていれば通信は安定しています。
補足:SNTP と NTP の違い
NTP(Network Time Protocol)とSNTP(Simple NTP)は、プロトコルの基本仕様として明確な違いがあります。
時刻の急なジャンプによるシステム影響
SNTPでも補正機能(TIMEADJ)は設定できますが、NTPのようなクロック傾きの予測・連続計算アルゴリズムを持たないため、大きなズレに対してステップ変更(ジャンプ)が発生しやすいです。
参考:IBMドキュメント・NTP クライアント
https://www.ibm.com/docs/ja/i/7.5.0?topic=concepts-ntp-client冗長性とネットワーク障害への強さ
IBM i (AS/400)のSNTPは最大3台まで登録可能ですが、同時比較を行わず1台目としか通信しない順次切替方式です。1台目が誤った時刻を配信していても検証できずにそのまま同期してしまうため、交差検証を行うNTPに比べて冗長性が劣ります。
参考: IBMドキュメント・SNTP クライアント
https://www.ibm.com/docs/ja/i/7.5.0?topic=concepts-sntp-client状態確認とトラブルシューティング
SNTPにも簡単な実行ログ(CLTACTLOG)はありますが、NTPのように ntpq -p で同期精度やジッター(揺らぎ)を可視化・品質監視する仕組みがありません。
より高度で正確なシステムクロックが求められる環境では、改めてNTPを用いるよう検討してもいいかもしれません。
by . 大熊猫橋
