ns (シミュレータ)

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
ns-3 Network Simulator
ns-3 logo
開発元かいはつもと ns-3 Project (Tom Henderson, Mathieu Lacage, George Riley, Mitch Watrous, Gustavo Carneiro, Tommaso Pecorella and others)
初版しょはん 2008ねん6がつ30にち (2008-06-30)
最新さいしんばん
3.31 / 2020ねん6がつ27にち (3ねんまえ) (2020-06-27)
最新さいしん評価ひょうかばん
Mercurial Repository
リポジトリ ウィキデータを編集
プログラミング
言語げんご
C++ (コア)
Python (バインディング)
対応たいおうOS Linux, FreeBSD, macOS,Cygwin
プラットフォーム IA-32, x86-64
サポートじょうきょう 開発かいはつちゅう
種別しゅべつ Discrete Event Network Simulator
ライセンス GPLv2
公式こうしきサイト www.nsnam.org
テンプレートを表示ひょうじ

ns (network simulator略称りゃくしょう由来ゆらい)とは、オープンソース開発かいはつすすめられている、インターネットおも対象たいしょうとした離散りさん事象じしょうネットワークシミュレータ系列けいれつ(ns-1,ns-2,ns-3)の名称めいしょうである。

概要がいよう[編集へんしゅう]

この離散りさん事象じしょうネットワークシミュレータの系列けいれつは、すべ研究けんきゅう教育きょういくのためにもちいられる。ns-3プロジェクトの最終さいしゅうてき目標もくひょうは、コンピュータネットワークにかんする研究けんきゅうのコミュニティないにおいてこのんで利用りようされるオープンシミュレーション環境かんきょう構築こうちくである。この目標もくひょうかんしては、実際じっさいにコンピュータネットワーク分野ぶんやのトップカンファレンスであるACM SIGCOMMへの論文ろんぶん投稿とうこう頻繁ひんぱん使用しようされていることが確認かくにんされているため、ns-3プロジェクトの目標もくひょうおおむ達成たっせいされているとえる。ns-2はアメリカの学術がくじゅつ研究けんきゅう機関きかん中心ちゅうしん開発かいはつすすめられていたが、ns-3はフランスの学術がくじゅつ研究けんきゅう機関きかん中心ちゅうしん開発かいはつすすめられている。また、ns-3ではAnnual Meetingしょうしたns-3の利用りようしゃ開発かいはつしゃ会議かいぎ毎年まいとしおこなわれており、ワークショップとうおこなわれている。ns-3はGNU GPLv2 ライセンスのもとで、無償むしょうでの研究けんきゅう開発かいはつ使用しようみとめられている。コンピュータネットワークシミュレータとしての世界せかいシェアはトップであるが、コンピュータネットワーク関係かんけいしゃ全体ぜんたいれば、ns-3ユーザーはすくなく、ns-3ユーザーからのソースコードのコミットもあまりかんばしくないという状況じょうきょうがある。

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互換ごかんせいくなり完全かんぜん廃止はいしされた。

Annual Meeting[編集へんしゅう]

毎年まいとしアメリカ合衆国あめりかがっしゅうこくにおいて、ns-3コンソーシアム主催しゅさいする、ns-3の利用りようしゃ開発かいはつしゃ対象たいしょうとしたAnnual Meeting開催かいさいされている。おもに、ns-3コンソーシアム運営うんえい方針ほうしんかんする対面たいめんによる会議かいぎや、ns-3初心者しょしんしゃ対象たいしょうとしたワークショップおこなわれている。

2016ねん6月13にち - 2016ねん6月17にちAnnual Meetingアメリカ合衆国あめりかがっしゅうこくワシントンしゅうシアトル設置せっちされているワシントン大学だいがくにおいて開催かいさいされており、会期かいきちゅうもよおしは下記かきのようになっている[1]

  • ns-3 Training
  • Workshop on ns-3
  • Consortium Annual Plenary Meeting
  • Workshop on Wireless Network Performance Evaluation

歴史れきし[編集へんしゅう]

1988ねん (前史ぜんし:REALの基礎きそ開発かいはつ)[編集へんしゅう]

1988ねんに、nsの派生はせいもとたるREALの最初さいしょバージョン開発かいはつされた。

カリフォルニア大学だいがくバークレー(UCB)こうにおいて、Srinivasan Keshavにより、fair queueing Gateway Algorithm [Nag87][DKS88],first-come-first-served scheduling Gateway Algorithm,DEC Gateway Algorithm [RCJ87,RaJ87]の各々おのおの性能せいのう比較ひかくする学術がくじゅつ研究けんきゅう一環いっかんとして、離散りさん事象じしょうネットワークシミュレーションかんする明確めいかくかつ実用じつようてき枠組わくぐみが構築こうちくされた。このシミュレータの詳細しょうさいREAL: A Network Simulatorという論文ろんぶんまとめられて発表はっぴょうされた[2]

REALはREalistic And Largeの略称りゃくしょうであり、コロンビア大学ころんびあだいがく開発かいはつすすめていたNEST simulation toolkitをもちいて構築こうちくされた。REALは最初さいしょ実用じつようてきなネットワークシミュレータとなった。REALの開発かいはつは1997ねんのVer.5.0まで継続けいぞくされ[3]ソフトウェアアーキテクチャはnsの基盤きばんにもなった。

1995ねん - 1997ねん (ns-1の基礎きそ開発かいはつ)[編集へんしゅう]

ローレンス・バークレー国立こくりつ研究所けんきゅうじょ (LBNL) において、Steve McCanne, Sally Floyd, Kevin Fallとう参加さんかするNetwork Research Groupにより、REALで定義ていぎされたソフトウェアアーキテクチャをもとにしてnsの最初さいしょのバージョンである ns version 1 (LBNL Network Simulator) が開発かいはつされた[4]。このバージョンはのちにns-1とばれるようになった。

REALと同様どうように、拡張かくちょう可能かのうで、容易ようい設定せってい・プログラム可能かのうなイベントドリブンがたのシミュレーションエンジンとして設計せっけいおこなわれた。また、TCPの輻輳ふくそう制御せいぎょアルゴリズムとルータスケージュールアルゴリズムを複数ふくすう搭載とうさいした。シミュレーションであつかうネットワークを定義ていぎするシナリオの記述きじゅつ言語げんごがTcl,通信つうしんプロトコルを駆動くどうするコアの記述きじゅつ言語げんごがC++にさだめられた。

1996ねん - 1997ねん (ns-2の基礎きそ開発かいはつ)[編集へんしゅう]

Steve McCanneがns-1のリファクタリングおこなった結果けっかのソースコードをもとにns-2の開発かいはつおこなわれた。シナリオの記述きじゅつ言語げんごがOTcl (Object Tcl),コアの記述きじゅつ言語げんごがC++に変更へんこうされた。シナリオ言語げんごがオブジェクト指向しこう言語げんごあらためられたため、OTclとC++のオブジェクトあいだ関連かんれんせいたせることが出来できるようになった。しかし、ns-1とns-2のあいだでクラスやモジュールの互換ごかんせいたもたれている。また、ns-2でGPLv2準拠じゅんきょするようになった。

2006ねん (ns-3の基礎きそ開発かいはつ)[編集へんしゅう]

ns-2の開発かいはつ開始かいしから10ねん経過けいかする過程かていで、CPUの進化しんかにおいてこうクロックからマルチコアへのパラダイムシフトがき、無線むせんネットワークの普及ふきゅう急速きゅうそくすすはじめた。それにともなって、ns-2のソフトウェアアーキテクチャでは、開発かいはつ当初とうしょ想定そうていしていなかった並列へいれつによるシミュレーション処理しょりのスケールと無線むせんネットワークへの対応たいおうむずかしいという問題もんだいあらわはじめてきた。その2つの問題もんだい対処たいしょするために、アメリカ国立こくりつ科学かがく財団ざいだん (NSF)の支援しえんもとで、Tom Henderson, George Riley, Sally Floyd, and Sumit Royとう先導せんどうするチームにより、ソフトウェアアーキテクチャを全面ぜんめんてき刷新さっしんしたns-3が開発かいはつされた。ns-3では、開発かいはつしゃがOTclとC++ということなるプログラミング言語げんごのオブジェクトあいだ関連かんれんせい意識いしきしなくてむように、シナリオ,コアども記述きじゅつ言語げんごがC++に統一とういつされた。この変更へんこうにより、ns-2とns-3のあいだのクラスやモジュールの互換ごかんせいくなった。また、Gustavo CarneiroによりPythonバインディングとWafビルドシステムが開発かいはつされてあらたに導入どうにゅうされた。さらに、無線むせんネットワークのシミュレーションコードの充実じゅうじつ,MPIによる並列へいれつ対応たいおうおこなわれた。ソフトウェアアーキテクチャの刷新さっしんともない、ns-2まで存在そんざいしたビジュアライザであるNamは廃止はいしされた。そのわりに、シミュレーション実行じっこう終了しゅうりょう出力しゅつりょくされるトレースファイルをんでトポロジじょうにパケットフローを表示ひょうじするオフラインビジュアライザとしてNetAnimが、シミュレーション実行じっこうちゅうにシミュレータの内部ないぶにアタッチし、パケットのながれをトレースしてトポロジじょうにパケットフローを表示ひょうじするオンラインビジュアライザとしてPyVizが用意よういされた。ns-2の時代じだいのドキュメントの不足ふそく反省はんせいし、各種かくしゅドキュメントが拡充かくじゅうされ、Doxygenによりソースコードから生成せいせいされたAPIリファレンス用意よういされるようになった。

以前いぜんのメジャーバージョンであるns-2では過去かこ開発かいはつされた有線ゆうせんネットワークのプロトコルのシミュレーションコードが充実じゅうじつしていた。しかし、最新さいしんのns-3では、ns-2とのクラスやモジュールの互換ごかんせいてて無線むせんネットワークへの対応たいおう強化きょうかしたため、有線ゆうせんネットワークのプロトコルのns-3ネイティブなシミュレーションコードが不足ふそくしている状態じょうたいである。そのため、学術がくじゅつかい全体ぜんたいとしてns-2からns-3への移行いこう難航なんこうしており、ns-2の開発かいはつ停止ていしながらくのあいだ有線ゆうせんネットワークの分野ぶんやではns-2、無線むせんネットワークの分野ぶんやではns-3というじゅうけがつづいている。

依然いぜんとしてns-3の開発かいはつ継続けいぞくされているが、いまだにns-2と比較ひかくして実装じっそうされていないアルゴリズムがおおく、ネットワークの基本きほんてき動作どうさにもバグがおおい(マルチキャスト転送てんそうで、ノードに接続せつぞくされたNICのまいすうばいだけ必要ひつようにパケットを複製ふくせいして送信そうしんするバグが、2016ねん3がつ24にちリリースのns-3.25まで修正しゅうせいされていなかった)。したがって、ns-2と比較ひかくしてシミュレータとしての信頼しんらいせいひく模様もようである。

脚注きゃくちゅう[編集へんしゅう]

  1. ^ https://www.nsnam.org/wp-content/uploads/2016/02/ns-3-2016-save-the-date.pdf, Annual Meeting - ns-3, NS-3 Consortium, 2016ねん02がつ14にち.
  2. ^ Srinivasan Keshav (1988ねん12がつ). “REAL: A Network Simulator”. University of California, Berkeley. 2015ねん12月15にち閲覧えつらん
  3. ^ Srinivasan Keshav (1997ねん8がつ13にち). “REAL 5.0 Overview”. 2015ねん12月15にち閲覧えつらん
  4. ^ Steven McCanne, Sally Floyd, Kevin Fall (1997ねん10がつ27にち). “ns version 1 - LBNL Network Simulator”. 2015ねん12月15にち閲覧えつらん

参考さんこう文献ぶんけん[編集へんしゅう]

関連かんれん項目こうもく[編集へんしゅう]