Определить компьютер в сети до которого самый длинный маршрут
Перед тем, как обращаться к провайдеру, необходимо разобраться - а всё ли хорошо в доме. Без этой проверки есть риск превратиться в мальчика, который постоянно кричал "у меня потери пакетов" "волки".
Только следующий шаг!
Часто возникает вопрос, что делать, если сеть для который пришел пакет находится не за одним маршрутизатором? Чтобы в неё попасть, нужно пройти не через один, а через несколько маршрутизаторов, что в этом случае нужно вносить в таблицу маршрутизации.
p, blockquote 26,0,0,0,0 -->
p, blockquote 27,0,0,0,0 -->
В таблицу маршрутизации записываем только первый шаг, адрес следующего маршрутизатора, все что находится дальше нас не интересует.
p, blockquote 28,0,0,0,0 -->
Считаем, что следующий маршрутизатор должен знать правильный маршрут до нужной нам сети, он знает лучше следующий маршрутизатор, тот знает следующий шаг и так далее, пока не доберемся до нужные нам сети.
p, blockquote 29,0,0,0,0 -->
p, blockquote 30,1,0,0,0 -->
6 Ответ от UNDYING 2017-03-01 13:51:20 (изменено: UNDYING, 2017-03-01 19:16:18)
правильный способ опрeдeлять компьютeр в сeти, до которого самый длинный маршрут
Метрика - числовое значение, влияющее на выбор маршрута в компьютерных сетях. В случае статической маршрутизации это значение обычно не изменяется в пределах сессии.
Иными словами это число переходов (скачков) до места назначения.
Все устройства локальной сети считаются одним промежуточным устройством, и каждый маршрутизатор, используемый на пути к получателю, считается дополнительным устройством. Метрика используется для определения наилучшего маршрута.
Значение параметра метрики определяет приоритет, который назначается маршруту, связанному с определенным интерфейсом.
Чем меньше число метрики, тем выше приоритет.
Но описание немного лукавит, метрика 25 (или 25 "хопов") до маршрутизатора своей "локалки" звучит как оксюморон.
Более-менее точную информацию покажет netsh (проверял на Windows 7 Pro SP1 x64):
"Наколеночный" код (возможны косяки сортировки и работа через временный файл мне не оч. нравится):
Немного поправленный код (убрана метрика -1 [256]):
На моём ПК покажет длину маршрута 1 (в ПК 2 сетёвки, один маршрут до VPN-сервера, до которого 1 прыжок, т.к. он в локалке, и один маршрут до тестовой сетки) - маршрут до тестовой сетки.
Маршрутизация работает на сетевом уровне модель взаимодействия открытых систем OSI. Маршрутизация — это поиск маршрута доставки пакета в крупной составной сети через транзитные узлы, которые называются маршрутизаторы.
p, blockquote 1,0,0,0,0 -->
p, blockquote 2,0,0,0,0 -->
Маршрутизация состоит из двух этапов:
p, blockquote 4,0,0,0,0 -->
Конспект
Найти IP-адрес домашнего роутера.
Запустить длинный пинг до роутера. Замерить потери и скорость.
Запустить спидтест и параллельно длинный пинг.
Сравнить результаты. Если ухудшения показателей пинга нет, то у вас соединение до роутера - быстрее чем канал в интернет, и в целом, дома всё хорошо.
Выбрать частоту и незанятый канал.
По возможности, убрать точку от стен.
Правильно ориентировать антенны. Кстати, запустив длинный "пинг", и покрутив антенны - можно найти оптимальный вариант, но не забывайте, что цифры достоверные только когда вы НЕ КАСАЕТЕСЬ антенн.
Выбрать минимальную мощность передатчика, дающую максимальную скорость в локальной сети.
Как вывести максимальное значение метрики(последняя колонка из вывода команды route print)? Файл - .bat.
То eсть нужно опрeдeлить компьютeр в сeти, до которого самый длинный маршрут.
Буду благодарен за помощь. Если кто-то осилит, буду очень признателен.
Скрин:
Маршрут по умолчанию
p, blockquote 44,0,0,0,0 -->
В таблице маршрутизации назначается специальный маршрутизатор по умолчанию, на которой отправляются все пакеты для неизвестных сетей, как правило это маршрутизатор, который подключен к интернет.
p, blockquote 45,0,0,1,0 -->
Предполагается что этот маршрутизатор лучше знает структуру сети, и способен найти маршрут в составной сети. Для обозначения маршрута по умолчанию, в таблице маршрутизации используются четыре нуля в адресе подсети и четыре нуля в маске (0.0.0.0, маска 0.0.0.0), а иногда также пишут default.
p, blockquote 46,0,0,0,0 -->
Ниже пример маршрута по умолчанию в таблице маршрутизации в операционной системе linux.
p, blockquote 47,0,0,0,0 -->
p, blockquote 48,0,0,0,0 -->
Ip-адрес и маска равны нулю, в адрес и шлюз указываются ip-адрес маршрутизатора по умолчанию.
p, blockquote 49,0,0,0,0 -->
Длина маски подсети
Рассмотрим пример. Маршрутизатор принял пакет на ip-адрес (192.168.100.23), в таблице маршрутизации есть 2 записи (192.168.100.0/24 и 192.168.0.0/16) под который подходит этот ip-адрес, но у них разная длина маски. Какую из этих записей выбрать? Выбирается та запись, где маска длиннее, предполагается, что запись с более длинной маской содержит лучший маршрут интересующей нас сети.
p, blockquote 50,0,0,0,0 -->
Чтобы понять почему так происходит, давайте рассмотрим составную сеть гипотетического университета. Университет получил блок ip-адресов, разделил этот блок ip-адресов на две части, и каждую часть выделил отдельному кампусу.
p, blockquote 51,0,0,0,0 -->
p, blockquote 52,0,0,0,0 -->
На кампусе находятся свои маршрутизаторы, на которых сеть была дальше разделена на части предназначенные для отдельных факультетов. Разделение сетей производится с помощью увеличения длины маски, весь блок адресов имеет маску / 16, блоки кампусов имеют маску / 17, а блоки факультетов / 18.
p, blockquote 53,0,0,0,0 -->
Ниже показан фрагмент таблицы маршрутизации на маршрутизаторе первого кампуса. Он содержит путь до сети первого факультета, 2 факультета, до обще университетской сети, который проходит через университетский маршрутизатор, а также маршрут по умолчанию в интернет, который тоже проходит через обще университетский маршрутизатор.
p, blockquote 54,0,0,0,0 -->
p, blockquote 55,0,0,0,0 -->
p, blockquote 56,0,0,0,0 -->
p, blockquote 57,0,0,0,0 -->
И так получается, что выбирается всегда маршрут с маской максимальной длины. Общие правила выбора маршрутов следующие.
- Самая длинная маска 32 — это маршрут конкретному хосту, если в таблице маршрутизации есть такой маршрут, то выбирается он.
- Затем выполняется поиск маршрута подсети с маской максимальной длины.
- И только после этого используется маршрут по умолчанию, где маска / 0 под которую подходят все ip-адреса.
Следует отметить, что таблица маршрутизации есть не только у сетевых устройств маршрутизаторов, но и у обычных компьютеров в сети. Хотя у них таблица маршрутизации гораздо меньше.
- Как правило такая таблица содержит описание присоединенной сети, который подключен данный компьютер.
- Адрес маршрутизатора по умолчанию (шлюз или gateway) через который, выполняется подключение к интернет, или к корпоративной сети предприятия.
- А также могут быть дополнительные маршруты к некоторым знакомым сетям, но это необязательно.
Для того чтобы просмотреть таблицу маршрутизации, можно использовать команды route или ip route (route print (Windows); route и ip route (Linux)).
p, blockquote 60,0,0,0,0 --> p, blockquote 61,0,0,0,1 -->
Маршрутизация — поиск маршрута доставки пакета между сетями через транзитные узлы — маршрутизаторы.
Моральное устаревание диагностических инструментов
В современном мире диагностика, увы не очень показательна. Во-первых, потому, что она базируется на протоколах 40-летней давности (RFC 792 - от 1981-го года) и превращается в лупу в эпоху электронных микроскопов. А во-вторых, у этих протоколов есть большие проблемы в части безопасности. Если какой-то маршрутизатор полностью отвечает RFC 792, то его можно элементарно атаковать с помощью DDoS атаки (чем хакеры в нулевых и баловались). Поэтому, даже эти протоколы работают плохо благодаря закрученным гайкам.
Прямым следствием этих ограничений является типичный сценарий решения сетевых проблем:
Пользователь обращается к провайдеру и говорит, что с сайтом А у него проблемы и плохая связь. Провайдер обычно всегда говорит: у нас всё хорошо, проблемы у сайта.
Когда пользователь обращается в поддержку сайта, то ему там говорят то же самое – у нас всё хорошо, обратитесь к провайдеру.
В итоге, проблема конечно же не решается.
Ниже мы всё-таки попробуем определиться, где именно проблема.
К сожалению для статьи, и к счастью для автора, у автора всё в порядке с интернетом. Потому, примеров «смотрите – слева всё плохо, а справа всё хорошо» практически не будет. Но, где возможно – я всё-таки попробую что-нибудь сломать для наглядности.
Таблица маршрутизации Linux
В операционной системе linux таблица маршрутизации выглядит немного по-другому, основное отличие это идентификатор интерфейсов. В linux вместо ip-адресов используется название интерфейсов. Например, wlan название для беспроводного сетевого интерфейса, а eth0 название для проводного интерфейса по сети ethernet.
p, blockquote 23,0,0,0,0 -->
p, blockquote 24,0,0,0,0 -->
Также здесь некоторые столбцы удалены для сокращения (Flags, Ref и Use). В других операционных системах и в сетевом оборудовании вид таблицы маршрутизации может быть несколько другой, но всегда будут обязательны столбцы ip-адрес, маска подсети, шлюз, интерфейс и метрика.
p, blockquote 25,0,0,0,0 -->
5 Ответ от batofl 2017-02-28 17:59:10
Но что? И по вашему мнению, это вообще правильный способ опрeдeлять компьютeр в сeти, до которого самый длинный маршрут?
Факторы, влияющие на Wi-Fi
Здесь опустим исключительно программные факторы вроде beacons, размеры пакетов, 80 мегагерц и прочее – про них можно написать еще десяток страниц. Приведу только ключевые физические факторы и факторы окружения.
Частоты : «2.4» в городах – всегда хуже 5 гигагерц. При возможности выбирайте 5.
При выборе канала – проведите анализ спектра, когда «соседи дома». Точки обычно позволяют сканировать эфир. Выберите канал, который не занят и у которого меньше всего соседей. При выборе канала старайтесь выбирать как можно меньший канал. 5-й канал бьет «дальше», чем 159-й.
Ищем частоту, вокруг которой либо самая слабая передача - Signal Quality самый плохой, либо вообще на этой частоте ничего нет.
У ноутбуков антенна встроена в экран. Антенна точки и устройства должны находиться в одной плоскости. Если у вас экран стоит вертикально, то и антенны на роутере должны стоять вертикально, а не так, как обычно показывается на рекламных материалах:
Плохая ориентация антенн :
Правильная ориентация антенн.
Вокруг и над антенной, в радиусе 40-50 сантиметров по горизонту НЕ ДОЛЖНО быть металла и стен. Т.е. – на столе/полке роутер ставить – неизбежное зло, с которым придется смириться. А вот возле стены – плохо. Популярные гипсокартонные стены содержат в себе металлические направляющие каждые 40 сантиметров.
Работающие микроволновки – злейшие враги Wi-Fi в тот момент, когда в них готовят.
Как читать PING
Записи в таблице маршрутизации
Откуда появляются записей в таблице маршрутизации? Есть два варианта статическая маршрутизация и динамическая маршрутизация.
p, blockquote 41,0,0,0,0 -->
При статической маршрутизации, записи в таблице маршрутизации настраиваются вручную, это удобно делать если у вас сеть небольшая и изменяется редко, но если сеть крупная, то выгоднее использовать динамическую маршрутизацию, в которой маршруты настраиваются автоматически. В этом случае маршрутизаторы сами изучают сеть с помощью протоколов маршрутизации RIP, OSPF, BGP и других.
p, blockquote 42,0,0,0,0 -->
Преимущество динамической маршрутизации в том, что изменение в сети могут автоматически отмечаться в таблице маршрутизации. Например, если вышел из строя один из маршрутизаторов, то маршрутизаторы по протоколам маршрутизации об этом узнают, и уберут маршрут, который проходит через этот маршрутизатор. С другой стороны, если появился новый маршрутизатор, то это также отразится в таблице маршрутизации автоматически.
p, blockquote 43,0,0,0,0 -->
Добавление маршрута windows
Добавление маршрута Windows начинается с изучения синтаксиса команды отвечабщего за это, открываем командную строку от имени администратора и вводим вот такую команду:
Запущенная без параметров, команда route выводит справку.
Утилита командной строки Route
- -f Очищает таблицу маршрутизации от всех записей, которые не являются узловыми маршрутами (маршруты с маской подсети 255.255.255.255), сетевым маршрутом замыкания на себя (маршруты с конечной точкой 127.0.0.0 и маской подсети 255.0.0.0) или маршрутом многоадресной рассылки (маршруты с конечной точкой 224.0.0.0 и маской подсети 240.0.0.0). При использовании данного параметра совместно с одной из команд (таких, как add, change или delete) таблица очищается перед выполнением команды.
- -p При использовании данного параметра с командой add указанный маршрут добавляется в реестр и используется для инициализации таблицы IP-маршрутизации каждый раз при запуске протокола TCP/IP. По умолчанию добавленные маршруты не сохраняются при запуске протокола TCP/IP. При использовании параметра с командой print выводит на экран список постоянных маршрутов. Все другие команды игнорируют этот параметр. Постоянные маршруты хранятся в реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes команда Указывает команду, которая будет запущена на удаленной системе. В следующей таблице представлен список допустимых параметров.
- add > Добавление маршрута
- change > Изменение существующего маршрута
- delete > Удаление маршрута или маршрутов
- print > Печать маршрута или маршрутов
Конечная точка определяет конечную точку маршрута. Конечной точкой может быть сетевой IP-адрес (где разряды узла в сетевом адресе имеют значение 0), IP-адрес маршрута к узлу, или значение 0.0.0.0 для маршрута по умолчанию. mask маска_сети Указывает маску сети (также известной как маска подсети) в соответствии с точкой назначения. Маска сети может быть маской подсети соответствующей сетевому IP-адресу, например 255.255.255.255 для маршрута к узлу или 0.0.0.0. для маршрута по умолчанию. Если данный параметр пропущен, используется маска подсети 255.255.255.255. Конечная точка не может быть более точной, чем соответствующая маска подсети. Другими словами, значение разряда 1 в адресе конечной точки невозможно, если значение соответствующего разряда в маске подсети равно 0. шлюз Указывает IP-адрес пересылки или следующего перехода, по которому доступен набор адресов, определенный конечной точкой и маской подсети. Для локально подключенных маршрутов подсети, адрес шлюза — это IP-адрес, назначенный интерфейсу, который подключен к подсети. Для удаленных маршрутов, которые доступны через один или несколько маршрутизаторов, адрес шлюза — непосредственно доступный IP-адрес ближайшего маршрутизатора. metric метрика Задает целочисленную метрику стоимости маршрута (в пределах от 1 до 9999) для маршрута, которая используется при выборе в таблице маршрутизации одного из нескольких маршрутов, наиболее близко соответствующего адресу назначения пересылаемого пакета. Выбирается маршрут с наименьшей метрикой. Метрика отражает количество переходов, скорость прохождения пути, надежность пути, пропускную способность пути и средства администрирования. if интерфейс Указывает индекс интерфейса, через который доступна точка назначения. Для вывода списка интерфейсов и их соответствующих индексов используйте команду route print. Значения индексов интерфейсов могут быть как десятичные, так и шестнадцатеричные. Перед шестнадцатеричными номерами вводится 0х. В случае, когда параметр if пропущен, интерфейс определяется из адреса шлюза. /? Отображает справку в командной строке.
Большие значения в столбце metric таблицы маршрутизации — результат возможности протокола TCP/IP автоматически определять метрики маршрутов таблицы маршрутизации на основании конфигурации IP-адреса, маски подсети и стандартного шлюза для каждого интерфейса ЛВС. Автоматическое определение метрики интерфейса, включенное по умолчанию, устанавливает скорость каждого интерфейса и метрики маршрутов для каждого интерфейса так, что самый быстрый интерфейс создает маршруты с наименьшей метрикой. Чтобы удалить большие метрики, отключите автоматическое определение метрики интерфейса в дополнительных свойствах протокола TCP/IP для каждого подключения по локальной сети.
Имена могут использоваться для параметра конечная_точка, если существует соответствующая запись в файле базы данных Networks, находящемся в папке системный_корневой_каталог\System32\Drivers\Etc. В параметре шлюз можно указывать имена до тех пор, пока они разрешаются в IP-адреса с помощью стандартных способов разрешения узлов, таких как запрос службы DNS, использование локального файла Hosts, находящегося в папке системный_корневой_каталог\system32\drivers\etc, или разрешение имен NetBIOS.
Эта команда доступна, только если в свойствах сетевого адаптера в объекте Сетевые подключения в качестве компонента установлен протокол Интернета (TCP/IP).
Примеры
2 Ответ от Flasher 2017-02-27 08:58:51
- Flasher
- Заблокирован
- Неактивен
Префикс языка добавлен в заголовок.
Прошу ознакомиться целиком с правилами оформления и больше не нарушать.
Соединение до домашнего роутера
Первый IP адрес в результатах tracert скорее всего и будет IP-адресом вашего роутера.
Так же можно сделать вывод, что автор любитель Mikrotik.
Пинг, обычно, отправляет пакеты размером 64 байта, что показывает скорее физические качества канала– нет ли плохого кабеля по пути.
Как уже говорилось ранее – диагностика работает только в сравнении. Ниже - два примера пинга.
С сервера, который подключен к роутеру кабелем.
А это с компьютера, который подключен к той же сети, но по wi-fi.
Какие выводы можно здесь сделать:
WIFI вносит свою лепту. Во-первых, у нас появился Джиттер (видим, что время пинга скачет). Во-вторых, пинг стал немного хуже.
И вот подтверждение моих слов - тест участка компьютер-домашний роутер.
Пакеты, даже не выходя в интернет, иногда проходят плохо. Без потерь, но задержки присутствуют.
Чтоб запустить "длинный ping" - необходимо ввести команду ping -t . В этом случае ping будет продолжаться пока вы не нажмете Control+C
Видим, что при приеме больших объемов информации скорость падает существенно меньше, чем при передаче.
Одна из причин – мощность антенны в точке доступа выше, чем у ноутбука. Ноутбук работает на аккумуляторе и не подключен к сети. Аккумулятор - почти севший и windows находится в режиме «Best battery life»
Вот тот же самый тест, но с подключенным блоком питания.
Видно, что прием стал гораздо лучше, и передача тоже улучшилась. 200мс пинг при передаче отсутствует.
Что в этой ситуации можно настроить:
Мощность передатчика на точке доступа.
Мощность передатчика на ноутбуке.
В первых тестах мощность передатчика ноутбука была выкручена на максимум. Ниже – выкручена на минимум:
Как видно, появились потери, и пинг стал гораздо хуже, даже при работе от блока питания.
Стоит помнить, что Wi-Fi это диалог. Если точка доступа «кричит», а компьютер «шепчет», то точка может плохо слышать компьютер, хотя палочки будут показывать, что всё хорошо.
Если вы везде выставите мощность на максимум, то могут начать страдать ваш Smart TV и телефон, подключенный к той же сети – компьютер будет их «перекрикивать». Ноутбук будет меньше работать от батарей. Мощность всегда нужно выбирать исходя из условий, и ставить минимальную мощность, которая дает вам приемлемый результат. Мощность с запасом ставить не рекомендуется.
Таблица маршрутизации Windows
Продолжим рассматривать маршрутизатор D, у него есть три интерфейса. Ниже на картинке представлен вид таблицы маршрутизации для windows, которые в качестве идентификатора интерфейса используют ip-адрес, который назначен этому интерфейсу. Таким образом в столбце интерфейс есть 3 ip-адреса, которые соответствуют трем интерфейсам маршрутизатора.
p, blockquote 17,0,0,0,0 -->
p, blockquote 18,0,0,0,0 -->
Столбец шлюз, говорит что делать с пакетом, который вышел через заданный интерфейс. Для сетей, которые подключены напрямую к маршрутизатору D, в столбце шлюз, указывается «подсоединен», которое говорит о том, что сеть подключена непосредственно к маршрутизатору и передавать пакет нужно напрямую в эту сеть.
p, blockquote 19,0,0,0,0 -->
p, blockquote 20,0,0,0,0 -->
Если же нам нужно передать пакет на следующий маршрутизатор то в поле шлюз указывается ip-адрес этого маршрутизатора.
p, blockquote 21,0,0,0,0 -->
p, blockquote 22,0,0,0,0 -->
Таблица маршрутизации
Эту информацию маршрутизатор хранит в таблице маршрутизации. На картинке ниже показан ее упрощенный вид, в которой некоторые служебные столбцы удалены для простоты понимания.
p, blockquote 14,0,0,0,0 -->
p, blockquote 15,0,1,0,0 -->
p, blockquote 16,0,0,0,0 -->
3 Ответ от batofl 2017-02-27 16:06:11 (изменено: batofl, 2017-02-27 16:06:23)
Flasher, спасибо большое за отклик, а не могли бы вы отредактировать немного код, чтобы выводило еще и соответствующий маршруту адрес компьютера? И у меня почему-то выводит 281, хотя максимальный 286 и есть 306 .
Flasher: Правила что-то плохо прочли:
У нас не чат, мы пишем грамотно. Предложения должны начинаться с большой буквы и заканчиваться точкой .
Утилита tracert или как проверить маршрут до хоста. Сетевые утилиты 2 часть
Утилита tracert или как проверить маршрут до хоста. Сетевые утилиты 2 часть-01
Всем привет ранее я начал рассказ про сетевые утилиты системного администратора в статье Утилита ping или как проверить доступность хоста. Сетевые утилиты 1 часть, движемся дальше и разбираем еще одну утилиту tracert или как проверить маршрут до хоста. Сетевые утилиты 2 часть.
Traceroute — это служебная компьютерная программа, предназначенная для определения маршрутов следования данных в сетях TCP/IP. Traceroute может использовать разные протоколы передачи данных в зависимости от операционной системы устройства. Такими протоколами могут быть UDP, TCP, ICMP или GRE. Компьютеры с установленной операционной системой Windows используют ICMP-протокол, при этом операционные системы Linux и маршрутизаторы Cisco — протокол UDP.
Открываем командную строку Windows и вводим tracert. Перед вами откроется справка команды tracert.
Утилита tracert или как проверить маршрут до хоста. Сетевые утилиты 2 часть-02
Использование: tracert [-d] [-h максЧисло] [-j списокУзлов] [-w таймаут]
[-R] [-S адресИсточника] [-4] [-6] конечноеИмя
Параметры:
-d Без разрешения в имена узлов.
-h максЧисло Максимальное число прыжков при поиске узла.
-j списокУзлов Свободный выбор маршрута по списку узлов (только IPv4).
-w таймаут Таймаут каждого ответа в миллисекундах.
-R Трассировка пути (только IPv6).
-S адресИсточника Используемый адрес источника (только IPv6).
-4 Принудительное использование IPv4.
-6 Принудительное использование IPv6.
Давайте посмотрим каким маршрутом мы обращаемся до яндекса. Вводим
Видим каждого участника маршрута, они еще называются хопами. В роли участников выступают маршрутизаторы разных провайдеров и на конце хост назначения.
Утилита tracert или как проверить маршрут до хоста. Сетевые утилиты 2 часть-03
Для ускорения получения информации из tracert можно отключить разрешение имен и получать только ip адреса, скорость увеличиться.
Утилита tracert или как проверить маршрут до хоста. Сетевые утилиты 2 часть-04
Если у вас с какого то момента пошли звездочки вместо адресов то вероятнее всего данных хост не доступен и из за него вы не можете попасть на нужный вам ресурс, обычно так выясняется на уровне какого провайдера сейчас сетевая проблема.
Утилита tracert или как проверить маршрут до хоста. Сетевые утилиты 2 часть-05
Вот такая вот полезная утилита tracert и вы научились с помощью нее проверять маршрут до нужного вам хоста. Читайте далее утилита pathping или как точно диагностировать проблему на маршруте до сайта. Сетевые утилиты 3 часть.
добавление маршрута windows
4 Ответ от Flasher 2017-02-27 22:47:15
- Flasher
- Заблокирован
- Неактивен
batofl
У меня получается из cmd:
Далее: echo %ip% %m%
А из батника по идее так:
Варианты действий маршрутизатора
В качестве примера, рассмотрим схему составной сети, здесь показаны отдельные подсети, для каждой подсети есть ее адрес и маска, а также маршрутизаторы, которые объединяют эти сети.
p, blockquote 5,0,0,0,0 -->
p, blockquote 6,0,0,0,0 -->
Рассмотрим маршрутизатор D, на него пришел пакет, и маршрутизатор должен решить, что ему делать с этим пакетом. Начнем с того, какие вообще возможны варианты действий у маршрутизатора. Первый вариант, сеть которой предназначен пакет подключена непосредственно к маршрутизатору. У маршрутизатора D таких сетей 3, в этом случае маршрутизатор передает пакет непосредственно в эту сеть.
p, blockquote 7,0,0,0,0 -->
p, blockquote 8,0,0,0,0 -->
Второй вариант, нужная сеть подключена к другому маршрутизатору (А), и известно, какой маршрутизатор нужен. В этом случае, маршрутизатор D передает пакет на следующий маршрутизатор, который может передать пакет в нужную сеть, такой маршрутизатор называется шлюзом.
p, blockquote 9,0,0,0,0 -->
p, blockquote 10,0,0,0,0 -->
Третий вариант, пришел пакет для сети, маршрут которой не известен, в этом случае маршрутизатор отбрасывает пакет. В этом отличие работы маршрутизатора от коммутатора, коммутатор отправляет кадр который он не знает куда доставить на все порты, маршрутизатор так не делает. В противном случае составная сеть очень быстро может переполнится мусорными пакетами для которых не известен маршрут доставки.
p, blockquote 11,0,0,0,0 -->
- Во-первых у маршрутизатора есть несколько интерфейсов, к которым подключены сети. Нужно определить в какой из этих интерфейсов отправлять пакет.
- Затем нужно определить, что именно делать с этим пакетом. Есть 2 варианта, можно передать пакет в сеть (192.168.1.0/24), либо можно передать его на один из маршрутизаторов подключенные к этой сети. Если передавать пакет на маршрутизатор, то нужно знать, какой именно из маршрутизаторов подключенных к этой сети, выбрать для передачи пакета.
p, blockquote 13,0,0,0,0 -->
Метрика
Можно заметить, что в нашей схеме в одну и ту же сеть, например вот в эту (10.2.0.0/16) можно попасть двумя путями, первый путь проходят через один маршрутизатор F, а второй путь через два маршрутизатора B и E.
p, blockquote 31,0,0,0,0 -->
p, blockquote 32,0,0,0,0 -->
В этом отличие сетевого уровня от канального. На канальном уровне у нас всегда должно быть только одно соединение, а на сетевом уровне допускаются и даже поощряются для обеспечения надежности несколько путей к одной и той же сети.
p, blockquote 33,0,0,0,0 -->
Какой путь выбрать? Для этого используются поле метрика таблицы маршрутизации.
p, blockquote 34,0,0,0,0 -->
p, blockquote 35,0,0,0,0 -->
Метрика это некоторое число, которые характеризует расстояние от одной сети до другой. Если есть несколько маршрутов до одной и той же сети, то выбирается маршрут с меньшей метрикой.
p, blockquote 36,0,0,0,0 -->
p, blockquote 37,0,0,0,0 -->
Раньше, метрика измерялось в количестве маршрутизаторов, таким образом расстояние через маршрутизатор F было бы один, а через маршрутизаторы B и E два.
p, blockquote 38,0,0,0,0 -->
p, blockquote 39,0,0,0,0 -->
Однако сейчас метрика учитывает не только количество промежуточных маршрутизаторов, но и скорость каналов между сетями, потому что иногда бывает выгоднее пройти через два маршрутизатора, но по более скоростным каналам. Также может учитываться загрузка каналов, поэтому сейчас метрика — это число, которое учитывает все эти характеристики. Мы выбираем маршрут с минимальной метрикой в данном примере выше, будет выбран первый маршрут через маршрутизатор F.
p, blockquote 40,0,0,0,0 -->
Маршруты интернета
В первой части статьи я рассказывал, что трафик ходит по маршрутам. Их два : BGP и IP. Один поверх другого. BGP - определяет маршрут через физические маршрутизаторы, а IP - уже логическая составляющая пути. На этом этапе диагностика затруднена тем, что :
Вводная по BGP это TTTLDR.
Благодаря таким технологиям, как AnyCast, IP 11.22.33.44 на маршруте может физически находиться в любом месте, и в двух+ местах одновременно : AnyCast позволяет указать, что за этот IP отвечает сервер в Нью-Йорке и в Москве. При пинге этого IP вы не можете однозначно утверждать, что вы пингуете именно Московский сервер.
Так же есть MPLS и иное туннелирование. Разобрать маршруты тоннелей, простыми инструментами не получится.
Пакет "туда" и пакет "обратно" может пойти разными путями.
Пакет "туда" может пойти по нескольким путям в разное время. Инструментов для диагностики ECMP на домашних OS немного, они сложнее простого tracert, а иногда, стоят дорого.
Будем работать с тем что есть. А есть у нас команда traceroute.
На windows она выполняется из Пуск/cmd и ввести tracert. Так же есть графическая утилита WinMTR. Она дает больше полезной информации и, в некоторых случаях, будем пользоваться ей.
Можно не запускать cmd и там выполнять команды, а делать это windows-style:
Пуск/выполнить cmd /k tracert -d что-нибудь
Ключевые правила диагностики:
Если вы не можете продемонстрировать и повторить проблему, то никто не сможет.
Данные нужно собирать за несколько временных периодов – как минимум, за период, когда проблем нет, и за период, когда проблемы есть.
Как быстро определить, что всё приемлемо
Автор использует универсальную метрику «Пинг на 1000 километров». Он считается следующим образом:
Определяете, где находится сервер.
На Яндекс.картах измеряете расстояние от вас до сервера.
Выполняете команду ping до нужного вам хоста. Если получается не больше, чем 20 миллисекунд на 1000 километров, то у вас с инпут-лагом не должно быть никаких проблем.
Автор находится в ~1000 км от Москвы. Его пинги выглядят следующим образом:
На расстояниях до 200 км данное правило, кстати, не будет выполняться, ввиду того, что скорость работы оборудования вносит бОльшую лепту. На таких расстояниях пинг должен быть в рамках 5-6 миллисекунд. Если больше – у вас проблема.
Читайте также: