LoginSignup
12
4

More than 3 years have passed since last update.

ns3を扱うための概念について

Last updated at Posted at 2019-06-26

本記事の注意

本記事は初学者向けに書いているため、誤った表記があるとは思いますが、わかりやすさを優先しているためこのようにしています。
ご了承ください。

ns3とは

ns3とは離散型のネットワークシミュレーターである。
ns3のプログラムを作る上で重要な要素がいくつかある。

ネットワークの通信には、TCP/IPやOSI参照モデルなどの概念が存在しているが、ns3もそれらの概念を取り入れている。たぶんだが、TCP/IPモデルが近い。
ns3ではコンテナのように組み合わせてプログラムを作成していく。
ns3は主に4つのコンテナが存在している
1. NodeContainer
2. DeviceContainer
3. InterfaceContainer
4. ApplicationContainer


これら4つは4つで一つのものであることを忘れないように!

これらの4つ一つ一つに、補助をするhelperと呼ばれるパーツが存在している。

1. NodeContainer

NodeCountainerは扱うノードが何であるかを示すもの!
例えば?
PCなのかスマートフォンなのかルータなのかなど

実際にPCノードを2台生成してみよう。

Node
NodeContainer pc_nodes; //pc_nodesの部分は自由に決めれる
pc_nodes.create(2); //2台のpcを生成している

2. DeviceContainer

DeviceContainerはノードが持っている通信機能はなんであるかを指定するためのもの!
例えば?
イーサネットなのかWiFiなのかBluetoothなど

実際にPCノードにイーサネット機能を付与してみよう!

Device
NetDeviceContainer pc_devices; //pc_nodesのためのデバイスを作成
PointToPointHelper pointToPoint; //イーサネットに決定
pc_devices = pointToPoint.Install (pc_nodes); // PCノードに機能を追加

3. InterfaceContainer

InterfaceContainerはみんなが使っているWIFIやスマートフォンのセルラー回線にはそのネットワークのデバイス(部品)ごとにIPアドレスって呼ばれる番号が付与するためのもの

実際にPCノードに付与されたデバイスにIPアドレスをつけてみよう

Interface
Ipv4InterfaceContainer interfaces; //pc_deviceのためのインターフェースを作成
InternetStackHelper stack; //後日記入
stack.Install (nodes); //後日記入
Ipv4AddressHelper address; //アドレスの設定をするための部品を生成
address.SetBase ("10.1.1.0", "255.255.255.0"); //アドレス空間を10.1.1.0~10.1.1.255に※設定サブネットマスクの設定が"255.255.255.0"であるため
Ipv4InterfaceContainer interfaces = address.Assign (pc_devices); //pc_deviceにIPアドレスを付与

4. ApplicationContainer

ApplicationContainerは、シミュレーションがどんな通信をするのかを設定するためのもの!
例えば?
AさんはUDP通信でBさんのpcへ通信したいなぁみたいな感じ!

実際にAさん(ノード番号0)はBさん(ノード番号1)に通信してみよう

Application
ApplicationContainer apps; //通信シナリオを作るためのアプリケーションを作成
OnOffHelper onoff ("ns3::UdpSocketFactory",Address (InetSocketAddress (interfaces.GetAddress (1), port))); //Bさんに通信が来るように設定
onoff.SetConstantRate (DataRate ("448kb/s"),512);
apps = onoff.Install (pc_nodes.Get (0)); //Aさんが通信をするように設定
apps.Start (Seconds (1.0)); //開始時間
apps.Stop (Seconds (2.0)); //終了時間

やったー完成

次の記事は、ns3における無線通信の基礎になります。お楽しみに

12
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
4