ニュースレターNo.24/2003年7月発行
インターネット10分講座:RFC
RFC(Request for Comments)は、インターネットで用いられるさまざまな技術の標準化や運用に関する事項など幅広い情報共有を行うために公開される文書シリーズです。
RFCとはなにか?
インターネットにかかわり始めると「RFC」という言葉を耳にする機会が多くなるはずです。「この技術はRFCになりました」、「RFCを参照して……」、「この製品はRFCxxxxとRFCxxxxに準拠していますので……」のような技術系ニュースから、インターネット関連の会議、製品セールスなどインターネットに関係する多くの場面でこの言葉が利用されているからです。
現在のインターネットの世界ではRFCは、もし一言で説明できるとしたら
「インターネット」といったキーワードで関連づけられて広く公開しておくべきだと思われる情報を公開するための管理された文書シリーズ
です。たとえば、インターネット中で利用される通信やアプリケーションのプロトコル、経路制御やアドレス割り当てといった運用やルールのコンセンサス(合意事項)、インターネットに関連する理論に関する説明、などのインターネットを構成するにあたって利用者や開発者などのコミュニティで共有しておくべきであろうと思われるさまざまな事項が含まれます。
ここであえて「現在の」と留保をつけた理由は、RFCができてから現在にいたるまでの約35年間を含めて統一的に「RFCとはなにか」を説明することは難しいためです。RFCの歴史を書き始めてしまうとそれだけでこのお話は終わってしまいますから、そのへんは参考文献に説明を譲ることにします。実は「RFCに関する歴史」もRFCシリーズ中含まれています。1999年4月7日に公開されたRFC2555『30 Years of RFCs』(RFCの30年間)がそれです(参考文献)。
RFC自体に対して更に説明を付け加えるとしたら、
RFC自体が、RFCで扱うような事柄をきめるための一連の議論システムの一部である
ともいえます。インターネット上でのさまざまな技術を標準化していくための議論の多くはRFCシリーズを基に進められています。
この文章では、まずRFCシリーズ自体の説明をしてから技術標準化について言及します。
RFCシリーズ
RFCは内容や位置づけに応じて7種類に分類されています。さらに大別すると、
- インターネット標準に関するもの
- その他
の2種類に分類できます。前者は「インターネット標準化過程(Standard Track)」を通して「インターネット標準」を形成するRFC群です。標準化が進む段階に応じて、
- 標準化への提唱(PS:Proposed Standard)
標準化過程の最初の段階。将来的に標準となるプロトコルをRFCとして公開する際の最初の段階で、幅広く評価することが求められています。 - 標準化への草稿(DS:Draft Standard)
標準化過程の2番目の段階。仕様として十分に成熟しているプロトコルであることを示しています。「二つ以上の相互運用性のある独立した実装の存在、十分な運用経験」が「標準化への提唱」段階のRFCがこの段階になるための条件です。 - 標準(STD: Standard)
標準化過程の最終段階で「標準プロトコル」を意味します。「標準化への草稿」段階のRFCが標準RFCとなるためには「十分な運用経験/実績」が条件になります。標準RFCになるとSTDシリーズ※1の番号も割り当てられます。
の3種類に分類されます。これらの関係を図1に示します。
後者の「その他」に分類されるものは、標準化過程として処理されないRFC全般を指します。以下に、それぞれの位置づけを簡単にまとめます。
- 情報(Info: Informational)
標準化過程ではないが、インターネット全体に広く公知することが望ましいと判断される場合に利用される分類。ベンダー独自仕様や、特定の分野ですでにde facto standard(事実上の標準)として利用されているプロトコルなども含まれています。 - 実験(Exp: Experimental)
インターネットに関連するさまざまな研究成果や実験結果のうち、公開して共有すべきだと思われる分野に対する分類。実用までに解決が必要な問題が残る場合や、十分な検討が欠けている場合もあるため、研究目的以外の実装はしてはいけないことになっています。 - 歴史(Hist: Historical)
すでに標準であったものが別の仕様によって使われなくなった場合など、既存のRFCの仕様的な役割が終わった際に利用される分類。主に資料としての参照するために公開されているため、その内容を実際に使うことは推奨されません。 - 現状(BCP: Best Current Practice)
インターネットを管理していくためにコンセンサスを生成すべき事柄などを示す分類。インターネット関連組織の規約や、インターネット技術に関する原則などに用いられています。
RFCの分類を説明したところで、良く陥りがちな「落とし穴」を指摘しておくことにします。RFCの分類を見る限り、標準化過程のRFCは何よりも優先される、と理解してしまう場合が多く見受けられます。しかし、インターネットはさまざまな要素が組み合わさってできている一つの社会です。標準化過程として検討されていないRFCであっても、「事実上の標準」として業界に受け入れられたり、標準として規定されたとしても利用されなくなりつつある場合もあることを覚えておいてください。RFCの種類だけをみて判断せずに、内容やそのRFCを取り巻く状況を把握してその位置づけを理解する必要があることに留意しておきましょう。
インターネット標準化とRFC
インターネットのさまざまな技術は広く相互運用性/相互接続性をもっていなければならないため、主にIETF※2でコンセンサスを取る必要があります。IETFなどでの議論はRFCとして公開されることで広く公知されることになるため、インターネットの技術標準化とRFCは密接に関係しています。
簡単にIETFなどでの議論からRFCになっていく過程、さらにインターネット標準となっていく過程を簡単にまとめておきます。
インターネットは開かれた世界ですが、いきなり誰でもRFCを公開できるわけではありません。いくつかの段階を経由することになります。
その段階の最初に位置するのがインターネットドラフト(I-Ds:Internet Drafts)です。インターネットドラフトは誰でも提出可能であり、提出するだけでインターネットを通して広く公開されますが、一定の期間(6ヶ月)が経過すると削除されることになっています。インターネットドラフトの目的は、RFCとして新規技術を標準化する前に十分な議論の場を提供することなので、継続した議論が行われて新しいI-Dを再提出することが要求されるからです。
IETFでは必要に応じて議論や検討を行い、その結果をI-Dにフィードバックしていくことで、多くの人たちの意見を反映させたより成熟したものにしていきます。十分な議論が行われIESGの承認を得ることができれば、RFCとして公開されることになります。RFCとして公開されるための手続きを図3に示します。
まとめ
現在インターネットで利用されているほとんどすべてのプロトコルは、RFCとして公開され誰でも参照できるようになっていて、相互運用性/相互接続性といったインターネットを運用するうえで非常に重要な役割をになっています。
また、RFCは、「インターネット」を構成するためのさまざまな仕様、経験、議論、歴史をまとめあげているシステムの主要な要素です。今後もインターネットの発展に応じて多くのRFCが公開されていくでしょう。
((株)インターネットイニシアティブ(IIJ)技術研究所 宇夫 陽次朗)
■参考文献
RFC2555:
原文へのリンク
ftp://ftp.isi.edu/in-notes/rfc2555.txt
翻訳へのリンク(宇夫訳)
http://yuo4.nui.org/RFCs/rfc2555.html
30年間に渡るRFCの歴史を、インターネットの創世期から現在に至るまでかかわっていた著者ら5人で執筆したものです。「インターネット創世記」の一部を垣間見ることができる読み物としても秀逸なのでご一読をお勧めします。
- ※1 STDシリーズ/FYIシリーズ/BCPシリーズ:
- RFCは一連の番号のついた「永続的な」文書シリーズですが、その一部には別名が与えられて別の文書シリーズFYI(For Your Information)シリーズ、BCP(Best Current Practice)シリーズ、STD(Standard)シリーズ)としての番号が付与されます。これらはRFCとは異なり「役割や意味に対して番号を付与する」形式で管理されています。あるRFCにSTDシリーズなどの番号が付与された場合、そのRFCが更新や置換されて番号が変わったとしても、STDシリーズなどの番号は変化せずいつでも同じ番号で参照できます。たとえば、インターネットの標準プロトコルをまとめているRFCとして『Internet Official Protocol Standards.』があります。このRFCはSTD1としても参照できるようになっています。RFC自体は100RFCごとに定期的に更新されていますが、常に最新のものをSTD1として参照できるのです。
参考:STD1 ftp://ftp.isi.edu/in-notes/std/std1.txt - ※2 IETF:
- Internet Engineerng Task Forceのこと。インターネット技術標準化を行うためのグループ。内部は担当する技術エリア毎にわかれており、各検討課題毎に分科会(Working Group)を結成して議論を行っている。
http://www.ietf.org/
2016年7月4日追記
RFC 6410により、
RFCの標準化過程は従来の3ステージから、
Proposed Standard (PS) -> Internet
Standard (STD)の2ステージへと変更となりました。
日本語による解説資料として、
IETFの構造とインターネット標準の標準化プロセスをご参照ください。