複数レコードタイプを一度に引く仕様『DNS Multiple QTYPEs』

DNS Multiple QTYPEs』という提案仕様がIETFで議論されています。

これは、"A", "AAAA", "HTTPS"など複数のレコードタイプを一度に問い合わせする仕組みを定義しています。

背景: 複数Questionセクションは使えない

もともと、一つのパケットに複数のQuestionセクションを含めることは可能ですが、下記の理由により使用されていません

  • QNAME フィールドが複数あるので、一貫性のあるレスポンスが生成できない
  • RFC1035 などで 多くのケースで Questionセクションが単一であることを暗に述べている
  • 実装がサポートしていない

DNS Multiple QTYPEs

DNS Multiple QTYPEs』では、EDNSオプションを使います。


  • QTD: リクエストでは0, レスポンスでは1。(エコーするサーバを検知するのに使用)
  • QTCOUNT: QT フィールドの数
  • QTn: DNS リソースレコードタイプを指定します


クライアントは

  • EDNSオプションで、QTnに問い合わせしたいレコードタイプを羅列して送信します

サーバはこのリクエストを受信した際

  • [QNAME, QTn, QCLASS]に一致するQuestionに、Answerセクションで回答します
  • サーバもAnswerセクションで回答したものを、EDNSオプションで同様にQTnを指定して応答します (これによりnegative answerを示します)

感想

Happy Eyeball v3みたいなシチュエーションで良さそうだなとは思ったが、DNSサーバ側のキャッシュ状況などによってはすべての回答を準備するのに待ちがあると思うと、準備できたものから回答してほしいかもしれないなあ