1章レイテンシと帯域幅:ハイパフォーマンスブラウザネットワーキング
今、社内でO'Reillyの
「ハイパフォーマンスブラウザネットワーキング」
ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化
- 作者: Ilya Grigorik,和田祐一郎/株式会社プログラミングシステム社
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/05/16
- メディア: 大型本
- この商品を含むブログ (1件) を見る
の勉強会(読書会)をしていて、
1章のレイテンシーをやったので、以下にも貼っておきます。
今この本読んでる方、沢山いらっしゃると思うので、
読書の手助けによければどうぞ。
ハイパフォ読書会
- 1章
パフォーマンスを左右する要素
レイテンシー構成要素
ルータ時間を消費する主要な構成要素
- 伝搬遅延(propagation delay)
- 伝送遅延(transmission delay)
- 処理遅延(processing delay)
- キューイング遅延(queuing delay)
書籍の中の説明文が分かり辛いので
- 別サイト参考に言い換えていくと
伝搬遅延
- パケット送信時にかかる物理的な遅延
- 例えば、光ファイバーだと、光の屈折等で遅延する時間の事(後で出て来る)
伝送遅延
- 書籍では、
パケットの全ビットをリンクに載せるまでにかかる時間
- リンクとは?データリンク層?何の事か?と思ってしまうが、
- ネットワークの話でリンクとは、ネットワークの構成要素(ノード)間をつなぐ線の事
- 伝送遅延を言い換えると
- 0,1の数字の羅列が転送。初めから最後のbitまで転送される時間が伝送遅延
- これは、単純に量や幅の話。パケットサイズ大きいか、帯域幅が狭いと大きくなる。その遅れの話。
処理遅延
- パケットのヘッダー処理
- パケットの次の方向を決定する間に、ルータが行うビットレベルのエラー検知
- これらによっての遅れの話。
キューイング遅延
伝搬遅延
- 光は毎秒29万km(真空中の早さ)
- 光を運搬する素材により遅くなる
- 屈折率が大きい程光も遅く伝わる
- 光ファイバの屈折率(1.4~1.6)による遅延も含めて概算すると
- 毎秒約20万km(元と比べると10万kmも違うんですね)
東京版伝搬時間の表
ルート | 距離 | 真空中の伝搬時間 | 光ファイバの伝搬時間 | 光ファイバでの往復時間 |
---|---|---|---|---|
東京-サンフランシスコ | 8280km | 28 ms | 41ms | 83ms |
東京-シンガポール | 5350km | 18ms | 27ms | 54ms |
東京版伝搬時間
- 東京-SFはNY-SF距離4000kmの2倍。NY-Sydneyが1.5万kmなので、その半分。
- 意外と短い(勿論、直線距離なので、実際はもっと複雑で距離かかるが)
- RTT:往復時間(Round Trip Time)
- NY-Sydneyが1.5万kmで160msと非常に遅い(北半球と南半球またぐと距離かかりますね)
人間の遅れの知覚
- 100-200msの遅延:遅れを知覚
- 300msの遅延:反応が鈍いと報告
- 1000ms超える:ユーザーの意識が切り替わる。
- この数値とさっきのNY-Sydney(160ms)と比べると、いかに伝搬時間大きいか分かる。
ラストマイル問題
- 大幅なレイテンシ:大抵、最後の数マイル
traceroute
- 経路するルータを見るならtraceroute
- 参考
googleにtraceroute
$ traceroute google.com traceroute: Warning: google.com has multiple addresses; using 74.125.235.101 traceroute to google.com (74.125.235.101), 64 hops max, 52 byte packets 1 xx.xx.xx.xx ( xx.xx.xx.xx) 1.416 ms 1.073 ms 1.470 ms 2 xx.xx.xx.xx ( xx.xx.xx.xx) 1.991 ms 2.660 ms 1.772 ms 3 xx.xx.xx.xx ( xx.xx.xx.xx) 2.167 ms 1.334 ms 1.391 ms 4 xx.xx.xx.xx ( xx.xx.xx.xx) 1.726 ms 1.682 ms 1.927 ms ・・・省略・・・ 11 209.85.251.39 (209.85.251.39) 2.467 ms nrt19s02-in-f5.1e100.net (74.125.235.101) 2.543 ms 209.85.251.39 (209.85.251.39) 2.665 ms
tracerouteの見方
$ traceroute to google.com (74.125.235.101), 64 hops max, 52 byte packets 1 12.34.56.789 (12.34.56.789) 1.416 ms 1.073 ms 1.470 ms // 順序番号(TTL) IPアドレス 1回目のTTL=1パケット往復時間 2回目 3回目
- ホップ:ルータがサブネット間を超える度に1カウント
- ここでは、最大64回迄ルータ移動する
- tracerouteはTTLを使ってる
TTL
- Time To Live:パケットの生存期間
traceroute 原理
- tracerouteは、TTL=1から初めて、エラー返されたらIPや時間計測して、1ずつ増やして繰り返す
- ここの記事の図が分かりやすい
tracerouteのエラー
- tracerouteは、多くのサーバーでFW等の都合で、最後まで辿れない。
各ユーザーの帯域幅
- Userが使用できる帯域幅はクライアントと宛先サーバー間の一番小さい帯域幅に依存する
- speedtestで、近くのサーバー(多分、東京)への上がり下りスピードを計測できる
- 家のブロードバンド環境で試してみて、プロバイダーの言ってた値と比較すると面白いかも
余談
- AWS tokyoのregion開設した時に検証されてる方のブログ記事
- traceroutesで内部ネットワーク調べたり
- pathcharで帯域幅を調べてる
- 実際にこれらの知識をどう使うか分かるので、要チェック。
- regionの距離やホップ数等の記事
次は
土日にまとめよう。