ネットワークプロトコルの研究ツール

この記事では、クリエイティブ・コモンズの合意の下で配布しました。

研究ネットワークプロトコルは、ネットワークプロトコルエミュレーションが行われる必要がある、その後、NS3とwiresharkのに接触します。
 さて、クローサー家庭に、以下は、NS3の関連知識を紹介し始めました。
1つのNS3はじめに
1.1 NS3の定義記述
NS3は、学術や教育のニーズを満たすように設計された、主に研究と教育に使用される離散イベントドリブンのネットワークシミュレータ、です。

NS3プロジェクトは、2006年に発売し、完全にオープンソースプロジェクトを開発することです。最初のバージョンは、2008年6月にNS-3.15の最新バージョンをリリースしました。

Linuxでは、マックOS、Cygwinの(Windowsの下の模造Linux環境):を含む、NS3適したプラットフォーム、。
異なる1.2ns3とNS2
、NS3はNS2が、新しいシミュレータを拡張しません。
NS2新しい言語のOTclを学ぶために学習プロセスで、C ++とOTclの中で書かれたコードを使用。オプション、ユーザとC ++とPython言語バインディングで記述されたすべてのに使用されるNS3は、より柔軟に使用するC ++やPythonスクリプト言語コードのいずれかを選択することができます。
NS3は、API NS-2のをサポートしていません。NS2一部のモジュールは、NS3が、NS3 NS2遠く完璧からに移植されているが。NS3での開発の過程では、NS3プロジェクトチームはNS2を維持し続けるが、また、移行と統合のメカニズムを研究します。NS3は、すべての機能現在、NS-2が含まれていませんが、それは次のようないくつかの新機能、持っている:IPアドレス指定方式は、より多くの802.11モジュールを詳細に説明し、その上で使用して、右のマルチカード処理を。
1.3 NS-3、より多くのリソースのための方法
、ユーザは以下のWebサイトからNS3に関する詳細な情報を入手することができます
http://www.nsnam.org位置1.メインサイトでは、基本的な情報NS3システムを提供します。
2.http://www.nsnam.org/ns-3-dev/documentation/メインページには、次の情報が含まれます。
チュートリアル:はじめに予備NS-3の知識だけでなく、ダウンロードしてインストールし、使用するのは簡単です。
マニュアル:NS-3の深い知識NS3およびコーディングスタイルを説明します。
モデルライブラリ:発表NS3関連モジュール。ユーザーは自分の実際のニーズを学ぶためのモジュールを選択することができ、あなたはすべてを見てする必要はありません。
3.http:このページ//www.nsnam.org/doxygen/index.htmlは、より詳細な情報NS3システムアーキテクチャを提供します。独自のモジュールを作成すると、クエリ機能、プロパティ、または任意のそのような事のクラスのメンバーは、いつでもこのリンクを使用する必要があります。
4. Wikipediaのページhttp://www.nsnam.org/wikiはNS-3プライマリサイトを補完することができます。
5.ns3ソースコードはhttp://code.nsnam.orgに見出すことができます。読者はまた、現在のNS-3の開発ツリーという名前のNS3-devのソースリポジトリを見つけることができます。それまでNS3リリースとコードの最新テスト版。
2ダウンロードしてインストールし、NS3
、NS3 2.1ダウンロードパッケージを
例として、私たちのUbuntu Linux環境、ダウンロードおよびNS3をインストールすると、インストールが成功したことを確認するために、簡単なスクリプトを実行することもできます。
ダウンロードしたNS3パッケージを格納するための新しいディレクトリです。ディレクトリ名は、自己作成することができます。ns3_installと呼ばれる新しいディレクトリとして:

MKDIRはns3_install

、ns3_installディレクトリを入力ディレクトリにNS3のソースコードの最新バージョンをダウンロードし、解凍します。一例として、ソースコードのNS-3.15バージョンをダウンロードするには、次

のCD ns3_installを

https://www.nsnam.org/release/ns-allinone-3.30.tar.bz2 wgetの

タール-3.30.tar.bz2 XJF NS-allinoneの

解凍NS-allinone-3.30 /ちなんで名付けられたディレクトリ。
2.2コンパイラパッケージNS3
build.py使用してコンパイル2.2.1

最初のコンパイルNS3パッケージは、--enable-テストは全体的にコンパイルするソースコードをダウンロードするためのコマンド./build.py --enable-例をお勧めします。

まず、デコンプレッション上記のディレクトリへのスイッチ:

CD NS-allinone-3.30

、長いとの初めてのコンパイル、スクリプトをコンパイルし始めコンパイルするには、次のコマンドを入力は、もうしばらくお待ちください。

./build.py --enable-例-テストを可能にする

スクリプトがダウンロードNS3をコンパイルを開始コンパイルするとき、あなたは一般的なコンパイラの入力情報の数が表示されます。最後に、コンパイル成功メッセージを参照してください。

(40m30.586s)が正常に完了しました「ビルド」

コンパイルが完了すると、ディレクトリを生成呼ばれるNS-3.30 /電流(NS-allinone-3.30)、ディレクトリ、ディレクトリ変更下

CD-NS 3.30
2.2.2 WAFを使用してコンパイルされた
方法に加えて、上述した、我々はNS3 WAFでソースコードをコンパイルすることができます。WAFをコンパイルする前に、まずWAF理解します。
ソースコードリーダNS3をダウンロードした後、ソースコードの必要性は、実行可能プログラムを生成するためにコンパイルされます。方法のソースコード管理A品種として、ソースコードをコンパイルするためのさまざまなツールがあります。最も一般的に使用されるツールはメイクです。メイクの欠点は、それが最も困難な大規模で高度な設定システムに道をコンパイルすることであってもよいということです。そのため、開発されており、多くの代替ツールがあります。最近、大規模な高度な構成が可能なシステムのコンパイルツールは、主に開発するPython言語を使用することを選択しました。
NS3のビルドシステムはWafのを使用しています。これは、Python開発者のビルド管理システムの新世代です。読者のpythonを習得する必要はありません、あなたは、既存のNS3プロジェクトをコンパイルすることができます。読者は、既存のNS3システムを拡張したい場合は、ほとんどの場合、あなたは、Pythonの非常に少ないと非常に直感的な知識の一部を知っている必要があります。
Wafのについての詳細は、あなたがhttp://code.google.com/p/waf/によって得ることができます。
次に設定するには、このセクションの件名を入力し、WAF NS3は、パッケージをコンパイルし使用を開始。
NS3のソースコードの使用WAFがコンパイルされるとき、それは両方の場合をコンパイルし、デバッグするためにコンパイラの最適化に分けることができます。デフォルトのデバッグをコンパイル。
WAF最適化コンパイラを知らせるために、次のコマンドを実行する必要があります。

クリーン./waf

./waf -d最適化--enable-例のconfigure --enable-テスト

重複コンパイラエラーを防ぐためには、まず、最初のコマンドをもたらす可能性があります空の内容は、以前に(NS-3.30 /ビルド/ディレクトリにあるコンパイルされたコンテンツ)をコンパイル。このコマンドは必要ですが、そうすることは良い習慣ですされていません。あなたが2番目のコマンドを入力した後、システムはコンパイルされ、さまざまな依存関係をチェックを開始し、それをコンパイルします。:あなたは、のような出力が表示できる

プログラムGの確認++:OKは/ usr / binに/ G ++

プログラムのcppの確認:OKは/ usr / binに/ CPPを

OKの/ usr /ビン/ Arは:チェックをArプログラム

プログラムRANLIBの確認:OKは/ usr /ビン/ RANLIB

G ++のためのチェック:OK

..................

正常に終了しました'のconfigure'(2.870s)

最後のステートメントのショーをスムーズにすることをコンパイル。

NS-3のいくつかの特徴は、デフォルトでオンになっていないことに注意することは、コンパイル時に、スムーズに実行できるようにする基盤となるシステムのニーズをサポートしています。たとえば、次のライブラリが見つからない場合xmltoを実行するには、システムは、のlibxml-2.0のライブラリをインストールする必要があり、それぞれの特性NS-3は、メッセージに表示される、活性化されないであろう。ノートへのもう一つのポイント:特定のプログラムのために、あなたがプログラムを設定するには、sudoコマンドを使用する必要があり、このプロパティは非アクティブ表示されますので、これらのプログラムは、デフォルトではオフに設定することができます。

同様に、我々はまた、デバッグコンパイルすることができます(以降の説明の便宜のために、それはコンパイルモードのデバッグコンパイル時間を選択することをお勧めします):

クリーン./waf

./waf -dデバッグのconfigure --enable --enable-例-テスト

パラメータによる加算は- O、コンパイルされたオブジェクトのディレクトリを変更し、デフォルトのディレクトリは/ビルドをコンパイルされています。先のディレクトリを変更するには、次のコマンドでコンパイルされたビルド/デバッグ/

./waf -o -dデバッグビルド/設定--enable-テスト、デバッグ--enable-例

の構成とWAFのコンパイルで利用可能な他の多くのオプションがあります。その他のオプションは、次のコマンドで見ることができます:

--help ./waf
2.3は、コンパイルの正しさをテストします

コンパイルが完了したら、「./test.py -cコア」スクリプトを実行して、NS-3パッケージの正しさをテストすることができ、

./test.py -cコア

これらのテストを並列WAFで行うことができ、あなたが最後を見ることができます結果は次の通りです:

136 139のテストが(0、0のValgrindのエラーをクラッシュ136が渡され、スキップ3、0失敗、)渡された

テスト中に、以下の情報も同様に見ることができます:

Wafの「ディレクトリを入力/ホーム/ ... ... / NS-allinone-3.15 / NS-3.15 /ビルド'

:/home/....../ns-allinone-3.15/ns-3.15/build' Wafのディレクトリのまま'

(1.799s)が正常に完了しました'ビルド」を

PASS:NS3のTestSuite干渉- WiFiの

PASS:テストスイートのIPv4アドレスヘルパー

PASS:TestSuiteのデバイス-WiFiの

PASS:TestSuiteの伝播損失モデル

...

の136の139テスト(136、0、エラーのValgrindを、0が失敗し、3スキップ、渡さ0墜落渡さ。 )

ユーザーは、通常、NS3がコンパイル正しいバンドルを確認するには、このコマンドを実行することができます。
2.4スクリプトを実行します
私たちは通常、スクリプトを実行するWAF使用しています。適切NS3パッケージをコンパイルすると、あなたがプログラムを実行したい場合、あなたは単にWAF後--runオプションを追加することができます。レッツ・ランNS-3環境、プログラム言語を学ぶためのHello Worldプログラムの時間に相当しますで共通こんにちはシミュレータプログラム:

--run ./wafこんにちは-シミュレータ

Wafのは最初、正しくプログラムのコンパイルをチェックするだけでなく、あなたは、再コンパイルする必要があります。このプログラムのWAFの実装は、以下の情報を出力します

こんにちはシミュレータを

あなたは、出力の「Helloシミュレータ」を参照してください。あなたは最適化コンパイラモードで実行されるコンパイラを記述しない場合、デフォルトのコンソール出力によってオフにコンパイラの最適化モード、。以下のコマンドを使用して:

クリーン./waf

./waf -dデバッグ--enable-例のconfigure --enable-テストは、

デバッグモードでコンパイルして再コンパイルします。

今まで、我々は成功したNS3のダウンロードパッケージをコンパイルして、パッケージの正しさを検証し、こんにちはシミュレータのテスト・スクリプトを実行します。あなたは他のツールにプログラムの下でのgdbまたはValgrindのように実行したい場合は、Wikiのエントリを参照してください。
クイックスタート3 NS3
NS3 3.1のいくつかの重要な概念
3.1.1ノードノード
ネットワーク用語では、ネットワークのコンピューティングデバイスに接続された任意のコンピュータは、端末としても知られる、ホストと呼ばれます。NS3は、ネットワークシミュレータではなく、専用のインターネットシミュレータであり、この用語は、インターネットを考えるには余りにも簡単であり、その関連プロトコルので、我々は、用語「ホスト」を避けます。したがって、我々は、グラフ理論から選んだ、この用語はまた、広く、他のネットワークシミュレータに使用される:ノード。
NS3基本的なコンピューティングデバイスは、ノードとして抽象化されます。ノードはC ++で書かれたNodeクラスで記述しました。ノードクラスは、コンピューティングデバイスを管理するための方法を提供します。
種々の機能をコンピュータに追加することができるように、ノードが考えられます。コンピュータが効果的に機能するためには、我々はそれにアプリケーション、プロトコル・スタック、およびその他の周辺機器カードとドライバを追加することができます。この同じモデルを使用してNS3。
3.1.2チャンネル
現実の世界では、人々がコンピュータをネットワークに接続することができます。私たちは通常、ネットワークを介してメディアデータの流れをチャネルと呼ばれます。あなたが壁にイーサネットジャックにケーブルを置くときは、イーサネットチャネルを介してコンピュータに接続されています。NS3にデータ交換チャネルを表すノード・オブジェクトに接続してもよいです。ここでは、基本的な通信サブネットワークの抽象的な概念を説明するチャンネル、C ++で記述されたチャネルタイプと呼ばれています。
チャネル管理クラスは、種々の方法を提供し、サブネットオブジェクト通信ノードがチャネルに接続されています。チャネルクラスは、開発者によってカスタマイズされたオブジェクト指向の方法であってもよいです。チャネルインスタンスはまた、巨大な複雑なイーサネットスイッチ、無線ネットワークと障害物で満たさも三次元空間をシミュレートすることができ、簡単なケーブル(ワイヤ)をシミュレートします。
CsmaChannel、PointToPointChannelとWifiChannelを:この章では、以下を含む、いくつかのチャネルモデルの例を使用します。例えば、シミュレートされたチャネルに対するCsmaChannelチャネルは、キャリアセンス多重アクセス、同様の機能を有するイーサネット(登録商標)チャネルで実施することができます。
3.1.3ネットワークデバイス
は、ネットワークに接続されたコンピュータをしたい場合は、カードをコンピュータにインストールする必要があります。ネットワークカードのソフトウェアドライバがハードウェアを制御する場合は、仕事の欠如ではありません。UNIX / Linuxシステムでは、周辺ハードウエアは以下のように分類されている「デバイス。」ドライバによって制御されるデバイス、およびカードはNICドライバによって制御されています。UNIX / Linuxシステムでは、カードはeth0のような名前を呼ばれています。
NS3において、ネットワーク装置は、組み合わせのハードウェアデバイスおよびソフトウェアドライバの抽象的概念に対応します。NS3シミュレーション環境、ノード、例えばノードと他のノードの通信チャネル上でインストールされたネットワークデバイスに対応します。実際のコンピュータのように、ノードとして同時に複数のネットワーク装置によって、複数のチャンネルに接続することができます。
NetDeviceネットワークデバイスは、C ++でクラスを用いて説明します。NetDeviceクラスは、オブジェクトのチャネルを他のノードに管理及び接続方法を提供し、開発者がオブジェクト指向のアプローチをカスタマイズすることを可能にします。私たちは、現在のコースでは、特定のネットワークデバイスの複数のインスタンスを使用して、彼らはCsmaNetDevice、PointToPointNetDevice、およびWifiNetDeviceです。イーサネットカードが同じイーサネットで動作するように設計されているようにポイントツーポイントチャネル、WiFiチャネルにおけるWifiNetNevice作業における一方PointToPointNetDevice作業、CsmaNetDeviceは、CSMAチャネルで動作するように設計されています。
3.1.4アプリケーション
システムソフトウェアおよびアプリケーションソフトウェア:コンピュータソフトウェアは、一般に二つのカテゴリーに分けることができます。計算モデルシステム、メモリ、プロセッササイクル、ハードディスク、ネットワークなどのコンピュータ資源のソフトウェア構成、および管理。システムソフトウェアは、一般的に完全なユーザータスクにこれらのリソースを使用しません。アプリケーションのニーズは、システムソフトウェアによって制御されるリソースを使用するようにしながら、ユーザーはしばしば、完全に特定のタスクにアプリケーションを実行する必要があります。

一般的には、システムソフトウェアおよびパフォーマンスの変化の特権レベルのためのアプリケーションソフトウェア、およびこの変更の境界は達成するために、自己トラップ機能(オペレーティング・システム・トラップ)のオペレーティング・システムを介してです。NS3およびオペレーティングシステムの本当の概念、および特権レベルやシステムコールの概念。しかし、我々は、アプリケーションの概念を持っています。コンピュータ上で実行されている「現実世界」のアプリケーションがさまざまなタスクを実行すると、アプリケーションNS3シミュレーション環境は、シミュレーションを駆動するためのノードで実行されています。

NS3では、我々は、ユーザプログラムを適用するために抽象化されてシミュレートする必要があります。クラスを記述するためのアプリケーション。このクラスは、ユーザレベルのアプリケーションのシミュレーションを管理するための方法を提供します。開発者は、オブジェクト指向のアプローチを使用して新しいアプリケーションをカスタマイズして作成する必要があります。UdpEchoClientApplicationとUdpEchoServerApplication:このチュートリアルでは、Applicationクラスの2つのインスタンスを使用します。これらのアプリケーションは、クライアント・アプリケーションとシミュレートされたネットワーク内のパケットを送信し、応答するサーバアプリケーションが含まれます。

おすすめ

転載: www.cnblogs.com/evilqliang/p/12488889.html