My Traceroute(MTR)は、tracerouteとpingを組み合わせて、ネットワークパスの健全性を測定するものです。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
トレースルートは、ネットワーク経路の問題点を診断するために使用されるツールです。トレースルートは、あるコンピュータ(送信元IPアドレス)から別のコンピュータ(宛先IPアドレス )までにIPパケットが通過する経路を把握するために使用されます。traceroute(LinuxまたはmacOSの場合)またはtracert(Windowsの場合)というコマンドを使用して次のことを把握することが可能です:
*往復時間(RTT)とは、ネットワーク上のある地点と別のある地点との間でデータが行き来するのにかかる時間のことです。
以下は、1.1.1.1へのトレースルートの例です。アスタリスクのついた行(* * *)はパケットを返さなかったホップを表します。これは、ルータがtracerouteパケットを無視するように設定されている場合に起こることがあります。各行のミリ秒の時間は、各パケットの送信元からそのホップまでの往復時間です(tracerouteは結果を検証するために一回につき3つのパケットを送信します)。
トレースルートの例 |
---|
traceroute to 1.1.1.1 (1.1.1.1), 64 hops max, 52 byte packets |
1 myrouter (192.168.47.1) 2.755 ms 1.452 ms 1.325 ms |
2 * * * |
3 69.168.32.65 (69.168.32.65) 18.159 ms 18.658 ms 15.091 ms |
4 * * * |
5 206.126.237.30 (206.126.237.30) 30.453 ms 50.242 ms 24.342 ms |
6 one.one.one.one (1.1.1.1) 29.000 ms 26.784 ms 26.017 ms |
ネットワークパスとは、パケットが宛先に到達するために通過するネットワークの順路のことです。
インターネットは、ルーティングによって互いに接続されたネットワークの巨大な集合体です。ほとんどのインターネットのエンドポイント(例えば、WebサイトにアクセスしようとするWebブラウザやそのWebサイトをホストするサーバーなど)は、同じネットワークに属していません。つまり、WebブラウザがWebサイトのサーバーにリクエストを送る場合、そのリクエストは途中でいくつかの中間ネットワークの間をホップする必要があります。
トレースルートを行うツールは、宛先IPにtime-to-live(TTL) を1に設定したパケットを送信し、パケットが最初に到達したルータがエラー(「time exceeded」)を返送するようにします。エラーが返されると、トレースルートを行うツールは最初のルーターのIDと往復時間を記録する、TTLを増やす、新しいパケットを送る、そして、1)最後のパケットが宛先IPに到達するか、2)2組のパケットがドロップされるまでこの処理を繰り返します。
こうすることで、パケットが通過する経路や各ホップまでの往復時間を把握することができ、パケットロスや遅延のトラブルシューティングを行うことができます。
トレースルートは、ICMP(Internet Control Message Protocol)プロトコルを使用します。ICMPは、エラーテストに使用されるネットワーク層のプロトコルです。ICMPには関連するトランスポートプロトコルがなく、インターネットプロトコル(IP)上で直接実行されます。トレースルートを行うツールによって送信されたパケットのTTLを超えると、ルーターはICMP Type 11(Time Exceeded Error)パケットを送り返します。
送信パケット(開始ルータから送信される)には、ICMP(MacOSおよびLinuxオペレーティングシステムのデフォルト)またはUDP(Windowsのデフォルト)を使用することができます。ネットワーク経路上のルータが特定のプロトコルのパケットをフィルタリングするように設定されている場合、送信トレースルートパケットに別のプロトコルを選択することは、より完全な結果を得るための1つの方法になります。
My Traceroute(MTR)は、tracerouteと、ネットワークの接続性や速度をテストするもう一つの一般的な方法である「ping」を組み合わせたツールです。MTRは、ネットワーク経路上のホップに加え、目的地までの経路上の遅延やパケットロスなど、常に更新される情報を表示します。これは、経路上で何が起こっているかをリアルタイムで確認できるため、ネットワーク上で起きた問題のトラブルシューティングに役立ちます。
MTRは、トレースルートと同様の方法でネットワークの経路を捉え、定期的にパケットを送信して情報を収集し続け、ネットワークの健全性と速度に関する情報を表示を更新しながら提供する仕組みになっています。
トレースルートと同様に、MTRの送信パケットにはICMPやUDPを使用できますが、戻りパケット(Type 11:Time Exceeded)にはICMPを使用します。
以下に、MTRの出力の見方と、結論の出し方について3つの例を示します。
正常なMTR | |||||||
---|---|---|---|---|---|---|---|
Start: 2020-04-08T13:28:52+0100 | |||||||
HOST: myrouter | Loss% | Snt | Last | Avg | Best | Wrst | StDev |
1.|-- 10.10.1.1 | 0.0% | 10 | 0.3 | 0.4 | 0.3 | 0.4 | 0.0 |
2.|-- 141.0.147.177.bcube.co.uk | 0.0% | 10 | 2.7 | 2.7 | 2.5 | 3.1 | 0.2 |
3.|-- 172.16.28.38 | 0.0% | 10 | 2.8 | 6.4 | 2.8 | 22.2 | 6.1 |
4.|-- 172.17.13.76 | 0.0% | 10 | 1.1 | 2.8 | 1.1 | 14.6 | 4.2 |
5.|-- 172.17.13.49 | 0.0% | 10 | 1.4 | 4.0 | 1.3 | 25.0 | 7.4 |
6.|-- 172.17.13.24 | 0.0% | 10 | 2.5 | 2.7 | 2.0 | 5.1 | 1.1 |
7.|-- one.one.one.one | 0.0% | 10 | 1.3 | 1.2 | 1.2 | 1.3 | 0.0 |
この例では、開始ルーターとCloudflareの1.1.1.1のDNS サーバー間のネットワークパスを辿っています。MTRの出力は何の問題も示していません。1.1.1.1に到達するのに7ホップかかり、いずれもパケットロスを示していません。
経路上のパケットロス | |||||||
---|---|---|---|---|---|---|---|
Start: 2020-04-08T12:48:28+0000 | |||||||
HOST: myrouter | Loss% | Snt | Last | Avg | Best | Wrst | StDev |
1.|-- 2400:cb00:207:1000::1 | 0.0% | 10 | 1.1 | 6.0 | 0.6 | 15.7 | 5.9 |
2.|-- 2404:d400:4000:27::1 | 0.0% | 10 | 0.4 | 0.6 | 0.2 | 2.9 | 0.8 |
3.|-- 2404:d400:0:8:: | 0.0% | 10 | 125.7 | 125.7 | 125.7 | 126.2 | 0.2 |
4.|-- 2001:978:2:42::e:1 | 50.0% | 10 | 129.2 | 129.6 | 129.2 | 130.5 | 0.6 |
5.|-- be2846.ccr42.fra03.atlas.cogentco.com | 80.0% | 10 | 151.9 | 139.5 | 127.1 | 151.9 | 17.6 |
6.|-- be2814.ccr42.ams03.atlas.cogentco.com | 80.0% | 10 | 136.2 | 137.0 | 136.2 | 137.8 | 1.1 |
7.|-- be2183.ccr22.lpl01.atlas.cogentco.com | 50.0% | 10 | 146.3 | 146.2 | 145.9 | 146.3 | 0.1 |
8.|-- be3043.ccr22.ymq01.atlas.cogentco.com | 30.0% | 10 | 215.3 | 215.2 | 215.0 | 215.4 | 0.2 |
9.|-- be3260.ccr32.yyz02.atlas.cogentco.com | 90.0% | 10 | 227.8 | 227.8 | 227.8 | 227.8 | 0.0 |
10.|-- be2994.ccr22.cle04.atlas.cogentco.com | 30.0% | 10 | 234.9 | 234.9 | 234.5 | 235.1 | 0.2 |
11.|-- be2718.ccr42.ord01.atlas.cogentco.com | 70.0% | 10 | 233.7 | 233.8 | 233.7 | 233.9 | 0.1 |
12.|-- be2832.ccr22.mci01.atlas.cogentco.com | 50.0% | 10 | 244.8 | 245.1 | 244.8 | 245.5 | 0.3 |
13.|-- be3036.ccr22.den01.atlas.cogentco.com | 30.0% | 10 | 259.6 | 259.6 | 259.3 | 259.8 | 0.2 |
14.|-- be3038.ccr32.slc01.atlas.cogentco.com | 90.0% | 10 | 267.2 | 267.2 | 267.2 | 267.2 | 0.0 |
15.|-- be3110.ccr22.sfo01.atlas.cogentco.com | 10.0% | 10 | 291.0 | 291.1 | 291.0 | 291.4 | 0.1 |
16.|-- be3670.ccr41.sjc03.atlas.cogentco.com | 30.0% | 10 | 292.6 | 292.7 | 292.6 | 292.8 | 0.1 |
17.|-- 2001:550:2:1f::29:2 | 0.0% | 10 | 312.3 | 291.5 | 287.0 | 312.3 | 8.6 |
8.6 | 0.0% | 10 | 298.7 | 299.5 | 298.7 | 306.1 | 2.3 |
19.|-- ??? | 100.0 | 10 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
20.|-- ??? | 100.0 | 9 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
21.|-- 2400:cb00:36:1008::a29e:40e2 | 0.0% | 9 | 302.9 | 302.9 | 302.8 | 303.2 | 0.1 |
この例では、開始ルーターと2400:cb00:36:1008::a29e:40e2(IPv6アドレス)間のネットワークパスを示しています。出力は、Cogent上のすべてのホップで著しいパケットロスを示しています。しかし、最後のホップ(21)にパケットロスはありません。これは、ネットワークパスに実は問題がないことを示しています。多くの場合、起こっているのは「Control Plane Policing」と呼ばれるものです。
先に述べたように、MTRは(デフォルトでは)ICMPエコーパケットを送信し、パケットごとにTTL(Time-To-Live)を増加させることで動作します。TTLが切れると、ルーターはICMP Type 11(Time Exceeded)を返し、A地点からB地点までのホップ数を示します。
Cloudflareを含む多くのネットワーク事業者は、ルーターのコントロールプレーンに到達可能なICMPパケットの量に任意の制限を設定しています(コントロールプレーンとは、ルータの頭脳です)。ルーターのTTLを超えるパケットは、コントロールプレーンで処理されることになります。コントロールプレーンがあまりにも多くのパケットで過負荷状態になることを防ぐために、流量制限(ポリサー)が設定されています。そのため、すべての中間ホップではロスが見られますが、最終ホップでは見られません。中間ホップのルータのコントロールプレーンの流量制限値を超えていたため、その制限値を超えるトレースルートパケットに対してはType 11パケットが送り返されませんでしたが、パケットは無事に目的地に到達することができたのです。
復路のパケットロス | |||||||
---|---|---|---|---|---|---|---|
Start: 2020-04-08T13:32:30+0000 | |||||||
HOST: myrouter | Loss% | Snt | Last | Avg | Best | Wrst | StDev |
1.|-- 162.158.216.129 | 0.0% | 10 | 0.7 | 6.9 | 0.7 | 62.6 | 19.6 |
2.|-- 118.69.221.209 | 0.0% | 10 | 0.2 | 0.3 | 0.2 | 1.3 | 0.3 |
3.|-- 118.69.252.172 | 0.0% | 10 | 0.7 | 1.0 | 0.6 | 2.9 | 0.7 |
4.|-- 118.69.132.169 | 0.0% | 10 | 11.4 | 11.3 | 11.2 | 11.5 | 0.1 |
5.|-- 118.69.247.64 | 0.0% | 10 | 34.2 | 34.4 | 33.9 | 37.2 | 1.0 |
6.|-- 13335.sgw.equinix.com | 50.0% | 10 | 27.5 | 27.9 | 27.1 | 29.1 | 0.8 |
7.|-- 162.158.161.251 | 30.0% | 10 | 26.8 | 26.8 | 26.8 | 26.8 | 0.0 |
この例では、開始ルータと162.158.161.251間のネットワークパスを示しています。出力は、最後の2つのホップ上のパケットロスを示しています。
MTRには様々なオプションがあります。MTR のヘルプページ「mtr --help」で詳細を確認することができます。
よく使われるオプションは以下の通りです: