• 検索結果がありません。

<4D F736F F D B B83578B6594BB2D834A836F815B82D082C88C60202E646F63>

N/A
N/A
Protected

Academic year: 2021

シェア "<4D F736F F D B B83578B6594BB2D834A836F815B82D082C88C60202E646F63>"

Copied!
21
0
0

読み込み中.... (全文を見る)

全文

(1)
(2)

「NS2 による

ネットワークシミュレーション」

サンプルページ

この本の定価・判型などは,以下の URL からご覧いただけます.

http://www.morikita.co.jp/books/mid/084621

※このサンプルページの内容は,初版 1 刷発行当時のものです.

(3)
(4)

まえがき

ネットワークシミュレーション(Network Simulation)はネットワーク技術を研究する基 本的な方法の一つである.新しいプロトコルの開発,評価を行う際に,シミュレーションを 行うことは欠かせない.現在,次世代インターネット向けに,数多くの新しいネットワーク プロトコル,制御方式が提案されている.次世代インターネットのキーテクノロジーの一つ とされているQoS (Quality of Service)制御の分野において,TCPの輻輳制御方式の改善 や,高速ネットワークリンク用の新しいセッション制御方式の開発,QoSルーティング方 式の開発,特に,ユビキタスコンピューティングの基盤である無線ネットワークでのQoS 制御方式の開発など,研究活動は世界範囲で活発に行われている.ネットワークシミュレー ションはこれらの研究活動を支える要件として,日々その重要性が多くの研究者に認められ ている. ネットワークシミュレーションを行う場合,ネットワークのレイヤー構成に従い自前で 特殊なシミュレータを構築する方法と,既成の汎用シミュレータを利用する方法が選択でき る.明らかに,後者の方は開発周期を短縮することができ,共通した評価基準を持つ意味で 有望である. ネットワークシミュレータもさまざまなものがあるが,現在,その中で最も有名なのは, 恐らくOPNETとNSであろう.OPNETはMITにより開発されたもので,簡易なGUI によりあらゆるネットワークの評価を高精度に実現するシミュレーションソフトとして名 が知られている一方,大変高価なソフトとしても一般に知られている.これは製品開発に 裕福な資金力をもつ大企業ならまったく問題視されないが,一般の研究者,または,ネット ワーク技術を学ぼうとする学生諸君にとっては,まさに高嶺の花である.

一方,NS (Network Simulator)は米国DARPAの研究プロジェクトVINT (Visual InterNet Testbed)の研究成果の一つであり,ネットワーク研究者に統一したシミュレー ション環境を提供し,インターネットの新しい技術の研究開発を促進する目的で開発され た完全無料のパブリックドメインの産物である.現在,NSはバージョン2で開発が進めら れ,NS2と呼ばれるようになり,そのソースコードなどがネットワーク上ですべて公開さ れている.機能面では,OPNETのようにネットワークの階層モデルを忠実に再現するこ とを放棄することにより,ネットワーク層,トランスポート層,および無線系ネットワーク のシミュレーションが比較的簡単にできるようになっている. 現在,NS2はネットワーク技術を研究するための基本ツールとして,世界中に多くの研究 者に認知されている.TCPの輻輳制御方式,QoS制御方式,無線通信ネットワーク,セン サーネットワーク,マルチエージェントシステムなどに関連する研究論文のほとんどはNS2 を用いて実験検証が行われている.さらに,ネットワーク関連の教育の補助ツールとして, 欧米をはじめ,世界の一部の国の大学,教育研究機構で利用されるようになっている. しかしながら,システムの煩雑さや,使い方に関するドキュメントの少なさで,初心者

(5)

ii まえがき にとっては,NS2を完全にマスターすることは大変難しいこととなっている.NS2にはマ ニュアルらしきものは付いているが,内容は陳腐で新しいバージョンを反映しておらず,構 成も非常に粗末である.NS2に関する紹介はネットワーク関連の英文書籍からも片鱗しか 見えない. 著者も以前はOPNETのお世話になってきたが,研究予算上の理由で,リッチな生活を 放棄せざるを得なくなり,自由奔放なプアな環境を求め始めていた.また,学生にネット ワーク関連の講義を行う際に,いつも,インターネットの中身をある程度直感的に示せる 手っ取り早いツールがあればと痛感していた.学生のために実験指導書を書いたことが,本 書を著すきっかけとなった. 本書の構成は以下のとおりである. 第1章はNS2でシミュレーションシナリオを記述するために利用されるTcl/OTclの基 本概念,シミュレーションスクリプトの基本スタイル,およびNS2でネットワークシミュ レーションを行うときの基本操作を紹介している.第2章では計10項目の実験を交えて, TCP輻輳制御,キューマネジメント方式,公平性指標などの基本概念を紹介して,シミュ レーションの基本を理解することを目的としている.そして,これらの実験をクリアするこ とにより,TCP輻輳制御の詳細を学び,その問題点を理解する.第3章では,NS2上で独自 のモジュールを実装するために,NS2の内部構成,モジュール開発の基本手法を紹介してい る.主に,新しいキューの作成や,トランスポート層とアプリケーション層の連携に重点を 置き,開発実験を行う.第4章では,QoSトラフィック制御の基本概念を紹介して,サービ スレートの管理とスケジューリングの基本実験,トラフィック調整の実験,Diffsev/Intserv 関連の実験を行う.これにより,QoS制御の内部構造まで覗き,理解してもらう.第5章で はルーティング関連の実験と新しいルーティングアルゴリズムの開発方法を紹介している. 本書に使われているすべてのソースコードと実験結果を解析するツールを森北出版社の Webサイト(http://www.morikita.co.jp/soft/84621/)に公開する. 本書は,大学3年生以上,TCP/IPの基本概念を理解して,C/C++プログラミングの基 本スキルを有するネットワーク層以上のプロトコルを勉強する学生や,新しいプロトコルの 研究開発に従事する大学院生や研究者などを対象にしている.また,本書はネットワーク関 連授業の副教材としても利用できる. 最後に,本書の作成に当たり様々な助言をいただいた広島国際学院大学の鵜根弘行先生, 様々な実験検証を手伝ってくれた研究室の大学院生の棟方雅之氏,ならびに,本書の出版・ 編集に当たり,多大なご尽力をいただいた森北出版の皆様に厚く御礼申し上げる. 2006年9月 著者

(6)

目  次

1章 シミュレーション記述言語とその基本スタイル 1 1.1 Tcl/OTclプログラミングの基本 . . . . 1 1.2 NS2シミュレーションの基本 . . . . 27 第2TCP関連実験 34 2.1 TCP/IPの基本概念. . . . 34 2.2 実験1・Simple TCP Simulation . . . . 46 2.3 実験2・Queue Monitoring . . . . 52 2.4 実験3・Slow Start . . . . 56

2.5 実験4・Exponential Traffic generators . . . . 61

2.6 実験5・Noise Link . . . . 67

2.7 実験6・Multi-Sources Connection . . . . 71

2.8 実験7・Short TCP Connection . . . . 76

2.9 実験8・Global TCP Synchronization . . . . 85

2.10 実験9・Random Early Detection . . . . 89

2.11 実験10・Fairness index . . . 1003章 新しいモジュールの開発 112 3.1 NSの内部世界. . . 112 3.2 OTclとC++の連結 . . . 127 3.3 SimpleEcho . . . 138 3.4 myfifo・新しいキューの作成1 . . . 144 3.5 VirtualQueue・新しいキューの作成2 . . . 151 3.6 新しいアプリケーションの作成 . . . 1594QoSトラフィック制御 180 4.1 サービスレートの管理とトラフィックスケジューリング. . . 180 4.2 トラフィック調整 . . . 195

(7)

iv 目  次 4.3 RED/RIO . . . 199 4.4 DiffServ . . . 208 4.5 IntServ . . . 2365章 ルーティングとルーティングアルゴリズムの開発 253 5.1 NS2でのルーティング . . . 253 5.2 ルーティングエージェントのフレームワーク. . . 262 付録 NS2の環境整備と実験用ソースコード 277 1. NS2のインストールと実験パッケージの設定 . . . 277 2. 解析用ツール . . . 278 3. SimpleRipの実装 . . . 280 参考文献 294 さくいん 295

(8)

一方,第 9 行∼13 行では子クラス Child とそのコンストラクタの定義を与えている.子クラ スのコンストラクタ中で,

eval $self next "Hello, $args"

を利用して,親クラスの同名メソッド,つまり,親クラスコンストラクタを引数付で呼び出し ている. 第 15 行では子クラスのオブジェクトを生成している. このスクリプトを vi などのエディターで作成して,以下のように実行する.表示した結果に より,子クラスのインストラクタ,親クラスのインストラクタの順で実行されている様子が確 認できる. % otclsh classtest.tcl

Child: my args is "This is a test"

Parents: received a greeting message from child "Hello, This is a test"

OTclではこのように,コンストラクタだけではなく,親クラスの同名メソッドを呼び出 す際にeval $self nextを利用すればよい.

プログラミング課題 上記のプログラムを拡張して,孫クラスGrandchildを追加して,コンストラクタで のメッセージの受け渡しを確認せよ.

1.2

NS2 シミュレーションの基本 ここで,NS2の基本的な使い方を紹介する.各命令の詳細については,後述の各章で解 説する,または付録を参照されたい. 1.2.1 NS2シミュレーションスクリプトの基本スタイル まず,NS2でHello World!をしてみよう.NS2には二つの実行モードがあり,それぞれ, インタラクティブモードとバッチモードと呼ばれている. インタラクティブモードでは,NSのプロンプトの下で,命令を一つずつ入力しながら実行 していく.インタラクティブモードでHello World!を以下のように実行することができる. Host% ns

% set ns [ new Simulator ] _o4

% $ns at 1 "puts \"Hello NS2’s World!\"" 1 % $ns at 1.5 "exit" 2 % $ns run Hello NS2’s World! Host% 一方,バッチモードとはOTclの命令をまとめて一つのプログラムに編集しておいて,後 でまとめて実行するモードである.インタラクティブモードに比べ,プログラム単位で実行

(9)

28 第 1 章 シミュレーション記述言語とその基本スタイル

することができるので,大規模シミュレーションを行うときに便利である.バッチモードで Hello World!を実行するプログラムHello.tclは以下のとおりである.

Hello.tcl:

set ns [ new Simulator ]

$ns at 1 "puts \"Hello NS2’s World!\"" $ns at 1.5 "exit" $ns run このプログラムを以下のように実行する. Host% ns Hello.tcl Hello NS2’s World! Host% OTclを用いてNS2でシミュレーションのシナリオスクリプト(これから単にシナリオと 略す)を作成する際に,以下のような基本スタイルが一般的に利用されている.  ・ Simulatorクラスのオブジェクトの生成.  ・ ネットワークトポロジーの定義.  ・ トラフィックエージェントとアプリケーションの定義.  ・ トレース内容の定義  ・ 後処理部(finishプロシージャ)の定義.  ・ シミュレーションの開始 具体的には,図1.1のようになる. 図 1.1 NS2 シミュレーションプログラムの基本スタイル 1.2.2 ネットワークトポロジーの生成 シナリオを作成するときに,ネットワークのトポロジーを生成しておく必要がある.NS2 ではネットワークのトポロジーがノードとリンクの集合で定義される. OTclスクリプトでトポロジーをセットアップする前に,以下の命令で新しいSimulator

(10)

のオブジェクトを作っておく必要がある. set ns [ new Simulator ]

Simulatorはクラスであり,そのメンバ関数を利用すれば,ノードやリンクなどを生成す ることができる.nsはSimulatorのオブジェクトハンドラ(instance)である. ■ ノードの作成 ネットワークノードのオブジェクトは以下のように作ることができる. set n0 [$ns node] set n1 [$ns node] nodeはクラスSimulatorのメンバ関数である.上記の命令は二つのノードを作成し, 各ノードのハンドラをそれぞれn0, n1にしている. ■ リンクの作成 二つのノードn0,n1間のリンクを以下のように作成する. $ns duplex-link $n0 $n1 10Mb 10ms DropTail  ここで,duplex-linkが全二重リンク(双方向)を意味している.全二重方式の他 に,simplex-linkを指定することにより,半二重リンクの指定もできる.10Mbはリ ンクの帯域幅,10msはリンク遅延である.DropTailはリンクキューの制御方式で, この場合,「キューが満杯になったとき,最後に到着したパケットを捨てる」という 方式を指定している.  リンク属性を指定する際に,キューの長さ(Queue),遅延値(Delay),TTL値の 指定もできる.たとえば,リンクのキューの長さを20パケットに指定する場合,以 下のようにすればよい. $ns queue-limit $n0 $n1 20 1.2.3 トラフィックエージェントとアプリケーションの定義 トラフィックエージェントとアプリケーションの定義部では,トラフィックのソース(トラ フィックの始端),シンク(トラフィックの終端)の属性,たとえばTCP,UDP, FTP, TCPSink などを指定する. ■ ノードn0からノードn4へのTCPトラフィックを指定するときに,以下のように,ま ず,エージェントタイプ(フロータイプ)を指定してノードに付け加える.次にフロー エージェントを接続する必要がある.

set tcp [ new Agent/TCP ] ;# TCPオブジェクトの生成 $ns attach-agent $n0 $tcp ;# n0に属性付けをする

(11)

112

CHAPTER

3

新しいモジュールの開発

  NS2 の既成モジュールを利用して TCP などの基本プロトコルの検証はで きるが,NS2 のトレース機能で提供していない一部の特別の変数のトレースや, 新しいプロトコル,アルゴリズムなどを開発する場合,NS2 における独自のモ ジュールの作成方法を知っておく必要がある.本章からは,NS2 の内部へ少し 踏み入れ,NS2 の基本モデルを勉強した後,独自モジュールの開発実験を行う.

3.1

NS の内部世界 今までの実験でわかってきたように,NS2を利用してネットワークシミュレーションを 行う場合,以下の基本事項を理解しなければならない.次項より順に説明する. NS2のレイヤー構成(layer structure)

・ 離散型イベントスケジューラ(discrete event scheduler) ・ ネットワークトポロジー(network topology) ・ ルーティング(routing) ・ トランスポート(transport) ・ アプリケーション(application) ・ パケットフロー(packet flow) ・ パケットフォーマット(packet format) 3.1.1 NS2のレイヤー構成 NS2ではネットワークモデルのレイヤー構成に関する厳密的な定義がないようであるが, 新しいエージェントやアプリケーションを開発するときに,意識する必要がある. OSI参照モデルとTCPに比較して,NS2のネットワークモデルおおまかな階層分けを 図3.1に示す. NS2のネットワークモデルはシナリオスクリプトの書き順に沿って考えればよい.図3.1 に示すように,NS2の場合,下からノード・リンク層,エージェント層,アプリケーショ ン層の3層構造になっている.

(12)

ノード・リンク層はOSIのデータリンク層以下の2層に対応される.OPNETのよう なプロセスモデルがないため,この層の新しいモジュールを開発するためには,既存のモ ジュールから継承するか,改めて自分で定義しなければならない.ノードモデルには上位層 を識別するためのポート分類機構,と自分のアドレス(ノードID)を識別するためのアドレ ス分類機構を持っている. エージェント層はOSIのトランスポート層とネットワーク層の機能を果たす.この層の プロトコルをノードリンク層に関連付けを行う場合,シナリオスクリプトで該当するオブ ジェクトを下位層のノードオブジェクトにattach-agentで装着する必要がある. アプリケーション層では,FTP,CBR,Telenet,HTTPなど,さまざまなフロータイ プを定義しており,利用する際に,該当する下層プロトコルにattach-agentで装着する必 要がある.新しいアプリケーションを開発する場合,アプリケーション層とエージェント層 とのインターフェースを理解する必要がある. 図 3.1 NS2 のレイヤー構成 3.1.2 離散型イベントスケジューラ NS2はイベント駆動型ネットワークシミュレータである.離散型イベントスケジューラ はシミュレーションを行う際に,特別な実行結果のトレースや,アプリケーションの開始時 間,終了時間を制御するためのもので,その内部構成の一例を図3.2に示す. NS2ではリアルタイム型と非リアルタイム型イベントスケジューラを提供している.非 リアルタイム型イベント処理を行うために,論理上で等価する3種類(list, heap, calendar) のスケジューラが用意されている.calendarスケジューラはデフォルトである.リアルタ イム型イベントスケジューラは現在開発中で,将来,実際のネットワーク状態をエミュレー ションするために使われる予定である.

イベントスケジューラを選択するには以下のようにする. …

set ns [new Simulator] $ns use-scheduler Heap …

(13)

114 第 3 章 新しいモジュールの開発 図 3.2 離散型イベントスケジューラ NS2のイベントスケジューラの中で最もよく使われているのは,アプリケーションの開 始・終了時刻の管理である.イベントスケジューラのオブジェクトにはスケジューリング関 数を持っている.指定した時刻timeで,あるイベント”string”を生成したいときに, footnotesize at time "string" のようにすればよい.このように生成されたイベントはAtEventと呼ばれる.AtEventは Eventの子クラスであり,親から継承したものの他に,与えられた”string”を保持するため の変数を追加定義している.イベントスケジューラの中でAtEventは標準のEventクラス と同じように扱われている. シミュレーションを開始した後,イベントの生起時刻になると,AtEventがすべての AtEventを処理するAtEvent handlerに転送され,イベント”string”により指定された命 令を処理する.以下は実際の使用例である.

使用例

set ns [new Simulator] $ns use-scheduler Heap $ns at 100.1 "exec_my_proc" … proc exec_my_proc { } { … }

この例の中で,at 100.1 ”exec my proc”はSimulatorのオブジェクト(set ns [new Sim-ulator])のメンバ関数の一つに過ぎない.一般によく利用されるメンバ関数を以下のとおり

(14)

である.

Simulator instproc now スケジューラの現在時刻を返す Simulator instproc at args 指定した時刻に指定した命令を実行する Simulator instproc at-now args 指定した命令をすぐ実行する

Simulator instproc after n args 指定した命令を n 秒数後に実行開始する Simulator instproc run args スケジューラを開始する

Simulator instproc halt スケジューラを停止 (一時停止) する

3.1.3 ネットワークトポロジーの構成要素 ここではNS2のネットワークトポロジーの主な構成要素を紹介する. 図3.3にはNS2のOTclのコンポーネント木を示している. 図 3.3 NS2 のクラスの階層構造 NS2のOTclのコンポーネント木の階層構造はTCLObjectクラスから始まり,ネット ワークの構成要素のオブジェクトのライブラリで構成されている.TCLObjectクラスの継 承クラスとして,NsObjectは他のすべてのネットワーク基本構成要素(nodeやlinkなど) の親クラスになる.

NsObjectは出力するデータのパス本数により,二つのサブクラスConnectorとClassifier に分かれる.Connectorクラスは出力データパスが1本しかないネットワークの基本オブ ジェクトの親クラスであり,スイッチオブジェクトのような複数の出力データパスを有する オブジェクトはClassifierクラスの管轄下におかれている.

■ノード(node) nodeは複合オブジェクト(compound object)であり,ノードへの

入り口(node entry)オブジェクトと分類機構(classifier) を持っている.NS2には2種類 のノードモデルを持っており,それぞれユニキャスト(unicast)ノードとマルチキャスト (malticast)ノードと呼ぶ(図3.4).

ユニキャストノードには一つのアドレス分類機構(address classifier)と一つのポート分 類機構(port classifier)を持っている.マルチキャストノードにはこれらに加え,もう一つ

(15)

180

CHAPTER

4

QoS

トラフィック制御

  QoS(Quality of Service, サービス品質) に関する研究は 1980 年代初期 まで遡る.QoS とは,ネットワーク上で,ある特定のフローのための帯域を予 約し,一定の通信速度,またはレスポンスタイムを確実に保証する技術である. 本章では,まず,QoS の基本要件であるサービスレート管理とトラフィックス ケジューリング,フロー調整,および,バッファーの管理技術を詳解して,関 連する実験を行う.次に,QoS 技術の代表格である DiffServ と IntServ の 基本概念を勉強して,内部構造を理解するための基本実験を行う.

4.1

サービスレートの管理とトラフィックスケジューリング 複数の入力フローを1本の出力リンクで送出するルータ,またはゲートウェイの場合,出 力リンク上で各時刻において1個のパケットしか処理できないので,入力フローをキュー に待機させる必要がある.そして,キューから各フローのパケットを一定の順番で取り出 すアルゴリズムが必要である.このアルゴリズムをスケジューリングアルゴリズム(または キューイングアルゴリズム)と呼ぶ. QoS制御を考える場合,スケジューリングアルゴリズムは各フローのサービスレートに 合わせて送出パケットを多重化1)して,順次出力リンクに乗せていく必要がある. インターネット上で利用される代表的なスケジューリングアルゴリズムとして,FIFO (First In First Out),RR (Round Robin scheduling),PRI (Priority scheduling),CBQ (Class Based Queuing),WFQ (Weight Fair Queuing)などがある.

キュー内で処理待ちのパケットのことを通常バックログ(backlog)と呼ぶ. すべての入力フローに十分なバックログが存在する場合に,そのフローに割り当てられ た出力レートを通常サービスレートと呼ぶ. 本節では,これらのスケジューリングアルゴリズム方式について考える. 1)多重化:送出する複数のパケットを時間的に 1 列のパケット列に整形することである.時間軸を 分割して,分割された時間間隔をタイムスロット (Time Slot) と呼ぶ.各タイムスロットで 1 個のパ ケットのデータを送出することである.

(16)

4.1.1 FIFO (First In First Out) FIFOの場合,フローの到着順に従い出力リンクに出力するので,各フローの出力レート はその入力レートに比例することになり,サービスレートは入力レートに比例した値のな る2).到着順に従い送出されるので,先着のサイズの大きいフローに対して優先的にサービ スする,いわゆるアンフェアネス性を持つ. NS2ではFIFOキューとして,DropTailを提供している.

4.1.2 RR (Round Robin Scheduling)

RRでは,到着フローを順繰りにサービスを割り当て送出する.フォロー数n,1回で送 出するパケットのサイズが一定長で,sj (j = 1,· · · , n)とした場合,サービスレートρjは パケットサイズに比例して, ρj= sj n  j=1 sj , for j = 1, 2,· · · , n (4.1) になる. たとえば,出力の帯域幅100 Kbps,パケットサイズがそれぞれ64 byteと2000 byteの 2種類のフローに対してサービスを行う場合,それぞれのサービスレートは3.1 Kと96.9 Kとなる. 一方,パケットサイズが可変長の場合,以下のような不足ラウンドロビン(dRR:dificit Round Robin)スケジューリングアルゴリズムがある. dRRでは,各フローjにそれぞれ不足カウンタcounterjを設け,順繰りで送出する順番 がjに廻ってきたとき,送出できるデータの長さをcounterj以下になるようにする.具体 的には,以下の手順でスケジューリングを行う.

dificit Round Robin Scheduling

(ⅰ) フロー j (j = 1, 2,· · · , n) に対して,counterjの初期値を counterj(0) = ρj¯sにす る.ここで,¯s は 1 ラウンドあたりで送出されるパケット平均サイズである. (ⅱ) RR 法で各フローに対して以下の (ⅲ),(ⅳ) を実行する. (ⅲ) ラウンド t において,フロー j のデータを送出する場合,合計サイズが counterj(t) 以下になるように,できるだけ送出する.sj(t)≤ ounterj(t)の場合,送出後, counterj(t) = counterj(t)− sj(t) (4.2) にする. (ⅳ) 次のラウンドのために,不足カウンタを以下のように修正する. counterj(t + 1) = counterj(t) + ρj¯s (4.3) このアルゴリズムからわかるように,dRRでは,フローjに対して,各ラウンドにおい 2)これはバックログ存在し,スケジューラが常に稼動していることを前提にしている.

(17)

182 第 4 章 QoS トラフィック制御 て平均的にρj¯s分のデータを送出する.実際のパケットサイズがρj¯sの整数倍でなくても, 不足分(送り残した分)が次のラウンドに持ち越せるようになっている. 図4.1にdRRの例を示している.この例では,二つのフローのサービスレートをそれぞ れρ1 = 0.6ρ2= 0.4,平均パケットサイズを200 byte,各フローのパケットサイズをそ れぞれs1= 56 byte,s2= 128 byteとしている. t1 t2 t3 t4 t5 t6 t7 t8

Round1 Round2 Round3 Round4 flow1

flow2

120 128 136 144 152

80 160 112 192 144 56byte 128byte ρ1= 0.6, ρ2 = 0.4, mean pkt size = 200byte

t1 t2 t3 t4 t5 t6 t7 t8

Round1 Round2 Round3 Round4 flow1

flow2

120 128 136 144 152

80 160 112 192 144

t1 t2 t3 t4 t5 t6 t7 t8

Round1 Round2 Round3 Round4 flow1

flow2

120 128 136 144 152

80 160 112 192 144 56byte 128byte ρ1= 0.6, ρ2 = 0.4, mean pkt size = 200byte

56byte 128byte

56byte 128byte ρ1= 0.6, ρ2 = 0.4, mean pkt size = 200byte

図 4.1 不足ラウンドロビンの例 図の中の数値はその時刻での各フローの不足カウンタの値である. NS2ではdRRを提供している.dRRを利用する際に以下のパラメータが指定できる. buckets: キューに通すことを許可されるフローの数(nのこと). blimit: キューバッファ全体の最大サイズ(バイト).NS2のdRRではすべてのフロー が同じバッファーを共有する. quantum: 各ラウンドで各フローが送信できるバイト数(¯sのこと). mask: 1に設定した場合,あるフローが同じノードIDを持つパケットだけ(ポート IDが異なっても構わない)で構成さていることを示す.0に設定した場合,あるフ ローが同じノードIDとポートIDを持つパケットだけで構成さていることを示す. dRRの実験シナリオスクリプト例を以下に示す. ソースコード:simple-dRR.tcl 1 # n2(UDP,CBRx3, interval:20ms,4ms,2.5ms) 2 # \ 3 # \10M 4 # n0 --- n1(Null:lm0) 5 # / (1M, dRR: blimit=25000, quantum=500,buckets 7) 6 # / 10M 7 # n3(UDP, CBRx3, interval:2.5ms,4ms,20ms) 8

9 set ns [new Simulator] 10 11 set n0 [$ns node] 12 set n1 [$ns node] 13 set n2 [$ns node] 14 set n3 [$ns node] 15

16 set tf [open drr-out.tr w] 17 #$ns trace-all $tf

18

(18)

さくいん

英・数 3 wayハンドシェーク 239 PT CONFIRM 240 PT REPLY 239 PT REQUEST 239 PT TEARDOWN 240 AQM 85 CBQを利用する 185 bind 187 new CBQClass 185 insert 187 install-queue 186 setparams 185 リンク共有木の構築 185 CBR 47 Classifier 115 DiffServ QoSサービス 確実転送型 (AF) 210 急行転送型 (EF) 210 DiffServe QoSサービス 208 DiffServコードポイント 209 DiffServドメイン (DS ドメイン) 209 DSCP 209 dsRED/coreキュー 216 dsRED/edgeキュー 216 DS動作集合 210 duplex-intserv-link 244 ECN 94 elephants 78 fairness index 100 fast retransmit 40 getAverage 218 implicit ACK法 40 InteServ QoSサービス 236 Guaranted Service 236 Controlled Load Services 236 負荷制御型 IntServ 236 保証型 IntServ 236 IntServのサービス仕様 236 IntServ拡張リンク 240 IP 44 TOS 45 サービスタイプ 45 識別子 45 生存時間 46 バージョン 44 パケット長 45 ヘッダ長 45 mice 78 PDU 44 PHB 210 PHBコードポイントの定義 217 addPHBEntry 217 printPHBEntry 218 printStats 218 PQM 85 RED 90 REDのパケット破棄 91 REDのパラメータ 93 REDの輻輳検出 91 REDの平均キューサイズ 92 repeated ACK 40 RIO 199 ttach-tagger 206 INパケット 200 maketbtagger 206 OUTパケット 200 set priority method 200 set-flowrate 207 トークンタガー 206 プライオリティマーキング法 200 RSVP 236 RTT 38, 40 sched-stop 245 SimpleIntServ 244 trace-sig 249 trace-util 249 TCP 35 3 wayハンドシェイク 37

(19)

296 さくいん あて先のポート番号 36 ウィンドウサイズ 37 確認応答番号 36 コネクション 37 シーケンス番号 36 スライディングウィンドウ制御方式 39 制御フラグ 36 接続 37 送信元のポート番号 35 ヘッダ構成 35 ヘッダ長 36 tspec 196

TSW (Time sliding Window) 211 UDP 42 あて先ポート番号 43 送信元ポート番号 43 チェックサム 43 データグラムのサイズ 43 和 文 アクティブキューマネジメント,AQM 85 一様分布乱数 72 イベントスケジューラ 113 インタプリタクラス 130 ウィンドウの閾値 41 受付けアルゴリズム 242 ACTO 243 ACTP 242 Hoeffding bounds, HB 242 Measured Sum,MS 242 計測合計アルゴリズム 242 始点受理域接線法 243 ピーク受理域接線法 242 受付制御機構のパラメータ 245 受付制御モジュール 242 エラーモデル 68 エラーモデルのパラメータ 68 エンドツーエンドシグナリング制御機構 239 トレースオブジェクト付リンク 116 カプセル化 44 観測効用値 243 キューイングアルゴリズム 180 CBQ 180, 184 dRR 181 FIFO 180 FQ 189 Max-Min法 189 PRI 180 RR 180 WFQ 192 キュー溢れ問題 86 キューモニターオブジェクト付リンク 117 キュー管理方式の定義 configQ 220 setMREDMode 220 キューイング方式の指定 221 キューイング方式の指定-PRI 221 キューイング方式の指定-RR 221 キ ュ ー イ ン グ 方 式 の 指 定-WIRR 221 キューイング方式の指定-WRR 221 廃棄方式の指定 220 廃棄方式の指定-DROP 220 廃棄方式の指定-RIO-C 220 廃棄方式の指定-RIO-D 220 廃棄方式の指定-WRED 220 出力キューのスケジューリング方式 221 キューモニター 53 境界ルータ 211 キューマネジメント機構 216 フロー分類機構 211 計測機構 211 整形機構 216 マーキン機構 212 計測アルゴリズム 240 Exponetial Average 241 PointSample 241 Time-Window 241 計測機構のパラメータ 245 公平性,fairness 100 公平性指標,fairness index 100 告知ウィンドウ 41 コンパイラクラス 130 サービスレート 180 指数分布乱数 72 ジッタ 38, 46 実効用値 243 写像オブジェクト 130 推奨コードポイント 211 スケジューリングアルゴリズム 180 ストリーミングサービス 35 スラック 236 スロースタート閾値 41 スロースタートプロセス 41 スロットインデクス 122

(20)

スロット番号 121 正規分布乱数 72 セグメント化 45 セッションの記録 79 セッション終了のチェック 80 接続型サービス 34 全 2 重サービス 35 スロースタート 41 大域同期問題 86 帯域ブローカー 209 タイムスロット 180 定常分布乱数 73 デカプセル化 44 デッドロック問題 86 トークンバケツ 196 トークンバケツ法の実装 attach-tbf-agent 198 set bucket 198 set qlen 198 set rate 198 トークンバケツ法の実装 197 トラフィックコンディショニング 216 トラフィックシェーピング 195 トラフィックジェネレータ 62 トレース情報 49 トレースファイル 49 ノードオブジェクト 117 廃棄処理優先度の指定 219 addPolicerEntry 219 パケットフォーマット 126 パーシブキューマネジメント,PQM 85 バックログ 180 パレート分布乱数 72 非接続型サービス 34 複合オブジェクト 115 複数のソース・シンクの扱い方 73 輻輳回避 41 輻輳回避プロセス 42 輻輳制御 39 輻輳通知方式,ECN 94 輻輳窓 39 輻輳窓のサイズ情報 57 輻輳窓の動的制御 41 フロー記録用プロシージャ 64 フロースペックの記述 218 フロー定義用プロシージャ 63 フローモニタ 102 プロトコルデータユニット 44 分類機構 115 アドレス分類機構 115, 122 ハッシュ分類機構 123 複製機構 123 ポート分類機構 115, 122 マルチキャストアドレス分類機構 116, 122 マルチパス分類機構 123 ペイロード 44 ポリシーマネジャー 209 マーキン機構 TRTCM 214 TSWTCM 212 マーキング機構の定義 219 addPolicyEntry 219 マーキン機構 SRTCM 213 乱数ジェネレータ 72 リカバリープロセス 42 リーキバケツ 195 リンクオブジェクト 117 損失モニター 63

(21)

NS2 によるネットワークシミュレーション © 銭 飛 2006 2006 年 11 月 15 日 第 1 版第 1 刷発行 【本書の無断転載を禁ず】 著  者 銭 飛 発 行 者 森北 肇 発 行 所 森北出版株式会社 東京都千代田区富士見 1-4-11(〒 102-0071) 電話 03-3265-8341 / FAX 03-3264-8709 http://www.morikita.co.jp/ 日本書籍出版協会・自然科学書協会・工学書協会 会員 JCLS 〈(株)日本著作出版権管理システム委託出版物〉 落丁・乱丁本はお取替えいたします 印刷 / モリモト印刷・製本 / ブックアート

Printed in Japan/ ISBN4-627-84621-5 1991 年 千葉大学大学院自然科学研究科生産工学専攻 博士課程修了 1991 年 広島国際学院大学電子工学科講師 1995 年 広島国際学院大学情報工学科助教授 2000 年 広島国際学院大学情報工学科教授 2004 年 関東学院大学工学部電気電子情報工学科教授  現在に至る

図 4.1 不足ラウンドロビンの例 図の中の数値はその時刻での各フローの不足カウンタの値である. NS2 では dRR を提供している. dRR を利用する際に以下のパラメータが指定できる. buckets : キューに通すことを許可されるフローの数 (n のこと ) . blimit : キューバッファ全体の最大サイズ ( バイト ) . NS2 の dRR ではすべてのフロー が同じバッファーを共有する. quantum : 各ラウンドで各フローが送信できるバイト数 (¯s のこと ) . mask :

参照

関連したドキュメント

  BCI は脳から得られる情報を利用して,思考によりコ

2021] .さらに対応するプログラミング言語も作

本節では本研究で実際にスレッドのトレースを行うた めに用いた Linux ftrace 及び ftrace を利用する Android Systrace について説明する.. 2.1

特に, “宇宙際 Teichm¨ uller 理論において遠 アーベル幾何学がどのような形で用いられるか ”, “ ある Diophantus 幾何学的帰結を得る

ヒュームがこのような表現をとるのは当然の ことながら、「人間は理性によって感情を支配

FSIS が実施する HACCP の検証には、基本的検証と HACCP 運用に関する検証から構 成されている。基本的検証では、危害分析などの

既に使用している無線機のチャンネルとユーザーコードを探知して DJ-DPS70 に同じ設定をす る機能で、キー操作による設定を省略できます。子機(設定される側)が

戦略的パートナーシップは、 Cardano のブロックチェーンテクノロジーを DISH のテレコムサービスに 導入することを目的としています。これにより、