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

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

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

2 ответа

Решение

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

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

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

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

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

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

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

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

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

Маршрутные источники

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

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

Если вам требуется больше гибкости, чем предусмотрено выше, вам нужно поиграть с несколькими таблицами маршрутизации и написать правила для выбора одной конкретной таблицы маршрутизации для каждого пакета. Обычный метод - отправка по адресу источника для моделирования маршрутов, специфичных для источника. Другой метод - запустить каждый демон маршрутизации в своей собственной таблице маршрутизации и смоделировать "административное расстояние" Cisco. Все это подробно описано в главе 4 LARTC.

Другие вопросы по тегам