Linux что такое метрика

Что такое Метрика сети или маршрута

В локальный сетях есть такое понятие Метрика сетевого интерфейса или Метрика Сети — это специальное цифровое значение, означающее число переходов (так называемых «хопов» или «прыжков»), которое влияет на выбор маршрута в сети. В таблице маршрутизации из двух одинаковых предпочтительным является тот маршрут, у которого лучшая метрика маршрута.

На сегодняшний день в операционных системах Windows, Linux, MAC OSX, Android, iOS по умолчанию используется автоматическое назначение метрики сетевого интерфейса. В Windows 10 эту опцию можно отключить или включить в Дополнительных параметрах протокола TCP/IP v4.

Посмотреть текущие значения этого параметра для каждого динамического маршрута можно через командную строку, введя команду route print. Пример вывода директивы Вы можете видеть ниже:

При использовании статической маршрутизации возможно прописать значения параметра вручную при указании статического маршрута.

При этом все устройства в локальной сети считаются одним промежуточным звеном, а маршрутизатор, который встретится на пути к точке назначения — дополнительным устройством.

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

У самого медленного интерфейса будет самое большое значение параметра и низший приоритет, а у самого быстрого — наименьшее и высший приоритет.

Скорость интерфейса Значение метрики сети
Менее 500 Кбит/с 50
от 500 Кбит/с до 4 Мбит/с 40
от 4 Мбит/с до 20 Мбит/с 30
от 20 Мбит/с до 80 Мбит/с 25
от 80 Мбит/с до 200 Мбит/с 20
от 200 Мбит/с до 2 Гбит/с 10
от 2 Гбит/с и выше 5

Кстати, надо учитывать что в операционных семействах на основе UNIX (Linux, Android и т.п.) метрика сети используется только для протоколов динамической маршрутизации и особо замарачиваться не стоит, так как при выборе маршрута ядро Линукса игнорирует этот параметр.

Источник

В Linux какая метрика имеет маршрут без метрики?

Если у вас есть (в Linux) эти два маршрута:

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

Если я изменю это на это:

Тогда это работает как ожидалось. Кажется, что «нет метрики» является худшей (более высокой) метрикой, чем любое число, вместо метрики 0.

Что это происходит? Это специфично для Linux или сетевого стандарта?

Вы уверены в своем первом наблюдении? Что делает ip route show или route -n показывает тогда? Изменится ли результат, если вы добавите proto static в первом случае?

Я нашел по крайней мере два ресурса, в которых явно указано, что 0 это значение по умолчанию в Linux:

  • http://0pointer.de/lennart/projects/ifmetric/ : метрикой по умолчанию для маршрута в ядре Linux является 0, что означает наивысший приоритет.
  • http://www.man7.org/linux/man-pages/man8/route.8.html : если этот параметр не указан, для метрики семейства адресов inet6 (IPv6) по умолчанию используется значение «1», для inet (IPv4) по умолчанию он равен 0. (затем намекает, что по умолчанию может отличаться при использовании, iproute2 но анализ этих источников не показывает, что это такое)
Читайте также:  D3dcompiler 43 dll c windows system32

Хакер ядра Linux наверняка понадобится, чтобы разобраться с этим.

Кроме того, независимо от того, какое значение выбрано по умолчанию, явно зависит от ОС. В этой статье ( https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes ), например, показано, что Windows выбирает метрику по умолчанию на основе пропускной способности ссылки.

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

Если предположить, что маршрут не по умолчанию не совпадает, то отсутствие метрики должно быть интерпретировано ядром как наличие метрики 0 и, следовательно, маршрута с наивысшим приоритетом. Хотя это упрощенное представление, потому что некоторые демоны маршрутизации позже переведут эту метрику по умолчанию в другое значение, например 1024. Я ожидаю, что это то, что происходит с вами и вашим безымянным дистрибутивом.

Если ip route метрика вообще не отображается, вы можете подтвердить, что это действительно 0, используя более старую route -n команду из пакета net-tools или cat /proc/net/route . Однако эти выходные данные не обязательно совпадают с тем, что демон маршрутизации будет использовать внутри, когда он встречает значение метрики 0.

Кроме того, как вы создаете маршрут тоже имеет значение. ip route использует API-интерфейс netlink, а route ioctl. Код для создания метрик по умолчанию между двумя подходами приводит к различным значениям метрики. Например: создание маршрута IPv6 по умолчанию через ip route приведет к значению метрики 1024 на RHEL 7, в то время как создание того же маршрута через route приведет к метрике 1.

  • если ничего не передано команде route в качестве метрики маршрута, значение 1 используется самой командой.
  • Если в качестве метрики маршрута в команду ip ничего не передается, атрибут вообще не создается, и ядро ​​воспринимает его как 0, что позже переводится как 1024 по умолчанию.

Источник

Маршрутизация с помощью метрик

Подскажите. Допустим, установлены различные метрики на маршруты (к одной цели). Ес-но будет выбираться маршрут с меньшей метрикой. Но, если этот маршрут «откажет», пойдут ли соединения через другой маршрут (автоматически)?
И вернется ли все в «нормальное русло», когда первый маршрут восстановится?

хотя если все настроено правильно, то: 1) пойдут 2) вернется в не зависимости от того, статическая или динамическая маршрутизация используется.

«откажет» — это исчезнет из роут таблицы?

Некорректная постановка задачи. В общем случае «нет, ничего автоматически не переключится». В частных случаях — когда например рассматриваемые каналы это VPN-линки, то переключится. А если оба канала ethernet — то не переключится. Но если задействованы протоколы динамической маршрутизации — может и переключится. Слишком много неизвестных 🙂

Читайте также:  Беспроводной адаптер геймпада xbox для windows 10 драйвер

Уточню: обычная статическая маршрутизация (eth)

«Откажет» — перестанет пропускать, но не исчезнет из записей.

Пока маршрут с меньшей метрикой есть в таблице маршрутизации, он и будет использован. Маршрут удаляется из таблицы маршрутизации при падении интерфейса.

Если у вас несколько маршрутов через eth1 через разных провайдеров, то пишите скрипт, который определит факт «отказа» и поправит маршруты.

>Если у вас несколько маршрутов через eth9 через разных провайдеров, то пишите скрипт, который определит факт «отказа» и поправит маршруты.

Динамическая маршрутизация по ЛОРовски.

Метрики в линуксе не используются вообще, man route

используются, еще как. Кстати, сфейлил, извините, при падении-поднятии интерфейса статический маршрут не восстановится, так что надо писать скрипт, как посоветовали выше или использовать динамическую маршрутизацию. В любом случае, при падении интерфейса будет задействован маршрут с большей метрикой.

Интересует ситуация без падения интерфейса. Т.е. проблема на маршруе где то дальше . Все сохраняется — и таблица и интерфейсы.

И как называется routing daemon в твоей системе? Каких демонов ты уже настраивал?

ospfd настраивал. Статической маршрутизацией не увлекался, но как-то странно слышать, что линукс метрики статических маршрутов игнорирует.

а ты ман дочитал? Сделай поиск дальше.

Может я не правильно понял вашу мысль, но метрики позволяют задать несколько машрутов.

Допустим маршруты в локальную сеть удаленного офиса (сети 10.2.3.x) — один через ppp, а другой маршрут особого типа «unreachable», с большей метрикой. При падении ppp маршрутизатор на все пакеты в сеть 10.2.3.x будет отвечать «Destination Host Unreachable», а не отправлять их по default-маршруту.

Топикстартер не уточнил задачу, но бывают провайдеры, у которых иногда просто большие потери пакетов, и в этой ситуации, ИМХО, лучше всего скрипт-велосипед, который переключит на запасного провайдера по результатам пинга «ya.ru, google.com» и/или в определённые часы суток.

Там в мане(man route) написано что метрики ядро метрики не использует вообще. Я не спец по вопросам маршрутизации и могу ошибаться, но везде где я видел про маршрутизацию пишут что по барабану на всякие метрики.

на метрики по барабану, только если маршруты к разным по размеру сетям. Например если сети /27 и /28, то пакет пойдет по маршруту в сторону сети /28, невзирая на метрики. Если сети одинаковые, то разные метрики отработают, как миленькие. Однако ТС своего все равно таким способом не добъется.

> Метрики в линуксе не используются вообще, man route

man route прочел намного раньше вас, выводы такие — метрики используются, вы либо тролль, либо дурак

Metric The ‘distance’ to the target (usually counted in hops). It is not used by recent kernels, but may be needed by routing dae‐ mons.

Можешь читать дальше, можешь спорить дальше, а у нас тут метрика замечательно используется. Хотя конечно, модет быть что ядро 2.6.33 недостаточно «recent»?

P.S.: я знаю как можно написатьь код, который не будет использовать использовать метрику явно при выборе маршрута, но метрика тогда окажет влияние на таблицу маршрутов в другой момент времени.

Читайте также:  Госуслуги не видит сертификат электронной подписи mac os

а можно поподробнее?

Вы не могли бы объяснить, что доказал этот эксперимент? Было 2 маршрута до корня ru, один дохлый через лупбэк, другой дублирует дефолтный маршрут. После удаления маршрута с лупбэком, трафик пошёл через дефолт gw. И это говорит нам о чём.

значит я ошибся

Ну вот тебе без дефолта

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

В моих RedHat’ах «man route» датирован 2 January 2000, похоже, его с этого момента не правили, ибо есть команда ip (ip route).

А кто-нибудь помнит, в 2.0.x ядрах метрики маршрутов использовались?

Протоколы динамической маршрутизации всегда исходят из собственных метрик. Нагуглил мейл-лист, где обсуждался RIPv2 на линухе, сообщения датированы ’99м годом, то есть метрики использовались и в 2.0.х.

> Протоколы динамической маршрутизации всегда исходят из собственных метрик

Метрика это интегральная характеристика маршрута, учитывающая множество характеристик — например, полосу пропускания канала связи, стоимость, дистанцию и т.д.. А демоны динамической маршрутизации считают метрики в зависимости от протокола, и в конечном итоге, на выходе получается список маршрутов (с метриками), который скармливается в ядро, и ядро используя его проводит маршрутизацию по стандартным правилам.

> Статической маршрутизацией не увлекался, но как-то странно слышать, что линукс метрики статических маршрутов игнорирует.

Источник

MagicPast.NET:

Linux Windows Софт Hardware BIOS Вебмастеру Интернет Сеть C++ Звук Статьи Автомобильные устройства PDA

IP адрес: 185.151.241.146

Версия протокола: HTTP/1.1

Локальный порт: 53157

Устройства для дома и офиса

Навигация: Главная — Сеть — Метрика сетевого интерфейса

Метрика сетевого интерфейса

Метрика — числовое значение, влияющее на выбор маршрута в компьютерных сетях. В случае статической маршрутизации это значение обычно не изменяется в пределах сессии.

Иными словами это число переходов (скачков) до места назначения.

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

Значение параметра метрики определяет приоритет, который назначается маршруту, связанному с определенным интерфейсом.

Чем меньше число метрики, тем выше приоритет.

Windows

Метрики маршрутов можно увидеть, по команде route print в операционных системах под управлением Windows. Метрики назначаются в свойствах протокола TCP/IP, по нажатию кнопки «Дополнительно». Если установлена галочка «Автоматическое назначение метрики», то на разные интерфейсы назначается разная метрика, что не всегда приводит к желаемому результату при работе по сети.

Linux Метрику сетевых интерфейсов можно увидеть по команде route :

Kernel IP routing table:

В ОС семейства Linux не стоит уделять много внимания метрике, т. к. метрика в маршрутах — только для протоколов маршрутизации. При выборе маршрута ядро игнорирует метрику.

Источник

Оцените статью