TRACERT – трассировка маршрута к заданному узлу.

Предназначение Traceroute и Tracert

Для мониторинга пакетной передачи в GNU/Linux, Cisco и macOS используется команда Traceroute, а в Windows — Tracert. Пакеты данных, которые передаются в сеть, проходят не сразу от получателя к пользователю, а идут через узлы — ноды. Поскольку эти хосты не являются целевыми, их еще называют транзитными узлами.

Предположим, вы запустили на своем компьютере браузер и ввели адрес веб-ресурса, содержимое которого собираетесь просмотреть. Браузер посылает запрос, который идет от маршрутизатора к маршрутизатору и так до тех пор, пока он не достигнет узла назначения. На сленге системных администраторов каждый маршрутизатор TRACERT – трассировка маршрута к заданному узлу.TRACERT – трассировка маршрута к заданному узлу.или любой промежуточный пункт назначения называется «хопом» TRACERT – трассировка маршрута к заданному узлу.TRACERT – трассировка маршрута к заданному узлу.от слова hop — прыжок.Такая утилита-трассировщик работает только в одном направлении — от источника к получателю, обратная трассировка может не совпадать с прямой и идти совершенно по иному маршруту, это нормально и не должно удивлять. Кроме того, ICMP-ответ может прийти с опозданием или вообще потеряться TRACERT – трассировка маршрута к заданному узлу.TRACERT – трассировка маршрута к заданному узлу.поэтому в настройках утилиты как правило указывается несколько попыток.

В дополнение к этому на промежуточных узлах стоит ограничение по количеству ответов на ICMP-запросы. По этой причине Tracert является неточным инструментом для выявления неполадок сети.

Между утилитами Tracert и Traceroute есть небольшое отличие и в механизме трассировки: Tracert выполняет трассировку без указания порта у хоста назначения, а Traceroute наоборот — использует порт.

Механизм работы трассировки сети

Каждый посылаемый пакет сопровождается параметром TTL TRACERT – трассировка маршрута к заданному узлу.TRACERT – трассировка маршрута к заданному узлу.Time to live — время жизни IP-пакетов. Это восьмиразрядное поле IP-заголовка, определяющее максимальное число шагов при трассировке. Благодаря этому параметру пакет не ходит по сети бесконечно в случае каких-то коллизий в маршрутизации TRACERT – трассировка маршрута к заданному узлу.TRACERT – трассировка маршрута к заданному узлу.подобные ошибки иногда случаются в реальной жизни, для самих пакетов подобная ситуация зацикливания исключена на уровне дизайна. Максимальное значение TTL=255.

В начале трассировки Tracert посылает первый запрос с параметром TTL = 1. Первый хоп, получивший сообщение, не является целевым и уменьшает величину TTL на 1. Поскольку TTL при этом обнуляется, Tracert возвращает источнику ICMP-сообщение в котором содержится информация о причинах отбрасывания пакета.

Далее Tracert посылает новый запрос с TTL = 2 и первый маршрутизатор в этот раз снова уменьшает на единицу параметр TTL у транзитного пакета, после чего передает данные второму хопу. Тот анализирует поступившие данные, также уменьшает TTL на один и, если получил ноль, возвращает источнику ICMP-сообщение.

Формат командной строки

Общий формат вызова утилиты выглядит следующим образом:

tracert [-d] [-h глубина трассировки] [-j перечень узлов] [-w таймаут] [-R] [-S адрес источника эхо-запроса] [-4] [-6] конечное_Имя

Параметры командной строки:

Пример трассировки

Рассмотрим пример трассировки. Для оценки доступности хоста, мы можем запустить утилиту для обмена пинг-пакетами и посмотреть какая будет задержка при соединении с удаленным хостом. При значении TTL = 1 нам ответит первый хост, при TTL = 2 мы получим отклик от второго сервера и так далее.

В целом, результат, который мы получим, будет кумулятивным по всем узлам маршрута и задержка в 200-300 миллисекунд нам ни о чем не скажет. Медлительность передачи данных может объясняться проблемами с каким-то одним маршрутизатором, определить который можно при помощи более подробной трассировки.

Запуск в Linux

Чтобы запустить режим трассировки через ICMP в UNIX/Linux, следует использовать ключ -I в режиме суперпользователя root. В остальных случаях запуск трассировки можно выполнять от имени любого пользователя.

Наиболее важные аргументы для управления трассировкой в Linux:

Проблема с файрволами

Traceroute выполняет запросы не только по протоколу ICMP. Однако не имеющие достаточного опыта системные администраторы часто изменяют дефолтные настройки файервола включая разрешение протокола ICMP, после чего получают рабочий ping с нерабочей функцией Traceroute.

Альтернативные инструменты

tracepath — утилита, которая отслеживает путь передачи пакета от источника к пункту назначения, может использоваться как альтернатива traceroute для IPv6.

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

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

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

Tracert – трассировка маршрута к заданному узлу.

  
Утилита трассировки маршрута до заданного узла TRACERT.EXE является одним из наиболее часто используемых инструментов сетевой диагностики. Основное ее назначение – получить цепочку узлов, через которые проходит IP-пакет, адресованный конечному узлу, имя или IP-адрес которого задается параметром командной строки.

Формат командной строки:

tracert [-d] [-h максЧисло] [-j списокУзлов] [-w таймаут] [-R] [-S адресИсточника] [-4] [-6] конечноеИмя

Параметры командной строки:

-d – не использовать разрешение в имена узлов.

:/>  Диагностика сетевого подключения | база знаний Serverspace

-h максЧисло – максимальное число прыжков при поиске узла.

-j списокУзлов – свободный выбор маршрута по списку узлов (только IPv4).

-w таймаут – таймаут каждого ответа в миллисекундах.

-R – трассировка пути (только IPv6).

-S адресИсточника – использовать указанный адрес источника (только IPv6).

-4 – принудительное использование IPv4.

-6 – принудительное использование IPv6.

В основе трассировки заложен метод анализа ответов при последовательной отправке ICMP-пакетов на указанный адрес с увеличивающимся на 1 полем TTL. (“Время жизни” –
Time To Live). На самом деле это поле не имеет отношения к времени, а является счетчиком числа возможных переходов при передаче маршрутизируемого пакета.
Каждый маршрутизатор, получив пакет, вычитает из этого поля, сохраняемого в заголовке пакета, единицу и проверяет полученное значение счетчика TTL. Если значение стало равным нулю, такой пакет
отбрасывается и отправителю посылается ICMP-сообщение о превышении времени
жизни (сообщение “Time Exceeded”, значение 0x11 в заголовке ICMP).

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

  При выполнении команды tracert.exe сначала выполняется отправка ICMP пакета с полем TTL в заголовке равным 1 и первый в цепочке маршрутизатор (обычно это основной шлюз из настроек сетевого подключения) вычтя единицу из TTL получает его нулевое значение и сообщает о превышении времени жизни. Таким образом, утилита TRACERT.EXE получает IP-адрес первого маршрутизатора, участвующего в доставке пакетов конечному узлу. Эта последовательность повторяется трижды,
поэтому в строке результата, формируемой tracert.exe, после номера перехода
отображаются три значения времени отклика:

1    1 ms    <1    <1    192.168.1.1

1 – номер перехода (1 – первый маршрутизатор)
1 ms <1 <1 – время его ответа для 3-х попыток (1ms и 2 ответа менее чем 1 ms)
192.168.1.1 – его адрес (или имя)

  Затем процедура повторяется, но
TTL устанавливается равным 2 – первый маршрутизатор его уменьшит до 1 и
отправит следующему в цепочке, который после вычитания 1 обнулит TTL и сообщит о превышении времени жизни. Утилита TRACERT.EXE получит второй IP-адрес узла, участвующего в доставке пакета получателю и его время ответа. Процесс трассировки будет продолжаться до тех пор, пока не будет достигнут конечный узел, имя или адрес которого заданы в качестве параметра командной строки, например , tracert yandex.ru , или до
обнаружения неисправности, не позволяющей доставить пакет. По умолчанию, утилита TRACERT.EXE использует счетчик максимального числа переходов равный 30, что должно быть достаточно для достижения любого узла на планете. При необходимости, иное значение счетчика можно задать с помощью параметра -h

Пример результатов выполнения tracert google.com

tracert google.com – трассировка маршрута к узлу google.com

Результат:


Трассировка маршрута к google.com [74.125.45.100] с максимальным числом прыжков 30:
1 1 ms <1 <1 192.168.1.1
2 498 ms 444 ms 302 ms ppp83-237-220-1.pppoe.mtu-net.ru [83.237.220.1]
3 * * * .
4 282 ms * * a197-crs-1-be1-53.msk.stream-internet.net [212.188.1.113]
5 518 ms 344 ms 382 ms ss-crs-1-be5.msk.stream-internet.net [195.34.59.105]
6 462 ms 440 ms 335 ms m9-cr01-po3.msk.stream-internet.net [195.34.53.85]
7 323 ms 389 ms 339 ms bor-cr01-po4.spb.stream-internet.net [195.34.53.126]
8 475 ms 302 ms 420 ms anc-cr01-po3.ff.stream-internet.net [195.34.53.102]
9 334 ms 408 ms 348 ms 74.125.50.57
10 451 ms 368 ms 524 ms 209.85.255.178
11 329 ms 542 ms 451 ms 209.85.250.140
12 616 ms 480 ms 645 ms 209.85.248.81
13 656 ms 549 ms 422 ms 216.239.43.192
14 378 ms 560 ms 534 ms 216.239.43.113
15 511 ms 566 ms 546 ms 209.85.251.9
16 543 ms 682 ms 523 ms 72.14.232.213
17 468 ms 557 ms 486 ms 209.85.253.141
18 593 ms 589 ms 575 ms yx-in-f100.google.com [74.125.45.100]

Трассировка завершена.

  В результатах трассировки могут присутствовать строки, где вместо адреса
узла отображается звездочка (узел номер 3 в примере). Это не обязательно является признаком неисправности маршрутизатора, и чаще всего, говорит о том, что настройки данного узла запрещают отправку ICMP-сообщений по соображениям безопасности и уменьшения нагрузки на канал при в случае некоторых разновидностей DDoS-атак . Например, подобные настройки используются в сетях Microsoft . Серверы корпорации не отвечают на ping и не позволяют выполнить трассировку маршрута к ним.

tracert google.com – выполнить трассировку маршрута к узлу google.com.

tracert 8.8.8.8 – выполнить трассировку маршрута к узлу с IP-адресом 8.8.8.8

tracert -d yandex.ru – выполнить трассировку маршрута к узла yandex.ru без разрешения IP-адресов в имена узлов. Трассировка в таком режиме выполняется быстрее.

tracert -d -6 ipv6.google.com – выполнить трассировку с использованием протокола IPv6.

Пример результатов трассировки с использованием протокола IPv6:

trace to ipv6.google.com (2a00:1450:4013:c00::71), 30 hops max, 40 byte packets
 1  2a02:348:82::1 (2a02:348:82::1)  8.087 ms  8.063 ms  8.086 ms
 2  te0-22.cr1.nkf.as49685.net (2001:4cb8:40b:1::1d01)  2.143 ms  2.129 ms  2.103 ms
 3  amsix-router.google.com (2001:7f8:1::a501:5169:1)  1.379 ms  1.415 ms  1.422 ms
 4   (2001:4860::1:0:87ab)  1.437 ms  (2001:4860::1:0:87aa)  2.157 ms  (2001:4860::1:0:87ab)  1.408 ms
 5   (2001:4860::8:0:87b0)  1.494 ms  1.469 ms  (2001:4860::8:0:87b2)  8.350 ms
 6   (2001:4860::8:0:b1b7)  5.364 ms  5.321 ms  4.748 ms
 7   (2001:4860::2:0:8651)  4.653 ms  6.994 ms  (2001:4860::2:0:8652)  13.926 ms
 8  ee-in-x71.1e100.net (2a00:1450:4013:c00::71)  4.732 ms  4.733 ms  4.783 ms

:/>  Что такое ПИНГ в интернете и от чего он зависит

Весь список команд CMD Windows

Базис наблюдаемости:

В этой статье я сосредоточусь на двух аспектах наблюдаемости: логах (только сгенерированных приложением) и трейсах.

Бонус!

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

Для ОС семейства Windows такую оптимизацию проводит утилита Winmtr. Она не нуждается в установке и готова к использованию сразу после распаковки из архива.

Изменение размера отправляемых пакетов

Чтобы выполнить ping с использованием пакетов определенного размера (в байтах), необходимо использовать следующую команду:

Windows:

ping -l <размер_пакетов> <IP или домен>

например:

ping -l 64 11.22.33.44

Linux:

ping -s <размер_пакетов> <IP или домен>

например:

ping -s 64 11.22.33.44

В данном случае производилась отправка пакетов размером в 64 байта.

Кореляция логов между микросервисами

Централизованная система логирования в большом распределенном приложении может принимать гигабайты данных в час, если не больше. Учитывая, что запрос может проходить через несколько микросервисов, один из способов получения всех логов, связанных с запросом, охватывающим несколько микросервисов, – это присваивать каждому запросу какой-нибудь уникальный идентификатор (id).

На чьей стороне ошибка?

Итак, обрыв повторился. Но на этот раз запущенный пинг промежуточных узлов поможет «обличить» виновника. Тут все просто – с какого узла вам начало выдавать «Превышен интервал ожидания», тот и слабое звено.

Кто виноват – ясно, теперь нужно понять, что делать в конкретных ситуациях.

1. Последний узел. Если последний узел сначала пинговался нормально (некоторые Windows-машины вообще не отвечают на пинг, это задается в настройках брандмауэра)…

…а после обрыва начал показывать «Превышен интервал ожидания», обрыв происходит на вашем сервере.

В этом случае зайдите в панель управления, запустите консоль и войдите в операционную систему, чтобы разобраться, почему сервер не работает. Если окажется, что операционная система зависла, перезагрузите сервер.

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

3. Все узлы одновременно. Если все окна с пингом начали показывать «Превышен интервал ожидания», проблема в вашем компьютере или сети, к которой он подключен.

Пинг промежуточных узлов

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

Теперь по порядку.

1. Запустите команду cmd: Win R > пропишите cmd > ОК.

2. В открывшейся командной строке введите ping -t Х.Х.Х.Х (где Х.Х.Х.Х – это адрес одного из промежуточных узлов, которые мы узнали при трассировке) и нажмите Enter.

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

Полезно!Если вам нужно постоянно отслеживать качество соединения, для Windows можно воспользоваться удобной программой PingPlotter.

Итак, пингуем – в десяти отдельных окнах командной строки вводим команды с IP-адресами узлов, которые мы выявили при трассировке. В нашем случае будут такие команды:

ping -t 10.1.1.1ping -t 193.151.89.254ping -t 85.195.75.129ping -t 213.248.79.29ping -t 62.115.139.50ping -t 62.115.120.8ping -t 62.115.153.215ping -t 108.170.251.129ping -t 66.249.94.135ping -t 216.58.208.46

Если в каком-нибудь из окон вы с первых же секунд видите «Превышен интервал ожидания», не спешите кричать: «Попался!». Если следующие узлы пингуются нормально, значит, этот просто закрыт настройками. В нашем случае, например, предпоследний узел (66.249.94.135) сразу же говорит, что интервал превышен, но с пингом десятого узла никаких проблем нет.

Что дальше? Запустив пинг всех узлов, оставьте его включенным и занимайтесь своими делами до следующего обрыва. Как только он случится, вернитесь к окнам пинга, чтобы выявить, кто виноват и что делать.

Проверка трассировки

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

Для выполнения трассировки используется следующая команда:

Windows:

tracert <IP или домен>

например:

tracert wikipedia.org

Linux:

traceroute <IP или домен>

например:

traceroute wikipedia.org

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

Чтобы активировать эту опцию необходимо использовать следующий вид команды:

:/>  Big Baby Tape, Kizaru - ВАУ сколько всего нужно было набрать 200к 300к 500к миллион » Свежая музыка каждый день с Музкинг.нет

Windows:

tracert -d <IP или домен>

Linux:

traceroute -n <IP или домен>

Сопровождение сайта

Реализация распределенной трассировки с помощью корреляции логов и трейсов

ПОДХОД #1: Инструментация с помощью сторонних решений, таких как DATADOG

Ссылка: DataDog APM

При таком подходе мы инструментируем сервисы в распределенных системах с DataDog APM (application performance monitors – системы мониторинга производительности приложений). Datadog выполняет 100%-ную трассировку запросов, а также может собирать логи, создаваемые вашими приложениями.

Datadog по существу берет на себя заботу о централизованном логировании и сборе трассировочной информации. Datadog генерирует уникальные идентификаторы трейсов и автоматически распространяет их на все инструментированные нижестоящие микросервисы. Единственное, что от нас требуется, это связать DD traceId с логами, и мы сможем получим корреляцию логов и трейсов.

Рисунок 6: Инструментация приложения с DataDog
Рисунок 6: Инструментация приложения с DataDog

ПОДХОД #2: ZIPKINS, CLOUD-SLEUTH СО SPRING BOOT

Ссылка:

Zipkins, Cloud Sleuth

Преимущества:

  1. Полная интеграция в SPRING boot

  2. Простота в использовании

  3. Трейсы можно визуализировать с помощью пользовательского интерфейса Zipkins.

  4. Поддерживает стандарты OpenTracing через внешние библиотеки.

  5. Поддерживает корреляцию логов через контексты Log4j2 MDC.

Недостатки:

  1. Нет решения для автоматического сбора логов, связанных с трейсами. Нам придется самостоятельно отправлять логи в ElasticSearch и выполнять поиск, используя идентификаторы трейсов, сгенерированные cloud-sleuth (как заголовок X-B3-TraceId).

Дизайн:

Рисунок 8: Zipkins, Cloud Sleuth и Spring Boot.
Рисунок 8: Zipkins, Cloud Sleuth и Spring Boot.

ПОДХОД #3: AMAZON XRAY

Ссылка: AmazonXRAY

Преимущества:

  1. Нативно поддерживает все ресурсы AWS, что очень хорошо, если ваши распределенные сервисы развернуты и работают в AWS

  2. Балансировщики нагрузки AWS автоматически генерируют идентификаторы (REQUEST ID) для каждого входящего запроса, что освобождает приложение от этой заботы. (Ссылка)

  3. Позволяет выполнять трассировку на всем пути от шлюза API до балансировщика нагрузки, сервиса и других зависимых ресурсов AWS.

  4. Реализует корреляцию логов с помощью логов в CLOUDWATCH logs

Недостатки:

  1. Cloudwatch log может стать очень дорогими при большом объеме логов

ПОДХОД #4: JAGER

Ссылка: Jager

Преимущества:

  1. Поддерживает opentracing по умолчанию

  2. Имеет библиотеки, которые работают со Spring

  3. Поддерживает Jager Agent, который можно установить в качестве средства распространения трейсов и логов.

Недостатки:

С точки зрения обслуживания и настройки инфраструктуры достаточно сложен.

Составляющие трейса

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

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

Трассировка

Трассировка – это метод, который позволяет профилировать и контролировать приложения во время их работы. Трейсы предоставляют полезную информацию, такую ​​как:

  1. Путь запроса через распределенную систему.

  2. Задержка запроса при каждой пересылке/вызове (например, от одного сервиса к другому).

Ниже приведен пример трассировки для запроса, взаимодействующего с двумя микросервисами (сервисом-аукционом рекламы и сервисом-интегратором рекламы).

Рисунок 4. Трассировка
Рисунок 4. Трассировка

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

Трассировка в linux

В операционных системах семейства Linux – Ubuntu, Fedora, CentOS и т.п. – для запуска трассировки маршрута в надо открыть системную консоль и ввести команду:

traceroute <имя_сервера>

Пример:

Внимание! Использовать трассировку маршрута в сети для оценки качества последней мили (абонентской линии ADSL,FTTB или PON) нельзя, так как эта системная программа никоим образом оценить качество линии не может и не умеет.

Трассировка маршрута

Во время трассировки происходит отправка пакетов данных между локальным компьютером и сервером. Это помогает проследить путь прохождения запроса к серверу и определить, на каком этапе происходит обрыв. Выполнить трассировку довольно легко.

1. Запустите команду cmd: Win R > пропишите cmd > ОК.

2. В открывшейся командной строке введите tracert Х.Х.Х.Х (где Х.Х.Х.Х – это IP-адрес сервера или домен) и нажмите Enter.

Установка количества отправляемых пакетов

Чтобы задать максимальное количество отправляемых пакетов, необходимо использовать команду следующего вида:

Windows:

ping -n <число_пакетов> <IP или домен>

например:

ping -n 5 11.22.33.44

Linux:

ping -c <число_пакетов> <IP или домен>

например:

ping -c 5 11.22.33.44

Заключение

Логи и трейсы сами по себе безусловно полезны. Но когда они связаны вместе с помощью корреляции, они становятся мощным инструментом для ускорения устранения проблем в производственной среде и в то же время дают девопсу представление о работоспособности, производительности и поведении распределенных систем. Как вы увидели выше, существует несколько способов реализации этого решения. Выбор за вами 🙂

Оставьте комментарий