インターネット計測とデータ解析 第 7 回
長 健二朗
2010
年11
月17
日前回のおさらい
インターネットの多様性と複雑さを計る
I
ロングテールとさまざまな分布I
サンプリングI
統計解析(
期待値と大数の法則、信頼区間と検定)
今日のテーマ
インターネットの時間変化を計る
I
インターネットと時刻I
時系列解析I
課題2
計測と時間
I
絶対時刻I
協定世界時UTC (Universal Coordinated Time)
I
セシウム原子時計をもとに取り決められている標準時I
相対時刻I
時刻の差分I
時刻調整I
時計の時刻は前後に補正されるI NTP
では128ms
未満の誤差は一度に、それ以上だと徐々に修正
クロックの誤差
I
クロックの誤差I
同期I 2
つのクロックの差I
正確さI UTC
からのずれI
解像度I
クロックの精度I
スキューI
時間とともに同期や正確さがずれるI
時間粒度I PC
クロック: 0.1-1sec/日ぐらいずれるI NTP: 10-100ms
の正確さにクロックを同期I tcpdump
などのタイムスタンプ:I 100usec-100msec (
通常< 1msec
だが保証なし)
PC のクロック
i8254
プログラムインターバルタイマーI 16-bit
フリーラニング ダウンカウンターI 1,193,182 Hz
の水晶発振器を基にしているI
カウンターがゼロになると割り込み信号を上げてカンターレ ジスタ値をリロードLatch
Clock Counter
Osc Prescaler
PD
I/O Bus
Adjust
Read
クロックドリフト
I
水晶発振器のドリフトI
ハードウエア仕様の許容誤差: 10− 5
I 0.86 sec/day
は許容誤差内I
ドリフトは温度に大きく影響されるtime clock
time ideal clock
clock B
clock A
その他の PC クロック
I Pentium TSC (Time Stamp Counter)
I CPU
クロックで駆動されるCPU
内蔵フリーラニングカウ ンターI
可変クロックやマルチCPU
で問題I ACPI (Advanced Counfiguration and Power Interface)
I
パワー管理機能が提供するフリーラニングカウンターI Local APIC (Advanced Programmable Interrupt Controller)
I
各プロセッサに内蔵される割り込み機能付きタイマーI HPET (High Precision Event Timer)
I IA-PC
の新しいタイマー仕様I 2005
年頃からチップセットに組み込みI
外部クロックI GPS、CDMA
など時刻情報を含むI
インターフィスにより読み込みオーバーヘッドOS 時刻管理
I OS
はソフトウエアにより時刻を管理I
起動時にカレンダーチップから時刻を得るI
ハードウエアクロック割り込み毎に時刻をアップデートI
従来のUNIX
では、デフォルトで10ms
ごとにクロック割り 込みが発生するようにクロックカウンターを設定UNIX gettimeofday
I
古いOS
ではクロック割り込みの粒度しかなかったI
いまどきのOS
ではより高精度の時刻を得られるI
クロックカウンター値を読み出してソフトウエアクロックを 補間I i8254
の解像度: 838ns (1 / 1193182)
I OS
内部処理時間I i8254
レジスタアクセス: 1-10usec
I struct timeval
への変換: 1-100usec
I
ユーザ空間からOS
内部へのアクセスI
システムコール オーバーヘッド: 10-500usec
I
プロセススケジューリングの影響: 1-100msec or more I
タイマーイベント ソフトウエア処理時間(e.g., setitimer):
I
ソフトウエアタイマー割り込みから処理(10msec by default)
I
プロセススケジューリングの影響を受けるNTP (Network Time Protocol)
I
インターネット上の複数サーバー間で時刻同期I
プライマリサーバ: 直接UTC
ソースに繋がるI
セカンダリサーバ: プライマリに同期I 3
段目以降のサーバ: セカンダリ以降に同期I
スケーラビリティI 20-30
プライマリ、2000
セカンダリを< 30ms
に同期I
さまざまな機能I
耐故障性、認証などをサポート1
2
3 3 3
2
NTP 同期モード
I
マルチキャスト(LAN
向け)
I
定期的に時刻情報をマルチキャストで広報I
リモートプロシージャコールI
クライアントが(複数)
サーバーに時刻情報を要求I
ピアプロトコルI
複数のピアの間で同期NTP ピアプロトコル
相手とのオフセットと通信遅延を計測
I a = T 2 − T 1 b = T 3 − T 4
I clock offset: θ = (a + b)/2 (RTT
が対称だと仮定)
I roundtrip delay: δ = a − b A
B T1 T4
T2 T3
全てのメッセージに以下を含める
I T3: send time (current time)
I T2: receive time
I T1: send time in received message
NTP システムモデル
I
クロックフィルタI
各ピアからの時刻情報を時系列に平滑化I
クロック選択I
互いに一致しているクロックを抜き出すI
インターセクションアルゴリズム: 外れ値の除外I
クラスタリング: 最善値の選択I
クロック統合I
推定値を1
個に統合Network
Clock Filter
Clock Selection
Clock
Combining Loop Filter Phase-Locked
Oscillator
VCO Clock Filter
Clock Filter
BSD UNIX の BPF タイムスタンプ
I
通常、割り込み処理2
回の後タイムスタンプI recv packet, DMA complete
wire network card device driver BPF OS
packet recv interrupt
DMA complete interrupt
packet
DMA to OS memory
header copy
DMA setup
filtering
timestamp
packet input processing
time interrupt
service time
interrupt
service time
ネットワークトラフィックの時系列解析
時間とともに変化する動的な挙動の解析
I
数学的な取り扱いは難しいI
限られたツール トピックI
自己相関(autocorrelation)
I
定常過程(stationary process)
I
長期記憶(long-range dependence)
I
自己相似トラフィック(self-similar traffic)
ネットワークトラフィックの自己相関
I
過去の状態の影響(
トレンド)
と周期性(
日、週、季節) I
自己相関(autocorrelation):
同一変数の異なる時間の値の相関0 5e+06 1e+07 1.5e+07 2e+07 2.5e+07 3e+07 3.5e+07 4e+07
0 100 200 300 400 500 600
traffic volume (bps)
time (sec)
-4 -2 0 2 4
0 500 1000 1500 2000 2500 3000 3500
normalized traffic volume
time (sec)
0 0.2 0.4 0.6 0.8 1
0 20 40 60 80 100
correlation
k
0 0.2 0.4 0.6 0.8 1
0 20 40 60 80 100
correlation
k
自己相関とラグプロット
I
ラグ(lag)
プロット: x i
とx i +k
の散布図I
自己相関の存在を確認する簡単な方法I k
を大きくすると長周期の繰り返しパターンを発見可能5e+06 1e+07 1.5e+07 2e+07 2.5e+07 3e+07 3.5e+07 4e+07
0 5e+06 1e+07 1.5e+07 2e+07 2.5e+07 3e+07 3.5e+07 4e+07 x i+1
x i
-4 -3 -2 -1 0 1 2 3 4
-4 -3 -2 -1 0 1 2 3 4
x i+1
x i
ラグプロットの例: (左)実トラフィック
(右)
乱数から生成したトラフィック自己相関
I
確率過程(stochastic process)
{ x(t), t ∈ T }
I
自己相関(autocorrelation):
同一変数の時刻t 1
の値とt 2
の値 の相関I
自己相関関数(autocorrelation function) R(t 1 , t 2 ) = E [x (t 1 )x(t 2 )]
I
自己共分散(autocovariance)
Cov (t 1 , t 2 ) = E ((x (t 1 ) − µ t 1 )(x(t 2 ) − µ t 2 )] = E[x(t 1 )x(t 2 )] − µ t 1 µ t 2
定常過程 (stationary process)
I
時系列X t
が定常過程I
平均が変化しない:E (X t ) = µ
I
かつ自己共分散がk
にのみ依存γ k = Cov (X t , X t+k ) = E ((X t − µ)(X t+k − µ))
γ 0 = Var (X t ) = E ((X t − µ) 2 )
I
自己相関係数(autocorrelation coefficient)
I
自己共分散を分散で正規化I
過去からの影響を示すρ k = γ k
γ 0
ホワイトノイズ
ホワイトノイズ
:
定常過程で自己相関係数が0 ρ k = 0 (k 6 = 0)
IID
過程(independent identically distributed process)
I
平均と分散が一定のホワイトノイズI
確率過程の話に必ず出てくるI X t
が互いに独立で同じ分布に従うI independent: X t
が互いに独立(無相関)
I identically distributed: X t
が同じ分布に従う非定常過程
I
非定常I
平均または自己共分散が時間とともに変化I
数学的な扱いが困難I
一般には時系列の差分を取って定常化する必要I
定常判定I
パワースペクトル密度を調べI
べき指数が1.0
より大きい場合は非定常I
ネットワークでは非定常なトラフィックが観測されるI
輻輳、DoS/flooding等の攻撃パワースペクトル密度 (power spectral dencity)
I
定常過程のパワースペクトル密度は自己相関関数のフーリエ 変換I
時間領域から周波数領域への変換I
時系列データをsin,cos
の重ね合わせで表現S (f ) =
∫ ∞
−∞
R(τ)e − 2πif τ dτ
I
パワースペクトル密度P(f ) ≡ | S (f ) | 2 + | S ( − f ) | 2 , 0 ≤ f < ∞
I
パワースペクトル密度は各周波数成分の平均パワーを示すパワースペクトル密度の性質
I
ホワイトノイズ(
無相関): P (f ) ∼ const
I
自己相似(
長期記憶): P (f ) ∼ f − α , 0 < α ≤ 1.0
I 1/f
ゆらぎ(
パワーが周波数に反比例): α = 1.0
I
非定常: α > 1.0
0.01 1 100 10000 1e+06 1e+08 1e+10
1 10 100 1000 10000
P(f)
f
real surrogate
例: (赤)実トラフィック
(緑)
乱数から生成したトラフィック短期記憶と長期記憶
自己共分散は各々の時差
k
の影響を個別に示す。全体を見るために全ての時差
k
について自己共分散の総和を取るI
短期記憶性I ∑
k ρ(k)
が有限∑ ∞ k=0
| ρ(k ) | < ∞
I ρ(k)
が指数関数と同様か、より早く減衰I
特徴I
平均値周辺でゆらぐI
遠い過去の影響はないI
長期記憶性I ∑
k ρ(k)
が発散∑ ∞ k=0
| ρ(k ) | = ∞
I
自己相関係数が双曲線的に減衰I
特徴I
平均から大きく外れた値が観測されるパレート分布 (pareto distribution)
確率密度関数
(PDF)
f (x) = α κ ( κ
x ) α+1 , (x > κ, α > 0) κ : minimum value of x , α : pareto index if α ≤ 2, variance → ∞ . if α ≤ 1, mean and variance → ∞ .
1e-05 0.0001 0.001 0.01 0.1 1
1 10 100
ccdf
x
pareto ( =1,
=1)
pareto ( =2,
=1)
pareto ( =3, =1)
exponential (µ=1)
自己相似トラフィック
ネットワークトラフィックは厳密な自己相似ではないが、場合に よって他より良いモデルを与える
I
スケールフリーI
長期記憶I
自己共分散がべき的に減衰ρ(k) ∼ k − α (k → ∞ ) 0 < α < 1
I
同様にパワースペクトル密度もべき的に減衰I
低周波成分(遠い過去)
の影響が大きいP (f ) ∼ | f | − α (f → 0)
I
分散が発散ネットワークトラフィックの自己相似性
I (
左)
指数関数モデル(
中)
実トラフィック(
右)
自己相似モデルI
時間粒度: (
上)10sec (
中)1 sec (
下)0.1 sec
0 20 40 60 80 100
Time (10sec) 0
5000 10000 15000
Packet flow (byte)
0 20 40 60 80 100
Time (1sec) 0
500 1000 1500
Flow density
0 20 40 60 80 100
Time (0.1sec) 0
50 100 150
Flow density
0 20 40 60 80 100
Time (1sec) 0
500 1000 1500
Flow density
0 20 40 60 80 100
Time (0.1sec) 0
50 100 150
Flow density
0 20 40 60 80 100
Time (0.1sec) 0
50 100 150
Packet flow
0 20 40 60 80 100
Time (1sec) 0
500 1000 1500
Packet flow
0 20 40 60 80 100
Time (10sec) 0
5000 10000 15000
Flow density
0 20 40 60 80 100
Time (10sec) 0
5000 10000 15000
Flow density
課題 2
I
正規分布する疑似乱数の生成I
一様乱数から正規乱数を生成するプログラム作成I
ヒストグラムの作成I
適切なビン幅の選択、プロットの作成I
信頼区間の計算I
サンプル数によって信頼区間が変化することを確認まとめ
インターネットの時間変化を計る
I
インターネットと時刻I
時系列解析I
課題2
次回予定
12/1
休講12/11
に振替第
8
回 インターネットの挙動を計る(12/8)
I
トラフィック量I
経路情報I
インターネット計測とプライバシー第