SpeedData

traceroute_monitoring

Traceroute計測・監視

Tracerouteとは

Tracerouteとは、IPネットワークにおいて、ある端末から別の端末までの経路情報を取得するツールです。
コマンドとしては、Linuxであればtraceroute、Windowsであればtracertです。
Tracerouteによって、どのようなIPアドレスを経由して、どのくらいの速度で通信できているかを計測・監視することが可能です。

Tracerouteで、ネットワーク通信における重要な3つの情報を取得できます。

レイテンシ
通信の起点となる端末から、相手先端末まで、パケットを送ったら戻ってくるまでの時間です。
インターネットの通信を高速道路に例えるならば、レイテンシは速度に該当します。
Webサイト、ストリーミング、Web会議、ゲームなど、現在のインターネット上の殆どのアプリケーションは、リアルタイム性が求められるため、このレイテンシの値が重要です。
ホップ数
通信の起点となる端末から、相手先端末まで、どれだけのノード(ネットワーク機器やサーバ)を経由したか、その数です。
インターネットの通信を高速道路に例えるならば、ホップ数は料金所やインターチェンジに該当します。
ホップ数が少ない程に、より安定してより高速な通信が可能になります。
品質管理や統計学で「分散の加法性」と呼ばれる、ノード毎の通信のばらつき(分散)が足されていくのを小さくできるからです。
パケットロス
通信の起点となる端末から、相手先端末まで、通信を行った場合にパケットが消失してしまった回数です。
インターネットの通信を高速道路に例えるならば、パケットロスは自動車の事故に該当します。
パケットが消失してしまった場合には、再度、送りなおす必要があり、その処理時間分、相手先端末でパケットからデータを組み立てるまでの時間が遅延することになります。

レイテンシ VS スループット

日本においては、通信回線の品質を測るのに、「下り1Gbps」のようなスループットを使ってきました。
しかし、スループットは、巨大なファイルをダウンロードする際には大きな影響を及ぼすものの、Webサイトやストリーミング、ゲームのような、少量のデータをやり取りする際には、使い切ることはありません。
せいぜい、数Mbpsあれば、事足りてしまいます。

またレイテンシの値が大きくても、パケットロスがあったとしても、スループットは大きい数値を算出することが可能です。
ファイルのダウンロードは、押出成型と同じで、一旦データが流れ始めれば、材料が機械を通る速度が遅くても、出口から出てくる製品の量は一定になるからです。
パケットロスが発生したとしても、TCPの再送要求によって補完すればいいだけです。

皆さんがよくインターネットの速度計測で使う、fast.comのようなサイトは、スループットを計算によって「推測」しているに過ぎません。
よりリアルなスループットの変化を見たい場合には、CloudflareのSpeed Testのようなサイトでテストした方が良いでしょう。

現在のインターネット上のサービスの品質管理には、スループットは説明変数にならず、レイテンシ、ホップ数、パケットロスの数値を監視する方が適切です。

Traceroute計測・監視とは

Traceroute計測・監視は、日本道路交通情報センターの高速道路の混雑状況のニュースのように、各地から自社Webサイトまでのレイテンシ、ホップ数、パケットロスを計測・監視します。
CDNを使っている場合には、CDNが割り当てたEdge Serverまでのレイテンシ、ホップ数、パケットロスを計測・監視します。

サービスに遅延や接続障害が発生した際に、Tracerouteのデータがあると、下のレイヤーでの通信が確保できているかどうかの判断が可能となります。
また、Layer3のIP、Layer4のTCPやUDPでの遅延が生じている、パケットロスが発生している場合は、当然ながら、障害や遅延の際の対応策が変わります。

監視するサービスに合わせたプロトコル選択

Tracerouteは、Webサイトやアプリの性能の計測・監視の基本となるネットワークの接続性と性能を監視する上で重要な役割を果たします。
サービス、Webサイトやアプリで使っているプロトコルに合わせて、Tracerouteを実行する必要があります。

実装

ターゲットなるホスト名、もしくはIPアドレスを頂きます。
札幌、東京、大阪、福岡の国内4都市から、定常的にTracerouteを実行して、経路上のレイテンシとパケットロスを計測・監視します。

計測頻度で、パケットロスを検知する確率が変わります。
パケットロスの発生確率は、途中経路のネットワーク機器の品質や負荷に問題が無ければ、ポアソン分布に従います。
計測頻度は、1分、5分、15分からお選び頂きますが、1分が推奨です。

CatchpointのTracerouteは、デフォルトではParis Tracerouteモードで稼働します。
Paris Tracerouteモードを無効化することも可能です。

Tracerouteで使うプロトコルと仕組み

ICMP

ICMPを使ったTracerouteは、ICMPが主にエラー検出用であるため、経路上のエラーがないかどうかを検証する可用性の目的で使います。
ICMPを使ったTracerouteの仕組みは、以下の通りです。

ICMP Tracerouteの利点

ICMP Tracerouteの仕組み

1. パケットの生成
まず、tracerouteは、Time to Live (TTL) 値が1で設定されたICMPエコーリクエストパケットを作成します。
TTLは、パケットがネットワーク内で無限にループするのを防ぐために存在します。
TTL値が1であるパケットは、初めてのルータに到達すると破棄されます。
2. TTL超過エラーメッセージの受信
パケットがルータに到達すると、そのルータはTTL値を1減らします。
パケットのTTLが0になると、ルータはそのパケットを破棄し、送信元に対してICMP TTL超過エラーメッセージ(または "Time Exceeded" メッセージ)を送り返します。
このメッセージには、パケットを破棄したルータのIPアドレスも含まれています。
3. ルートの特定
Tracerouteは、TTL超過エラーメッセージを受信すると、そのメッセージがどのルータから来たのかを記録します。
これにより、パケットの移動経路を追跡することができます。
4. 次のホップへ
Tracerouteは次に、TTL値を1増やして(つまり2にして)新しいICMPエコーリクエストパケットを作成し、送信します。
このパケットは、2つ目のルータまで到達し、同じプロセスが繰り返されます。
5. 目的地への到達
Tracerouteは、TTL値を徐々に増やしながらこのプロセスを繰り返し、最終的に目的地のホストまでパケットを到達させます。
目的地のホストは、ICMPエコーリクエストパケットに対してエコーレスポンスパケットを返し、これがtracerouteにより受信されると、ルートの追跡が終了します。

TCP

TCPを使ったTracerouteは、ICMPをネットワーク機器でブロックしている場合に使うことが多かったです。
昨今ではHTTP/HTTPSなど、TCP上で稼働するプロトコルの基本性能を確認するために使うようになりました。

TCP Tracerouteは、ポート番号として80番や443番を指定しますが、それは最終目的地で使います。
途中経路では、一般的に未使用のポートに対して、TCP SYNパケットを送ります。

TCP Tracerouteの利点

  1. ファイアウォールとの互換性: 一部のファイアウォールやネットワークデバイスはICMPパケット(通常のtracerouteで使用される)をブロックまたは制限するが、ほとんどのデバイスはTCPパケットを許可するため、TCP Tracerouteは経路上でブロックされる可能性が低いです。
  2. HTTP/TCPの実際のパスの確認: TCP Tracerouteは、HTTP/1.1やHTTP/2のようなTCPベースのプロトコルの通信が実際に経由する経路を確認するのに役立ちます。これは特にTCPとUDPでルーティングが異なる可能性があるネットワーク環境で有用です。
  3. ポートレベルの診断: TCP Tracerouteを使用すると、特定のTCPポート(例えばHTTPの80番ポートやHTTPSの443番ポート)への経路を確認することができます。これにより、特定のサービスに影響を与える可能性のあるネットワークの問題を特定できます。
  4. 経路上の問題の特定: TCP Tracerouteは、通信が失敗した場合や遅延がある場合など、TCP通信に問題が発生している原因を追跡するのに役立ちます。パケットがどのルータを経由して、どこで遅延またはロスが発生しているかを確認することができます。

TCP Tracerouteの仕組み

1. パケットの生成
tracerouteは、通常未使用のポートに対して送信するTCP SYNパケットを生成します。
このパケットのTTL(Time to Live)は1で設定されます。
2. TTL超過エラーメッセージの受信
このパケットが最初のルータに到達すると、ルータはTTLを減少させ、0になった場合にパケットを破棄します。
その結果、ルータは送信元にICMP "Time Exceeded" メッセージを送り返します。
3. ルートの特定
"Time Exceeded" メッセージを受信すると、tracerouteはそのメッセージがどのルータから来たのかを記録します。
これにより、パケットの経路を追跡できます。
4. 次のホップへ
次に、tracerouteはTTLを1増やして(つまり2にして)新しいTCP SYNパケットを作成し、送信します。
このパケットは、2つ目のルータまで到達し、同じプロセスが繰り返されます。
5. 目的地への到達
TTL値を徐々に増やしながらこのプロセスを繰り返し、最終的に目的地のホストまでパケットを到達させます。
目的地のホストは、TCP SYNパケットに対してTCP SYN-ACKパケットを返し、これがtracerouteにより受信されると、ルートの追跡が終了します。
6. 接続の終了
通常、tracerouteは、目的地のホストからSYN-ACKパケットを受信した後、その接続を終了するためにTCP RST(リセット)パケットを送信します。
これは、実際には完全なTCP接続を開始しないためです。

TCP Traceroute InSession

従来のTracerouteを実行する際、ネットワーク経路上のデバイスがパケットをドロップすると、トレースが不完全になり、問題のトラブルシューティングが難しくなることがあります。
この問題を克服するために、Catchpointは、2023年5月に、InSessionモニターをTracerouteに追加しました。
InSessionはTCPプロトコルを使用しますが、プローブを送信する前に、目的地へのTCP接続を確立することで、完全でトレース可能な経路を確保します。

UDP

UDP Tracerouteは、HTTP/3を使用して通信するアプリケーションのネットワーク経路を調査するために使用することができます。
UDP Tracerouteは、UDPにおけるデータパケットが通過するルーターとその遅延を確認するために行います。
したがって、ネットワークパスの問題を特定し、それがHTTP/3通信のパフォーマンスにどのように影響しているかを理解するのに役立ちます。

UDPは、TCPと通過するネットワーク経路が異なる場合があり、その経路を特定し、経路上の問題を発見するためにUDP Tracerouteは有用です。

UDP Tracerouteの利点

  1. シンプルさ: UDP Tracerouteは、通常の実装がシンプルであるため、設定や使用が比較的簡単です。初めてのユーザでも扱いやすいです。
  2. 広範な互換性: UDP Tracerouteは、ほとんどのシステムやネットワークデバイスでサポートされています。これは、インターネットの基本的な部分であるIPとUDPに依存しているためです。
  3. 経路トレース: UDP Tracerouteはネットワーク経路の視覚化に役立ちます。パケットが通過するルーターとその遅延を確認することができます。
  4. ネットワーク診断: UDP Tracerouteは、特定の目的地への経路に問題があるかどうかを判断するためのツールとしてよく使用されます。また、ネットワークの遅延やパケットロスが発生している場所を特定するのに役立ちます。
  5. UDPベースのサービスのテスト: UDPベースのサービス(例えばVoIPやストリーミングメディアなど)のパフォーマンス問題を診断する際には、UDP Tracerouteが特に有用です。

UDP Tracerouteの仕組み

1. パケットの生成
まず、tracerouteは、Time to Live (TTL)が1で設定されたUDPパケットを作成します。
パケットは通常、ハイポート(通常は30000番以上)を目指します。
2. TTL超過エラーメッセージの受信
パケットが最初のルータに到達すると、ルータはTTLを減少させ、0になった場合にはそのパケットを破棄します。
その後、ルータは送信元に対してICMP "Time Exceeded" メッセージを送り返します。
3. ルートの特定
"Time Exceeded" メッセージを受信すると、tracerouteはそのメッセージがどのルータから来たのかを記録します。
これにより、パケットの経路を追跡することができます。
4. 次のホップへ
次に、tracerouteはTTLを1増やして(つまり2にして)新しいUDPパケットを作成し、送信します。
このパケットは、次のルータに到達し、同じプロセスが繰り返されます。
5. 目的地への到達
TTL値を徐々に増やしながらこのプロセスを繰り返し、最終的に目的地のホストまでパケットを到達させます。
しかし、UDPパケットが目的地のホストに到達すると、そのホストは通常そのポートでサービスを提供していないため(tracerouteがハイポートを使用するため)、ICMP "Port Unreachable" メッセージを返します。
これを受信したtracerouteは、パケットが目的地に到達したことを理解し、ルートの追跡を終了します。

データ

散布図

Tracerouteの散布図

累積分布関数

Tracerouteの累積分布関数

個票の詳細データ

Tracerouteの個票の詳細データ

長所・短所

長所

短所

アラート/レポート機能

アラート機能

エラー検知
パケットロスを検知した場合には、即座に、指定のメールアドレスにアラートメールを送信することが可能です。
遅延検知
レイテンシの閾値を設定し、その値を超えた観測値を計測した場合には、即座に指定のアドレスにアラートメールを送信することが可能です。

レポート機能

日次で、Tracerouteのレイテンシについて、グラフ化したレポートを指定のメールアドレスに送信することが可能です。