本記事の注意
本記事は初学者向けに書いているため、誤った表記があるとは思いますが、わかりやすさを優先しているためこのようにしています。
ご了承ください。
ns3とは
ns3とは離散型のネットワークシミュレーターである。
ns3のプログラムを作る上で重要な要素がいくつかある。
ネットワークの通信には、TCP/IPやOSI参照モデルなどの概念が存在しているが、ns3もそれらの概念を取り入れている。たぶんだが、TCP/IPモデルが近い。
ns3ではコンテナのように組み合わせてプログラムを作成していく。
ns3は主に4つのコンテナが存在している
- NodeContainer
- DeviceContainer
- InterfaceContainer
- ApplicationContainer
これらの4つ一つ一つに、補助をするhelperと呼ばれるパーツが存在している。
1. NodeContainer
NodeCountainerは扱うノードが何であるかを示すもの!
例えば?
PCなのかスマートフォンなのかルータなのかなど
実際にPCノードを2台生成してみよう。
NodeContainer pc_nodes; //pc_nodesの部分は自由に決めれる
pc_nodes.create(2); //2台のpcを生成している
2. DeviceContainer
DeviceContainerはノードが持っている通信機能はなんであるかを指定するためのもの!
例えば?
イーサネットなのかWiFiなのかBluetoothなど
実際にPCノードにイーサネット機能を付与してみよう!
NetDeviceContainer pc_devices; //pc_nodesのためのデバイスを作成
PointToPointHelper pointToPoint; //イーサネットに決定
pc_devices = pointToPoint.Install (pc_nodes); // PCノードに機能を追加
3. InterfaceContainer
InterfaceContainerはみんなが使っているWIFIやスマートフォンのセルラー回線にはそのネットワークのデバイス(部品)ごとにIPアドレスって呼ばれる番号が付与するためのもの
実際にPCノードに付与されたデバイスにIPアドレスをつけてみよう
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)に通信してみよう
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における無線通信の基礎になります。お楽しみに