Что такое My Traceroute (MTR)?

My Traceroute, или MTR, объединяет traceroute и ping для измерения работоспособности сетевого пути.

Цели обучения

После прочтения этой статьи вы сможете:

  • Определять “traceroute” и “MTR”
  • Понимать, как работает traceroute и MTR
  • Читайте результат MTR, чтобы диагностировать проблемы на сетевом пути

Копировать ссылку статьи

Что такое traceroute?

Traceroute — это инструмент, используемый для диагностики проблем на сетевом пути. Traceroute используется для понимания пути, по которому IP-пакеты проходят от одного компьютера (исходный IP-адрес) к другому ( IP-адрес назначения). Команда traceroute (в Linux или macOS) или tracert (в Windows) позволяет определить:

  • Путь, по которому проходят ваши пакеты (включая IP-адреса каждого маршрутизатора)
  • RTT* между источником и каждым переходом или маршрутизатором, через который проходят пакеты, на сетевом пути.

*Время приема-передачи (RTT) — это время, которое требуется данным, чтобы дойти до определенной точки в сети и обратно.

Ниже представлен пример traceroute до 1.1.1.1. Строки со звездочками (* * *) представляют переходы, из которых не были возвращены пакеты; это может произойти в том случае, если маршрутизаторы настроены на игнорирование пакетов traceroute. Время в миллисекундах в каждой строке — это время приема-передачи от источника до этого перехода для каждого пакета (traceroute отправляет три пакета одновременно для проверки результатов).

Пример traceroute
traceroute до 1.1.1.1 (1.1.1.1), 64 перехода макс., пакеты 52 байта
1 myrouter (192.168.47.1) 2,755 мс 1,452 мс 1,325 мс
2 * * *
3 69.168.32.65 (69.168.32.65) 18,159 мс 18,658 мс 15,091 мс
4 * * *
5 206.126.237.30 (206.126.237.30) 30,453 мс 50,242 мс 24,342 мс
6 one.one.one.one (1.1.1.1) 29,000 мс 26,784 мс 26,017 мс

Что такое сетевой путь?

Сетевой путь — это последовательность сетей, через которые проходит пакет, чтобы достичь своего места назначения.

Интернет представляет собой огромный массив сетей, которые подключаются друг к другу посредством маршрутизации. Большинство конечных точек Интернета — например, веб-браузер, пытающийся получить доступ к веб-сайту, и сервер, на котором размещен этот веб-сайт, — не являются частью одной сети. Это означает, что если указанный веб-браузер отправляет запрос на серверы веб-сайта, то запрос, вероятно, будет переходить между несколькими промежуточными сетями по пути.

Как работает traceroute?

Инструмент traceroute отправляет пакеты на IP-адрес назначения и со сроком жизни (TTL), установленным на 1, соответственно, первый маршрутизатор, на который придут пакеты, отправит обратно ошибку ("время превышено"). При возврате ошибки инструмент traceroute записывает идентификатор первого маршрутизатора и время приема-передачи, увеличивает TTL и отправляет новые пакеты, повторяя этот процесс до тех пор, пока 1) последний пакет не достигнет IP-адреса назначения или 2) два набора пакетов не будут отклонены.

Таким образом инструмент позволяет определить путь, по которому проходят ваши пакеты, и время в оба конца до каждого перехода, чтобы вы могли устранить потерю пакетов и задержку.

Traceroute использует протокол ICMP (протокол управляющих сообщений в Интернете). ICMP — это протокол сетевого уровня, используемый для тестирования ошибок. Он не имеет связанного транспортного протокола, работающего непосредственно по интернет-протоколу (IP). При превышении TTL пакета, отправленного инструментом traceroute, маршрутизатор отправляет обратно пакет ICMP Тип 11 (Ошибка превышения времени).

Исходящие пакеты (отправленные начальным маршрутизатором) могут использовать ICMP (по умолчанию в операционных системах MacOS и Linux) или UDP (по умолчанию в Windows). Выбор другого протокола для исходящих пакетов traceroute является одним из способов получения более полных результатов, если маршрутизаторы на сетевом пути настроены на фильтрацию пакетов определенного протокола.

Что такое My Traceroute (MTR)?

My Traceroute (MTR) — это инструмент, сочетающий в себе traceroute и ping, что является еще одним распространенным методом тестирования сетевого подключения и скорости. Помимо переходов по сетевому пути, MTR показывает постоянно обновляемую информацию о задержке и потере пакетов на пути к месту назначения. Это помогает в устранении неполадок сети, позволяя наблюдать, что происходит на пути в режиме реального времени.

MTR работает, обнаруживая сетевой путь аналогично traceroute, а затем регулярно отправляя пакеты для продолжения сбора информации, чтобы обеспечить обновленное представление о работоспособности и скорости сети.

Аналогично traceroute, MTR может использовать ICMP или UDP для исходящих пакетов, но полагается на ICMP для возвращаемых пакетов (Тип 11: Время превышено).

Как читать MTR

Ниже приведены три примера того, как читать и делать выводы из результатов MTR.

MTR № 1: Все чисто

Чистый MTR
Начало: 2020-04-08T13:28:52+0100
HOST: myrouter Потеря % Отпр. Продолж. Средн. Лучш. Худш. Станд. откл.
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: Потеря пакетов — или имеет место?

Потеря пакетов на пути
Начало: 2020-04-08T12:48:28+0000
HOST: myrouter Потеря % Отпр. Продолж. Средн. Лучш. Худш. Станд. откл.
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 Echo с увеличивающимся TTL (срок жизни) для каждого пакета. Когда TTL истекает, маршрутизатор отправляет обратно ICMP Тип 11 (Время превышено), указывая, сколько переходов существует от точки A до точки B.

Многие сетевые операторы (в том числе Cloudflare) устанавливают произвольные ограничения на количество пакетов ICMP, которые могут достигать плоскости управления маршрутизатора. (Плоскость управления — это «мозг» маршрутизатора.) Пакет, превышающий TTL маршрутизатора, должен обрабатываться плоскостью управления. Чтобы предотвратить перегрузку плоскости управления слишком большим количеством таких пакетов, устанавливается ограничение числа запросов (или ограничитель), поэтому мы наблюдаем все эти потери на промежуточных переходах, но не на последнем переходе: ограничения числа запросов плоскостью управления для маршрутизаторов на промежуточных переходах были превышены, поэтому пакеты Типа 11 не отправлялись обратно для пакетов traceroute за пределы этих ограничений, но при этом пакеты могли безопасно направляться к месту назначения.

MTR № 3: Фактическая потеря пакетов

Потеря пакетов на обратном пути
Начало: 2020-04-08T13:32:30+0000
HOST: myrouter Потеря % Отпр. Продолж. Средн. Лучш. Худш. Станд. откл.
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: используйте UDP вместо ICMP. Данный вариант можно использовать для обхода маршрутизаторов, блокирующих пакеты ICMP, или для тестирования определенного порта.
  • Показать IP: показывает IP-адреса рядом с записями для каждого перехода. Это упрощает отправку отчетов о проблемах на вышестоящий роутер.
  • Поиск AS (AS Lookup): показывает номер AS в MTR.

Продажи