こんな事して 分析してました

こんな事して
分析してました
JANOG18の発表の裏側で
Presented by Yasuo Igano
[email protected]
Date : 7th, Dec., 2006
@ xFlow Operators’ BOF in IW2006
Rev. : 1.0
Title option 1
1
Presented by xxxx
1. 今日のお話
今夏のJANOG18において、
JANOG18
2006年版 ISPのトラフィックこんな
トラフィックこんな状況
こんな状況です
状況です
- 地域密着型アクセス
地域密着型アクセス系編
アクセス系編 なるプログラムを発表させて頂きました。
そこで発表したグラフが『どのように作
どのように作られたか』
ご紹介させて頂きます。
2
今後の
今後のxFlowのデータ処理
データ処理の
処理の
参考にしてみて
参考にしてみて下
にしてみて下さい
2. データ収集環境
• NetFlow v.5
• Collector Software = flow-tools
– http://www.splintered.net/sw/flow-tools/
NetFlow
NetFlow
Data
DataCollector
Collector
ある
ADSL/FTTH
ネットワーク
接続の
接続の
BBユーザ
ユーザ
3
Router
Router
==Exporter
Exporter
The
Internet
他ISP
コンテンツ屋
コンテンツ屋さん
3. 取れたデータ
1日で
• 40MB弱(圧縮して)
• 185万フローレコード
補足情報
• トラフィック量 : ピークで ?00Mbps
• Sampling Rate : 1/5000
4
4. やってみた分析
Out
1. ユーザ毎
とOutの
の
ユーザ毎のInと
トラフィック量分布
トラフィック量分布
In
2. 各ユーザ(
アドレス)
ユーザ(IPアドレス
アドレス)の通信と
通信と時刻
ユーザ
ライトなユーザ
エッジな?ユーザ
5
朝
朝
昼
昼
夜
夜
時刻
5. どうしよう?
– InとOutのトラフィック分布
1. IPアドレス毎
アドレス毎にInとOutのトラフィック量を
集計しなくっちゃ!!
集計
Perlとかで書くとめんどくさそう!?
2. プロット
プロット数
数は、
ユニークIP数だから
なんとかなりそう
6
Out
In
6. どうしよう?
– ユーザ毎の通信と時刻
1. 185万個のプロット
うぅ・・・、どうなんだろう
2. 縦軸は、トラフィックの多いユーザが
下にくるようにソートしたい
ぐぐ、IPアドレス毎に1日の総トラフィック量
トラフィック量でソート・・・
ソート
ユーザ
ライトなユーザ
エッジな?ユーザ
7
朝
朝
昼
昼
夜
夜
時刻
7. で、どうした!?
• flow-toolsは、必要な項目だけの
CSVを簡単に
簡単に吐いてくれます
flow-export –f format –m mask < data_file
• Perlで、しこしこプログラミングするのもいい
が、なんかもっと便利
もっと便利そうな
便利そうなモノ
そうなモノってないの?
モノ
『R』というデータ
というデータ解析
データ解析の
解析のツールがあるらしい
ツールがあるらしい!
があるらしい!
それも、
それも、フリーらしい
フリーらしい!!
らしい!!
8
8. 『R』って何?
• 『R』とは、フリーの統計計算+グラフィックス
フリー
の言語・
言語・環境
– Windows, Mac, Linux, FreeBSD等
• いわゆる、S言語
– 有料のソフトでいうとS-Plusとか
– インタプリタ
• あれこれ手法を変えながら簡単に計算結果が見れる
• Scriptとしてバッチ処理もOK
9
9. 『R』って何ができるの?
ー 基礎編
• CSVファイルからデータを読み込む
Data = as.data.frame(
scan(
“data-file.csv”,
list( date="", time="", dpkts=0, doctets=0,
srcaddr="", dstaddr="",
srcport=0, dstport=0,
変数 Data
src_as=0, dst_as=0), date time dpkts doctets
sep=","
レコード1
レコード2
)
)
10
data-file.csv
・・・・・
10. 『R』の変態的な関数
• src_asとdst_asのdoctetsの
クロス集計
クロス集計は?
集計
dst_as
変数 src_dst
dst_as ・・・・・・・
src_as ・・・
Byte数
数
src_dst = as.data.frame(
xtabs(doctets ~ src_as + dst_as,
data = Data)
)
• 変数Dataから、
『dstportが80のレコード』を抜き出したい
11
Data.http = Data[Data$dstport == 80]
11. 『R』でお絵かき
• InとOutの分布図を描いてみる
変数 Byte.Host
in.byte out.byte
Host1
Host2
plot( log10(Byte.Host$in.byte*5000),
log10(Byte.Host$out.byte*5000),
pch=".",
xlab="Daily inbound traffic [bytes]",
ylab="Daily outbound traffic [bytes]"
)
• 3Dのプロットの関数もあります
12
plotの
サンプル(1)
13
plotの
サンプル(2)
14
12. 最後に
• 最近のPCは・・・
– CPUめちゃめちゃ速い
– メモリも2Gとか平気で積める
• こういう『R』という分析環境を使って、
メモリ上でデータをぐりぐりさせるというのも、
十分に使えそう
15
おまけ ー リンク集
• The R Project 本家
http://www.r-project.org/
• Rの公開ライブラリ (900以上あります)
http://cran.r-project.org/
• R-Tips 【日本語】
http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html
• RjpWiki 【日本語】
http://www.okada.jp.org/RWiki/
16