Вопрос: Выбор маршрута: специфика против метрики


Я понимаю, что Linux выбирает наиболее специфический маршрут в пункт назначения, когда он выбор маршрутизации, Но как насчет метрики маршрута? Имеет ли он более высокий приоритет, чем специфичность маршрута?

Также будет оценена ссылка на детали алгоритма выбора маршрута, используемого Linux.


11
2017-12-01 16:31


Источник




Ответы:


Маршрутная метрика - это задание предпочтений между маршрутами с одинаковой специфичностью. Это касается маршрутизации в целом (например, Cisco, Windows и т. Д.). Таким образом, модель работает так:

  1. Найти наиболее специфический маршрут (ака самый длинный префиксный матч *)
  2. Если существует несколько маршрутов с одинаковой специфичностью, выберите один с низший административное расстояние (Это различает такие вещи, как прямые прикрепленные маршруты, статические маршруты и различные протоколы маршрутизации).
  3. В пределах этого протокола маршрутизации и определенного маршрута (если спецификация маршрута и административное расстояние одинаковы), выберите маршрут с помощью самый низкий показатель

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

* Он называется самым длинным сочетанием префикса, потому что подсеть в двоичном (например, 24) выглядит 11111111.11111111.11111111.00000000, Таким образом, маршрутизатор может просто сканировать префикс для двоичных 1 и останавливаться, как только он достигнет нуля, а затем он сопоставил префикс.


19
2017-12-01 16:40



Это не совсем верно для Linux, где нет различия между метрической и административной дистанцией. - jch
@jch Имеет ли quagga и co. имитировать AD, установив метрику соответственно? (Не то, чтобы ваш вопрос не был жизненно важен, просто любопытно) - Kyle Brandt♦
Нет, Quagga реализует AD внутри zebra демона и отправляет только выбранные маршруты в ядро ​​- поэтому ядру никогда не нужно иметь дело с AD. Мне нужно проверить, но я думаю, что Quagga устанавливает метрику ядра в постоянное значение. - jch
Просто хочу упомянуть, что это не оправдано в мостах ethernet, например, два одинаковых маршрута с помощью разных устройств с одинаковой метрикой все же привели к тому, что трафик был неправильно перенаправлен по более длинной и неправильной ссылке. - Areeb Soo Yasir


Linux предоставляет ряд инструментов для гибкого выбора маршрутизации.

Единый стол маршрутизации

В простейшем случае существует только одна таблица маршрутизации ядра и маршруты с атрибутом SRC. Эта таблица содержит несколько маршрутов, которые были размещены там вручную (ip route add), демона DHCP или демонов маршрутизации. В этом случае ядро ​​выбирает:

  • наиболее конкретный маршрут;
  • если существует несколько одинаково определенных маршрутов, то есть с наименьшей метрикой ядра.

Обратите внимание, что метрика ядра (отображается ip route show) выбирается демонами маршрутизации и не обязательно относится к метрике любого конкретного протокола маршрутизации. Например, Quagga использует тот же показатель для всех маршрутов, которые он устанавливает в ядре, независимо от метрики протокола.

Исходные маршруты

Linux также поддерживает маршруты с атрибутом SRC, которые соответствуют только пакетам с заданным адресом источника. SRC работает только для IPv6, и до недавнего времени он был глючит (3.11, если память обслуживается); Я не рекомендую использовать его, если вы не знаете, что делаете.

Несколько таблиц маршрутизации

Если вам требуется больше гибкости, чем указано выше, вам нужно будет играть с несколькими таблицами маршрутизации и писать правила, чтобы выбрать одну конкретную таблицу маршрутизации для каждого пакета. Общей методикой является отправка исходного адреса для моделирования исходных маршрутов. Другой способ - запустить каждый демон маршрутизации в собственной таблице маршрутизации и имитировать «административное расстояние» Cisco. Все это подробно описано в Глава 4 ЛАРТК,


8
2017-12-20 22:59



Это не то, что src атрибут делает. Вы захотите прочитать man ip-route или других документов. И он работает с IPv4. Я использую его, чтобы получить весь трафик, включая трафик маршрутизатора, через единый туннель IPSec net-to-net. - Zan Lynx
RTA_SRC атрибут делает именно то, что я сказал; к нему можно from вариант ip команда. ip командования src опция устанавливает RTA_PREFSRC атрибут, который вы описываете. - jch