KAME プロジェクト便り

山本和彦
IIJ 技術研究所
BSD Magazine No. 1 (1999/09)


第1回 KAME プロジェクト小史

「足の速さに油断してお昼寝してしまった兎さんは、 ゆっくり歩んで来た亀さんに追い越されてしまいましたとさ。」 (イソップ童話)


「KAME プロジェクト便り」は、 KAME プロジェクトの最新情報を提供するコーナーです。 初回を飾るにあたり、KAME プロジェクトの歴史を振り返ってみましょう。 そうすれば、おのずと奇抜な名前の由来や活動内容が明らかになっていくはずです。

今年携帯電話や PHS の電話番号が 10 桁から11 桁に変更になりました。 少なからず混乱が生じ、 「どうしてはじめから11 桁にしておかなかったのか」と不満に思った人もたくさんいらっしゃるでしょう。

でも、後から言うのは簡単で、未来を予見するのは難しいものです。 もし、はじめから携帯電話の番号が 11 桁だったとしたら、 入力がわずらわしいせいで普及しなかったかもしれません。

同じことがインターネットの世界でも起ころうとしています。 現在のインターネットを支える通信規約(プロトコル)は、 IPv4 (Internet Protocol version 4) と呼ばれています。 IPv4 アドレスは、4 バイトしかなく、約43億のコンピュータしか識別できません。 これは、世界人口よりも少ない数字です。

「どうしてはじめから 8 バイトぐらいにしておかなかったのか?」と不平を漏らしてはいけません。 IPv4 が設計された 70 年代末を思い出して下さい。 当時のコンピュータには 4 バイトでさえ取り扱いが困難でした。 8 バイトにしていたら IPv4 は動かず、インターネットは普及しなかったことでしょう。

現状を見直し、過去のしがらみと折り合いをつけながら、 綻びを直していくのが工学です。 21 世紀の初頭には IPv4 アドレスが枯渇し、 割り当てられなくなると予想されています。 工学を駆使し IPv4 をバージョンアップすることは、 インターネットにとって死活問題です。

次世代インターネット・プロトコルを模索する作業は、 震災前の 1992 年神戸で開催された国際会議 INET 92 から始まりました。 次世代インターネット・プロトコルの候補の中から最終的に選ばれたものには、 6 というバージョン番号が与えられました。 このため、IPv6 と呼ばれています。 アドレス長は 16 バイトで、理論的には約 3.4 x 10^38 個のアドレスを提供できます。

WIDE プロジェクトでは、 次世代インターネット・プロトコルを重要な研究テーマと捉えて、 1995 年 9 月にv6 分科会を結成しました。 v6 分科会では、複数の組織が独自に IPv6 を BSD/OS などに実装し、 この年の 12 月には慶應義塾大学の一室で相互接続性を検証できるまでになりました。

1996 年 2 月には、 忘れもしない摂氏-18度(華氏-2度、華氏がマイナスに傾くなんて!)のニューハンプシャー大学に IPv6 のコードを持ち込み、 仕様に適合しているかの検査も受けました。

1996 年 6 月 9 日には、奈良先端科学技術大学院大学と WIDE 東京 NOC の間で、 IPv6 パケットが飛び交いました。 専用線を IPv6 だけのために割り当てたのは、 世界初であったと思います。 7 月 16 日には、他の国の IPv6 ネットワークと WIDE プロジェクトのそれとを結び、 6bone (IPv6 backbone)の初期メンバーとなりました。 接続には専用線ではなく、IPv4 上に IPv6 のトンネルを構築する技術を用いました。

1996 年から 1997 年にかけて、 v6 分科会のそれぞれの組織は独自に IPv6 の実装を進めて来ました。 しかし、実装すべき仕様があまりにも大きいこと、 それぞれの組織が同じ作業をして非効率であること、 そして相互接続性の検証はもはや重要ではなくなったことを考えると、 ばらばらに実装を進めるのは得策でないように思えました。

1997 年 12 月のワシントンで開催された第 40 回の IETF で、 朝食を食べに v6 分科会のメンバーがロビーに集まって来ました。 その場で、「もうばらばらに作業するのは非効率だね」と私がおそるおそる訊くと、 日立製作所の新さんや当時東芝にいた江崎さんも同意してくれ、 それぞれのコードを 1 つにマージすることで意見が一致しました。 コードネームは当然のように「かめ」に決まりました。

なぜ「かめ」になったかを説明するには、 2 ヵ月ほど話を昔に戻す必要があります。 v6 分科会は定期的においしい食べ物ととろける吟醸酒があるところに集まり、 議論したり相互接続性を検証したりしていました。 魚がおいしく萬歳楽(最近なら常きげん)のある石川に行かない手はありません。 北陸先端科学技術大学院大学の一室を借り切り、 机いっぱいにコンピュータを並べてハックしていました。

遅れて来た東京大学の加藤さんは机の上に空きスペースを発見できませんでした。 そこで、ローカルアレンジを担当していた北陸先端科学技術大学院大学の学生に、 「枕を持って来て」と頼みました。 枕を抱きながらカーペットにうつぶせになって作業するというのです。 奥さんを亀のぬいぐるみで口説いたと噂されるその学生が持って来たのは、 巨大なそれであったのは言うまでもありません。 その亀さんは、期間中 v6 分科会メンバーと共に過ごしました。

日本が誇る世界レベルのハッカーである萩野さん(itojun という名の方が有名です)は、期間中シッポさえ掴めない虫さんに悩まされていました。 そしてとうとう切れ、亀さんに抱きついたのです。 「ああ、亀さん助けて」とつぶやきながら。 この事件よりしばらくの間、「かめ」が v6 分科会内でのキーワードになりました。

話をホテルのロビーに戻しましょう。 仮称「かめプロジェクト」には、 WIDE プロジェクトに参加しており、 IPv6 や IPsec のコードを活発に書いている人がいる企業に協力して頂く方針を採ることになりました。

私がこだわったのは、成果物をフリーで配布することです。 そうでなければ、開発したコードが世界に広く流通し有効に利用される可能性が低くなってしまいます。 しかし、各企業が自社の人材を使って開発したコードをフリーで出すことには、 さまざまな問題があることが予想されました。 こういう難しい話は、WIDE プロジェクトの代表である村井さんの知恵を借りるのが一番です。 そこで、同じホテルに滞在していた村井さんの部屋の戸を叩きました。

当時、このままでは IPv6 は規格を決めただけの結局使われないプロトコルになってしまうのではないかという危惧がありました。 それはすなわち、今まで企業が IPv6 にかけたコストを無駄にすることを意味します。 フリーな参照コードの作成による世界への貢献と IPv6 の普及という大きな目標のもとで、 関係者のご理解を頂くよう努力していくことになりました。

期間は 1998 年 4 月 〜 2000 年 3 月の 2 年間、 場所は慶応大学湘南藤沢キャンパス近くにある「かりごめ」オフィス、 各企業から 1 名が週 3 日以上かりごめに集まって作業することなどが大まかに決まりました。 名前付けにこだわる村井さんは、 コードネームがそのまま正式名称になることがあるので「かめは止めておけ」と言っておりました。

さまざまな困難がありましたが、 各企業の賛同を得て、理想的なプロジェクトが発足しました。 目的は、IPv6、IPsec あるいは高度なネットワーク技術に関する参照コードを BSD 系の OS 上で実現することです。 成果物はフリーとなり、BSD の「AS IS ライセンス」のもと商用利用も可能です。

参加企業は、IIJ、東芝、日本電気、日立製作所、富士通、横河ディジタルコンピュータ、横河電機(50音順)です。 元来競合関係にある複数の会社が、 共同作業するという画期的なプロジェクトとなりました。

実際にコードを書くために、それぞれの会社から萩野さん、 神明さん、須堯さん、角川さん、井上さん、坂根さん、藤澤さんが派遣され、 開発リーダの私と合わせて「core」と呼ばれています。 core が気軽に相談でき、また実際に議論に参加して下さる上司を「お兄さん」、 さらに上の人事権を持っている上司を「パパ」と呼んでいます。 お兄さんと私は定期的にパパに成果を報告しています。

正式なプロジェクト名を決めるため、 1998 年度のはじめに core とお兄さんが集まりました。 「英語圏の人に理解できない KAME は嫌だ」という反対意見は押し切られ、 めでたく「KAME プロジェクト」が正式に選ばれました。 (案の上英語圏の人は発音できません。) KAME が「かりごめ」の短縮形だというのは、本当は嘘です。ごめんなさい。

KAME プロジェクトは、毎週 "snap"、 2 ヵ月に 1 回 "stable"、そして不定期に正式な "release" をリリースしています。 これだけの人材が 1 年に渡って作業した成果は特筆すべきものがあり、 世界で一番の品質を誇っていると言っても過言ではないでしょう。

BSD 系の OS に IPv6 を実装していたアメリカの NRL やフランスの INRIA は、 資金や人手の問題から自分達の IPv6 のコードを保守していくのは困難な状況にあります。 そこで、NRL や INRIA の協力のもと、FreeBSD、NetBSD、OpenBSD、 そして BSD/OS には、最終的に KAME のコードがマージされることになっています。 このことからも、参照コードとしての意義を十分に果たしていると言えるで しょう。

今回は、KAME プロジェクトの歴史と活動内容を紹介しました。 興味のある方は、 KAME の HPを参照して下さい。