ns-3の仕様概要
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/05 07:23 UTC 版)
「ns (シミュレータ)」の記事における「ns-3の仕様概要」の解説
インターネット・プロトコル・スイートのシミュレータとしての実装を主体とする。ns-3はシミュレータであるため、実機実装時の動作に関する保証は不可能である。従って、ns-3が適する用途は、実機と無関係な抽象的な理論検証である。 ns-3のシステムは大きく分けて、シミュレーションの実行を行うns-3 coreと、実験の定義を行うsimulation scenarioに分かれている。ns-3ユーザーは自身のシミュレーションの要求に対する空白部分を埋める形でコーディングし、Wafビルドシステム経由で単一のアプリケーションとしてシミュレータをビルドし、シミュレーションを実行する。ビルド時に出力されるバイナリは、実行環境のCPUに合わせて最適化され、スワップアウト,スワップインが発生しない限りは効率的に動作する。主にC++のソフトウェアフレームワークの形式で構築されており、simulation scenarioの記述時のみPythonを選択することが可能である。Pythonのみではns-3 coreの改変が行えないため、独自プロトコルの実装等は不可能となり、十分にns-3の機能を活用できない。ns-3 coreはC++の演算子のオーバーロード,テンプレートメタプログラミング,Standard Template Library (STL)等の言語仕様を活用して稠密に構築されており、機能の数と比較してソースコードはコンパクトにまとめられている。その反面、文法が独特になり、ソースコードもビルドエラーの出力も長大かつ複雑になり、問題の発生原因の特定が難しくなるため、ソフトウェア開発初心者にとっては開発のハードルが高くなるという欠点が生じてしまっている。また、アルゴリズム,プロトコルの大まかな動作のみに焦点を当てているため、現実のネットワーク機材と比較して実装されていない処理が多い。さらに、クラスや関数の命名には、実装されている機能と全く無関係な命名が行われている場合があり、その不明な点を理解するために、膨大な調査が要求される点も問題である。 C++の言語仕様の制約下で、イベントキューの長さが許される限り、シミュレーション上のネットワークを構成するノード数を増加させることが可能である。 実機とシミュレータの組み合わせで実験ネットワークを構成する事も可能である。 ns-3 coreはユーザー空間とカーネル空間に区別されている。サーバやクライアント等のクラスはユーザー空間で利用する。ルーティングやNIC等のクラスはカーネル空間で利用する。 Linuxで動作するプロトコル・スタックのコードを、ns-3上で利用可能にする機能も提供されている。この機能は、日本人の研究者である田崎創氏が開発してコミットを行っており、Direct Code Execution (DCE)という名称で提供されている。 MPIによるマルチプロセスとしての明示的な並列化も対応済みである。MPIを利用する場合、ns-3ユーザー自身が、ネットワークトポロジを考慮して各プロセスが担当するノードを割り当てなければならない。 シミュレーション結果をアニメーションで可視化する補助ソフトウェアとして、オンラインビジュアライザ(シミュレーション実行中に可視化)であるPyVizと、オフラインビジュアライザ(シミュレーション実行終了後に可視化)であるNetAnimが用意されている。ソフトウェアアーキテクチャにおけるns-2からの根本的な変更に伴い、ns-2に存在したビジュアライザであるNamは互換性が無くなり完全に廃止された。
※この「ns-3の仕様概要」の解説は、「ns (シミュレータ)」の解説の一部です。
「ns-3の仕様概要」を含む「ns (シミュレータ)」の記事については、「ns (シミュレータ)」の概要を参照ください。
- ns-3の仕様概要のページへのリンク