4.7.2 Методи боротьби з фальшивими маршрутуми в протоколі RIP

Основними методами боротьби за фальшивими маршрутуми в протоколі RIP є розщеплення горизонту, вилучення маршруту в зворотному напрямі, миттєві оновлення, таймери утримання інформації [1, 4].

Маршрутні петлі можуть виникати у тому випадку, якщо для прото-колу маршрутизації характерна повільна конвергенція після змін в мережі або для топології мережі в маршрутизаторах виникла невідповідність між записами ТМ. На рис. 4.7 показано петлі маршру-тизації. Їх виникнення відбувається так [1, 4, 9, 10].

1. Перед виходом з ладу мережі 1 всі маршрутизатори мають уз-годжені та коректні ТМ. В цьому випадку говорять, що в мережі відбу-лася конвергенція. До кінця цього прикладу вважається, що для маршрутизатора В найкращий маршрут до мережі 1 проходить через маршрутизатор Б, а відстань (метрика) від маршрутизатора В до мережі 1 дорівнює 3.

2. Якщо мережа 1 виходить з ладу, то маршрутизатор Д надси-лає повідомлення про оновлення маршрутів маршрутизатору А. Після його отримання маршрутизатор А припиняє надсилати пакети у мере-жу 1, однак, маршрутизатори Б, В та Г продовжують, оскільки вони ще не інформовані про збій в мережі 1. Коли маршрутизатор А надсилає повідомлення про оновлення, маршрутизатори Б та Г припиняють надсилання пакетів у мережу 1. Однак в цей момент маршрутизатор В ще не отримав повідомлення про оновлення. Для нього мережа, як і раніш, вважається досяжною через маршрутизатор Б.

Рисунок 4.7 – Петлі маршрутизації

3. Припустимо, що маршрутизатор В відправляє періодичне оновлення маршрутів маршрутизатору Г, вказуючи маршрут до мережі 1 через маршрутизатор Б. Маршрутизатор Г змінює свою ТМ для того, щоб врахувати таку некоректну інформацію, і надсилає цю інформацію маршрутизатору А, який надсилає її маршрутизаторам Б та Д і т. д. Тепер будь-який пакет, призначений для мережі 1, рухається по кільцевому маршруту (петлі) від маршрутизатора В до маршрутизатора Б, далі до А і Г та знову до маршрутизатора В.

Некоректні відомості про мережу 1 продовжують циркулювати по кільцевому маршруту доти, поки будь-який інший процес це не припи-нить. При такому стані мережі, яке називають зациклюванням (count to infinity), пакети продовжують неперервно рухатись мережею, незважа-ючи на вихід з ладу мережі-отримувача. І поки маршрутизатор збільшує кількість переходів (потенційно до нескінченності), непра-вильна інформація допускає існування петлі (рис. 4.8) [4].

Рисунок 4.8 – Зациклювання

Якщо не будуть прийняті певні заходи для зупинення цього процесу, вектор відстані або метрика, що відображає кількість переходів, будуть зростати при кожному проходженні пакета через черговий маршрутизатор. Таким чином, пакети рухаються по колу внаслідок того, що в ТМ міститься помилкова інформація.

Дистанційно-векторні алгоритми маршрутизації мають здатність до самокорекції, однак, для усунення петлі в маршрутизації та проблеми зациклювання потрібні спеціальні заходи. Для того, щоб уникнути про-блеми зациклювання, нескінченність визначається як деяке скінченне число. Для протоколу RIP таким числом є 16. Тепер протокол маршрутизації дозволяє петлі існувати лише до того моменту, доки метрика не перевищить 16. На рис. 4.9 показано, що значення метрики досягло шістнадцяти; оскільки вектор відстані перевищив стандартний максимум в 15 транзитних переходів, пакет маршрутизатором відкидається. В будь-якому випадку, коли значення метрики перевищує максимально допустиме, мережа 1 є вважається недосяжною.

Рисунок 4.9 – Задання максимального значення метрики

Тепер подивимось, що відбувається з іншими IP-пакетами, які не є повідомленнями протоколів маршрутизації, коли виникає петля. Зро-зуміло, що пакети будуть передаватись від одного маршрутизатора другому по колу. В протоколі IP є свій власний механізм попередження нескінченної циркуляції пакетів по колу – поле TTL (Time-to-Live – час існування пакета). Перед тим як IP-пакет буде переданий вузлом в це поле згідно з стандартом може бути записане значення між 1 та 255. Коли такий пакет надходить до маршрутизатора, пристрій зменшує значення в полі TTL на одиницю. Коли значення TTL досягає нуля, маршрутизатори зобов’язані відкинути такий IP-пакет та переслати відправнику відповідне інформаційне ICMP-повідомлення. Такий механізм усуває можливість нескінченної циркуляції IP-пакетів в мережі та допомагає вирішити проблему кільцевих маршрутів.

Друге можливе джерело петлі в маршрутизації виникає у випадку, коли маршрутизатору надіслана інформація, що суперечить правильній, яку він спочатку розповсюдив. Як показано на рис. 4.10, при цьому відбувається описаний нижче процес, який і створює проблему петлі маршрутизації [1, 4, 16].

1. Маршрутизатор А надсилає маршрутизаторам Б та Г оновлення, в якому вказується, що мережа 1 не працює.

2. Однак маршрутизатор В передає маршрутизатору Б інше повідомлення, в якому вказується, що мережа 1 доступна через мар-шрутизатор Г з відстанню, що дорівнює чотирьом переходам. Така дія не порушує правил розщеплення горизонту.

3. Після отримання останнього повідомлення маршрутизатор Б неправильно робить висновок, що у маршрутизатора В як і раніше є дійсний маршрут до мережі 1. Маршрутизатор Б відсилає повідомлення про оновлення маршрутизатору А, повідомляючи його про новий маршрут до мережі 1.

4. Отримавши його, пристрій А робить висновок, що він може надсилати інформацію у мережу 1 через маршрутизатор Б. Маршрутизатор Б вирішує, що він може надсилати інформацію у мережу 1 через маршрутизатор Г. В такій ситуації будь-який пакет буде рухатись по кільцевому маршруту між цими маршрутизаторами.

Рисунок 4.10 – Розщеплення горизонту

Розщеплення горизонту (split horizon) намагається запобігти виник-ненню такої ситуації. Згідно з цим методом, при надходженні повідомлення про оновлення маршрутів для мережі 1 від маршрутизатора А маршрутизатори Б та Г не можуть посилати інформацію про мережу 1 в зворотному напрямі, тобто маршрутизатору А, як показано на рис. 4.10. Таким чином, роз-щеплення горизонту не дозволяє розповсюджувати неправильну інформацію маршрутизації та зменшує об’єм службових повідомлень, що передаються.

Вилучення маршруту в зворотному напрямку (route poisoning) використовується різними ДВП для запобігання виникненню великих петель маршрутизації і наданні явної інформації про маршрути в тих випадках, коли мережа недосяжна. Таке вилученя маршруту зазвичай здійснюється шляхом встановлення кількості переходів на одиницю більшою, ніж максимальне значення. Цей механізм є альтернативним способом попередження петель маршрутизації. Даний підхід може бути сформульовано так: після отримання інформації про маршрут через будь-який інтерфейс необхідно оголосити його недосяжним через цей самий інтерфейс. Краще явно повідомити маршрутизатор про те, що маршрут потрібно ігнорувати, ніж лишити все неконтрольованим.

Припустимо, що на всіх маршрутизаторах на рис. 4.11 увімкнено механізм зворотного вилучення маршрутів. Після отримання інформації маршрутизатором 1 про мережу А від маршрутизатора 2 пристрій 1 оголошує мережу А недосяжною через свої канали до маршрутизаторів 2 та 3. Якщо маршрутизатор 3 має будь-який маршрут до мережі А через маршрутизатор 1, він видаляє цей маршрут, оскільки отримав повідомлення про недосяжність цієї мережі [2].

Рисунок 4.11 – Вилучення маршрута в зворотному напрямку

Нові копії ТМ зазвичай регулярно розсилаються сусіднім маршрутизаторам. Протокол розсилає оновлення кожні 30 секунд. Однак, миттєві оновлення (triggered updates) розсилаються негайно у відповідь на будь-яку зміну у ТМ. Маршрутизатор, який виявив зміну в топології, негайно розсилає оновлення суміжним маршрутизаторам. Ті маршрутизатори, в свою чергу, також генерують миттєві оновлення, оповіщаючи про зміни своїх сусідів. При виході будь-якого маршруту з ладу повідомлення надсилається, не очікуючи закінчення часу таймера оновлення. Використання миттєвих оновлень в комбінації з механізмами вилучення маршрутів гарантує, що всі маршрутизатори будуть повід-омлені про відмову маршрутів до закінчення часу будь-якого таймера зберігання інформації.

Миттєве оновлення, таким чином, являє собою анонс, який розсила-ється до закінчення часу таймера оновлення. Маршрутизатор також негайно надсилає повідомлення оновлення на всі свої інші інтерфейси, не чекаючи закінчення часу таймера. Такий принцип роботи приводить до розсилання оновленої інформації про стан маршруту та скидає таймери на сусідніх маршрутизаторах. Ця хвиля оновлень передається по всій мережі. Принцип описаної розсилки проілюстровано на рис. 4.12 [4].

Рисунок 4.12 – Миттєві оновлення

Маршрутизатор В генерує миттєве оновлення, повідомляючи про те, що мережа 10.4.0.0 недосяжна. Після отримання цієї інформації маршрутизатор В повідомляє інші маршрутизатори про вихід з ладу мережі 10.4.0.0 через інтерфейс S0/1. В свою чергу, маршрутизатор A надсилає це повідомлення про оновлення через інтерфейс Fa0/0.

Зациклювання можна уникнути шляхом використання таймерів утримання інформації (holddown timer). Послідовність дій при цьому така [1, 5, 9, 10, 16].

1. Коли маршрутизатор отримує від сусіднього пристрою оновлення маршрутів, яке вказує, що раніш доступна мережа не працює, він помічає цей маршрут як недоступний та запускає таймер.

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

3. Якщо нове оновлення надходить від іншого сусіднього маршрутизатора, і вказана в ньому метрика краще раніше зареєстрованої для даної мережі, то маршрутизатор помічає мережу як доступну та вимикає таймер.

Якщо до закінчення часу таймера утримання інформації від іншого сусіднього маршрутизатора надходить нове оновлення і вказана у ньому метрика для даної мережі гірша раніш зареєстрованої  повідом-лення оновлення ігнорується. В такій ситуації ігнорування повідомлень про оновлення надає більше часу для розповсюдження по всій мережі інформації про зміни топології мережі, як показано на рис. 4.13 [4].

Рисунок 4.13 – Таймери утримання інформації