ns-2: 無料だが無愛想なネットワークシミュレータ

有線・無線ネットワークの研究者にとってns-2(オープンソースのネットワークシミュレータ)は値千金のツールだ。ns-2を、私は研究の道程で偶然見つけた。当時、私はネットワークシミュレータを必要としていたが、名の通った本格的なメーカー品が大学になかったので、研究の用途に耐える無料の代替品を探さざるを得なかったのである。ns-2は無料だが、かなり無愛想なツールでもある。

ns-2はREALネットワークシミュレータの変種である。数年越しで拡張が続けられており、完成にはまだ程遠い。DARPA、Xerox、UCB、Sun Microsystemsなど、複数の組織がその開発に参加している。新たな着想を実装前に詳しく調査、分析するネットワークシミュレーションツールを拵えることが開発目標とされている。

元々Linux向けに設計されたソフトウェアだが、Cygwinを使えばWindows XPでも動かすことができる。最新版のns-2.29ではFedora Core 2が推奨されている。だが、Red Hat 9や更にFC4でも使えると思う。ハードウェア要件は厳しくないが、高速のPCなら大規模シミュレーションのとき少しでも時間を節約できるだろう。

インストールはさほど難しくない。ソースコードが解凍できれば誰でもインストールできるはずだ。ns-2のWebサイトから無料でダウンロードできる。ns-2の実行にはコマンドラインを使う。GUIやドラッグ&ドロップ機能は皆無に近い。

このシミュレータ機構では2つの言語を使う。フロントエンドのOTclスクリプトと、バックエンドのC++だ。OTclスクリプトは、ノード、ルータ、リンク帯域幅などのネットワークコンポーネントで構成されるシミュレーションシナリオを作るために使う。OpnetOMNeTといったWindowsシミュレータでは、必要なネットワークコンポーネントをワークスペースにドラッグ&ドロップするだけでシミュレーションシナリオを作ることができる。しかし、ns-2でシミュレーションシナリオを作るためにはOTclの修得が必須で、その壁を何とか越えないとns-2は使いこなせない。

そしてバックエンドにC++が控える。例えば、Mobile IPベースのシミュレーションを作成するときは、関連するMobile IP C++ファイルをOTclコードから作動させる必要がある。OTclコードがC++ファイルにリンクされ、OTclコードを実行すると、そこから呼び出されたC++コードで特定のタスクが遂行されるという仕掛けだ。

シミュレーションの結果は表形式で出力され、これをns-2ではトレースファイルと呼ぶ。開始ノードから終了ノードまで流れていくデータパケットごとにトレースファイル内の1行が生成される。トレースファイルにはデータパケットのあらゆるパラメータ(パケットサイズ、開始時刻、種別、有効期間、開始ノード、終了ノードなど)が記録されるので、ns-2の生成するトレースファイルは膨大なものになる。例えば、2つのノードが関係する120秒のMobile IPシミュレーションを実行したとき、そこで生成されるトレースファイルは軽く100MBを超える。Pentium IIIクライアントで実行したとすると、終了までに45分以上かかるだろう。

これらのトレースファイルから必要な情報を抽出するのがまた面倒である。トレースファイルのデータは表形式で、各欄が空白で区切られている。適当なプログラミング言語を用いて必要なデータだけ取り出すことになる。この空白の処理にはPerlかawkを使うとよい。

ns-2にはXgraphがバンドルされている。データをグラフ化して分析するツールだ。グラフの作成にスプレッドシートを使うこともできる。

限定的ながらns-2でもシミュレーションのアニメーション表示は可能だが、姉妹品のNetwork Animator(NAM)を使う手もある。NAMには、シミュレーションの実行中にアニメーションをグラフィックスとして保存する機能もある。これらのグラフィックスを後でGIFかAVI形式に変換して表示するわけだ。さらに、アニメーションの刻み幅をミリ秒単位で調節する、アニメーションをズームイン/ズームアウトする、アニメーションを一時停止するといったオプションもある。

研究用のツールであるns-2は教育ツールとしても秀逸だ。チュートリアルが組み込まれており、ネットワーク、各種プロトコル、レイヤ機能などの理解を深めることができる。研究の場では、裏で動くC++ファイルにあれこれ手を加える必要があるが、時々それで頭を抱えることがある。ところが、MLによるユーザーサポートがこれまた素晴らしい。質問を投稿すると、たいてい24時間内で答えが返ってくる。私がOMNeTでなくns-2を選んだ理由はこんなところにもある。

最後に一言。ns-2にチャレンジするには根気が必要だ。いろいろ試したり手を加えたり、かなりの手間を覚悟しなければならない。

NewsForge.com 原文