Routing loops

Loop-urile apar în procesul de rutare deoarece nu toate routerele sunt “updated” în acelaşi timp. Să punem mai jos “o poză” care ne va ajuta să înţelegem mai bine:

loop

Acum să presupunem că linkul înspre Reţeaua 5 “pică”. Routerul A are în tabela de rutare o cale înspre Reţeaua 5 ce trece prin Routerul B. Routerul E “îi comunică” routerului C despre outage-ul Reţelei 5, astfel acesta nu mai rutează pachete înspre Reţeaua 5 prin intermediul Routerului E. Dar ce facem, pentru că routerele A,B şi D încă nu au aflat despre indisponibilitatea Reţelei 5? Ele transmit în continuare update-uri. Până la urmă, Routerul C va transmite un update, iar Routerul B va opri rutarea înspre Reţeaua 5; routerele A şi D încă nu sunt puse la curent cu schimbările apărute. Pentru ele, Reţeaua 5 este încă una validă şi reachable prin Routerul B cu o metrică de 3. Problema apare atunci când Routerul A trimite mesajul “hello standard” o dată la 30 de secunde cu linkurile despre care ştie…iar unul dintre acestea este posiblitatea de a ajunge la Reţeaua5. Aşa că routerele B şi D primesc minunata veste că Reţeaua 5 poate fi “găsită” prin Routerul A şi la rândul lor trimit mai departe “the great news”. :-D Ce rezultă de aici? Un loop. Cum adică? Toate pachetele cu destinaţia Reţea 5 vor trece prin routerul A, apoi routerul B şi înapoi în routerul A. Ce măsuri putem lua pentru a contracara aceste “bucle”?

Număr maxim de hop-uri

Problema descrisă mai sus se mai numeşte şi “counting to infinity”. Dacă nu intervenim deloc, numărul hop-urilor se incrementează de fiecare dată când un pachet “traversează” un router. O soluţie ar fi definirea unui număr maxim de hop-uri. De exemplu, RIP-ul permite un maximum hop count de 15. Aşadar, orice depăşeşte numărul de 15 hop-uri este declarat invalid. Uitându-ne la exemplul de mai sus, după un loop de 15 hop-uri, Reţeaua 5 va fi considerată “down”.

Split horizon

Split horizon este o soluţie prin care se reduce informaţia de rutare greşită ce circulă printr-o reţea distance-vector, cât şi overhead-ul procesului de rutare. Cum face asta? Implementezaă o regulă prin care interzice ca update-urile nu pot fi trimise înapoi pe interfaţa de pe care au venit. Cu alte cuvinte, protocolul de rutare face diferenţa între interfaţa pe care primeşte un update şi interfeţele prin care va forwarda aceste informaţii. Dacă am fi aplicat această măsură în exemplul de mai sus, Routerul A nu ar mai fi avut voie să trimită update-ul primit de la Routerul B înpoi la Routerul B.

Route poisoning

Explicăm direct pe exemplu ce înseamnă chestiunea din subtitlu. Atunci când Reţeaua 5 “cade”, Routerul E începe să trimită update-uri cu numărul hop-urilor înspre Reţeaua 15 ca fiind 16 (unreachable, infinite).

Holddowns

Un holddown previne update-uri care apar de fiecare dată când o rută îşi schimbă starea în up sau down într-un interval de timp scurt, fenomen cunoscut sub numele de flapping.

Să zicem că un router primeşte un update de la “un vecin” care spune că una dintre reţelele care până acum erau accesibile acum nu mai e. Holddown timer-ul este pornit. Dacă în acest timp router-ul primeşte alt update cu reţeaua respectivă, dar de data asta cu o metrică mai bună, holddown-ul este eliminat şi informaţia este adăugată. În schimb dacă acelaşi update conţine informaţii despre aceeaşi reţea şi o metrică mai proastă, update-ul este ignorat şi holddown timer-ul este neperturbat.

Ne oprim aici deocamdată. Vor urma discuţii şi configurări exemplu vis-a-vis de protocoalele de rutare RIP şi IGRP.

Post a Response

Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Romania License.