Маршрутизация выбора: специфика по сравнению с метрикой

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

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

17
задан 1 December 2014 в 18:31
2 ответа

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

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

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

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

26
ответ дан 2 December 2019 в 20:28

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

Одиночная таблица маршрутизации

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

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

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

Source-specific routes

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

Multiple routing tables

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

.
9
ответ дан 2 December 2019 в 20:28

Теги

Похожие вопросы