Вибір маршрутизації: специфічність та показник


17

Я розумію, що Linux вибирає найбільш конкретний маршрут до пункту призначення, коли він робить вибір маршрутизації . А як щодо метрики маршруту? Він має більш високий пріоритет, ніж специфіка маршруту?

Посилання на деталі алгоритму вибору маршрутів, який використовує Linux, також будуть вдячні.

Відповіді:


26

Показником маршрутів є встановлення переваги серед маршрутів з однаковою специфікою. Це стосується маршрутизації взагалі (тобто Cisco, Windows тощо). Тож модель працює так:

  1. Знайдіть найбільш конкретний маршрут (він же відповідає найдовшому префіксу * )
  2. Якщо є декілька маршрутів з однаковою специфікою, виберіть той, який має найменшу адміністративну відстань (Це розрізняє такі речі, як безпосередньо приєднані маршрути, статичні маршрути та різні протоколи маршрутизації).
  3. У межах цього протоколу маршруту та конкретного маршруту (якщо специфіка маршруту та відстань адміністратора однакові) обрали маршрут з найнижчою метрикою

Зауважте, що існують інші речі, які можуть проводити таку маршрутизацію, засновану на політиці, яка дозволяє робити такі речі, як маршрут, на основі IP-адреси джерела. Але специфіка маршруту, адміністративна відстань, а потім метрика - це те, що я вважаю головними трьома речами.

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


1
Це не зовсім вірно в Linux, де немає різниці між метричними та адміністративними відстанями.
jch

1
@jch Чи quagga та co. імітувати AD, встановивши відповідно метрику? (Не те, що ваш пункт не життєво важливий, просто цікавий)
Кайл Брандт

1
Ні, Quagga реалізує AD внутрішньо у zebraдемон, і лише надсилає вибрані маршрути до ядра - тому ядро ​​ніколи не має потреби мати AD. Мені потрібно перевірити, але я думаю, що Quagga встановлює метрику ядра на постійне значення.
jch

Хочеться лише зазначити, що це не відповідає дійсності в мостах Ethernet, наприклад, два однакові маршрути через різні пристрої з однаковою метрикою все-таки призвели до неправильного перенаправлення трафіку через довше і неправильне посилання.
Areeb Soo Yasir

9

Linux надає ряд інструментів для гнучкого вибору маршрутизації.

Єдина таблиця маршрутизації

У найпростішому випадку є лише одна таблиця маршрутизації ядра та відсутні маршрути з атрибутом SRC. Ця таблиця містить ряд маршрутів, які були розміщені там вручну ( ip route add), демоном DHCP або маршрутизацією демон. У цьому випадку ядро ​​вибирає:

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

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

Маршрути, орієнтовані на джерело

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

Кілька таблиць маршрутизації

Якщо вам потрібна більша гнучкість, ніж передбачено вище, вам потрібно буде грати з декількома таблицями маршрутизації та писати правила, щоб вибрати одну конкретну таблицю маршрутизації для кожного пакету. Поширена техніка - диспетчеризація по адресі джерела з метою імітації маршрутів, характерних для джерела. Інша методика - запускати кожен демон маршрутизації у власній таблиці маршрутів та імітувати "адміністративну відстань" Cisco. Все це докладно описано в главі 4 LARTC .


Це не те, що srcробить атрибут. Ви хочете прочитати man ip-routeчи інші документи. І це працює з IPv4. Я використовую його для отримання всього трафіку, включаючи трафік маршрутизатора через єдиний мережевий тунель IPSec від мережі до мережі.
Zan Lynx

1
RTA_SRCАтрибут робить саме те , що я сказав; до нього можна отримати fromопцію ipкоманди. Параметр ipкоманди srcвстановлює RTA_PREFSRCатрибут, який ви описуєте.
jch
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.