![Интерпретация столбца «метрика» в таблице маршрутизации](https://rvso.com/image/1518704/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B0%D1%86%D0%B8%D1%8F%20%D1%81%D1%82%D0%BE%D0%BB%D0%B1%D1%86%D0%B0%20%C2%AB%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D0%BA%D0%B0%C2%BB%20%D0%B2%20%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B5%20%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8.png)
Я немного озадачен выводом, который вижу в своей таблице маршрутизации, особенно столбцом «metric»:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
172.16.35.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
192.168.82.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
Согласно странице руководства, метрика указывает «расстояние» до цели. Я немного не понял, что именно означает «цель». Я предположил, что это мой маршрутизатор (он идет к шлюзу 0.0.0.0, который затем идет к моему маршрутизатору 192.168.0.1). Таким образом, я ожидал, что метрика будет представлять собой один переход к моему маршрутизатору. Однако это 9! Почему это такое большое число?
решение1
Согласно странице руководства, метрика указывает «расстояние» до цели.
Я ожидал, что метрика будет одиночным переходом к моему маршрутизатору. Однако это 9! Почему это такое большое число?
Поле metric
имеет ряд различных значений:
Поле Metric указывает стоимость маршрута. Если к данному идентификатору сети назначения существует несколько маршрутов, метрика используется для принятия решения о том, какой маршрут следует выбрать. Маршрут с наименьшей метрикой является предпочтительным маршрутом. Некоторые алгоритмы маршрутизации сохраняют только один маршрут к любому идентификатору сети в таблице маршрутизации, даже если существует несколько маршрутов. В этом случае метрика используется маршрутизатором для принятия решения о том, какой маршрут сохранить в таблице маршрутизации.
Метрики могут указывать на различные способы выражения предпочтения маршрута:
Количество прыжков.
Общая метрика. Указывает количество маршрутизаторов (прыжков) на пути к идентификатору сети.
Задерживать.
Мера времени, необходимая пакету для достижения идентификатора сети. Задержка используется для указания скорости пути — локальные сети (LAN) имеют низкую задержку, глобальные сети (WAN) имеют высокую задержку — или перегруженного состояния пути.
Пропускная способность.
Эффективный объем данных, который может быть отправлен по пути в секунду. Пропускная способность не обязательно отражает скорость передачи данных по каналу, поскольку очень загруженный канал Ethernet может иметь более низкую пропускную способность, чем неиспользуемый канал WAN на 64 Кбит/с.
Надежность.
Мера постоянства пути. Некоторые типы соединений более подвержены сбоям соединения, чем другие. Например, в случае соединений WAN выделенные линии более надежны, чем коммутируемые линии.
ИсточникТаблицы маршрутизации
решение2
Я собираюсь прокомментировать это, поскольку существующий ответ технически верен в описательном смысле, но в нем отсутствуют ключевые конкретные детали и значения, полезные для отладки и инженерных целей, некоторые из которых мне пришлось протестировать самостоятельно для Windows 10 21H2, хотя это должно применяться почти ко всем версиям Windows, за исключением некоторых специфичных для Windows встроенных значений по умолчанию, которые изменились в более новых версиях Windows (подробнее об этом позже).
Небольшая заметка: Другие ОС, включая многие встроенные ОС в устройствах (маршрутизаторы/коммутаторы/IoT и т. д.), часто используют одну метрику (в отличие от различных суммированных метрик шлюза и интерфейса, как в Windows), но основное правило, согласно которому всегда побеждает наименьшая метрика маршрута, действует везде, где я когда-либо видел.
Для новичков:Суть автоматических значений метрик, в теории, заключается в том, чтобы попытаться гарантировать, что "лучший" маршрут выбирается как можно чаще без дополнительной настройки, когда есть 2+ маршрутов к месту назначения. Причина, по которой определение страницы руководства, показанное в другом ответе, настолько расплывчато/широко, заключается в том, что вы можете структурировать выбранные значения так, как вам хочется, поэтому любая ОС/инженер/разработчик/система может выбирать значения по своему усмотрению, пытаясь гарантировать, что их определение "лучшего" маршрута/соединения обычно побеждает (т. е. имеет наименьшее значение). Тем не менее, в большинстве обычных приложений "лучшее" почти всегда определяется путем назначения значений на основе чистой скорости соединения в диапазонах для размещения соединений, которые регулярно меняются по скорости соединения (в основном беспроводные соединения).
Я не знаю и не проверял, обновляется ли метрика интерфейса последовательно/периодически в беспроводном соединении, когда скорость соединения переходит в разные диапазоны, но я предполагаю, что есть некий гистерезис/зависимость или это просто жестко установлено при подключении, чтобы предотвратить потенциальную слишком быструю смену приоритета туда и обратно, если это вообще происходит, с другим соединением (обычно это проводное соединение на том же компьютере, например, ноутбуке).
Базовые метрики маршрутизации в Windows
Маршрут выбирается из таблицы маршрутизации (проверяется из командной строки с помощью «route print») и представляет собой суммуметрика интерфейсаиметрика шлюза«Активные маршруты» показывают суммарные функциональные показатели.
Чтобы увидеть эти значения отдельно, не проверяя панель управления, можно использовать команду Выполнить->"netsh int ipv4 show add"
Эти два показателя можно редактировать в свойствах сетевой карты -> Дополнительно -> «IPv4» или «IPv6» в зависимости от того, с каким набором маршрутов/трафика вы имеете дело (Выполнить -> «ncpa.cpl», чтобы перейти прямо туда -- Делаемнетиспользуйте приложение «Настройки формы поверх функции»). Вы можете увидеть отдельные метрики в разделах «Шлюзы по умолчанию» и «Метрика интерфейса».
Автоматические значения метрик в Windows (зависит от версии)
Метрика интерфейса:
Заэтотвездесущая страница Microsoft, есть внутренние таблицы, используемые для установки метрики интерфейса в зависимости от скорости соединения. В настоящее время они перечисляют, по порядку, значения до XP-SP2 (я предполагаю), значения XP SP2 через Windows 8.1, затем значения Windows 10+ для беспроводных соединений и проводных соединений (отдельные таблицы). Версии сервера почти наверняка идентичны их эквивалентной потребительской версии, как и многое другое под капотом.
- Пример: стандартное проводное соединение Ethernet 1 Гбит/с, Win10 -> 4-я таблица (см. выше), «Больше или равно 200 Мбит/с и меньше 2 Гбит/с» — автоматическая метрика интерфейса 25.
Метрика шлюза:
Метрика шлюза может быть немного сложнее, так как значения по умолчанию не очевидны или, по-видимому, даже не задокументированы при быстром поиске. Здесь она устанавливается в зависимости от того, использует ли ссылка динамический или статический IP. Могут быть и другие условия, но эти два — все, что я нашел.
В результате тестирования я обнаружил, что значение по умолчаниюстатическийМетрика — 256, значение по умолчаниюдинамический/DHCPметрика равна 0. Поскольку они добавляются к вашей метрике интерфейса выше, и вы можете видеть в приведенных выше связанных таблицах, что 256 больше/хуже любой автоматической метрики интерфейса, это говорит вамссылка с динамическим адресом всегда будет иметь приоритет над любой ссылкой со статическим адресом, если используются все настройки по умолчанию/автоматические настройки.
Основные практические соображения
Например: для того, кто администрирует сервер или другое устройство Windows со статическим IP-адресом и не хочет, чтобы мошеннический/тестовый/второй маршрутизатор, скажем, на втором сетевом адаптере внезапно перенаправлял трафик устройства через указанный маршрутизатор (возможно, переводя сервер в автономный режим), принудительно установите метрики шлюза и интерфейса достаточно низкими, чтобы никакое другое автоматическое назначение не смогло их заменить. Возможно, используйте 1 и 10 соответственно или просто 1 и 1, если вы хотите, чтобы этот маршрут/сетевой адаптер всегда использовался без каких-либо ограничений. Просто задокументируйте, что вы это сделали, так как жесткая настройка некоторых вещей на экстремальные значения может иногда вызывать проблемы в дальнейшем.
Возможные странности/ошибки
Прежде чем начать этот небольшой проект по документированию, я установил вторичный сетевой адаптеринтерфейсметрику до 100, чтобы иметь дело с сетевой лабораторией, которую я организовал, и примерно через неделю или две, при обычном использовании между ними, я вернулся и обнаружил, что интерфейсшлюзметрика также была установлена на 100... не уверен, как это произошло, или это была ошибка в частном случае, но быстрая установка статического значения и обратно (он использовал DHCP, поэтому в свойствах сетевой карты не было шлюза для установки) исправила проблему, и она больше не возвращалась.