Comments
Description
Transcript
こんな事して 分析してました
こんな事して 分析してました 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