Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем разбираться со стандартными сетевыми утилитами Windows на очереди команда Pathping, которая позволяет оценить потери до удаленного узла, а также понять где эти потери происходят, как и любая другая простая утилита, Pathping работает не совсем точно, а ее результаты не всегда однозначны, поэтому будем разбираться с вопросом локализации и обнаружения потерь пакетов компьютерной сети при помощи утилиты Pathping.

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

Зачем нужна и как работает сетевая утилита pathping?

Команда pathping совмещает в себе особенности двух других стандартных сетевых утилит Windows – ping и tracert. Во-первых pathping делает трассировку до удаленного узла, а во-вторых, в течение определенного интервала времени опрашивает узел назначения и транзитные узлы, тем самым удается оценить потери до каждого из узлов, находящихся между узлом назначения и узлом, на котором работает pathping.

Работа команды pathping основана все на том же протоколе ICMP, основной принцип работы этого протокола мы разобрали, когда говорили про tracert и ping, повторяться здесь не имеет смысла, не будем вспоминать и инкапсуляцию данных и как она связана с ICMP и IP. В операционных системах семейства Windows программа pathping представлена в виде одного файла — pathping.exe, который находится в папке System32. В Linux дистрибутивах (например, в дистрибутиве Linux Mint) утилиты pathping нет, вместо нее можете использовать mtr, эта утилита работает по схожему принципу и для ее использования вам также потребуется эмулятор терминала.

Пользоваться pathping не очень удобно (ниже вы поймете почему), для оценки потерь пакетов в канале связи, в Windows гораздо удобнее использовать стороннее приложение WinMTR, о нем будет следующая публикация. Pathping позволяет с значительной долей вероятности определить на каком участке сети происходят потери, но однозначно идентифицировать место компьютерной сети, где теряются пакеты при помощи pathping не возможно.

Дело всё в том, что с протоколом ICMP умеют работать только устройства сетевого уровня моделей OSI 7 или TCP/IP (маршрутизаторы​/роутеры, межсетевые экраны, сервера), устройства канального и физического уровней эталонной модели ничего не знают про существование ICMP и для команды pathping такие устройства как L2 коммутаторы, хабы и сетевые концентраторы, повторители и прочее (разница между хабами, коммутаторами и роутерами) по сути являются обычным проводом, эти устройства не будут отображены в командной строке после того как pathping закончит свою работу, а ведь из-за них могут быть потери и если потери пакетов действительно есть, то они будут отображены только на хопе трассировки, поэтому не всегда можно однозначно сказать, где именно пакет терятся, для ясности давайте рассмотрим рисунок ниже.

Потери пакетов в компьютерной сети

Потери пакетов в компьютерной сети

При помощи команды pathping мы хотим оценить потери между компьютером с IP-адресом 192.168.1.20 и портом второго маршрутизатора, на котором задан IP-адрес 10.10.10.2. Допустим, пакеты будут теряться на линии между хабом (к нему на рисунке подключен ПК) и коммутатором, эта линия выделена красным, в этой ситуации pathping покажет нам, что потери есть, но потери она будет отображать на узле с адресом 192.168.1.1, просто потому, что ни хаб, ни коммутатор в результатах трассировки не видны. Если же потери будут на линии между портом маршрутизатора с IP-адресом 10.10.10.1 и коммутатор, подписанным Switch1, то потери будут отображаться на хопе 10.10.10.2.

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

С назначением команды pathping всё ясно, но мы немного отвлеклись от принципа ее работы, благо он прост:

  1. Сначала pathping выполняет трассировку маршрута до удаленного узла по принципу команды tracert.
  2. После того как маршрут определен, pathping начинает отправлять ICMP запросы по принципу команды ping на каждый транзитный узел и на узел назначения.
  3. Эхо запросы отправляются в течение определенного интервала времени, по умолчанию в Windows 10 этот интервал равен не 275 секундам (как видно из результата), а времени, пока идет опрос узлов, программа фиксирует показатели каждого запроса до каждого узла, по умолчанию на каждый узел отправляется по 100 пакетов, Windows нам сообщает, что опрос всех узлов трассы займет у нее порядка 275 секунд.
  4. Как только опрос узлов окончен, утилита подсчитывает среднее время ответа, количество отправленных запросов и полученных ответов, и процент потерь. Эти показатели высчитываются для каждого хопа в трассировке.

У pathping есть один обязательный параметр — адрес удаленного узла, его можно задать как IP-адресом, так и доменным именем. Другие параметры позволяют настроить режим работы утилиты pathping, например, ее можно настроить таким образом, что опрос всех узлов трассы будет происходить одновременно и это наиболее верное решение, поскольку сетевые маршрутизаторы обрабатывают различным образом транзитные пакеты и пакеты, которые адресованы лично им.

Давайте теперь посмотрим как работает утилита pathping, для этого откроем командую строку Windows и напишем: pathping 8.8.8.8. Вывод команды pathping довольно объемный, поэтому показывать его я буду в виде листингов,  после того, как вы нажмете Enter, pathping определит трассу до удаленного узла и выведет ее на экран.

[php]

C:\Users\Dell>pathping 8.8.8.8

Трассировка маршрута к google-public-dns-a.google.com [8.8.8.8]
с максимальным числом переходов 30:
0 DESKTOP-B0A442D [192.168.0.101]
1 192.168.0.1
2 * * host-188-44-112-129.bbcustomer.zsttk.net [188.44.112.129]
3 host-94-251-24-20.bbcustomer.zsttk.net [94.251.24.20]
4 nsk06rb.transtelecom.net [188.43.24.86]
5 BL-gw.transtelecom.net [188.43.29.74]
6 BL-gw.transtelecom.net [188.43.29.49]
7 mskn17-Lo1-gw.transtelecom.net [217.150.55.229]
8 Google-gw.transtelecom.net [217.150.44.9]
9 108.170.250.33
10 108.170.226.163
11 google-public-dns-a.google.com [8.8.8.8]

Подсчет статистики за: 275 сек. …

[/php]

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

[php]

C:\Users\Dell>pathping 8.8.8.8

Трассировка маршрута к google-public-dns-a.google.com [8.8.8.8]
с максимальным числом переходов 30:
0 DESKTOP-B0A442D [192.168.0.101]
1 192.168.0.1
2 host-188-44-112-129.bbcustomer.zsttk.net [188.44.112.129]
3 host-94-251-24-20.bbcustomer.zsttk.net [94.251.24.20]
4 nsk06rb.transtelecom.net [188.43.24.86]
5 BL-gw.transtelecom.net [188.43.29.74]
6 BL-gw.transtelecom.net [188.43.29.49]
7 mskn17-Lo1-gw.transtelecom.net [217.150.55.229]
8 Google-gw.transtelecom.net [217.150.44.9]
9 108.170.250.33
10 108.170.226.163
11 google-public-dns-a.google.com [8.8.8.8]

Подсчет статистики за: 275 сек. ...
Исходный узел Маршрутный узел
Прыжок RTT Утер./Отпр. % Утер./Отпр. % Адрес
0 DESKTOP-B0A442D [192.168.0.101]
0/ 100 = 0% |
1 0мс 0/ 100 = 0% 0/ 100 = 0% 192.168.0.1
0/ 100 = 0% |
2 1мс 0/ 100 = 0% 0/ 100 = 0% host-188-44-112-129.bbcustomer.zsttk.net [188.44.112.129]
0/ 100 = 0% |
3 2мс 0/ 100 = 0% 0/ 100 = 0% host-94-251-24-20.bbcustomer.zsttk.net [94.251.24.20]
0/ 100 = 0% |
4 2мс 0/ 100 = 0% 0/ 100 = 0% nsk06rb.transtelecom.net [188.43.24.86]
0/ 100 = 0% |
5 1мс 0/ 100 = 0% 0/ 100 = 0% BL-gw.transtelecom.net [188.43.29.74]
0/ 100 = 0% |
6 2мс 0/ 100 = 0% 0/ 100 = 0% BL-gw.transtelecom.net [188.43.29.49]
0/ 100 = 0% |
7 41мс 0/ 100 = 0% 0/ 100 = 0% mskn17-Lo1-gw.transtelecom.net [217.150.55.229]
0/ 100 = 0% |
8 39мс 0/ 100 = 0% 0/ 100 = 0% Google-gw.transtelecom.net [217.150.44.9]
0/ 100 = 0% |
9 37мс 0/ 100 = 0% 0/ 100 = 0% 108.170.250.33
0/ 100 = 0% |
10 — 100/ 100 =100% 100/ 100 =100% 108.170.226.163
0/ 100 = 0% |
11 42мс 0/ 100 = 0% 0/ 100 = 0% google-public-dns-a.google.com [8.8.8.8]

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

[/php]

О том, что работа утилиты pathping завершена можно понять из сообщения «Трассировка завершена». В данном случае потерь нет ни до одного из узлов, а среднее время ответа удаленного узла 8.8.8.8 составляет 42 миллисекунды. Теперь давайте передадим команде доменное имя моего сайта и посмотрим на результат.

[php]

C:\Users\Dell>pathping zametkinapolyah.ru

Трассировка маршрута к zametkinapolyah.ru [92.53.96.154]
с максимальным числом переходов 30:
0 DESKTOP-B0A442D [192.168.0.101]
1 192.168.0.1
2 * host-188-44-112-129.bbcustomer.zsttk.net [188.44.112.129]
3 host-94-251-24-20.bbcustomer.zsttk.net [94.251.24.20]
4 nsk06rb.transtelecom.net [188.43.24.86]
5 ZSTTK-gw.Nsk.gldn.net [195.222.180.18]
6 ZSTTK-lgw.Nsk.gldn.net [195.222.180.17]
7 pe26.Moscow.gldn.net [79.104.225.59]
8 mx.vicigroup.ru [194.186.124.146]
9 80-64-100-97.rascom.as20764.net [80.64.100.97]
10 81-27-252-94.rascom.as20764.net [81.27.252.94]
11 katy.timeweb.ru [92.53.96.154]

Подсчет статистики за: 275 сек. ...
Исходный узел Маршрутный узел
Прыжок RTT Утер./Отпр. % Утер./Отпр. % Адрес
0 DESKTOP-B0A442D [192.168.0.101]
0/ 100 = 0% |
1 0мс 0/ 100 = 0% 0/ 100 = 0% 192.168.0.1
0/ 100 = 0% |
2 1мс 0/ 100 = 0% 0/ 100 = 0% host-188-44-112-129.bbcustomer.zsttk.net [188.44.112.129]
0/ 100 = 0% |
3 2мс 0/ 100 = 0% 0/ 100 = 0% host-94-251-24-20.bbcustomer.zsttk.net [94.251.24.20]
0/ 100 = 0% |
4 4мс 0/ 100 = 0% 0/ 100 = 0% nsk06rb.transtelecom.net [188.43.24.86]
0/ 100 = 0% |
5 2мс 0/ 100 = 0% 0/ 100 = 0% ZSTTK-gw.Nsk.gldn.net [195.222.180.18]
0/ 100 = 0% |
6 3мс 0/ 100 = 0% 0/ 100 = 0% ZSTTK-lgw.Nsk.gldn.net [195.222.180.17]
0/ 100 = 0% |
7 — 100/ 100 =100% 100/ 100 =100% pe26.Moscow.gldn.net [79.104.225.59]
0/ 100 = 0% |
8 51мс 0/ 100 = 0% 0/ 100 = 0% mx.vicigroup.ru [194.186.124.146]
0/ 100 = 0% |
9 47мс 0/ 100 = 0% 0/ 100 = 0% 80-64-100-97.rascom.as20764.net [80.64.100.97]
0/ 100 = 0% |
10 — 100/ 100 =100% 100/ 100 =100% 81-27-252-94.rascom.as20764.net [81.27.252.94]
0/ 100 = 0% |
11 66мс 0/ 100 = 0% 0/ 100 = 0% katy.timeweb.ru [92.53.96.154]

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

[/php]

Отмечу, что сперва было выполнено преобразование доменного имени в IP-адрес и его мы увидели в выводе команды, а затем уже пошли все остальные операции. В данном листинге стоит обратить внимание на вот этих две строки:

[php]

7 — 100/ 100 =100% 100/ 100 =100% pe26.Moscow.gldn.net [79.104.225.59]
10 — 100/ 100 =100% 100/ 100 =100% 81-27-252-94.rascom.as20764.net [81.27.252.94]

[/php]

Новичку может показаться, что до этих узлов процент потери пакетов равен 100, но это не так, просто эти узлы закрыты от пингов, то есть они просто не отвечают на ICMP-запросы моего ПК, если бы была 100% потеря пакетов на седьмом хопе, то мы бы не увидели восьмой хоп и последующие, это же касается и десятого хопа, при 100% потери пакетов я бы просто не смог зайти на свой сайт.

Иногда при использование утилиты pathping можно встретить такую картину:

[php]

6 3мс 0/ 100 = 0% 0/ 100 = 0% ZSTTK-lgw.Nsk.gldn.net [195.222.180.17]
0/ 100 = 0% |
7 10мс 50/ 100 =50% 50/ 100 =50% pe26.Moscow.gldn.net [79.104.225.59]
0/ 100 = 0% |
8 51мс 25/ 100 = 25% 25/ 100 = 25% mx.vicigroup.ru [194.186.124.146]
0/ 100 = 0% |
9 47мс 0/ 100 = 0% 0/ 100 = 0% 80-64-100-97.rascom.as20764.net [80.64.100.97]

[/php]

Здесь на седьмом прыжке мы фиксируем 50% потерь, а на восьмом хопе pathping сообщает, что было потеряно 25% пакетов, но это снова никакие не потери, поскольку уже на девятом и на всех последующих узлах процент потерь пакетов равен нулю. Если бы на седьмом узле было действительно 50% потерь, то примерно такой же процент мы бы видели на всех последующих маршрутизаторах, где-то плюс минус пять процентов.

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

Параметры команды pathping в Windows

В Windows есть команда help, она позволяет посмотреть параметры других команд, к сожалению, help ничего не знает о pathping, поэтому получим параметры этой команды при помощи «/?», чтобы понять, что мы можем изменить при проверке канала связи на потери.
[php]
C:\Users\Dell>pathping /?

Использование:
pathping [-g <список_узлов>] [-h <число_прыжков>] [-i <адрес>] [-n]
[-p <пауза>] [-q <число_запросов>] [-w <таймаут>]
[-4] [-6] <конечный_узел>

Параметры:
— g <список_узлов> Свободный выбор маршрута по списку узлов.
— h <число_прыжков> Максимальное число прыжков при поиске узла.
— i <адрес> Использовать указанный адрес источника.
— n Не определять имена узлов по адресам.
— p <пауза> Пауза между отправками пакетов (мсек).
— q <число_запросов> Число запросов при каждом прыжке.
— w <таймаут> Время ожидания каждого ответа (мсек).
— 4 Обязательное использование протокола IPv4.
— 6 Обязательное использование протокола IPv6.

C:\Users\Dell>
[/php]
У команды pathping не так уж много параметров, примеры использования самых полезных будут ниже. К сожалению, не будет примеров по использованию pathping в IPv6 сетях, хотя от этого мы ничего не потеряем, так как принцип работы команды pathping в сетях IPv4 и IPv6 одинаковый.

Примеры использования утилиты pathping

А теперь обещанные примеры использования полезных параметров команды pathping, на самом деле, если у вас есть возможность, то не используйте pathping для проверки потерь пакетов, есть более удобные утилиты, такие как mtr или WinMTR. Но если возможности другой нет, то рекомендую использовать pathping с дополнительными параметрами.

Как задать время ожидания ответа и количество узлов для опроса

При передаче некоторого вида сетевого трафика необходимо, чтобы пакеты проходили по вашей сети не превышая определенного максимально допустимого времени, это критично для IP-сетей, которые используются для IP-телефонии, онлайн игр, систем видео связи, если такой трафик будет передаваться с большими задержками, то пользователи себя будут чувствовать очень не комфортно, поэтому иногда бывает полезно задать максимальное время ожидания ответа от удаленного узла, у утилиты pathping для этого используется параметр -w, после которого указывается значение в миллисекундах, например так: pathping -w 80 8.8.8.8.

Также бывают ситуации, когда вам нужно опросить не все узлы трассы, а только первых несколько, например, эти узлы находятся в вашей зоне ответственности и вам нужно убедиться, что между ними нет потерь, чтобы задать количество опрашиваемых узлов используется параметр -h после которого указывается количество узлов, которые нужно опросить, например так: pathping -h 4 8.8.8.8.

Никто не запрещает вам использовать несколько параметров вместе, если они не конфликтуют друг с другом, давайте объединим параметры -h и -w: pathping -h 4 -w 40 8.8.8.8. При использовании параметра -h могут возникнуть проблемы и сложности с трассировкой на узлах, которые не отвечают на ICMP запросы, трассировка может просто остановить на них, поэтому будьте внимательны.

Как изменить период опроса удаленных узлов и задать количество пакетов для опроса

Можно изменить скорость, с которой ваш компьютер будет опрашивать удаленные узлы, это делается при помощи параметра -p. По умолчанию pathping ждет 250 миллисекунд, прежде чем отправить следующий запрос, иногда 250 мс — это очень долго, можно изменить этот параметр: pathping -p 40 8.8.8.8. Значение параметру -p задается в миллисекундах, вышеописанная конструкция означает, что pathping будет последовательно опрашивать каждый хоп с интервалом 40 мс.

Также можно задать количество пакетов, используемых pathping для опроса маршрутизаторов, это можно сделать при помощи параметра -q, после него нужно указать количество пакетов, которое будет отправлять ваш компьютер на каждый узел: pathping -q 50 8.8.8.8. По умолчание равно 100. При использование параметра -q утилита может не построить трассу в тех случаях, когда маршрутизатор не отвечает на запросы.

Советы по использованию pathping при проверки потерь до ресурсов в сети Интернет

Во-первых, все советы, описанные для утилит ping и tracert, в равной степени подходят и команде pathping, здесь всё тот же ICMP, который гоняется по все тем же компьютерным сетям через маршрутизаторы. Вот только результаты работы pathping интерпретировать бывает сложнее, чем tracert, как минимум новичкам не всегда понятно: где действительно есть потери, а где узел просто не отвечает или игнорирует часть запросов. Добавьте сюда разницу маршрутов «туда» и «обратно», вспомните про балансировку пакетов, а затем начинайте оценивать потери в сети.

Пример отсутствия потерь пакетов уже был, но я не поленюсь и повторю его снова:

[php]

6 3мс 0/ 100 = 0% 0/ 100 = 0% ZSTTK-lgw.Nsk.gldn.net [195.222.180.17]
0/ 100 = 0% |
7 10мс 50/ 100 =50% 50/ 100 =50% pe26.Moscow.gldn.net [79.104.225.59]
0/ 100 = 0% |
8 51мс 25/ 100 = 25% 25/ 100 = 25% mx.vicigroup.ru [194.186.124.146]
0/ 100 = 0% |
9 47мс 0/ 100 = 0% 0/ 100 = 0% 80-64-100-97.rascom.as20764.net [80.64.100.97]

[/php]

На 7 и 8 хопах потерь нет, 7 маршрутизатор просто игнорирует 50% запросов, а 8 откидывает каждый 4 запрос, если бы, например, потери были на 8 узле, то мы бы их увидели и на девятом, при этом процент потерь был бы примерно одинаковым.

Выводы

Мы с вами разобрались со стандартной сетевой утилитой Windows — pathping, которая позволяет оценить и локализовать потери пакетов в компьютерной сети, в том числе и в сети Интернет. Также мы разобрали несколько полезных примеров использования команды pathping и ее параметры.

Возможно, эти записи вам покажутся интересными


Выберете удобный для себя способ, чтобы оставить комментарий

This article has 1 comment

  1. Алексей Reply

    Да, действительно pathping простая утилита, но если встречается на пути роутер, который не отвечает на ICMP, она просто не работает, спасибо за наводку на другие программы, использовал для трассировки и проверки потерь winmtr, теперь с тех. поддержкой своего провайдера воюю! 😀

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Loading Disqus Comments ...