大規模なグローバルネットワークを運用する場合、パブリックインターネットを介して通信するシステム間の良好な接続性とパフォーマンスを確保することは、ユーザエクスペリエンスを向上させるための鍵となる。 インターネットの複雑でベストエフォートの性質を考えると、最も信頼できるプロバイダー上で最もよくプロビジョニングされたリンクでさえ、時には問題が生じる。
このようなリンクを監視するための戦略には、測定専用のトラフィックを生成するアクティブ測定と、既存のトラフィックを監視するパッシブ測定がある。 本稿では,我々のネットワークが依存する多くのリンクを受動的に監視するために,我々のxTCPソケットサンプリングシステムを利用する受動的アプローチについて述べる。
xTCPのデータを最大限に活用するために、我々はインターネット監視に関連するいくつかの課題に対処するために、このデータを処理するアプローチをさらに開発した。 特に、コンテンツ配信ネットワーク(CDN)サイト間で観測される再送信の重大度の相対的な尺度を提供する再送信率と呼ばれる概念を導入する。 本研究では、あるレベルを超える再送率がスループットの低下に対応し、ユーザの知覚性能に直接影響を与えることを実証した。
背景
CDNの一般的なワークフローは、あるポイント・オブ・プレゼンス(PoP)がコンテンツの一部を取得して別のポイント・オブ・プレゼンス(PoP)にアクセスしてキャッシュするものである。 これらの対話はクライアントの要求に直接応答して行われることが多く、ダウンストリームの要求はこの転送の完了を待っている可能性がある。 一般的に、要求自体は数キロバイトのオーダーで非常に小さいかもしれない。 応答のサイズは、キロバイトから数メガバイトまで、大きく変動する可能性がある。
図1:要求フローは小さい(オーダーKB)要求を送信し、大きな応答(メガバイト)を受信する。
接続の状態を監視するために、我々はソケット監視ツールxTCPを使用して、我々のエッジサーバー上のすべてのオープンソケットの現在の状態をサンプリングすることができる。 これはクライアント側のソケットで重要な可視性を提供するが、このソケットデータはPOP間のデータのビューも提供する。
しかし、このデータを測定することにはいくつかの課題がある。 まず、xTCPは異なる接続のポイントインタイムサンプルを提供する。 つまり、伝送のさまざまなポイントで多くの接続をキャッチする可能性がある。 したがって、私たちが行う評価は、単一の価値ではなく、行動の広い分布を考慮する必要がある。
次に、正しい方向を監視していることを確認する必要がある。 リクエストを生成したPOP(上図のPOP A)と、リクエストを受信してそれに応答しなければならないPOP(上図のPOP B)の両方にソケット情報があるが、それらの非対称ワークロードは異なる動作を期待する。クライアントから送信されるパケットの大部分は制御パケット(最初のリクエスト、その後の確認応答パケット)であり、サーバから送信されるパケットの大部分は意味のある量のデータを含む可能性が高い。
その結果、パス上に輻輳やその他の問題がある場合、データを伝送しているパケットは、より多くのキュースペースを占有しているため、パケット損失が発生して再送信が発生する可能性が高くなる。たとえば、ビジールータでキューがドロップされた場合などである。 これを実証するために、パケット再送信レート(再送信されたパケットの総数を送信されたデータセグメントの総数で割った比率として計算され、再送信が少ない)の分布を、POPのペア間で10分間の要求フローと応答フローで見ることができる。
図2:レスポンストラフィックの再送信回数が増加する。これは、サイズが大きいためと考えられる。
ここでは、この期間中、クライアントリクエストソケットはほとんど再送信を経験しない。 一方、応答は85%近くのソケットがゼロ以外の再送信を持っていることを示しているが、大多数の接続では再送信率が1%をはるかに下回っていることに注意する。 当然のことながら、テスト期間中に、ゼロ以外の再送信を伴うほぼすべてのPOPペアで同様の挙動が観察された。 したがって、我々は、データを含む応答フローに焦点を当てる。 我々は、元の要求PoPへの要求を処理することに関心があるので、これらを「インバウンド」フローと呼ぶ。
最後の課題は、再送信に関する一般的な複雑さと、それらを信号として使用して性能を低下させることの難しさにある。 実際、再送信は単に送信者の状態とパケットが再送された回数を反映しているだけなので、特定の問題を示すことなく定期的に行われる可能性がある。 これらは最終的には、損失以外の複雑なプロトコルの振る舞い(例えばテールロスプロービング)の結果である可能性がある。 複雑さを増して、多くのソケットは再送を決して観測しないことが観察される。 これは、単純な要約(例えば中央値をとる)は再送信率の非常に保守的な要約をもたらす可能性があり、歪んだ要約(例えば95パーセンタイルや99パーセンタイル)は、一般的に母集団に害のない行動を概ね捉える可能性があることを意味する。
再送信率
これらの課題の影響を単純化するために、再送率と呼ばれる複合メトリックを考える。 MetaのHD Ratioに触発され、HDビデオをストリーミングできるクライアントの割合を定量化することを目的としたこの測定は、不健全なレベルの再送信を経験しているソケットの割合を説明することを試みている。 ゼロ以外の再送信が予想されることがあるため、再送信率を次のように定義する。
重要なことに、この値はxTCPを介して利用可能になるデータを使って計算するのが特に簡単である。 運用経験から、正常なリンクでは再送信率の値が一般的に小さいことがわかったが、生の再送信率測定ではほとんど常にゼロの課題を回避している。
また、測定値は機密性が高く、他のパフォーマンス監視システムよりも先にアラートを生成することが多いこともわかった。 これは、ネットワークの劣化を迅速に診断する際に特に有用であり、小さな問題から始まり、最終的には大きな問題へと連鎖することが多い。
メトリックの検証
再送率がアプリケーション性能と直接相関することを示すために,二つの測定を考慮してその有効性を実証した。 最初に、クライアントアプリケーション(リクエスタ)のスループットは、再送信率が高い時間帯に比べて低いことを示す。 第二に、高い再送率は、他のネットワーク信号、特にPOP間のICMPプローブの劣化としばしば対応することを示す。
アプリケーションのパフォーマンスへの影響を調べるために、アプリケーション層から明示的に取得された測定値に目を向ける。 特に、クライアントPoPで測定されたスループットは、データ送信プロセスで達成された機能配達率を表すため、考慮する。 再送イベントの影響を理解するために、1週間にわたってPOPペアについて次の研究を実施した。
最初に、再送イベントが発生したすべての期間を考慮する。 再送信イベントとは、POP間の再送信率が少なくとも10分間一定の範囲内にある時間帯をいう。 これは短命な事象を除外していることに注意するが、それは長い事象の行動についての洞察を提供する。 各再送信イベントについて、イベント中に対応するスループット値を収集する。 コントロールとして、イベントと同じ期間、ただし3時間前のデータを収集する。 これにより、「再送信中」のイベントと、再送信が行われない時間に取得される「通常」の2セットのスループット測定が得られる。 次に、通常時にPOP間で達成されたスループットの中央値によって、「実行中」の測定値を正規化する。 しきい値については、0より大きいが25%未満、25より大きいが50%未満、50より大きいが75%未満、最後に75%以上の4つの範囲を考慮する。
図3:各再送信イベント中に観察された非再送信期間と比較した相対スループット。
上の図は、測定期間中に観測された相対スループットの分布を示している。 第一に、最も低い範囲であっても、60%のトランザクションが中央値よりも低いスループットを達成していることがわかる。 再送信率が高いと考えると、スループットは低下し続け、再送信率が高いとスループットは低下し、最悪の場合は1桁以上の相対的な中央値の低下を招く。 これらの測定は、再送率が影響を受けたフローの低パフォーマンスをうまく捕捉することを明らかにした。
次に、これらのイベントがPOP間のアクティブなICMP測定とどのように相関しているかを見る。 ここでは、PoP間で定期的にICMPプロービングを行うアクティブモニタリングの動作を検討し、遅延パターンの損失や変化を測定する。 この分析では、スループット比較から抽出されたイベントを再び使用する。 しかし、今回は、各閾値の期間についてICMPで測定された損失を見てみる。 ICMPプロービングの制限により、これらの特定の測定では2%の損失粒度が得られることに注意する。
図4:各期間に観測されたICMP損失。 再送信率が高いほど損失が大きくなる。
ここでは、低いしきい値が損失を示すことはめったになく、測定値の90%は損失を検出できないことがわかる。 対照的に、0.75閾値では80%の測定値が損失を観測し、中央値では4%という比較的高い損失を観測した。 重要なことに、再送信率がスループットの大きな影響(例えば0.25)と対応するレベルでは、ICMPメトリックの損失はほとんどないことに注意する。 これらの知見は、単純なICMPプローブを超えてパスパフォーマンスを測定することの重要性を繰り返し強調し、インターネット上の実際のフローのパフォーマンスの微妙なビューを提供する再送率の能力を強調している。
結論とその先
本記事では、xTCPソケットのデータからも容易に計算できる便利なサマリーメトリックである再送率の値を示した。 さらに、アプリケーションのパフォーマンスに影響を与え、ネットワーク介入が必要なケースについて明確な洞察を提供することを示した。
再送信率は監視プロセスの重要な部分となっており、より大きく扱いにくいアプリケーションログを処理したり、一部の影響を捕捉できないICMPプローブに依存したりすることなく、システムパフォーマンスに関する明確な洞察を提供する。
我々の現在の研究は、劣化に早期警告を提供するために、メトリクスを可能な限り敏感にする方法を探求し、同時に、より複雑な自動化システムに適切な入力を提供することができる。
この作業をサポートしてくれたアーキテクチャおよびネットワーク信頼性エンジニアリングチームに感謝!
Edgio Labs & Advanced Projectsの詳細を知りたい研究者、または上記のトピックのいずれかに関する共同研究を探索したい研究者は、research@edg.ioのチームに連絡してください。