学生実験(E4-A 通信シミュレーション)
概要
インターネットやLANのようなコンピュータネットワーク上のデータの流れは複雑である.IP層から見たデータの転送にについて言えば,エンドツーエンド(つまりネットワークの利用者間)でやりとりされるデータは宛先の付いた塊り(IPパケットあるいはIPデータグラムと呼ばれる)に分割されてネットワーク上を転送される.この時,単純に一定の長さのパケットが一定間隔で均一な一本道を流れるわけでなはなく,様々な利用者・アプリケーションから発生する様々な長さや間隔のパケットが,様々なトポロジーと特性を持つ通信路上を入り交じって流れていく.
一方,ネットワーク上のエンドツーエンド通信の品質を管理し,利用者が満足する品質(性能・信頼性等)を達成するためには,ネットワーク設備の拡張やデータの流れの制御を行ったりする必要がある.そして,そのために,ネットワーク上の複雑なデータの流れや,それによって引き起こされるネットワーク構成要素(ルータ等)の内部状態(例えば通信路の利用率)を予測あるいは再現することが求められる.もちろん,単純化・抽象化したモデル上での数学的な解析によってデータの流れや内部状態を定性的に把握することができる場合もあるが,一般には,すべてを抽象モデル上の解析によって解決することは難しい.
そこで,ネットワーク上の実際のデータのやりとりの時系列をできるだけ忠実にコンピュータ上で再現し,それによってどういうデータの流れや内部状態が発生しているか,あるいはその結果,最終的に各々のエンドツーエンドの通信の性能がどのようになるかを調べることが必要である.これが,ネットワーク特性・性能の「シミュレーション解析」であり,それを行うためのソフトウェアが「ネットワークシミュレータ」である.
本実験は,フリーのネットワークシミュレータである ns を用いて,最も基本的なシミュレーション解析を体験し,さらにそれによって,マルチメディア通信やその性能に関する理解も深めることを目的とする.
参考リンク
シミュレーション自体を実行するコマンドns及びそのシミュレーション結果をアニメーションで可視化するコマンドnamに関する基本的な情報は以下のURLにある.
- http://www.isi.edu/nsnam/ns/
- http://www.isi.edu/nsnam/ns/doc/
- http://www.isi.edu/nsnam/nam/index.html
- 実験終了後,原則として1週間以内に提出すること.
- 提出してしまうとそのまま成績評価に使われるので,十分に吟味した内容を提出すること.また,明らかに不十分なものは受け付けない場合がある.
- トレースファイルの見方は以下の通り
NS traceファイルのフォーマット例
trace-all コマンドによって指定されたtraceファイルには,イベントログが出力される.1行1イベントで,1行は12個の欄がある.以下は,あるtraceファイルの一部分である.
+ 0.145 0 2 cbr 500 ------- 1 0.0 3.0 9 9
- 0.145 0 2 cbr 500 ------- 1 0.0 3.0 9 9
r 0.148 2 3 cbr 500 ------- 1 0.0 3.0 4 4
r 0.149 0 2 cbr 500 ------- 1 0.0 3.0 7 7
+ 0.149 2 3 cbr 500 ------- 1 0.0 3.0 7 7
- 0.149 2 3 cbr 500 ------- 1 0.0 3.0 7 7
+ 0.15 1 2 cbr 500 ------- 2 1.0 3.0 0 10
- 0.15 1 2 cbr 500 ------- 2 1.0 3.0 0 10
+ 0.15 0 2 cbr 500 ------- 1 0.0 3.0 10 11
- 0.15 0 2 cbr 500 ------- 1 0.0 3.0 10 11
r 0.153 2 3 cbr 500 ------- 1 0.0 3.0 5 5
r 0.154 0 2 cbr 500 ------- 1 0.0 3.0 8 8
+ 0.154 2 3 cbr 500 ------- 1 0.0 3.0 8 8
- 0.154 2 3 cbr 500 ------- 1 0.0 3.0 8 8
+ 0.155 0 2 cbr 500 ------- 1 0.0 3.0 11 12
- 0.155 0 2 cbr 500 ------- 1 0.0 3.0 11 12
r 0.158 2 3 cbr 500 ------- 1 0.0 3.0 6 6
r 0.159 0 2 cbr 500 ------- 1 0.0 3.0 9 9
+ 0.159 2 3 cbr 500 ------- 1 0.0 3.0 9 9
- 0.159 2 3 cbr 500 ------- 1 0.0 3.0 9 9
- 1) イベント種別
- + : パケットをあるリンクへ出るキューへつなぐ
- – : パケットをあるリンクへ出るキューからはずす(=送信)
- r : あるリンクから来たパケットを受信
- d : パケットをあるリンクへ出る前に廃棄する
- 2) イベント発生(相対)時刻
- 3,4) イベント発生リンク(リンク始点及び終点のノード番号)
- 5) パケット種別
- 6) パケット長(バイト)
- 7) TCP関係フラグ(この例では無効)
- 8) IPv6のフロー識別子
- 9) パケットの始点ノード番号.始点ポート番号
- 10) パケットの終点ノード番号.終点ポート番号
- 11) agent依存のフロー内シーケンス番号
- 12) シミュレーション内で一意なパケット識別番号