My Traceroute(MTR)란?

My Traceroute(MTR)는 traceroute와 ping을 결합하여 네트워크 경로의 상태를 측정합니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • "traceroute" 및 "MTR"의 정의
  • traceroute 및 MTR의 작동 방식 이해하기
  • MTR 결과를 읽어 네트워크 경로의 문제 진단하기

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

traceroute란?

traceroute는 네트워크 경로의 문제를 진단하는 데 사용되는 도구입니다. traceroute는 IP 패킷이 한 컴퓨터(원본 IP 주소)에서 다른 컴퓨터(대상 IP 주소)로 이동하는 경로를 이해하는 데 사용됩니다. traceroute(Linux 또는 macOS) 또는 tracert(Windows) 명령을 사용하면 다음을 이해할 수 있습니다.

  • 패킷이 사용하는 경로(각 라우터의 IP 주소 포함)
  • 네트워크 경로에서 소스와 각 홉 또는 패킷이 통과하는 라우터 간의 RTT*

*왕복 시간(RTT)은 데이터가 네트워크의 특정 지점에 왕복하는 데 걸리는 시간입니다.

다음은 1.1.1.1에 대한 traceroute의 예입니다. 별표(* * *)가 있는 줄은 패킷이 반환되지 않은 홉을 나타냅니다. 이는 라우터가 traceroute 패킷을 무시하도록 구성된 경우 발생할 수 있습니다. 각 줄의 밀리초 시간은 각 패킷에 대해 소스에서 해당 홉까지의 왕복 시간입니다(traceroute는 결과를 확인하기 위해 한 번에 세 개의 패킷을 보냅니다).

traceroute 예시
1.1.1.1 (1.1.1.1)에 대한 traceroute, 최대 64홉, 52바이트 패킷
1 myrouter(192.168.47.1) 2.755ms 1.452ms 1.325ms
2 * * *
3 69.168.32.65 (69.168.32.65) 18.159ms 18.658ms 15.091ms
4 * * *
5 206.126.237.30(206.126.237.30) 30.453ms 50.242ms 24.342ms
6 one.one.one.one (1.1.1.1) 29.000ms 26.784ms 26.017ms

네트워크 경로란?

네트워크 경로는 패킷이 대상에 도달하기 위해 통과하는 네트워크 시퀀스를 나타냅니다.

인터넷은 라우팅을 통해 서로 연결되는 방대한 네트워크의 모음입니다. 대부분의 인터넷 엔드포인트(예: 웹 사이트 및 해당 웹 사이트를 호스팅하는 서버에 액세스하려는 웹 브라우저)는 동일한 네트워크의 일부가 아닙니다. 즉, 해당 웹 브라우저가 웹 사이트의 서버에 요청을 보내는 경우 요청은 도중에 여러 중개 네트워크 사이를 이동해야 합니다.

traceroute는 어떻게 작동할까요?

traceroute 도구는 Time-to-Live(TTL)를 1로 설정하여 패킷을 대상 IP로 전송하므로 패킷이 도달하는 첫 번째 라우터가 오류("시간 초과")를 다시 보냅니다. 오류가 반환되면 traceroute 도구는 첫 번째 라우터의 ID 및 왕복 시간을 기록하고, TTL을 증가시키며, 새 패킷을 전송하여 1) 마지막 패킷이 대상 IP에 도달하거나 2) 두 세트의 패킷이 삭제될 때까지 이 프로세스를 반복합니다.

이렇게 하면 이 도구를 사용하여 패킷이 사용하는 경로와 각 홉까지의 왕복 시간을 이해할 수 있으므로 패킷 손실 및 대기 시간 문제를 해결할 수 있습니다.

traceroute는 인터넷 제어 메시지 프로토콜(ICMP) 프로토콜을 사용합니다. ICMP는 오류 테스트에 사용되는 네트워크 계층 프로토콜입니다. ICMP에는 인터넷 프로토콜(IP)에서 직접 실행되는 연결된 전송 프로토콜이 없습니다. traceroute 도구에서 보낸 패킷의 TTL이 초과되면 라우터는 ICMP 유형 11(시간 초과 오류) 패킷을 다시 전송합니다.

발신 패킷(시작 라우터에서 전송된)은 ICMP(MacOS 및 Linux 운영 체제의 기본 값) 또는 UDP(Windows의 기본 값)를 사용할 수 있습니다. 발신 traceroute 패킷에 대해 다른 프로토콜을 선택하는 것은 네트워크 경로를 따라 라우터가 특정 프로토콜의 패킷을 필터링하도록 구성된 경우 보다 완전한 결과를 얻는 한 가지 방법입니다.

My Traceroute(MTR)란?

내 Traceroute(MTR)는 네트워크 연결 및 속도를 테스트하는 또 다른 일반적인 방법인 경로 추적과 핑을 결합한 도구입니다. 네트워크 경로의 홉 외에도 MTR은 목적지까지의 경로를 따라 대기 시간 및 패킷 손실에 대한 정보를 지속해서 업데이트합니다. 이렇게 하면 경로를 따라 발생하는 상황을 실시간으로 볼 수 있으므로 네트워크 문제를 해결하는 데 도움이 됩니다.

MTR은 traceroute와 유사한 방식으로 네트워크 경로를 검색한 다음 정기적으로 패킷을 전송하여 정보를 계속 수집하여 네트워크 상태 및 속도에 대한 업데이트된 보기를 제공하는 방식으로 작동합니다.

traceroute와 마찬가지로 MTR은 발신 패킷에 ICMP 또는 UDP를 사용할 수 있지만, 반환(유형 11: 시간 초과) 패킷에는 ICMP를 사용합니다.

MTR을 읽는 방법

다음은 MTR 출력에서 결론을 읽고 도출하는 방법에 대한 세 가지 예입니다.

MTR #1: All clean

Clean MTR
Start: 2020-04-08T13:28:52+0100
HOST: myrouter 손실% Snt 최근 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홉이 필요하며,그 홉 중 어느 것도 패킷 손실을 나타내지 않습니다.

MTR #2: 패킷 손실 - 아니면 있을까요?

경로상의 패킷 손실
Start: 2020-04-08T12:48:28+0000
HOST: myrouter 손실% Snt 최근 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

이 예에서는 시작 라우터와 IPv6 주소인 2400:cb00: 36 :1008::a29e:40e2 간의 네트워크 경로를 보여줍니다. 출력은 모든 Cogent 홉에서 상당한 패킷 손실을 보여줍니다. 그러나 마지막 홉(21)에서는 패킷 손실이 없습니다. 이는 네트워크 경로가 실제로 문제가 없음을 나타냅니다. 현재 일어나고 있는 일은 종종 "제어 영역 폴리싱"이라고 하는 것입니다.

앞에서 설명한 대로 MTR은 패킷당 TTL(Time-To-Live)이 증가하는 ICMP 에코 패킷(기본값)을 전송하여 작동합니다. TTL이 만료되면 라우터는 ICMP 유형 11(시간 초과)을 다시 전송하여 A 지점에서 B 지점 사이에 몇 홉이 있는지 나타냅니다.

Cloudflare를 포함한 많은 네트워크 운영자는 라우터의 제어 영역에 도달할 수 있는 ICMP 패킷의 양에 임의의 제한을 설정합니다. (제어 영역은 라우터의 두뇌입니다.) 라우터의 TTL을 초과하는 패킷은 제어 영역에서 처리해야 합니다. 제어 영역이 이러한 패킷 중 너무 많은 것에 의해 압도되는 것을 방지하기 위해 속도 제한(또는 폴리서)이 설정되므로 중간 홉에서는 모든 손실이 표시되지만, 최종 홉에서는 볼 수 없습니다. 중간 홉의 라우터에 대한 제어 영역 속도 제한이 초과되었으므로 Type 11 패킷이 해당 제한을 초과하는 traceroute 패킷에 대해 다시 전송되지 않았습니다. 그러나 패킷은 목적지까지 안전하게 통과할 수 있었습니다.

MTR #3: 실제 패킷 손실

반환 경로의 패킷 손실
Start: 2020-04-08T13:32:30+0000
HOST: myrouter 손실% Snt 최근 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 도움말 페이지를 통해 자세한 내용을 확인할 수 있습니다. mtr --help

자주 사용되는 옵션은 다음과 같습니다.

  • TCP MTR: ICMP 패킷을 사용하는 대신 TCP를 사용합니다. 선택적으로 대상 포트도 선택할 수 있습니다.
  • UDP MTR: ICMP 대신 UDP를 사용합니다. 이는 ICMP 패킷을 차단하는 라우터를 우회하거나 특정 포트를 테스트하는 데 사용할 수 있습니다.
  • IP 표시: 각 홉의 레코드 옆에 IP 주소를 표시합니다. 이렇게 하면 업스트림의 문제를 더 쉽게 보고할 수 있습니다.
  • AS 조회: MTR에 AS 번호를 표시합니다.