ユーザレベル仮想化による広域分散システム開発の支援 SURANYI Peter (筑波大学) 阿部 洋丈 (JST CREST) 大山 恵弘 (東京大学/JST CREST) 廣津 登志夫 (豊橋技術科学大学/JST CREST) 加藤 和彦 (筑波大学/ JST CREST)  近年,インターネットの一般普及に伴い,P2Pに代表される広域分 散システムが数多く開発されてきている.従来のクライアント・サー バモデルでは一対一通信でデータのやり取りが行われていたのに対し, これらのシステムでは実行しているプログラムが常に数多くのマシン と通信している.しかし,このような広域分散システムの開発は容易 ではない.P2P のようなシステムでは数多くのマシンを持っていなけ れば実用的なテストを行えない.また,動かすことができたとしても, どのマシン同士が通信しているかなどの実行状況が把握しにくい.  広域分散システムのテストに利用できる環境として現在はネットワ ークシミュレータ,仮想マシンや PlanetLab のようなオーバレイネッ トワークが利用されている.これらの環境では,システムの動作確認 は可能なものの,多くの環境については,専用 API を使わなければい けない,オーバヘッドが大きい,または利用できるプラットフォーム が限られているということが問題とされている.また,これらの環境 では通信状況の把握を直接的に支援していない.たとえば,多くのネ ットワークシミュレータではネットワーク通信の可視化を可能にして いるが,これは各パケットの通信経路を追跡するもので,どのノード がどのノードと通信しているかをわかりやすく図示するものではない.  我々はアプリケーション開発を支援するシステムの実現を目指して いる.上述のシステムでは物理層についてしか情報が提供されていな いが,我々は開発を支援するためにはよりアプリケーションに近いレ イヤの情報が必要なケースが多いと考えている.そのため,通信の 「意味付け」を行い,量的のみならず,質的な情報も提供することを 目指している.  今回,ライブラリー置換えによるソケットコールのユーザレベル仮 想化を実現した.本手法では標準のソケット API を利用し,様々な プラットフォームで移植性高く仮想化を行うことが可能である.IP アドレスの仮想化により,一台のマシンで P2P ファイル流通ソフト BitTorrent を40ノード動かし,動作確認をすることに成功した.今 後は接続状況の可視化や通信のプロファイリングを実現したいと考え ている.