NS2 n 個のノードを使用してイーサネット LAN をシミュレートし、異なる送信元宛先に複数のトラフィック プロットの輻輳ウィンドウを設定しますか?
// n ノードを持つイーサネット LAN をシミュレートする ns-2 スクリプト。
// トラフィック プロットの混雑ウィンドウはさまざまな設定に設定されます
// 送信元と宛先のペア。
// 必要なパッケージをインポートします。
ns_lib をインポートします。
tcl_lib をインポートします。
// ネットワークを作成します。
sim_timeを100秒に設定します。 // シミュレーション時間 (秒)
num_nodes 10 を設定します。 // ネットワーク内のノードの数
ifq 1000 を設定します。 // パケット単位のインターフェースキューのサイズ
for {set i 0} {$i <$num_nodes} {incr i} {
# ノードを作成します。
set node($i) [新しいエージェント/TCP ソース];
# ノードをネットワークに接続します。
$ns アタッチエージェント $node($i)
# ノードの MAC アドレスを設定します。
$node($i) set MAC
# ノードの IP アドレスを設定します。
$node($i) set addr_
# ノードの輻輳ウィンドウ サイズを設定します。
$node($i) セット cwnd_ 20
}
for {set i 0} {$i <$num_nodes} {incr i} {
# 各ノードのソーストラフィックを設定します。
$node($i) set Traffic_type CBR
$node($i) set start_time_ 0s
$node($i) セット cbr_rate_ 100Kbps
$node($i) セット rtt_ 50ms
# 各送信元の宛先 IP アドレスを設定します。
$node($i) set packetDest_ 10.$i.2.1
# 各ノードのシンクトラフィックを設定します。
set シンク($i) [新しいエージェント/Null]
$sink($i) set addr_ 10.$i.2.1
$ns アタッチエージェント $sink($i)
}
セットスイッチ[新しいCMUcsma]
for {set i 0} {$i <$num_nodes} {incr i} {
$ns 接続 $node($i) $switch
}
$ns at 0.1 "$node(0) 送信開始"
1.1 の $ns "$node(1) 送信開始"
2.1 の $ns "$node(2) 送信開始"
3.1 の $ns "$node(3) 送信開始"
4.1 の $ns "$node(4) 送信開始"
$ns at 5.1 "$node(5) 送信開始"
6.1 の $ns "$node(6) 送信開始"
$ns 7.1 "$node(7) 送信開始"
$ns 8.1 "$node(8) 送信開始"
$ns at 9.1 "$node(9) 送信開始"
$ns 実行
プロットを設定 [新しいプロット/Xグラフ -幅 640 -高さ 480]
$plot スタイル バーを設定
$plot set xlabel "時間(秒)"
$plot set ylabel "輻輳ウィンドウ サイズ"
for {set i 0} {$i <$num_nodes} {incr i} {
$plot add $node($i) cwnd_
}
for {set i 0} {$i <$num_nodes} {incr i} {
$plot add Legend $node($i)
}
$plot 自動スケールをオンに設定
$plot グラフを保存.png
「」
トラフィック ソースとシンクを構成します。
イーサネット スイッチを作成します。
スイッチをノードに接続します。
シミュレーションを実行します。
結果のプロット
印刷スタイルを選択します。
X 軸と Y 軸のラベルを設定します。
さまざまなノードのトレースを追加して、輻輳ウィンドウをプロットします。
プロットの凡例を設定します。
プロットの自動スケールを設定します。
プロットを PNG 画像として保存します。