新しいNTP DNSレコードの提案書を書いた

IETFに「NTP DNS Resource Record」というDraftを提出しました。
www.ietf.org

(まさか、このブログで自分の提案仕様をとりあげることになるとは)

NTP DNS Resource Record

このDraftでは、RFC9460のHTTPレコードと同様に、NTPレコードを定義します。

こんな感じのやつです。これはRFC9460で定義される SVCB-compatible RR typeです。

ntp.example.com. 300 IN NTP 1 . ntp-version=4,5

その背景にあるのが、NTPv5のバージョンネゴシエーションの課題です。

NTPの仕様では、サポートしてないNTPバージョンのパケットを受信してもドロップします。そのため、クライアントはNTPのやりとりを開始する前に使用するバージョンを決める必要があります。

しかし、クライアントは事前にサーバがサポートするNTPバージョンを知る方法は現状ありません。そこで、HTTPSレコードと同様に、DNSでNTPサポートバージョンをアドバタイズするという提案です。これにより、事前にサーバがサポートするNTPバージョンを知ることが出来ます。

(現状は、NTPv4のreference timestampフィールドに"NTP5NTP5"と入れることで、NTPv5サポートを通知できます。が、NTPv4サポートを暗黙的に仮定するというのが良くないと考えています。将来のNTPv6~ 以降のデプロイで課題は継続します。)

感想

もともとNTPv5における機能ネゴシエーションについて、メーリングリストで議論していました。電車の中でNTPv5の仕様について悩んでるところ、アイディアが降ってきたので、Internet Draftまで出してみようと書いてみました。

実際には、実装の振る舞いの問題、SVCBレコードで良いのでは?みたいな話とか色々出てきそうですが、一旦はアイディアを書き出してみた感じです。