山本和彦
| 前のページ 1/3 次のページ |
KAME プロジェクトは、その目的を達成し、2006年3月をもって8年間の活動を完了する。我々が実装した IPv6 などのコードは、それぞれの BSD コミュニティに引き継がれ、発展していくだろう。今回は、ipv6style.jpの紙面をお借りして、KAME プロジェクトの設立の趣旨、活動内容、成果などについてまとめる。
KAME プロジェクト以前
KAMEプロジェクトの設立は1998年だが、物語は1992年から始めるのがよいだろう。
1992年6月に神戸で開催された INET '92 で、IPv4 のクラス B アドレスが枯渇すると報告され、次世代の IP である IPng の模索が始まった。さまざまな方式が提案され、2 年間の競合の後、1994年7月にトロントで開催された第30回IETF で、最終的に SIPP が IPng に選ばれた。バージョンには 6 が与えられ、以降 IPv6 の名で知られることになる。
案が一本化された IPv6 は、それまで競争関係にあったエンジニアも協力し、標準化作業が進められ、1995年12月に基本仕様を定めた RFC 1883 が発行された。
その4ヶ月前、WIDE プロジェクトのボードメンバーは、福岡で勉強会を開いた。テーマは、IETF で話題となっている IPv6。当時、村井さんの学生であった慶應義塾大学(以降、慶応)の南さんは、すでに IPv6 の実装を進めていた。また、WIDE プロジェクトに参加している NEC、日立、富士通などの企業も実装に取り組んでいた。
そのころの IPv6 にとって最も大切なのは、仕様に誤りがないか検証することだった。これには、複数の独立した実装を用い、互いに通信できるかという相互接続性を検証する必要がある。
単純に相互接続性の検査をするなら、南さんの実装と企業の実装でも十分だっただろう。しかしながら、企業の実装はソースコードを公開していない。IPv6の研究を進める上では、複数の実装方式を比較検討するために、ソースコードを気兼ねなく参照できる実装がもう一つ必要だと判断された。そこで当時、奈良先端科学技術大学院大学(以下、奈良先端大)の助手をしていた私が、勉強会の宿題として、もう一つの実装を請け負うことになった。
奈良先端大で実装を担当したのは、当時私の学生だった島さんである。この実装は、奈良にある通称「あじさい寺」にちなんで、「Hydrangea」と名付けられた。慶応の実装も奈良先端大の実装も、共に BSD/OS で開発されていた。当時から FreeBSD や NetBSD も存在していたが、BSD/OS が一番よくノート PC をサポートしていたからである。
WIDE プロジェクトは、9月に IPv6 に関する分科会を作り、IPv6 について議論することで理解や経験を深めていった。そして、12月には相互接続実験のため、慶応の湘南藤沢キャンパスに集った。実際に異なる実装とつないでみると、新たなバグが発見されることが多く、また仕様に対する間違った解釈に気づくこともある。
このように同じグループ内で複数の実装を持っていることは、何よりの強みであった。以降、WIDE プロジェクトの IPv6 分科会は、定期的に相互接続実験を開催することになる。
翌年2月には、ニューハンプシャー大学に、慶応、奈良先端大、日立のメンバーで乗り込み、仕様適合試験を受けた。摂氏-18度と極めて寒かったこと、そして旬のメインロブスターが美味しかったことをよく覚えている。
6月には、WIDE プロジェクトのバックボーンに多重化装置を入れ、T1 の回線から 64 Kbps を切り出して、IPv6 用の専用線とし、IPv6 のバックボーンを構築した。これは、単一ネットワークでの相互接続実験から、複数ネットワーク間での経路制御の検証へと段階が進んだことを意味する。Hydrangea 上の RIPngによる経路制御ソフトウェアは、東京大学の加藤さんがあっという間に実装した。
同年6月、トンネルを用いてカリフォルニアの Cisco と結び、世界的な 6boneの初期メンバーとなった。これには、島さんの後を引き継いでいた角川さんが大きな役割を果たした。
当時のよきライバルは、NetBSD/FreeBSD を対象にしていた INRIA、そして 4つのBSDを対象にしていた NRL である。INRIA はいち早くコードを公開していた。
一方で、我々は Hydrangea の公開には慎重だった。よい品質になるまでリリースしたくないという思いも理由の一つではあるが、一番の問題は対象が商用のBSD/OS だったことだ。単純にリリースしたのでは、BSD/OS のライセンスに抵触するかもしれない。そこで、開発元の BSDI と交渉を続けていた。
1997年3月には、萩野さんが Hydrangea を FreeBSD へ移植した。同年、9月には BSDI が NRL のコードを採用したことが発覚。我々は、FreeBSD への乗り換えを余儀なくされた。
結局、Hydrangea は一般にリリースされることなく、WIDE プロジェクト内の公開にとどまった。これは、後ろ向きなことではなく、大きな飛躍への一歩であったことがすぐに分かるだろう。
第40回のIETFは、1997年12月にワシントン DC で開催された。IETF の朝食は、ホテルのホワイエにビュフェスタイルで用意される。私がモーニングコーヒーを飲んでいると、日立の新さん(現在はアラクサラネットワークス)や東芝の江崎さん(現在は東京大学)らが集まってきた。
WIDE プロジェクト内に複数の実装を持つことは、昔は強みであったが、その時点では足枷になっていると感じていた。IPv6 に仕様に致命的な欠点がないと確信できる今、同じことをバラバラにやっているのは非効率である。そのことを率直に切り出すと、その場にいた人は同意し、実装の努力を一本化できないか模索することになった。
同日、この件を相談するため、同じホテルに泊まっていた村井さんの部屋のドアを叩いた。そのドアの向こうには、新しい世界が待っている、そんな気がした。
KAME プロジェクトの設立
村井さんの賛成の下、今では「兄」と呼ばれる人たちが、力の結集に向けて急ピッチで動き出した。
本来競合関係にある東芝、日立、NEC、富士通などの企業が共同で IPv6 を実装するのである。しかも、成果物はフリーで公開される。これまでの日本では実現しそうにない大胆な目標が掲げられたのだ。
斬新なプロジェクトに企業を巻き込む以上、このプロジェクトは成功させなければならない。成功のためには各社のエースを派遣して頂くことが不可欠である。そこで、参加して頂くプログラマの条件は、IPv6 分科会で活躍していることになった。「まず人ありき」なのである。
エースの選定は私に任された。それは、私がテクニカルリーダに選ばれたからである。このころ私は腹をくくり、奈良先端大から東京のインターネットイニシアティブへ転職することを決めていた。
エースの選定後は、その人が所属している会社に賛同して頂き、派遣して頂く必要がある。「フリーな参照コードの作成による世界への貢献と IPv6 の普及」という大きな夢を鞄につめこんで、村井さんは各社をまわった。
各社から派遣され実際にコードを書く人を 「core」、その上司を「パパ」、そして中間に立ってあれこれと労して頂く人を「兄」と呼ぶことが、いつの間にか定着していた。
core が実装に専念するためには、会社の雑用に束縛されない時間を確約する必要がある。そこで、3 日ルールが定められた。オフィスは刈込に村井さんが借りている建物で、都心から離れた慶応湘南藤沢キャンパス近くに位置する。一週間の内、3日間はこのオフィスへ来て実装に専念するのだ。
KAME プロジェクトの発足は、1998年4月である。当然、正式な契約が各企業とWIDE プロジェクトの間で締結された。今振り返ると、このような準備がたったの4ヶ月間で実行されたのは驚異と言う他ない。
創設時の参加企業の一覧を以下に示す。
株式会社 インターネットイニシアティブ
株式会社 東芝
日本電気 株式会社
株式会社 日立製作所 (現在、KAMEに関わった部隊はアラクサラネットワークス 株式会社となっている)
富士通 株式会社
横河ディジタルコンピュータ 株式会社 (現在、KAMEに関わった部隊は横河電機 株式会社に移籍している)
横河電機 株式会社
すでに語り尽くされた感があるが、名前の由来にも触れておこう。準備期間中のコードネームは、「かめプロジェクト」だった。
その小さな事件が起こったのは、1997年10月のことだ。WIDE IPv6 分科会の相互接続実験が北陸先端科学技術大学院大学で開催されていた。Hydrangea のバグ取りをしていた萩野さんは、原因が分からず、とうとう傍にあったカメのぬいぐるみに抱きつき、「ああ、かめさん助けて」と叫んだのだ。これ以降、「かめ」という言葉が仲間内で流行となっていた。
1998年3月の準備ミーティングで、正式な名前を決めることになった。私は外国の方が発音できない「KAME」には反対し、Hydrangeaを短縮した「Hydra」を提案していた。しかしながら、最終的には「KAME」と決まった。
すなわち、文字通り動物のカメに由来しているのである。海ガメ(turtle)なのか、陸ガメ(tortoise)なのか、公式な見解はない。
活動の歩み
KAME プロジェクトの目標は、「IPv6、IPsec および高度なネットワークプロトコルに対する参照コードの提供」である。
インターネットの歴史を紐解けば、BSD の貢献が光り輝いている。カリフォルニア州立大学バークレー校の CSRG が提供した BSD は、IPv4 の参照コードとなった。このコードを見て学び、製品のコードを書いたエンジニアも多いだろう。W. Richard Stevens 氏が執筆した BSD コードの解説本「TCP/IPIllustrated Vol.II」は、エンジニアのバイブルとなっている。
KAME プロジェクトは、BSD が IPv4 の普及に果たしたのと同じ役割を IPv6 に対して果たしたいと志したのだ。
1998年当時、4.4BSD から派生した BSD は 4 つあった。すなわち、商用のBSD/OS、フリーの FreeBSD、NetBSD、および OpenBSD である。大変ではあるが、KAME プロジェクトは、すべての BSD に対しコードを提供することにした。
我々が提供するコードには、次の3つの形態があった。
- snap
その時点での実装のスナップショット。最新の実装であるが故、不安定であるかもしれない。毎週、月曜日にリリース。 - stable
不安定なコードを削除し、安定性を確かめたコード。できるかぎり奇数月にリリース。 - release
KAME プロジェクトの区切りにリリースする stable をこう呼んだ。利用者にとっては stable と変わりない。
不安定かもしれない snap を提供する理由は、Hydrangea の反省に基づいている。Hydrangea ではコードの品質にこだわったがために、結局一般にリリースされることなく、世界的な認知度は低いままに終わった。
そこで、コードの品質に改善の余地がある時点でも、恥ずかしがらずに公開すると決めたのだ。もちろん悪印象を与える可能性もあるが、よい効果をもたらす方が大きい。まず、我々の積極的な活動が、外から見えると言うこと。そして、恥ずかしさを消すために、急いでコードを改良するという動機を与えることである。
コードの一本化の作業は、Hydrangea をベースに、各社の優れた部分をマージする形で進められた。共同作業のツールとしては、CVS を使う。最初にコードのスタイルを定めた。あとは自分の実装した部分を各自の判断でマージしていく。マージの段階で衝突が起こった場合は、後から衝突を起こした人の責任で直す。つまり、マージ作業は早いもの勝ちだった。
core が刈込オフィスに泊まり込むことは日常茶飯事であり、5月には最初のsnap、6月には最初の stable をリリースすることができた。snap を毎週リリースすることは、これまで絶え間なく続けられている。マージの作業が完了した後も、同様の開発スタイルで、最新の仕様が実装されていった。
我々は仕様適合試験や相互接続試験があるたびに参加していた。また、KAME プロジェクトが提供するコードの質を客観的に示すために、横河電機の岡部さんや横河ディジタルコンピュータ宮田さん(現在は横河電機)らが中心となって、TAHI プロジェクトを発足させた。TAHI プロジェクトは、その地道な活動が認められ、今では提供している検証ツールが世界標準となった感がある。
我々の願いは 4 つの BSD に、同じ品質のコードを提供することだった。同じ4.4 BSD から派生したにも関わらず、各 BSD のネットワークコードの実装は大幅に異なる。我々が実装する IPv6 やその他のコードは、新しく書くのであるから、大枠としては共通化できる。ただ、各 OS の差を吸収するために、複雑な場合分けがコードの中にたくさん埋め込まれることになった。
さらに、各 BSD がバージョンアップすれば、古いバージョンと新しいバージョンの両方をサポートしなければならない。一時は、4 OS、10 バージョンを管理していることもあった。
こういった努力の甲斐あって、KAME プロジェクトは次第に認められるようになり、1999 年の夏頃までには、すべての BSD で採用されることが決まっていた。これには、NRL や INRIA では資金や人手の問題から、開発の継続が困難になったことも影響している。
BSD/OS からは NRL の IPv6 コードが削除され、KAME のコードで置き換えられた。フリーの BSD は、KAME のコードをそのまま採用した。ただし、OpenBSDは IPsec のコードだけは独自に実装している。BSD の制覇が成ったのは、2000年末のこだ。
表: 各 BSD に KAME のコードがマージされた日時とそのときの BSD のバージョン
| BSD/OS 4.2 | 2000年11月29日 |
| FreeBSD 4.0 | 2000年3月14日 |
| NetBSD 1.5 | 2000年12月6日 |
| OpenBSD 2.8 | 2000年12月1日 |
KAME の成果は、
日立のルータ/スイッチ GR/GSシリーズ、などに採用された。
富士通のルータ GeoStream R900シリーズ/GeoStream Si-Rシリーズ、
IIJ のルータ SEIL、
Juniper のルータ、
Extreme のスイッチ、
アラクサラネットワークスのルータ/スイッチ、
CEC カメラサーバ、
リコーのプリンタ
また MacOS X は、KAME をマージした FreeBSD を基にしている。読者の皆さんが KAME のコードに触りたいなら、MacOS X を利用してみるとよいだろう。
KAME プロジェクトは IETF でも認められ、発言力が増していった。萩野さんが、IETF v6ops の議長と IAB メンバーに選出されたことは、それを象徴している。
また、我々の活動は日本政府にも認知され、2002年10月には平成14年情報化促進貢献企業等表彰 (総務大臣表彰)を受賞した。表彰理由は以下の通りである。
次世代インターネットプロトコル IPv6 の研究開発及び成果の公開を通じて、IPv6 の研究開発、標準化及び実用化を国際的に先導し、IPv6 の普及に多大な貢献をした。
さらに、村井さんは IPv6 の開発と普及に対する貢献が認められ Postel Award を受賞した。2005年8月の第63回 IETF パリでのことだ。
このように KAME プロジェクトは、参照コードの提供という目的を十二分に果たした。手前みその感があるが、その集大成として、我々のコードに対する解説本
「IPv6 Core Protocols Implementation」
「IPv6 Advanced Protocols Implementation」
(詳細は成果一覧参照)が、core メンバである神明さんと島さんらの執筆により、近日出版される。この本が IPv6 について学びたいと思うエンジニアの道しるべとなることを願う。
| 前のページ 1/3 次のページ |





