Presentation is loading. Please wait.

Presentation is loading. Please wait.

awkによるデータ処理 データ(テキスト形式)の加工・取り出しが可能 読み込んだデータを1行ごとに処理 C言語っぽい 書式

Similar presentations


Presentation on theme: "awkによるデータ処理 データ(テキスト形式)の加工・取り出しが可能 読み込んだデータを1行ごとに処理 C言語っぽい 書式"— Presentation transcript:

0 シミュレーション結果の処理方法 ~awk, gnuplot~
演習第2回 情報通信技術論 インターネット工学

1 awkによるデータ処理 データ(テキスト形式)の加工・取り出しが可能 読み込んだデータを1行ごとに処理 C言語っぽい 書式
オーク データ(テキスト形式)の加工・取り出しが可能 読み込んだデータを1行ごとに処理 C言語っぽい 書式 % awk ‘パターン {アクション}' 入力データファイル 条件が一致した場合に行う操作 If文の条件文みたいなもの

2 awkの簡単な使用例 LocationがSendaiの行を抜き出す 湿度が61の行を抜き出す 気温が16以下の行を抜き出す
weather.dat 2列目($2) :Location 3列目($3) :気温 4列目($4) :湿度 LocationがSendaiの行を抜き出す ‘$2 = “Sendai”’とすると? 湿度が61の行を抜き出す 気温が16以下の行を抜き出す 気温>20かつ湿度<80の行を抜き出す 使用可能な演算子の例 % awk ‘$2 == “Sendai”’ weather.dat 札幌 Sapporo 青森 Aomori 秋田 Akita 盛岡 Morioka 仙台 Sendai 山形 Yamagata 福島 Fukushima 水戸 Mito 宇都宮 Utsunomiya 前橋 Maebashi 熊谷 Kumagaya 東京 Tokyo 鹿児島 Kagoshima 那覇 Naha % awk ‘$4 == 61’ weather.dat % awk ‘$3 <= 16’ weather.dat % awk ‘$3>20 && $4<80’ weather.dat +, -, *, /, % <, <=, ==, !=, >, >= &&, || 気象庁ホームページより・一部改変

3 行数を数える wc (Word Count) 行数だけを出力したい場合 ファイルの行数・単語数・バイト数(サイズ)を表示
% wc weather.dat weather.dat % wc -l weather.dat

4 リダイレクション・パイプ リダイレクション: awkの実行結果をファイルに保存 パイプ: awkの実行結果を入力として他のコマンドを実行
気温>16である行をfileに保存(上書きに注意) 行数は? パイプ: awkの実行結果を入力として他のコマンドを実行 気温>16である行の行数 % awk ‘$3 > 16’ weather.dat > file % wc -l file % awk ‘$3 > 16’ weather.dat | wc -l

5 何に使うのか? sample.tclを実行 cbr out.tr, out.tcp, out.namが生成される tcp
% ns sample.tcl cbr ノード0 ノード2 ノード3 tcp ノード1

6 out.tr (抜粋) $1: イベント $2: イベント発生時刻 $3, $4: イベント発生場所(リンク) $5: パケットの種類
$11: パケットのシーケンス番号 $12: パケット固有の番号(ID) cbr cbr cbr cbr r cbr cbr cbr cbr cbr r cbr

7 パケットの一生を見てみる あるパケット(ID=200, cbr)の流れに注目 cbr tcp
% awk ‘$12 == 200’ out.tr cbr cbr r cbr cbr cbr r cbr cbr ノード0 ノード2 ノード3 tcp ノード1

8 パケットの流れ あるパケット(ID=200, cbr)の流れに注目 % awk ‘$12 == 200’ out.tr
r cbr cbr cbr r cbr パケット キュー (バッファ) ノード0 ノード2 ノード3 リンク

9 パケットの流れ(ドロップされるパケット)
あるパケット(ID=234, cbr)の流れに注目 % awk ‘$12 == 234’ out.tr cbr cbr r cbr cbr d cbr 一度キューに入って(入ろうとして)からドロップされる ドロップ パケット キュー (バッファ) ノード0 ノード2 ノード3 リンク

10 TCPのシーケンス番号に注目してみる あるパケット(seqno=100, tcpおよびack)の流れに注目 tcp ack
% awk ‘($5==“tcp”||$5==“ack”) && $11==100’ out.tr tcp tcp r tcp tcp tcp r tcp ack ack r ack ack ack r ack RTT -) tcp ノード1 ノード2 ノード3 ack

11 送受信パケットの抽出 cbr tcp 送信されたcbrパケットの表示 送信されたtcpパケットの表示
ノード0 ノード2 ノード3 tcp ノード1 送信されたcbrパケットの表示 送信されたtcpパケットの表示 受信されたcbr / tcpパケットの表示 % awk ‘$1==“+” && $3==0 && $4==2 && $5==“cbr”’ out.tr % awk ‘$1==“+” && $3==1 && $4==2 && $5==“tcp”’ out.tr % awk ‘$1==“r” && $3==2 && $4==3 && $5==“cbr”’ out.tr % awk ‘$1==“r” && $3==2 && $4==3 && $5==“tcp”’ out.tr

12 ドロップされたパケットの抽出 cbr tcp 廃棄されたcbr /tcpパケットの表示 ノード0 ノード2 ノード3 ノード1
% awk ‘$1==“d” && $5==“cbr”’ out.tr % awk ‘$1==“d” && $5==“tcp”’ out.tr ※ 廃棄された場所(リンク)は問わない

13 送受信/ドロップパケット数の算出 送信パケット数の算出 受信パケット数の算出 ドロップパケット数の算出
% awk ‘$1==“+” && $3==0 && $4==2 && $5==“cbr”’ out.tr | wc -l % awk ‘$1==“+” && $3==1 && $4==2 && $5==“tcp”’ out.tr | wc -l % awk ‘$1==“r” && $3==2 && $4==3 && $5==“cbr”’ out.tr | wc -l % awk ‘$1==“r” && $3==2 && $4==3 && $5==“tcp”’ out.tr | wc -l % awk ‘$1==“d” && $5==“cbr”’ out.tr | wc -l % awk ‘$1==“d” && $5==“tcp”’ out.tr | wc -l

14 通信品質の評価指標 (総受信パケット数)×(パケットサイズ)[bytes] スループット[Mbps] = (通信時間)[s]
受信者が受信した量 ヘッダを含む (総受信パケット数)×(パケットサイズ)[bytes] スループット[Mbps] = (通信時間)[s] 送信者がパケットを送出した時間 ドロップの場所は問わない (総ドロップパケット数) パケットドロップ率[%] =                ×100  (総送信パケット数) 送信者が送信した量 ※ M = 106 bps = bit/sec 1 bytes = 8 bits

15 gnuplotによるグラフ描画 基本的な使用方法 % gnuplot … gnuplot> p “データファイル”
ニュープロット 基本的な使用方法 % gnuplot gnuplot> p “データファイル” u x軸のデータがある列:y軸のデータがある列 t “凡例名” w プロット形式 gnuplot> rep “データファイル” … 納得のいくグラフが作成できたら gnuplot> set term post color gnuplot> set output “ファイル名.ps” gnuplot> rep gnuplot> q (終了) % gv ファイル名.ps (結果の確認) % lpr ファイル名.ps (印刷) (※ 実際には1行)

16 gnuplotの簡単な使用例 x軸を時刻、y軸を気温としてプロット x軸を時刻、y軸を湿度として上のグラフに 重ねてプロット
sendai.dat 1列目($1) :時刻 2列目($2) :気温 3列目($3) :湿度 x軸を時刻、y軸を気温としてプロット プロット形式:l, lp, st, d, iなど 目的に合わせてプロット形式を選択する 凡例はお好みで x軸を時刻、y軸を湿度として上のグラフに 重ねてプロット ps (postscript)形式で保存 gnuplot> p “sendai.dat” u 1:2 w lp # 時刻 気温 湿度 gnuplot> rep “sendai.dat” u 1:3 w lp gnuplot> set term post color gnuplot> set output “sendai.ps” gnuplot> rep gnuplot> q 気象庁ホームページより・一部改変

17 out.tcp (抜粋) $1: 時刻 $16: 送信シーケンス番号 $18: 輻輳ウインドウサイズ $20: スロースタート閾値 …
time: saddr: 1 sport: 0 daddr: 3 dport: 1 maxseq: -1 hiack: -1 seqno: 0  cwnd: ssthresh: 20 dupacks: 0 rtt: srtt: rttvar: bkoff: 1 time: saddr: 1 sport: 0 daddr: 3 dport: 1 maxseq: 0 hiack: 0 seqno: cwnd: ssthresh: 20 dupacks: 0 rtt: srtt: rttvar: bkoff: 1 time: saddr: 1 sport: 0 daddr: 3 dport: 1 maxseq: 2 hiack: 1 seqno: cwnd: ssthresh: 20 dupacks: 0 rtt: srtt: rttvar: bkoff: 1 time: saddr: 1 sport: 0 daddr: 3 dport: 1 maxseq: 4 hiack: 2 seqno: cwnd: ssthresh: 20 dupacks: 0 rtt: srtt: rttvar: bkoff: 1 time: saddr: 1 sport: 0 daddr: 3 dport: 1 maxseq: 6 hiack: 3 seqno: cwnd: ssthresh: 20 dupacks: 0 rtt: srtt: rttvar: bkoff: 1 time: saddr: 1 sport: 0 daddr: 3 dport: 1 maxseq: 8 hiack: 4 seqno: cwnd: ssthresh: 20 dupacks: 0 rtt: srtt: rttvar: bkoff: 1 time: saddr: 1 sport: 0 daddr: 3 dport: 1 maxseq: 10 hiack: 5 seqno: cwnd: ssthresh: 20 dupacks: 0 rtt: srtt: rttvar: bkoff: 1 time: saddr: 1 sport: 0 daddr: 3 dport: 1 maxseq: 12 hiack: 6 seqno: cwnd: ssthresh: 20 dupacks: 0 rtt: srtt: rttvar: bkoff: 1 time: saddr: 1 sport: 0 daddr: 3 dport: 1 maxseq: 14 hiack: 7 seqno: cwnd: ssthresh: 20 dupacks: 0 rtt: srtt: rttvar: bkoff: 1

18 各変数の時間変化の図示 シーケンス番号($16: seqno) 輻輳ウインドウサイズ($18: cwnd)
スロースタート閾値($20: ssthresh) 輻輳ウインドウサイズと”20”の最小値 gnuplot> p “out.tcp” u 2:16 t “seqno” w l gnuplot> p “out.tcp” u 2:18 t “cwnd” w st gnuplot> rep “out.tcp” u 2:20 t “ssthresh” w st gnuplot> p “out.tcp” u 2:($18 < 20 ? $18 : 20) w st ※ 単純に列数を示す場合以外は$が必要

19 gnuplot – 補足 ラベルの指定 表示範囲の指定 片対数グラフの作成 x軸を対数プロットにする場合
gnuplot> set xl [x軸のラベル] gnuplot> set yl [y軸のラベル] gnuplot> rep gnuplot> set xr [x軸の最小値:x軸の最大値] gnuplot> set xr [y軸の最小値:y軸の最大値] gnuplot> rep gnuplot> set log x gnuplot> rep

20 レポートに関する補足 シミュレーションの実行、結果の処理 グラフの作成 レポート作成 もちろん、他の言語を使用しても構いません
C言語 Perl, Ruby, シェルスクリプト, … グラフの作成 もちろん、他のアプリケーションを使用しても構いません グラフ用紙に手書き Excel, OpenOffice Calc, … レポート作成 紙で提出してください レポート用紙に手書き LaTeX Word, OpenOffice Writer, 一太郎, …


Download ppt "awkによるデータ処理 データ(テキスト形式)の加工・取り出しが可能 読み込んだデータを1行ごとに処理 C言語っぽい 書式"

Similar presentations


Ads by Google