モバイルネットワークと広告配信
TRANSCRIPT
モバイルネットワークと広告配信
TCPの最適化を模索
真面目に書いてたら論文になっちゃったから緩めで!
TCPの設計思想
速さはよりかは…
効率的にたくさん
UDPとか別のプロトコルもあるし
広告配信が求めているもの
積み荷はダンボール箱一個だけなのにこれ…?
コレでしょ
広告の通信はとても小さい
広告の通信はとても短いセッションで終わる
帯域より低遅延が求められる
TCPの設計思想とは真逆の要求になるので低遅延チューニングが必要
さらにモバイルネットワークとLinux TCPスタックの相性がとても悪い
RTO(TCP再送時間)SRTO(TCP再送アルゴリズム)
の問題点
通常のTCPフロー
エロ画像よこせ
汝の望むは画像これか
IYH!!!
TCPの再送が発生する場合
エロ画像よこせ
汝の望むは画像これか 返事がないただの屍のようだ☓
おーいJKのエロ画像だぞー
IYH!!!111
経路の不具合などで到達しない
RTOってなにしてるの?
エロ画像よこせ
汝の望むは画像これか 返事がないただの屍のようだ☓
おーいJKのエロ画像だぞー
IYH!!!111
経路の不具合などで到達しない
TCP再送タイムアウト(RTO)
RTOは最小値が200ms
一回再送するごとに倍の待ち時間に変化
200ms -> 400ms -> 800ms …
通信内容によって再送回数は異なる
RTOはRTT(Round Trip Time)より計算される
要はpingでみれるあれ
エロ画像よこせ
汝の望むは画像これか
RTT 20msかRTOは200msだな
☓
おーいJKのエロ画像だぞー
IYH!!!111
RTT 20ms
RTO 200ms
エロ画像よこせ
汝の望むは画像これか
RTT 500msとかwwRTOは1500msだな
☓
おーいJKのエロ画像だぞー
IYH!!!111
RTT 500ms
RTO 1500ms
現実はこうはいかず、モバイルに限らず
ワイヤレスネットワークは不安定
RTTのゆらぎに対応するために
SRTO(Smooth Tcp Retramsmit Timeout)
が考案される
連続した通信の中でゆらぎのあるRTTの平均値を算出して最適化する
TTL 20ms
TTL 220ms
TTL 120ms振れ幅でかいなあ…RTOは500msくらいにしておこう
とてもよく考えられている
しかしこれが広告配信だと無意味
一回の通信が短いからRTTのゆらぎを補正できない
広告タグはよ
はいコレ
これだけ。。。
最初のRTTだけでRTOが計算されてしまう
たまたまRTTが低いと相手がリッチだと信じてしまう
不安定なモバイルネットワークに対して再送をがんばってしまう
無駄な再送により現在ルーターが過負荷の状態
TCPの輻輳も起こしてマイクロバーストが発生しているっぽい(スイッチのバッファ溢れ)
SRTOの実装はカーネルに直接書かれているので、手でRTOの値を変更することは不可能
再送回数を減らすしか対策がない
実体を参照する
ss -emoit
現在開かれているソケットのRTO,RTT等がわかる
とまあこれが最近の出来事です
おわり