WIDE Technical-Report in 2006 KAME 2005年度 報告書 wide-tr-kame-report2005-00.txt WIDE Project: http://www.wide.ad.jp/ If you have any comments on this document, please contact to ad@wide.ad.jp. Title: KAME 2005年度 報告書 Author(s): 島慶一 (keiichi@iijlab.net) 神明達哉 (jinmei@isl.rdc.toshiba.co.jp) 鈴木伸介 (suz@alaxala.net) 百瀬剛 (momose@az.jp.nec.com) 山本和彦 (kazu@iij.ad.jp) Date: 1/6/2006 1. はじめに KAMEプロジェクトは、IPv6およびIPsecの参照実装をBSD系OS上で開発、フリー ソフトウェアとして公開し、それによってこれらの技術を広く普及させるこ とを目的とした研究開発グループである。本プロジェクトは1998年にWIDE プロジェクト内のIPv6関連研究者によって結成され、その後も一部のメンバ を入れ替えながら活動を継続してきた。 これまでの実装の成果は、BSD系OSへの開発成果のマージも含めて十分な 成功を納めた。また、IPv6の標準化および普及への貢献においてもプロジェ クトの設立時の目的を達成したといえる状況となった。そこで、KAMEプロ ジェクトは2006年3月をもって現状の基本プロトコル成果を完結し、プロ ジェクトとしての開発活動を完了する。 本稿では、今年度大幅に機能が向上したMobile IPv6/NEMO(Network Mobility)の詳細に触れる。また、プロジェクト完了に向けて今年度に注 力したBSDへの移管作業の詳細と、完了後の方向性について述べる。最後 に、8年間を総括した成果についてまとめて説明する。 2. Mobile IPv6/NEMO詳細 2004年12月にSHISAと呼んでいるユーザー空間ベースの新実装を公開後、1 月にTAHI Interop、3月にConnectathonの二つの相互接続試験イベントに 参加して、その相互接続性が良好であると確認した。その結果、設計上の 大きな問題は発見されなかったので、この一年は信頼性の向上、安定化に 注力した。これによって、ホームエージェントとコレスポンデントノード についてはTAHI 仕様適合試験に対する適合性をほぼ満たすようになった。 この一年に導入された大きな機能は以下の通り。 - babymddの導入: 従来使われていた移動検知デーモンmddより単純で実用性 の高い移動検知デーモンとして、単純なmddという意味でbabymddと言う 名前のデーモンを利用するようになった。 - config: 従来はコマンドラインで指定するのみであった各デーモンのパラ メータをファイルを通して設定できるようになった。 - migrateサポート: IKE(Internet Key Exchange)デーモンと移動管理系 デーモン間でトンネルの終端アドレスが変更されたことを通知するた めの仕様(draft-sugimoto-mip6-pfkey-migrate)を実装した。これに よってMobile IPv6 のIPsecをIKEで管理することが可能になった。 - IPv4 Mobile Network Prefixサポート: IPv4の移動ネットワークをNEMO を用いて実現するための仕様(draft-shima-nemo-v4prefix)を実装。 既存のIPv4資産を利用しつつ、基盤ネットワークをIPv6に変更する方 法を提供した。 3. KAMEプロジェクトの完了 1998年4月の発足以来、KAMEプロジェクトが開発してきた実装成果は、BSD系 OS の一部としてIPv6およびIPsecの標準的な実装としての地位を確立するに 至った。一方、こうした直接的な成果の波及効果としてKAMEが取り組んでき たIPv6 の普及にもこの1年で目処が立ったと言える。具体的には、IETFにお ける標準化作業は基本プロトコルについてはほぼ収束し、IPv6の商用サービ スも日本や欧州を中心に立ち上がってきた。 こうした情勢から、KAMEプロジェクトでは、その設立時の目的を十分に達成 したと判断し、2006年3月末をもって基本プロトコル開発グループとしての活 動を完了する。完了に至る最終年度である2005年度は、KAME内で開発済の機 能のうち、標準化および実装状況が安定している部分をBSDにマージするとと もに、完了後のコードの管理体制について各BSDの開発者との合意を形成する ことに注力した。 3.1 各BSDへのマージ作業 2005年は、2006年3月の KAME プロジェクトの完了を目前に控え、これまでに 開発してきた機能を各BSDへマージすることに専念した。マージ対象の技 術および対応するプロトコル仕様は以下の通りである。 近隣探索プロトコル(NDP) draft-ietf-ipv6-2461bis-05.txt (RFC2461の改訂版) draft-ietf-ipv6-rfc2462bis-08.txt (RFC2462の改訂版) IPv6 アドレススコープ機能の拡張 RFC4007 IPv6 拡張(Advanced) API RFC3542 アドレス選択アルゴリズム RFC3484 IGMPv3/MLDv2 RFC3376, RFC3590, RFC3810 Mobile IPv6/NEMO RFC3775, RFC3776, RFC3963 以下に2005年12月現在の各BSDへのマージ状況を示す。 FreeBSD NetBSD OpenBSD --------------------------------------------------- 近隣探索プロトコル 完了 作業中 未着手 IPv6アドレススコープ機能の拡張 完了 作業中 未着手 IPv6拡張API 完了 作業中 未着手 アドレス選択 完了 作業中 未着手 IGMPv3/MLDv2 作業中 未着手 未着手 Mobile IPv6/NEMO 未着手 未着手 未着手 未着手の項目については、それぞれ以下のように対応する予定である。 OpenBSD FreeBSD, NetBSDへのマージ作業完了後に、萩野が中心となり マージを行う Mobile IPv6/NEMO SHISA実装(2節参照)が安定したタイミングでマージを行う NetBSD IGMPv3/MLDv2 NetBSDの他の項目のマージが完了次第、マージに着手する 3.2 開発を他のグループへ委託する機能 KAMEでは、安定した仕様のみならず、未だ積極的に技術仕様の検討が進めら れている先端技術も開発している。これらの技術に関連するコードは、まだ BSDにマージするほど安定していないため、KAMEプロジェクト完了後はWIDEプ ロジェクトの他のワーキンググループで研究開発を継続する。以下に一覧 を示す。 研究開発項目 今後の研究開発グループ ---------------------------------------------------------------------- SCTP/DCCP SCTPワーキンググループ Mobile IPv6/NEMO Nautilus6ワーキンググループ IKEv2 IPsecワーキンググループ DHCPv6 sourceforge.netでWIDE-DHCPv6 projectとして継続 pim6sd/pim6dd sourceforge.netでmcast-tools projectとして継続 4. 8年間の総括 KAME プロジェクトが8年間活動した総括として、実装した機能を解説する。 実装した機能を大別すると以下のようになる。 - IPv6 - IPsec - Mobile IPv6/NEMO - マルチキャスト 以下でそれぞれの機能を説明する。 4.1 IPv6 KAME スタックの前身である Hydrangea を基に各社のコードをマージした。 マージ完了後は、RFC やInternet-Draft を積極的に実装した。実装の範 囲は、基本仕様、自動設定機能、トンネル機能、経路制御機能、スコープ 付きアドレス、API、DHCPv6など多岐に渡る。 BSD に組み込まれた後は、新しい悩みが生まれた。それは、Internet-Draft の改訂で仕様が大幅に変化すると、BSD ユーザを混乱させてしまうことであ る。そこで、原則として、Internet-Draft の段階の仕様を実装したものは snap で公開し、RFC に対する実装のみを BSD へ還元する方針をとった。 4.2 IPsec IPsec コードは、カーネル空間での IPsec そのものの実装とユーザ空間での 鍵交換ソフトウェアに大別できる。我々の IPv4 および IPv6 用の IPsec は、 FreeBSD や NetBSD にマージされている。残念ながら将来我々のコードは、 暗号ハードウェアとの相性がよい OpenBSD 由来のコードで置き換えられるだ ろう。しかしながら、仕様をいち早く実装し、誰でも自由に使え、安定して 動作するIPsecスタックを提供できたことの意義は大きいと言える。 鍵交換ソフトウェアの名前は racoon である。racoon バージョン 1 は、 IKE バージョン 1 をサポートし、BSD のみならず Linux でも採用された。 現在、racoon バージョン 1 は、作者である KAME プロジェクトの手を離れ、 IPsec-Tools として sourceforge.net で保守されている。 一方、WIDE IPsec WG は、現在 racoon バージョン 2 の実装に専念して いる。racoon バージョン 2 は複数のメンバーが協力して開発している。 ポリシーを管理する部分がユーザ空間で実装されていることと、IKE バー ジョン 2 および KINK (Kerberized Internet Negotiation of Keys) の 両方をサポートしていることが大きな特徴である。IKE バージョン 2 は、 相互接続実験で良好な結果を出した。KINK は誰でも自由に使える実装と しては世界初である。Linux を最初からサポートしていることもバージョ ン 1 との違いである。現在、より仕様に忠実となるように、また Mobile IPv6 でも利用可能となるように開発を進めている。 4.3 Mobile IPv6/NEMO 第一期(1998-2000年)は、Ericsson がローダブルモジュールとして開発し た Mobile IPv6 のコードを snap にマージしていた。第二期(2000-2002 年)からは、独自のコードをカーネル空間で開発し始めた。このコードは、 仕様が RFC となるまでに長い時間がかかったため、snap で提供されたの みだった。 現在、慶応大学で独自に Mobile IPv6 の実装を進めていた SFC のメンバー と力を結集して、SHISA というコードを実装している。これは、古いコー ドを置き換えるかたちで snap として公開されている。 SHISA では、移動に関する情報をやりとりする処理をカーネル空間からユー ザ空間へ移した。この処理は仕様でしばしば変更されてきたが、さらなる 変更があったとしても SHISA の方式ではユーザ空間のプログラムを変更 するだけでよい。このため、BSD カーネルへのマージに大きく影響するこ とがなくなった。SHISA は、Mobile IPv6に加え、特許問題を解決した NEMO の実装も含む形で snap として提供されている。現在、SHISA を BSD へマージすることを検討している。 4.4 マルチキャスト IPv4 ではマルチキャスト中継機能が、OS 毎に独立に実装されていた。その ため OS によってサポート状況が異なったり、マルチキャスト対応 OS 間で もAPI が異なったりしていた。こうした統一性のなさが、IPv4 マルチキャス ト普及の足枷の一因になっていた。 KAME プロジェクトでは、IPv6マルチキャスト中継機能および経路制御ソフ トウェアをすべての BSD に共通な形で実装し、すべてのBSD へマージした。 このため、どのBSD でも同じ IPv6 マルチキャスト経路制御ソフトウェア を使用できる。これは IPv6 マルチキャスト普及にとって、大きな前進で あった。 なお KAME プロジェクトの開発したIPv6 マルチキャスト経路制御ソフト ウェアは、現在 SSM(Source Specific Multicast) 機能や Linux のサポー トも含めた形で、sourceforge.net のmcast-tools プロジェクトにて保守 されている。 さらに KAME プロジェクトでは、仏INRIA の NetBSD 向け IGMPv3 ホスト 実装を基に、すべての BSD 向けの IGMPv3/MLDv2 ホスト機能を実装した。 今後この機能を BSD へマージする予定である。 付録 各 BSD マージした日付 KAMEプロジェクト発足時には、BSD系OSを対象とするIPv6の実装としてい くつかの競合相手が存在した。その中から最終的に 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日 Copyright Notice Copyright (C) WIDE Project (2006). All Rights Reserved.