レイテンシー(レイテンシ)とは?
レイテンシー(latency)とは、ユーザーのアクションとその後の応答の間に経過する時間です。
ネットワークでは、遅延とは、ネットワーク内またはインターネット上で発生する遅延を正確に指します。
実際には、ユーザーが何らかのアクションを実行してから、サイトまたはアプリからアクションへの応答が返されるまでの時間です。
レイテンシーの意味をよりよく理解するための例を考えてみましょう。
ユーザーがWebページへのリンクをクリックし、ブラウザがそのクリックの300ミリ秒(ms)後にそのWebページを表示するとします。この300ミリ秒はどういう意味でしょうか?これはユーザーのクリックとブラウザーの応答の間の遅延(レイテンシーとも呼ばれます)と言えます。
レイテンシーと帯域幅
レイテンシーは、データが1つのポイントから別のポイントに送信されるのにかかる時間と考えることができます。
このように、データがターゲットに到達するためにコードやネットワークなどを通過する必要があるのは、物理的な距離によって異なります。
一方、帯域幅は一定期間のデータ転送速度です。名前が示すように、帯域幅は通信帯域の幅です。通信帯域が広いほど、より多くのデータが通信帯域を流れることができます。
同時に送受信できるデータの量に制限されず、遅延が許す限り速く移動できます。
当然ながら、物理的な場所によっては、一部のユーザーにとってサイトの実行速度が低下することになります。
世界各地のユーザーにとって、この速度をいかに向上させるかが、グローバルレイテンシーの低減につながるのです。
レイテンシー(遅延)には何が影響しますか? 発生する主な原因とは
遅延は大きく分けて「ネットワーク由来」と「端末やアプリ由来」の2種類があります。ネットワークでは物理的な距離や回線の混雑、ルーティングの遠回り、Wi-Fi干渉、VPNやプロキシ経由などが影響します。
また、厳しいNATやファイアウォール環境ではTURNリレーを通るため、数十ms以上の遅延が追加されます。一方で端末やアプリ側では、エンコード/デコードの処理負荷、ビットレートや解像度の設定、ジッタバッファの大きさ、他アプリとのリソース競合が原因になりがちです。
リアルタイム通信ではパケット損失やジッタ補正の再送処理も遅延を押し上げる要因となります。
データ送受信のレイテンシーに影響を与える7つの主な要因は次のとおりです。
伝送媒体:
WANや光ファイバーケーブルなどの媒体にはすべて制限があり、その性質上、遅延に影響を与える可能性があります。光ファイバーは、従来の銅線や無線接続に比べて低遅延です。
パケットサイズ:
大きなパケットは、小さなパケットよりも往復に時間がかかります。
伝搬遅延:
伝搬は、パケットが光速で1つのソースから別のソースに移動するのにかかる時間です。各ゲートウェイノードがパケットのヘッダーを検査し、場合によっては変更する必要がある場合(存続時間(TTL)フィールドのホップカウントを変更するなど)、これにより遅延が増加します。
パケット損失とジッター:
遅延は、宛先に到達できないパケットの割合が高い場合にも発生する可能性があります。また、一部のパケットが1つのシステムから別のシステムに移動するのにかかる時間の過度の変動が原因で発生します。
ルーター:
ルーターは、パケットのヘッダー情報を分析するのに時間がかかります。場合によっては、追加情報を追加することもあります。パケットが1つのルーターから別のルーターに移動するたびに、待ち時間が長くなります。
信号強度:
信号が弱く、リピーターによってブーストする必要がある場合、これにより遅延が発生する可能性があります。
ストレージ遅延:
パケットが保存またはアクセスされると、スイッチやブリッジなどの中間デバイスによってストレージ遅延が発生する可能性があります。
レイテンシー(遅延)の測定方法
まずは、データが相手に届いて戻ってくるまでの時間(RTT:Round Trip Time, ms)と、その通り道(経路)を確認します。
体感遅延を手早く測る(動画撮影法)
最も簡単なのは、送信側と受信側の画面を並べて同時に動画撮影し、時刻のズレを読む方法です。
送信側の画面には秒数が進むタイマーや時計を大きく表示し、受信側の映像と一緒にスマホで撮ります。録画を一時停止しながら見返し、送った時刻と表示された時刻の差を読み取れば、その時点の遅延です。
これを複数回(目安10回)行い、平均値とたまに大きく遅れた値(ワースト)を控えておくと、実際の体感に近い数字になります。
片道の遅延を知りたい場合は、送信側に「送信時刻」を表示しておき、受信側に映った時刻との差を見ます(RTTではなく片道の目安)。
遅延の原因箇所を絞り込む(経路確認)
遅延に大きく効いている区間を特定するには、テスト通信を段階的に遠くへ送り、通過する中継点と区間ごとの時間を記録していきます。これにより、どの区間で遅れが増えているかを把握できます(※表示されない中継点がある場合もあります)。
レイテンシーを減らす方法
さまざまな手法を使用して、レイテンシを短縮できます。次にいくつかの例を示します。
HTTP/2の使用:
HTTP/2は、送信者から受信者へのラウンドトリップの数を減らし、並列転送を行うことで、サーバーの待ち時間を短縮するのに役立ちます。
外部HTTPリクエストの数を減らす:
これは画像だけでなく、CSSやJSファイルなどの他の外部リソースにも当てはまります。自分以外のサーバーから情報を参照する場合は、外部HTTPリクエストを作成しています。これにより、サードパーティサーバーの速度と品質によっては、Webサイトの遅延が大幅に増加する可能性があります。
ソフトウェア定義のリアルタイムネットワークの使用:
AgoraのSD-RTNテクノロジーは、コンテンツをエンドユーザーに配信するための専用ネットワークであるという点で、従来のCDNのように機能します。また、Agoraの機能はCDNの機能をはるかに超えており、超低遅延と将来のリアルタイムエンゲージメントに必要なインタラクティブなエクスペリエンスを提供するようにゼロから設計されています。SDKなので低コストで導入できることもメリットです。
プリフェッチ方法の使用:
リソースのプリフェッチは、基本的にレイテンシーの量を減らすことはありませんが、サイトの知覚パフォーマンスを向上させます。これは、ユーザーが特定のWebページを閲覧しているときに、遅延の多いプロセスがバックグラウンドで発生するためです。
ブラウザキャッシュの使用:
ブラウザキャッシュを使用すると、特定のWebサイトリソースをローカルにキャッシュできます。これにより、待ち時間が短縮され、サーバーに返されるリクエストの数が減ります。
ジッター(ジッタ)とレイテンシー(レイテンシ)の違い|原因・許容値・測定方法と改善策
WebRTC対応SDK Agoraの特徴を確認する
Agoraの無料トライアルを見る
※この投稿は、Agoraの日本総代理店あるブイキューブが、Agoraブログを翻訳した記事です。
※一部、日本向けに調整しています。