KAME プロジェクトの歴史と成果 (2/3)

KAME プロジェクトの歴史と成果 (2/3)

タグ:
前のページ 2/3 次のページ

それぞれのコンポーネント

IPv6
 Hydrangea を基に各社のコードをマージ。拡張ヘッダのコードは、東芝からの貢献が大きい。マージ完了後は、RFC や Internet-Draft を積極的に実装した。実装の範囲は、基本仕様、自動設定機能、トンネル機能、経路制御機能、スコープ付きアドレス、API、DHCPv6など多岐に渡る。これらを活発に実装したのは、萩野さんと神明さんである。

 BSD に組み込まれた後は、新しい悩みが生まれた。それは、Internet-Draft の改訂で仕様が大幅に変化すると、BSD ユーザを混乱させてしまうことだ。そこで、原則として、Internet-Draft の段階の仕様を実装したものは snap で公開し、RFC に対する実装のみを BSD へ還元する方針をとった。

IPsec
 IPsec コードは、カーネル空間での IPsec そのものの実装とユーザ空間での鍵交換ソフトウェアに大別できる。我々の IPv4 および IPv6 用の IPsec は、FreeBSD や NetBSD にマージされている。残念ながら将来我々のコードは、暗号ハードウェアとの相性がよい OpenBSD 由来のコードで置き換えられるだろう。しかしながら、仕様をいち早く実装し、誰でも自由に使え、安定して動作するIPsecスタックを提供できたことの意義は大きいと言える。

 鍵交換ソフトウェアの名前は racoon である。racoon バージョン 1 は、BSD のみならず Linux でも採用された。現在、racoon バージョン 1 は、作者である坂根さんの手を離れ、IPsec-Tools として sourceforge.net で保守されている。

 一方、坂根さんは、現在 racoon バージョン 2 の実装に専念している。racoon バージョン 2 は複数のメンバーが協力して開発している。ポリシーを管理する部分がユーザ空間で実装されていることと、IKE バージョン 2 とKINK の両方をサポートしていることが大きな特徴である。IKE バージョン 2は、相互接続実験で良好な結果をだした。KINK は誰でも自由に使える実装としては世界初である。Linux を最初からサポートしていることもバージョン 1 との違いである。現在、より仕様に忠実となるように、また Mobile IPv6 でも利用可能となるように開発を進めている。

Mobile IPv6
 最初は、Ericsson がローダブルモジュールとして開発した Mobile IPv6 のコードを snap にマージしていた。島さんが core となってからは、独自のコードをカーネル空間で開発し始めた。Mobile IPv6 の大きな仕様変更が発生した頃に、第三期から百瀬さんが core に参加し、島さんとともに Mobile IPv6 のコードの開発、維持に従事した。残念ながら、仕様が RFC となるまでに長い時間がかかったため、snap で提供されたのみだった。

 現在、慶応大学で独自に Mobile IPv6 の実装を進めていた植原さん、湧川さん、および三屋さんと力を結集して、SHISA というコードを実装している。これは、古いコードを置き換えるかたちで snap として公開されている。

 SHISA では、移動に関する情報をやりとりする処理をカーネル空間からユーザ空間へ追い出した。この処理は仕様でしばしば変更されてきたが、さらなる変更があったとしても SHISA の方式ではユーザ空間のプログラムを変更するだけでよい。このため、BSD カーネルへのマージに大きく影響することがなくなった。SHISA は、Mobile IPv6に加え、後述の特許問題を解決した NEMO の実装も含む形で snap として提供されている。現在、SHISA を BSD へマージすることが検討されている。

マルチキャスト
 IPv4 ではマルチキャスト中継機能が、OS 毎に独立に実装されていた。そのため OS によってサポート状況が異なったり、マルチキャスト対応 OS 間でもAPI が異なったりしていた。こうした統一性のなさが、IPv4 マルチキャスト普及の足枷の一因になっていた。

 KAME プロジェクトでは神明さんが中心となり、IPv6マルチキャスト中継機能および経路制御ソフトウェアをすべての BSD に共通な形で実装し、すべてのBSDへマージした。このため、どのBSD でも同じ IPv6 マルチキャスト経路制御ソフトウェアを使用できる。これは IPv6 マルチキャスト普及にとって、大きな前進であった。

 なお KAME プロジェクトの開発したIPv6 マルチキャスト経路制御ソフトウェアは、現在 SSM 機能や Linux のサポートも含めた形で、sourceforge.net のmcast-tools プロジェクトにて保守されている。

 さらに KAME プロジェクトでは、INRIA の朝枝氏(現在は慶応)の NetBSD 向けIGMPv3 ホスト実装を基に、すべての BSD 向けの IGMPv3/MLDv2 ホスト機能を鈴木さんが実装した。今後この機能を BSD へマージする予定である。

特許問題
 IETF のポリシーとしては、 プロトコルのある部分が特許に触れていても、 特許権保持者がその技術を誰にでも公平にライセンスするのであれば、そのプロトコルは Proposed Standard になれる。利用料や契約を要求していても構わない。

 KAME プロジェクトでは、 特許問題のないプロトコルはもちろんのこと、特許が取得されていても契約なしに無料で利用できるのであれば実装してきた。しかしながら、契約が必要であったり、使用料を払わなければならない場合は、実装しない方針をとっていた。

 理由は次の通り。まず、KAME プロジェクトの成果物は無償だから、使用料がかかるのは困る。次に契約についてだが、対象が実装者と利用者の 2 つの場合がある。実装者である KAME プロジェクトに契約が求められる場合、KAME プロジェクトには契約を結ぶ枠組みがない。

 また、利用者に契約が求められる場合、KAME プロジェクトでは面倒をみれないし、KAME プロジェクトの成果物に契約を結ぶといった制約が加わることは、我々の望むところではない。そもそも、誰に対して契約を求めているのか明確でない特許もあった。

 KAME プロジェクトを悩ました特許問題があるプロトコルは以下の通り。

Source Specific Multicast(SSM)
Modular Exponential(MODP)
Network Mobility(NEMO)
Internet Key Exchange version 2(IKEv2)
Intra-Site Automatic Tunnel Addressing Protocol(ISATAP)
Virtual Router Redundancy Protocol(VRRP)
SEcure Neighbor Discovery(SEND)
NAT Traversal(NAT-T)/UDP-ENCAP

 この方針に対し、ある会社が利益を得るためでなく、訴えられないようにするために取得した特許に対して、あまり過剰に反応するべきでないという意見が内部から出された。また、特許の問題があることを知らずに作成したコードをこのまま捨ててしまうのは、もったいないという意見もあった。

 そこで、特許を持つ会社ときちんと交渉し、KAME の実装を提供できるかたちにすることになった。法律に強い慶応の村上さんの協力もあって、NEMO やISATAP の問題が解決され、実装を公開できた。

期ごとの目標と評価
 期ごとの目標と自己評価を示す。

第一期

目的は、WIDE プロジェクト内にある複数の IPv6 コード、および IPsec コードのマージ、および最新仕様への追従であった。

この目標は完全に達成できた。具体的な項目としては、IPv6 (基本仕様、API など)、IPsec、鍵交換ソフトウェア、トランスレータ、各種アプリケーションを IPv6 へ対応させることなど、多岐にわたる。

4つすべての BSD へ採用が決まったことからも分かるように大成功だった。

第二期

第一期と同様に活発な開発活動を継続し、KAME の成果を BSD コミュニティなどにフィードバックすることが目標であった。

4つすべての BSD に KAME の安定しているコードがマージされ、この目標は達成できた。活発な開発活動の成果としては、Mobile IPv6 の実装が開始されたこと、マルチキャストに関するコードの開発などが挙げられる。KAME のコードを製品に組み込む企業も出現した。このような面は大成功だった。

一方で、KAME プロジェクトが名声を得るにつれ、講演、チュートリアル、イベントなどへ駆り出されることが多くなり、3日ルールが機能しなくなっていたことは反省点の一つである。

第三期

2002年度の目標は、新たなプロトコルの実装やプロトコルの更新への追随。2003年度のそれは、第3期の終了後、各 BSD がそれぞれ独自にIPv6、IPsec、Mobile IPv6 を保守できるよう技術移転すること。また引き続き新たなプロトコルの実装し、プロトコルの更新へ追随することであった。

core が忙しくなったため、藤沢の刈込オフィスに集まるのは難しくなり、第二期末にはオフィスを都心に近い慶応新川崎タウンキャンパスに移していた。

新たなプロトコルの実装やプロトコルの更新への追随は満足がいく形で達成できた。しかし、BSDあるいは他のアプリケーション開発者が、まったく独自に保守を続けられるという理想の状態を作り出せたとは言いがたい。実際、主要な技術項目のうち、一部はまだBSDへのマージを完了していなかったし、BSD側における新しい活動においても、しばしば core からの助言を求められていた。

この原因となった主な問題点は、IETF において仕様の策定が遅れRFC とならなかった機能、プロトコルが多いこと、そして SSM、ISATAP、VRRP に関しては特許やライセンスの問題が浮上しマージできなかったことである。

第四期

BSD コミュニティが独自にコードを保守できる体制作りと、KAME プロジェクトの完了に向けて、第四期は開始された。ただし、2004年度は新たな機能の実装も継続する。

特許問題に向き合って、いくつかのプロトコルに対する問題を解決し、BSD コミュニティへ公開できた。また、現在は snap に残されている機能を各 BSD へマージする作業に注力している。

今後の展開

 今後 core は、それぞれの興味がある分野で活動していく。IPv6をさらに発展させる応用プロトコルの実装に注力する人もいれば、IPv6活用の場を広げるようなアプリケーション分野に軸足を移す人もいる。もちろん、BSD コミュニティにも深く関わっているので、各 BSD コミュニティの一員として、IPv6 やその他のコードを発展させていくだろう。

成果一覧

 KAME プロジェクトに関係するメンバーが、IETF で議論した成果として、発行された RFC は以下の通り。

3142 An IPv6-to-IPv4 Transport Relay Translator. J. Hagino, K.Yamamoto. June 2001.

3178 IPv6 Multihoming Support at Site Exit Routers. J. Hagino, H.Snyder. October 2001.

3542 Advanced Sockets Application Program Interface (API) for IPv6. W.Stevens, M. Thomas, E. Nordmark, T. Jinmei. May 2003.

3963 Network Mobility (NEMO) Basic Support Protocol. V. Devarapalli,R. Wakikawa, A. Petrescu, P. Thubert. January 2005.

3974 SMTP Operational Experience in Mixed IPv4/v6 Environments. M.Nakamura, J. Hagino. January 2005.

4007 IPv6 Scoped Address Architecture. S. Deering, B. Haberman, T.Jinmei, E. Nordmark, B. Zill. March 2005.

4038 Application Aspects of IPv6 Transition. M-K. Shin, Ed., Y-G. Hong, J. Hagino, P. Savola, E. M. Castro. March 2005.

4074 Common Misbehavior Against DNS Queries for IPv6 Addresses. Y.Morishita, T. Jinmei. May 2005. (Format: TXT=13073 bytes) (Status:INFORMATIONAL)

 KAME プロジェクトに関係するメンバーが、執筆した書籍は以下の通り。

「IPv6 ネットワーク・プログラミング」
萩野純一郎 著、小川彩子 翻訳、アスキー

「IPv6 Network Programming」
Jun-ichiro itojun Hangin, Digital Press

「IPv6網路程式設計」
萩野純一郎、DrMaster

「入門IPv6ネット」
角川、鈴木、大浦、柴田、渡辺著、日経BP社

「IPv6 Advanced Protocols Implementation」(近日発売)
Qing Li, Tatuya Jinmei, Keiichi Shima
Morgan Kaufmann, an Elsevier Imprint

「IPv6 Core Protocols Implementation」(近日発売)
Qing Li, Tatuya Jinmei, Keiichi Shima
Morgan Kaufmann, an Elsevier Imprint

 KAME に関する論文は以下の通り。

"IP トンネルのモデル化と実装"、
山本和彦、
コンピュータ・ソフトウェア、第15巻、第2号、pp. 38 - 47、1998

"移動環境におけるIPv6自動設定機能の効果的な使用法"
神明達哉、伊藤純一郎、角川宗近、
情報処理学会 モーバイルコンピューティング研究会 第7回研究報告会、
1998年12月

"An overview of the KAME network software: Design and implementation of the advanced internetworking platform",
Tatsuya Jinmei, Kazu Yamamoto, Jun-ichiro Hagino, Munechika Sumikawa, Yoshinobu Inoue, Kazuhi Sugyo, and Shoichi Sakane,
in Proceedings of INET99, 1999

"KAMEプロジェクトによるIPv6基本ソフトウェア開発"、
神明達哉、山本和彦、萩野純一郎、江崎浩、村井純、
情報処理 第41巻、第12号、 pp. 1367-1372、2000

"Implementation and Deployment of IPv6 Multicasting", JINMEI Tatuya,in Proceedings of INET 2000, July 2000

"PIMのIPv6対応"、神明達哉、情報処理、第42巻、第8号、pp. 760 - 764、2001

"経路表を利用したIPパケット受信処理"、
神明達哉、尾上 淳、山本和彦、萩野純一郎、江崎浩、村井純、
電子情報通信学会 論文誌、 第J85-B巻、第8号、pp. 1331-1338、2002

"Implementing IPv6: Experiences at KAME Project",
Jun-ichiro itojun Hagino,
IEEE 2003 Symposium on Applications and the Internet (SAINT2003) workshop,
January 2003.

"MLDv2 Protocol Design, Implementation and Evaluation for Source-Specific Multicast over IPv6",
Hitoshi Asaeda, Shinsuke Suzuki,
IEEE 2003 Symposium on Applications and the Internet (SAINT2003) workshop,
January 2003.

"The IPv6 Software Platform for BSD",
Tatuya Jinmei, Kazuhiko Yamamoto, Jun-ichiro itojun Hagino,
Shoichi Sakane, Hiroshi Esaki, and Jun Murai,
IEICE Transactions on Communications, Vol.E86-B, No.2, pp. 464-471,
February 2003

"A method of processing inbound IP packets with a routing table",
Tatuya Jinmei, Atsushi Onoe, Kazuhiko Yamamoto, Jun-ichiro Hagino,
Hiroshi Esaki, and Jun Murai,
Electronics and Communications in Japan (Part I: Communications)
Vol.86, No.9, September 2003.

"次世代インターネットのアドレス管理手法に関する研究"、
神明達哉,
慶應義塾大学 政策・メディア研究科 博士論文、2003年7月

リンク集

・KAME プロジェクト
http://www.kame.net/

・KAME プロジェクト便り
http://www.mew.org/~kazu/kame/

・WIDE v6 WG の歴史
http://www.v6.wide.ad.jp/Events/

前のページ 2/3 次のページ

この記事のトラックバックURL

http://www.ipv6style.jp/trackback/168
Ads by Google

IPv6ブログ