Aplicatii de rutare pe masini Linux: Zebra ; Quagga
Referat la: Sisteme moderne comunicatii de date
Student: Voinicaru
Cristian
Introducere
<top>
Un
calculator poate comunica în mod direct numai cu alte
calculatoare de care este legat prin intermediul unei conexiuni fizice.
In aceste conditii, calculatorul de pe biroul dumneavoastra ar trebui
sa poata comunica numai cu sistemele conectate electric la cablul de
relea de care este legat sistemul dumneavoastra. Deci, cum se
realizeaza comunicarea cu un calculator situat în cealalta parte
a planetei? Exista doua procedee elementare: comutare de circuite si
comutare de pachete.
Comutarea de
circuite este procedeul folosit în cadrul retelei de telefonie
pentru comunicatii prin voce. Când ridicati receptorul
telefonului, se aude un ton. In acest moment, s-a stabilit o conexiune
electrica între postul dumneavoastra si o centrala telefonica,
situata la sediul central al companiei de telefonie locale. In timp ce
formati numarul de telefon, furnizati centralei informatiile necesare
pentru stabilirea de conexiuni suplimentare. Folosind aceste
informatii, centrala conecteaza portul dumneavoastra de receptie cu un
port de emisie. Daca numarul pe care îl apelati este deservit de
catre centrala locala, aceasta stabileste o conexiune între
portul la care este atasat telefonul dumneavoastra si portul conectat
la postul apelat. Daca numarul pe care îl apelati este situat la
distanta, centrala locala stabileste o conexiune cu urmatoarea centrala
de pe linie. Fiecare centrala se conecteaza cu urmatoarea centrala de
pe linie pâna când se ajunge la centrala care deserveste
postul situat la distanta. Astfel se creeaza un circuit între
telefonul dumneavoastra si cel situat la distanta, indiferent unde s-ar
gasi acesta, circuit dedicat utilizarii de catre dumneavoastra
pâna în momentul în care puneti receptorul în
furca. Când calculatorul dumneavoastra comunica prin intermediul
unui modem, acesta foloseste sistemul telefonic pentru a crea un
circuit între sine însusi si sistemul situat la distanta,
care deseori este un server aflat la sediul unui furnizor de servicii
Internet (ISP - Internet Service Provider) care conecteaza sistemul
dumneavoastra la Internetul cu comutare de pachete.
Comutarea de
pachete reprezinta procedeul folosit de majoritatea retelelor de date.
Fiecare pachet din retea contine o adresa care precizeaza comutatorului
unde trebuie sa ajunga pachetul. Când pachetul ajunge la un
comutator, acesta din urma citeste adresa si determina modul în
care trebuie transmis pachetul. În situalia în care
comutatorul are o conexiune fizica la nodul destinatie, va livra el
însusi pachetul. In caz contrar, transmite pachetul urmatorului
comutator din cale, spre nodul destinatie. Fiecare pachet este
manipulat separat. Nu se stabileste nici o conexiune de tip „cap la
cap".
În
modelul care foloseste comutarea de circuite, conexiunea se realizeaza
între telefonul dumneavoastra si telefonul situat la celalalt
capat al firului. In sistemul care utilizeaza comutarea de pachete,
conexiunea se stabileste între gazda dumneavoastra si ruterul
local.
Notiunea
de rutare
<top>
Rutarea
transforma retelele TCP/IP într-un internet si reprezinta o
functie esentiala a protocolului IP (Internet Protocol).
Asemeni
oricarui sistem care foloseste stiva de protocoale TCP/IP, sistemul
linux ia deciziile de rutare în stratul IP. Când stratul IP
primeste un pachet, evalueaza adresa de destinatie din antetul
pachetului, dupa cum urmeaza:
• Daca adresa de destinatie este adresa
calculatorului local, IP evalueaza numarul protocolului si trimite
pachetul mai sus, spre protocolul de transport corespunzator.
•Daca adresa de destinatie se gaseste într-o
retea conectata direct, IP livreaza pachetul spre sistemul gazda situat
la destinatie.
• Daca destinatia se gaseste într-o retea
situata la distanta, IP transmite datagrama unui ruter local. Ruterul
caruia îi este trimis pachetul trebuie sa partajeze cu sistemul
local aceeasi retea fizica. Este responsabilitatea ruterului respectiv
sa transmita apoi pachetul catre ruterul urmator si asa mai departe,
hop dupa hop, pâna când pachetul ajunge la destinatie.
Bazându-se pe aceasta lista de posibile decizii, IP fie va livra
pachetul direct, fie îl va transmite unui ruter în vederea
efectuarii unor prelucrari suplimentare. Pentru a livra un pachet unui
alt sistem gazda situat într-o retea conectata direct, IP trebuie
sa foloseasca adresa stratului fizic al retelei respective prin
conversia adresei IP într-o adresa de strat fizic.
Activarea
transmisiei pachetelor IP
<top>
Când un
calculator transmite un pachet pe care 1-a primit din retea catre un
sistem aflat la distanta, acest procedeu se numeste transmisie IP (IP
forwarding). Toate sistemele Linux pot fi configurate pentru transmisia
pachetelor IP. În general, sistemele gazda nu transmit datagrame,
dar ruterele trebuie sa execute aceasta operatie.
Pentru a
folosi un sistem Linux ca ruter, activati transmisia IP prin stabilirea
valorii corecte în fisierul /proc/sys/net/ipv4/ip_forward. Daca
fisierul contine valoarea 0, transmisia este dezactivata. În
situatia în care fisierul contine valoarea 1, transmisia IP este
activata. O comanda cat aplicata fisierului ip_forward indica valoarea
curenta din sistemul dumneavoastra:
$ cat
/proc/sys/net/ipv4/ip_forward 0
Scrieti valoarea 1 în fisier pentru a activa transmisia:
[root]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root]# cat /proc/sys/net/ipv4/ip_forward 1
Daca
intentionati sa va folositi sistemul Linux ca ruter, inserati aceasta
comanda în fisierul rc.local pentru a activa transmisia la
fiecare încarcare a sistemului de operare.
Pina la rh7.1
inclusiv ca sa activezi forwarding-ul trebuie pus in
/etc/sysconfig/network urmatorul lucru: IPV4_FORWARD=true
În Red
Hat Linux 7.2, puteti edita fisierul /etc/sysctl.conf si modifica
valoarea
net. ipv4. ip_forward = 0 în net. ipv4. ip_forward = 1. Alte
distributii pot folosi fisiere de
configurare diferite în acelasi scop. Scrierea unei valori direct
în fisierul /proc/sys/ net/ipv4/ip_forward este posibila în
toate distributiile curente.
Indiferent de
caracterul de ruter sau de sistem gazda al unui calculator, acesta
poate executa livrarea finala numai daca se gaseste în aceeasi
retea cu sistemul gazda de destinatie. În toate celelalte
situatii, sistemul trebuie sa trimita pachetul unui ruter.
Tabelul de
rutare indica sistemului local ruterul caruia trebuie sa i se remita
pachetul.
Tabelul
de rutare Linux
<top>
Structura unei
adrese IP este compusa dintr-o portiune de retea si o portiune de
gazda. Rutarea este orientata spre retele; IP ia decizia cu privire la
livrarea directa a pachetului sau transmisia acestuia spre un ruter
în functie de portiunea de retea a adresei.
Când se
ia decizia de transmisie a pachetului catre un ruter, IP examineaza
tabelul de rutare pentru a determina ruterul care trebuie sa manipuleze
pachetul.
Tabelul de
rutare Linux este afisat prin introducerea comenzii route fâra
nici un argument în linia de comanda. Deoarece eu prefer numerele
de retea în locul numelor de sisteme gazda atunci când
analizez un tabel de rutare, voi folosi opliunea -n, care nu permite
comenzii route sa converteasca adrese IP în nume de sisteme gazda
la afisarea tabelului de rutare. Listingul urmator prezinta un exemplu.
$
route -n
Kernel IP routing table
Destination Gateway
Genmask
Flags Metric Ref
Use Iface
172.16.55.0 0.0.0.0
255.255.255.0 U
0
0 0 eth0
172.16.50.0 172.16.55.36
255.255.255.0 UG 0
0 0
eth0
127.0.0.0
0.0.0.0
255.0.0.0
U 0
0
0 10
0.0.0.0
172.16.55.254 0.0.0.0
UG 1
0
0 eth0
Tabelul de
rutare de mai sus contine urmatoarele câmpuri:
Destination Reteaua (sau
sistemul gazda) de destinatie. In mod normal destinatia este o retea,
dar, asa cum veti vedea în discutia despre câmpul Flags,
este posibila existenta unei rute specifice unui sistem gazda. Pentru
ruta prestabilita, acest câmp contine numai zerouri (0.0.0.0).
Gateway Poarta de acces
corespunzatoare destinatiei specificate. Daca acest câmp contine
numai zerouri (0.0.0.0) sau un asterisc (*), înseamna ca reteaua
de destinatie este direct conectata la calculator si ca „poarta" spre
reteaua respectiva o constituie interfala de retea a acestui calculator.
Genmask Masca de biti
aplicata adreselor pentru a se vedea daca acestea corespund adresei de
destinatie.
Flags
Indicatoarele descriu anumite caracteristici ale acestei rute. Valorile
posibile ale indicatoarelor sunt urmatoarele:
U
Aceasta ruta este activa si operationala.
H
Aceasta este o ruta spre un anumit sistem gazda. Nici unele
dintre rutele din exemplu nu sunt rute specifice unui sistem gazda,
care sunt folosite numai în situatii speciale.
G
Aceasta ruta foloseste o poarta externa. Interfelele de retea ale
sistemului furnizeaza rute spre retele direct conectate. Toate
celelalte rute folosesc porti externe. Relelele conectate direct nu au
activat indicatorul G, dar acesta este activat în toate celelalte
rute.
D
Aceasta ruta a fost adaugata în mod dinamic de catre un
protocol de rutare sau de un mesaj de ICMP Redirect. Când un
sistem afla despre o ruta prin intermediul unui mesaj ICMP Redirect,
adauga ruta la tabelul sau de rutare astfel încât pachetele
suplimentare care trebuie sa ajunga la destinatia respectiva sa nu
necesite o redirectionare.
R
Aceasta ruta a fost reactivata dupa actualizarea de catre un
protocol de rutare dinamica. Rutele pot fi configurate ca rute pasive
sau statice, chiar si atunci când se foloseste un protocol de
rutare dinamica.
M
Aceasta ruta a fost modificata de catre un protocol de rutare
dinamica.
A
Aceasta ruta a fost adaugata în timpul configurarii
adresei. Când este definita o adresa pentru o interfata locala
folosind comanda ifconfig, o ruta pentru interfata respectiva este
adaugata la tabelul de rutare. În practica, indicatorul A nu
apare în tabelul de rutare prestabilit.
C
Aceasta ruta se gaseste în cache-ul de rutare. Rutele sunt
memorate temporar în cache atunci când sunt folosite pentru
crearea unei conexiuni. Memoria cache poate fi examinata direct prin
rularea comenzii route cu opliunea -c (de exemplu, route -Cn). În
practica, indicatorul c nu apare în tabelul de rutare.
!
Aceasta ruta a fost marcata ca necorespunzatoare.
Metric Acesta este costul
de rutare pentru interfata respectiva. În mod normal, acest
câmp are valoarea zero pentru rutele spre retelele direct
conectate. Rutele spre portile externe prezinta deseori o metrica egala
cu 1, desi aceasta nu se întâmpla întotdeauna.
Metrica este o valoare arbitrara stabilita de utilizator. Cu cât
valoarea metricii este mai ridicata, cu atât ruta este mai
,costisitoare" Si deci mai putin preferata.
Ref Indica numarul de
referiri la ruta pentru stabilirea unei conexiuni.
Use Indica de câte
ori ruta respectiva a fost cautata în cache. Aceasta optiune este
utila numai la examinarea zonei cache; în modul principal de
afisare a tabelului de rutare, prezentat în listingul de mai sus,
acest câmp nu este utilizat.
Iface Numele interfetei de
retea folosite de aceasta ruta. Pentru interfetele de retea Ethernet,
numele vor fi etho, ethl, eth2 etc. Pentru interfelele de retea PPP,
numele vor fi ppp0, pppl, ppp2 etc.
Cunoscând aceste notiuni privind modul de afisare a tabelului de
rutare, sa examinam fiecare linie din tabelul prezentat ca exemplu:
• Prima linie defineste conexiunea acestui sistem
gazda la reteaua Ethernet locala. Pe baza acestei intrari se poate
observa ca sistemul gazda este conectat la subreteaua 172.16.55.0 si ca
se conecteaza direct la subreteaua respectiva prin interfata eth0.
• A doua linie reprezinta o ruta statica adaugata de
catre administratorul de retea si indica faptul ca sistemul
172.16.55.36 este poarta spre subreteaua 172.16.50.0/24.
• A treia linie defineste reteaua de
auto-identificare si indica faptul ca poarta spre reteaua de
auto-identificare este interfata l0.
• Ultima linie defineste ruta prestabilita, care
identifica poarta prestabilita. Daca destinatia unui pachet nu
corespunde unei anumite rute din tabelul de rutare, pachetul este
trimis portii prestabilite. În sistemul prezentat de noi ca
exemplu, exista rute specifice pentru retelele 172.16.55.0, 172.16.50.0
Si 127.0.0.0. Pachetele pentru toate celelalte destinatii sunt trimise
ruterului prestabilit.
Observati ca ambele porti externe
sunt conectate la reteaua Ethernet locala 172.15.55.0/24. Daca nu ar fi
fost, sistemul local nu ar fi putut sa comunice cu ele si, implicit,
nici cu lumea exterioara.
Rutele sunt introduse
într-un tabel într-unul din doua moduri: fie
administratorul de sistem le introduce ca rute statice, fie sunt
adaugate la tabel de catre un protocol de rutare, ca rute dinamice.
Un alta tema de studiu o
reprezinta si iproute2.
De exemplu o ruta statica acolo
este de forma:
ip route add
172.16.50.0/25 via 172.16.55.36, eventual dev eth0.
ip route show
ip address add 172.16.55.1/24 brd 172.16.55.255 dev eth0
ip address add 172.16.55.2/24 brd 172.16.55.255 dev eth0 label eth0:0
ip address add 172.16.55.3/24 brd 172.16.55.255 dev eth0 label
eth0:siinca
label "eth0:siiinca" nu e o greseala. Label-urile pot avea pina la 8
caractere.
ip route add default via 172.16.50.254
Iproute2 e mult mai intuitiv plus ca dispune de o multime de lucruri
noi care
se pot face cu acesta (policy routing, tunele, etc).
Definirea
rutelor statice
<top>
Rutele statice
sunt definite în fiecare sistem Linux care se conecteaza la o
retea TCP/IP. Un tabel de rutare minimal contine o ruta pentru adresa
de auto-identificare si o ruta pentru interfata de retea. Fiecare
sistem Linux dintr-o relea TCP/IP dispune cel putin de aceste doua rute
statice. Cele doua rute din tabelul de rutare prezentat ca exemplu
în listingul precedent sunt urmatoarele:
172.16.55.0
0.0.0.0
255.255.255.0 U
0 0 0 eth0
127.0.0.0
0.0.0.0
255.0.0.0
U 0
0 0 10
Sub nucleul
Linux 2.4, aceste rute sunt create prin intermediul comenzilor ifconfig
care configureaza interfelele de relea.
Sistemele care folosesc nuclee
mai vechi creeaza aceste rute cu ajutorul unor comenzi route specifice.
De exemplu:
route
add -net 172.16.55.0 netmask 255.255.255.0 dev eth0
route add -net
127.0.0.0 netmask 255.0.0.0
dev 10
Chiar si
în sistemele vechi, nu trebuie sa introduceti personal aceste
comenzi. Comenzile respective sunt stocate într-unul din
scripturile de pornire incluse în sistem.
Comanda
route
<top>
Rutele statice
suplimentare sunt definite de catre comanda route si permit oricui sa
afiseze tabelul de rutare; de asemenea, permit utilizatorului radacina
sa adauge, respectiv sa elimine rute din tabel. Administratorul de
sistem a adaugat aceasta ruta statica la tabelul de rutare prezentat ca
exemplu în listingul precedent:
172.16.50.0
172.16.55.36 255.255.255.0 UG 0 0 8
eth0
Instructiunea route care
creeaza aceasta ruta este urmatoarea:
route
add -net 172.16.50.0 netmask 255.255.255.0 gw 172.16.55.36
Prin
examinarea comenzii anterioare puteti afla aproape toate informatiile
de care aveti nevoie privind sintaxa comenzii route. Toate comenzile
route încep cu o optiune care defineste ,actiunea" comenzii, care
este add (adaugare) sau delete (stergere). Toate comenzile prezentate
ca exemplu adauga rute la tabelul de rutare. Pentru a modifica o ruta,
mai întâi stergeti-o si apoi adaugati-o din nou, cu
modificarile necesare.
Opliunea -net
precizeaza comenzii route ca se doreste adaugarea unei rute de relea.
Alternativa este -host pentru o ruta specifica unui sistem gazda, dar
aceasta optiune este rareori folosita, deoarece majoritatea rutelor
sunt rute de retea.
Optiunea -net
este urmata de adresa de destinatie si de masca de retea folosita
pentru determinarea portiunii de retea, respectiv a portiunii de gazda
a adresei. Masca de retea trebuie precedata de cuvântul cheie
netmask.
Toate
comenzile route prezentate ca exemplu se încheie cu o poarta
externa sau cu un nume de dispozitiv local. La utilizarea unei porti
externe, aceasta este definita prin intermediul optiunii gw si al
adresei IP a portii respective. Când se foloseste numele
dispozitivului de interfata, acesta este de obicei precedat de
cuvântul cheie dev, desi acest lucru nu este obligatoriu. Numele
interfetei de retea este inclus într-o instructiune route care
defineste conexiunea dispozitivului cu reteaua locala. In alte
instructiuni route, numele interfelei este optional. Folositi numele
dispozitivului în toate instrucliunile route atunci când
aveti mai multe interfele, pentru a va asigura ca ruta foloseste
interfala scontata.
Definirea
rutei prestabilite
<top>
Pâna
acum, am discutat despre toate rutele din tabelul de rutare prezentat
ca exemplu, cu exceptia rutei prestabilite. Tabelul prezentat contine o
ruta prestabilita care specifica sistemul 172.16.55.254 ca fiind
ruterul prestabilit:
0.0.0.0
172.16.55.254 0.0.0.0 UG 1 0
17 eth0
Pentru definirea acestei rute, introduceti urmatoarea comanda:
route
add default gw 172.16.55.254
Aceasta
comanda este asemanatoare cu instructiunea route prezentata anterior,
cu exceptia faptului ca, în locul relelei de destinatie, este
folosit cuvântul cheie default.
Prezenta
acestui cuvânt cheie defineste ruta prestabilita.
Majoritatea
sistemelor Linux conectate la un internet TCP/IP dispun de o ruta
statica prestabilita. Deoarece aceasta ruta este atât de comuna,
este putin probabil ca va trebui sa introduceti o comanda route pentru
a o defini. Toate variantele de Linux cu care am lucrat solicita adresa
ruterului prestabilit în faza initiala de instalare. Furnizati-o
la momentul respectiv. Sistemul stocheaza valoarea si apoi o foloseste
pentru a defini adresa portii prestabilite în timpul
încarcarii. De exemplu, Red Hat stocheaza adresa portii
prestabilite în fisierul /etc/sysconfig/network.
Pentru
majoritatea serverelor Linux, tot ce aveti de fâcut este sa
definiti ruta prestabilita, întrucât cele mai multe servere
sunt sisteme gazda care depind de un singur ruter extern pentru
serviciul de rutare. Ocazional, însa, un server Linux poate fi
utilizat ca ruter pentru o retea de mici dimensiuni. In acest caz, este
necesara rularea unui protocol de rutare, asa cum vom vedea în
continuare.
Utilizarea
rutarii dinamice
<top>
Tabelele
de rutare statica au eficienta maxima atunci când numarul
ruterelor este limitat. Daca reteaua dispune de un singur ruter,
configuratia corecta se obtine prin utilizarea unei rute statice
prestabilite. Protocoalele de rutare dinamica se folosesc atunci
când mediul de rutare al unei retele este variabil sau de o
natura mai complexa (de exemplu, atunci când exista mai multe
rutere care pot transmite la aceeasi destinatie).
Protocoale
de rutare
<top>
Rutarea si
protocoalele de rutare nu reprezinta notiuni identice. Toate sistemele
Linux pot lua decizii de rutare, dar foarte putine ruleaza protocoale
de rutare. Aceste protocoale executata doua operatii: selecteaza ruta
optima spre o destinatie si apoi comunica ruta activa celorlalte rutere
din retea. Astfel, un protocol de rutare reprezinta un procedeu de
definire si diseminare a rutelor.
Exista
numeroase protocoale de rutare diferite, iar daca tinem cont de faptul
ca sistemele Linux nu sunt folosite în mod normal ca rutere,
numarul unor asemenea protocoale disponibile pentru sistemele Linux
este surprinzator de mare. Protocoalele se realizeaza prin metrica
folosita pentru determinarea rutei optime si prin procedura
utilizata la distribuirea informatiilor de rutare.
Protocoalele
de rutare se clasifica în protocoale interioare si protocoale
exterioare.
Protocoalele
interioare sunt utilizate în interiorul unui domeniu de rutare,
iar
protocoalele exeterioare se utilizeaza pentru schimbul de informatii de
rutare între domeniile de rutare. In cadrul unei retele de
întreprindere, se foloseste un protocol de rutare interior. Este
posibil sa se utilizeze un protocol de rutare exterior între
reteaua dumneavoastra si furnizorul de servicii Internet, dar chiar si
aceasta situatie este improbabila. Majoritatea retelelor de firma sunt
localizate în interiorul domeniului de rutare al furnizorului de
servicii Internet, si ca atare se folosesc un protocol de rutare
interior pentru comunicatiile cu acesta. In continuare vom prezenta
trei protocoale interioare, în speta Routing Information Protocol
(RIP), Routing Information Protocol versiunea 2 (RIPv2) si Open
Shortest Path First (OSPF), repectiv un protocol exterior, Border
Gateway Protocol (BGP).
Border
Gateway Protocol (BGP)
<top>
BGP este
singurul protocol de rutare exterior utilizat pe scara larga. BGP
implenteaza rutarea controlata de politici, care permite definirea unor
ratiuni de natura organizationala sau politica pentru selectarea unei
rute. Metricile de rutare folosite în cadrul unor domenii de
rutare diferite nu pot fi comparate în mod direct, deoarece nu se
poate cunoaste exactitate modul de determinare a metricilor în
interiorul unui domeniu de rutare. Este posibil sa nu se cunoasca nici
macar protocoalele de rutare interioare folosite.
In loc de a
acorda încredere procesului tehnic folosit la selectarea rutelor,
se acorda încredere procesului tehnic la selectarea rutelor, se
acorda increderere organizatiei care face cunoscute rutele
respective. Se poate proceda astfel daca reputatia institutiei
respective este indiscutabila sau daca exista un acord de lucru care
prevede acordarea de credibilitate rutelor sale. Aceasta reprezinta
esenta rutarii controlate de politici.
BGP este un
protocol cu vector de cale (path-vector protocol). Vectorul de cale
furnizeaza o lista de tip „cap la cap" a fiecarui domeniu de rutare
situat de-a lungul rutei, ceea ce permite ea unei decizii privind
credibilitatea anunturilor provenite din domeniile respective. Probabil
ca nu veti folosi BGP decât daca furnizorul de servicii Internet
va solicita aceasta. Protocoalele exterioare sunt folosite cu precadere
extern, iar pentru o utilizare performanta a acestora este necesar un
acord al ambelor parti cu privire la folosirea protocolului. Daca
funizorul de servicii va solicita sa utilizati BGP, puteti fi sigur ca
acesta cunoaste modul de configurare a protocolului respectiv.
Protocoalele pe care le folositi în cadrul propriei
dumneavoastra retele sunt protocoalele de rutare interioare.
Routing
Information Protocol (RIP)
<top>
RIP este un
protocol de rutare interior frecvent utilizat. Este inclus ca parte
componenta a sistemului de operare în numeroase sisteme Unix si
Linux, precum si în pachetul RRAS din Windows NT/2000. RIP este
instalat în numeroase sisteme si este usor de configurat si
utilizat.
RIP defineste
ruta optima ca fiind ruta cu cost minim, în spela ruta cu metrica
de rutare minima. Metrica de rutare este un numar arbitrar, cuprins
între 1 si 15, care reprezinta numarul portilor prin care trebuie
sa treaca traficul pentru a ajunge la destinalie. RIP denumeste fiecare
ruter hop, iar metrica este numarul de hopuri. Ruta optima spre o
destinatie este ruta care trece prin cele mai putine rutere. Acest
procedeu pentru determinarea celei mai bune rute se numeste algoritm cu
vector de distanta (distance-vector algorithm).
La lansarea
în executie a protocolului RIP, acesta difuzeaza o cerere de
informatii de rutare. Un ruter care ruleaza RIP raspunde la cerere prin
trimiterea unui pachet de actualizare care contine adresele de
destinatie si metricile asociate, preluate din tabelul de rutare
propriu. In afara de raspunsurile la cereri, ruterele care utilizeaza
RIP lanseaza pachete de actualizare la fiecare 30 de secunde. Daca un
ruter înceteaza sa mai emita actualizari timp de 180 de secunde,
celelalte rutere din retea vor presupune ca acesta este inactiv si vor
sterge toate rutele care trec prin ruterul respectiv.
RIP prelucreaza un pachet de actualizare în modul urmator:
• Daca pachetul contine rute noi, care nu se gasesc în tabelul de
rutare, acestea vor fi adaugate.
• Daca pachetul contine rute de un cost mai mic decât al unor
rute similare din tabelul de rutare existent, rutele vechi vor fi
sterse si se vor folosi noile rute. Costul unei rute noi este
determinat prin adaugarea costului necesar ajungerii la ruterul care a
trimis actualizarea la metrica inclusa în pachetul de actualizare.
• Daca pachetul contine rute cu un cost egal cu 15, rutele respective
vor fi sterse din tabelul de rutare daca actualizarea provine de la
poarta folosita pentru acele rute. De exemplu, daca tabelul de rutare
contine o ruta spre subreteaua 172.16.50.0 prin poarta 172.16.55.36 si
primeste o actualizare RIP de la 172.16.55.36 cu un cost egal cu 15
pentru ruta spre 172.16.50.0, sistemul dumneavoastra va sterge ruta
respectiva.
RIP este
utilizat de mult timp si îsi arata vârsta. Retelele de
dimensiuni foarte mari nu pot folosi RIP, deoarece ruta cea mai lunga
pe care o permite numara 15 hopuri.
Poate ca acest
numar este suficient pentru reteaua dumneavoastra, dar este total
insuficient pentru retele nationale de mari dimensiuni. De asemenea,
poate fi necesar un interval de timp destul de mare pentru reflectarea
starii curente a retelei în tabelul de rutare, deoarece RIP
asteapta 180 de secunde înainte de stergerea rutelor provenite de
la un ruter inactiv. Aceasta situatie poate fi înrautatita de
problema ,,numaratorii la infinit" .
RIP
versiunea 2 (RIPv2)
<top>
RIPv2
îmbunatateste pachetul RIP original prin adaugarea unui
câmp masca de retea si a unui câmp care contine adresa
hopului urmator. Masca de retea este o masca de biti folosita la
determinarea retelei de destinatie. Trimiterea mastii cu adresa de
destinatie în pachetul de actualizare a rutarii reprezinta o
componenta esentiala a adreselor IP fara clase.
Pentru a face
disponibile mastile de retea la nivel global, acestea trebuie
distribuite altor sisteme. Pentru aceasta se foloseste protocolul de
rutare, iar RIPv2 adauga functionalitatea respectiva la RIP.
Câmpul
„adresa hopului urmator" furnizeaza adresa portii. În RIP, sunt
furnizate numai adresa de destinatie si metrica. Poarta este
întotdeauna considerata ca fiind ruterul care trimite pachetul de
actualizare. Câmpul cu adresa hopului urmator furnizeaza adresa
portii, ceea ce permite ca sistemul care trimite pachetul de
actualizare sa fie diferit de poarta care va manipula ruta. Astfel,
sistemele compatibile RIPv2 pot furniza actualizari pentru ruterele
care nu utilizeaza acest protocol. Daca adresa hopului urmator este
0.0.0.0, ruterul care trimite actualizarea este considerat ca fiind
poarta rutei respective.
Protocolul
Open Shortest Path First (OSPF)
<top>
OSPF este
foarte diferit de RIP. Un ruter care foloseste RIP trimite vecinilor
sai informatii despre întreaga retea. Un ruter care utilizeaza
OSPF inunda reteaua cu informatii despre vecinii sai. Prin inundare se
întelege faptul ca ruterul trimite actualizarea de la fiecare
port de retea si ca fiecare ruter care primeste actualizarea o trimite
mai departe la fiecare port, cu exceptia portului de unde a primit-o.
Inundarea asigura o diseminare rapida a a informatiilor de rutare
în întreaga retea.
OSPF se
numeste protocol cu starea legaturii (link-state protocol)
întrucât creeaza un grafi al starii tuturor legaturilor din
relea. Fiecare ruter OSPF îsi creeaza graful folosind
informatiile despre toate ruterele si vecinii acestora, informatii
distribuite în întreaga retea prin intermediul procesului
de inundare. Fiecare graf este unic, deoarece fiecare ruter creeaza
graful folosindu-se pe sine ca radacina a arborelui. Graful este
construit utilizându-se algoritmul Dijkstra Shortest Path First,
de unde si numele protocolului. Algoritmul foloseste urmatorul proces
de constructie a grafului:
1.Sistemul începe prin a se
auto-instala ca radacina a grafului, cu un cost egal cu 0.
2.Apoi se instaleaza vecinii sistemului care tocmai a fost adaugat la
graf. Costul necesar ajungerii la vecinii respectivi este calculat ca
fiind costul ajungerii la sistemul recent instalat, la care se adauga
costul anunlat de sistem pentru ajungerea la vecini.
3. Sistemul selecteaza calea de cost minim pentru fiecare destinatie.
Apoi repeta etapele 2 si 3 pentru fiecare sistem despre care detine
informatii.
Este clar ca
procesul de constructie a unui graf cu starea legaturilor la fiecare
modificare a unei rute creeaza o suprasarcina pentru ruter. Din acest
motiv, OSPF împarte domeniul de rutare în componente mai
mici, mai usor de controlat.
Domeniul de rutare în
totalitatea sa se numeste sistem autonom, iar componentele se numesc
suprafete.
O suprafala
speciala, numita suprafata coloanei vertebrale, este definita pentru a
interconecta toate suprafetele din sistemul autonom. Ruterele din
interiorul unei suprafete dispun numai de cunostinte referitoare la
suprafala respectiva si, ca atare, pot crea un graf al sistemelor din
suprafata în cauza.
OSPF
reprezinta un sistem cu mult mai complex decât RIP, dar este mai
adecvat pentru relele de mari dimensiuni.
Totusi, OSPF nu este întotdeauna necesar
pentru o retea de întreprindere si este posibil sa nu fie util
într-o retea mica, unde pe post de rutere sunt folosite servere
Linux.
Rutare
cu programul Zebra
<top>
Zebra este un
pachet software de rutare care pune la dispozitie suport pentru RIP,
RIPv2, OSPF si BGP. De asemenea, Zebra asigura suport pentru rutarea
IPv6 atât cu protocolul RIPng, cât si cu protocolul OSPFv6.
Programele de
rutare prezinta atât aspecte interioare, cât si exterioare.
Din punct de vedere exterior, programele de rutare ruleaza un protocol
pentru schimbul informaliilor de rutare cu ruterele externe. Ca aspect
interior, programele de rutare prelucreaza informatiile preluate de la
protocol, selecteaza rutele optime si actualizeaza tabelul de rutare al
nucleului.
Complexitatea acestui proces intern creste daca se
utilizeaza mai. multe protocoale, deoarece este posibil ca un ruter sa
primeasca rute spre aceeasi destinatie de la protocoale de rutare
diferite. Fiecare protocol foloseste propria sa metrica pentru
selectarea rutei optime. Daca fiecare protocol ar actualiza independent
tabelul de rutare, s-ar instaura haosul. Pentru a accepta utilizarea de
protocoale multiple (mai ales a protocoalelor de rutare exterioare),
Zebra ofera o modalitate de comparatie între metricile
incompatibile si de selectare a rutei optime. Pentru aceasta foloseste
o valoare pe care o numeste distanta, care 1 reprezinta un numar
arbitrar, cuprins între 0 si 255. Cu cât valoarea distantei
aferente protocolului care furnizeaza ruta este mai ridicata, cu
atât ruta este mai putin preferata.
Fiecarui
protocol i se repartizeaza o distanta prestabilita, valoare care poate
fi redefinita la configurare.
Zebra foloseste o arhitectura modulara, cu programe separate care
executa diferite operatii de rutare. In momentul scrierii acestor
rânduri, suita Zebra include urmatoarele programe cheie:
zebra zebra
este utilitarul de gestiune a rutarii. Acesta actualizeaza tabelul de
rutare al nucleului cu rutele primite de la diversele protocoale de
rutare. Toate protocoalele actualizeaza tabelul prin intermediul
programului zebra de gestiune a rutarii.
ripd
ripd furnizeaza protocoalele de rutare RIP si RIPv2.
ospfd ospfd
furnizeaza protocolul de rutare OSPF.
bgpd
bgpd furnizeaza protocolul de rutare BGP.
vtysh
deoarece fiecare protocol de rutare si programul de gestiune
zebra sunt configurate în fisiere separate, procesul de
configurare se poate dovedi complex. vtysh este o interfata de terminal
virtual, proiectata pentru întretinerea configuratiei ruterului.
ripngd ripngd
furnizeaza protocolul RIPng în vederea utilizarii în
relelele IPv6.
ospf6d ospf6d furnizeaza
protocolul de rutare OSPFv6 în vederea utilizarii în
retelele IPv6.
Aceasta
arhitectura modulara este extensibila prin însasi natura sa. Se
poate adauga un nou protocol de rutare prin crearea unui nou daemon
pentru protocol si proiectarea acestui daemon astfel încât
sa interactioneze cu programul zebra de gestiune a rutarii. De
asemenea, implementarea daemonului de protocol este simplificata,
deoarece zebra manipuleaza functiile interne pentru noul daemon. Noul
program va trebui sa se ocupe numai de functiile externe ale
protocolului.
Fisierul
zebra.conf
<top>
Utilitarul de
gestiune a rutarii zebra este obligatoriu daca doriti sa folositi
oricare dintre programele daemon de rutare Zebra. zebra administreaza
tabelul de rutare al nucleului, întretine lista cu interfetele de
retea, defineste rutele statice si gestioneaza partajarea informatiilor
între diferitele protocoale de rutare.
Programul
zebra este configurat prin intermediul fisierului zebra.conf. Listingul
de mai jos prezinta un exemplu de fisier zebra.conf pentru un sistem
Linux care foloseste doua interfele Ethernet:
Un exemplu de fisier zebra.conf
! The hostname of this router
hostname subnet60gw
! The password required for vtysh access password Wats?Watt?
! The password required for privileged vtysh commands
enable password CHLL1ns
! interfata eth0
interface eth0
ip address 172.16.60.1/24
! interfata eth1
interface eth1
ip address 172.16.1.9/24
Comentariile
din diferitele fisiere de configurare Zebra încep cu un semn al
exclamarii (!). Comentariile din listingul de mai sus constituie
explicatii pentru comenzile imediat urmatoare.
Fisierul
prezentat ca exemplu în listingul 7.5 este mai mare Si mai
complex decât majoritatea fisierelor de acest tip.
Fisierul respectiv a fost astfel
conceput încât sa furnizeze o gama completa de exemple, dar
merita sa retineti ca, probabil, fisierul dumneavoastra zebra.conf va
fi de dimensiuni mai reduse.
Comanda
hostname defineste numele sistemului gazda al ruterului. Acesta este
numele care va fi utilizat în schimburile dintre protocoalele de
rutare în care se folosesc numele ruterelor. Deseori, fisierele
zebra.conf încep cu aceasta comanda.
Apoi au fost
inserate doua comenzi care definesc parolele. Comanda password este
necesara daca doriti sa folositi interfala vtysh. Daca aceasta parola
nu este definita, interfala vtysh este dezactivata pentru zebra. A doua
parola furnizeaza interfetei vtysh un control mai strict asupra
configurarii. in absenta parolei definite prin intermediul comenzii
enable password, interfata vtysh se poate utiliza numai pentru
obtinerea de informatii de la programul zebra prin intermediul
interogarilor. Cu aceasta a doua parola, configuratia programului zebra
poate fi controlata de la interfala.
Prima comanda
interface defineste configuralia dispozitivului eth0. Comanda contine
doua clauze: ip address, care defineste adresa interfelei, respectiv
multicast, care activeaza indicatorul de difuzare pe grupuri pentru
interfata. Indicatorul de difuzare pe grupuri poate fi utilizat daca
v-ati propus sa folositi un protocol de difuzare pe grupuri, precum
RIPv2, pe aceasta interfata. A doua comanda interface este foarte
asemanatoare cu prima, cu deosebirea ca nu activeaza indicatorul de
difuzare pe grupuri.
Comanda log
file defineste fisierul în care programul zebra îsi va
scrie informatiile de jurnal. In listingul de mai sus, jurnalul este
scris în fisierul lvar/log/zebra.log. Alternativele la
consemnarea într-un fisier specific rezida în utilizarea
comenzii log stdout pentru consemnarea la dispozitivul de iesire
standard, respectiv a comenzii log syslog pentru consemnarea prin
intermediul programului syslogd.
Ultima comanda
din listing defineste o ruta statica. Desi rutele statice pot fi
distribuite de protocoalele configurate în alte fisiere, precum
ripd.conf, acestea pot fi definite si în fisierul zebra. conf.
Cuvintele cheie ip route sunt urmate de destinatia rutei si de ruterul
folosit pentru ajungerea la destinatia respectiva. In listingul de mai
sus, destinatia este reteaua cu numarul 172.16.50.0.
Se foloseste o masca de adrese pe
24 de biti pentru a compara adresele cu destinatia. Poarta rutei este
172.16.1.50.
Evident, acesta nu este decât un exemplu.
Probabil ca nu veti utiliza rute statice la rularea protocoalelor de
rutare.
Doua linii din
fisierul zebra. conf prezentat în listingul precedent definesc
parolele pentru interfata vtysh. Ca atare, acest fisier trebuie sa fie
accesibil numai administratorilor. Inainte de a trece la configurarea
protocoalelor individuale, sa examinam modul de utilizare a acestor
parole pentru interfala vtysh.
Rularea
programului ospfd
<top>
In aceasta
sectiune, un ruter este configurat sa trimita pachete RIPv2
într-o subretea si anunturi OSPF cu starea legaturii într-o
alta subretea, pe care o partajeaza cu alte rutere. In aceasta
configuratie, am creat un fisier zebra.conf în vederea
configurarii utilitarului de gestiune a rutarii, un fisier ripd.conf
pentru a configura daemonul protocolului RIPv2 si un fisier ospfd.conf
pentru configurarea daemonului protocolului OSPF.
Listingul A Un fisier zebra.conf pentru un ruter RIP/OSPF
hostname subnet60gw
password Wats?Watt?
enable password CHLL1ns
log file /var/log/zebra.log
!
interface eth0
ip address 172.16.60.1/24
multicast
!
interface ethl
ip address 172.16.1.9/24
!
Fisierul ripd.conf folosit pentru aceasta configuralie este prezentat
în listingul B.
Listingul B Un fisier ripd.conf pentru un ruter RIP/OSPF
! Enable RIPV2
! Advertise routes learned from OSPF with a cost of 5
! Use simple authentication for updates
password RIPItup
enable password RaceitUP
!
interface eth0
ip rip authentication string EZdozIt
!
router rip
redistribute ospf metric 5
network eth0
!
Mai
întâi, am plasat parole în acest fisier, pentru a
permite intretinerea configuratiei ruterului RIP prin intermediul
interfelei vtysh.
In al doilea
rând, ca ruter, acesta trimite pachete de actualizare a rutarii.
Ca atare, folosim o clauza network sub instructiunea router rip pentru
a specifica reteaua în care vor fi distribuite pachetele de
actualizare a rutarii. Asa cum s-a aratat anterior, reteaua poate fi
definita printr-un nume de interfata sau printr-o adresa IP. In
listingul B, reteaua este definita printr-un nume de interfala.
Cea de-a treia
diferenta consta în faptul ca aceasta configuratie conline o
clauza redist ribute, care defineste rutele aflate de la OSPF care vor
fi comunicate vecinilor RIP si costul RIP care va fi atribuit acestor
rute. Rutele aflate de la OSPF nu au un cost RIP valid. Metrica
definita în clauza redistribute este folosita ca metrica
prestabilita când rutele OSPF sunt comunicate vecinilor RIP.
Clauza redistribute din listingul B indica protocolului RIP sa comunice
rutele aflate de la OSPF cu un cost egal cu 5. Evident, pentru ca RIP
sa afle rute de la OSPF, este necesar ca programul ospfd sa fie
configurat în mod adecvat.
Listingul C prezinta un posibil fisier de configurare ospfd.conf pentru
acest ruter.
Listingul C Un exemplu de fisier
ospfd.conf
! Enable OSPF; connect to the backbone area
! Use simple authentication
password Mutt-N-Jeff
enable password SURtest
!
interface ethl
ip ospf authentication-key UTrustME
ip ospf priority 5
!
router ospf
ospf router-id 172.16.1.9
network 172.16.1.0/24 area 0
!
Instructiunea
interface stabileste doi parametri OSPF. Clauza ip ospf
authentication-key defineste sirul în format text simplu pentru
identificarea anunturilor OSPF valide. Asemanator sirului de text
simplu folosit pentru autentificarea RIPv2, acest sir este destinat
prevenirii unor actualizari accidentale provenite de la sisteme cu
erori de configurare, nefiind conceput ca masura de securitate. Pentru
o autentificare mai puternica, OSPF recunoaste MD5.
Clauza ip ospf
priority defineste numarul de prioritate pe care îl foloseste
acest sistem când suprafala alege un ruter desemnat. In listingul
C, numarul de prioritate este 5; valorile posibile sunt cuprinse
între 0 si 255. Cu cât acest numar este mai mare, cu
atât este mai pulin probabil ca ruterul respectiv sa fie ales ca
ruter desemnat. Atribuiti ruterului dumneavoastra cel mai puternic
numarul de prioritate cel mai redus.
Un ruter
desemnat este folosit pentru reducerea dimensiunii bazei de date cu
starea legaturilor si implicit a complexitalii calculului grafului
Dijkstra al suprafetei.
Ruterul
desemnat trateaza toate celelalte rutere din suprafala ca vecini, dar
toate celelalte rutere vor trata numai ruterul desemnat ca vecin.
Pentru a
înlelege cum contribuie procedeul respectiv la reducerea
dimensiunii bazei de date cu starile legaturilor, gânditi-va la o
retea compusa din cinci rutere. În absenta unui ruter desemnat,
toate cele cinci rutere emit anunturi catre patru vecini, deci în
total vor exista 20 de vecini în baza de date. Cu un ruter
desemnat, numai ruterul respectiv este cel care emite anunturi spre
patru vecini. Celelalte patru rutere emit anunturi spre un singur
vecin, deci în baza de date vor exista în total opt vecini.
Cu cât reteaua este mai mare, cu atât este mai important sa
utilizali un ruter desemnat.
Instructiunea
router ospf activeaza protocolul OSPF. În listingul C,
instructiunea router ospf contine doua clauze.
Clauza ospf
router-id defineste identificatorul de ruter folosit pentru anunturile
OSPF. În mod normal, acesta reprezinta adresa primara a uneia
dintre interfetele folosite pentru OSPF. In ruterul prezentat ca
exemplu, pentru OSPF se foloseste o singura interfata de retea, deci
adresa interfetei respective este utilizata ca identificator de ruter.
Clauza network
identifica reteaua prin intermediul careia vor avea loc schimburile de
rute OSPF. In fisierul ospfdf.conf, reteaua din clauza network este
întotdeauna definita de o pereche adresa IP-masca de retea. De
asemenea, clauza network identifica suprafata din care face parte
reteaua. Amintiti-va ca OSPF împarte sistemul autonom în
suprafete, iar fiecare ruter OSPF trebuie sa se conecteze la o
suprafata. Asa cum s-a mentionat anterior, suprafata care
interconecteaza toate celelalte suprafete din interiorul domeniului de
rutare se numeste suprafata coloana vertebrala. Numarul atribuit
suprafetei coloana vertebrala este 0. Ca atare, clauza network din
listingul 7.13 specifica faptul ca acest ruter este conectat la
suprafala coloana vertebrala.
O configuralie
OSPF simpla, cum este cea prezentata în listingul C, este
adecvata pentru orice sistem Linux care trebuie sa ruleze OSPF. Multe
din informatiile de configurare vor proveni de la proiectantul retelei,
care defineste ierarhia de rutare.
Suprafala la
care va conectati, tipul de autentificare folosit, parola de
autentificare si numarul de prioritate al sistemului dumneavoastra
reprezinta decizii de proiectare care vor fi luate înainte ca
sistemul dumneavoastra sa înceapa macar sa ruleze OSPF.
Bibliografie:
Graig Hunt-Linux Servere de retea
Scopul
lucrarii
<top>
Prezenta lucrare isi propune sa
prezinte, in scop didactic instalarea, configurarea si utilizarea
programului de rutare quagga
Modu de
realizare
<top>
In acest scop am alcatuit o retea
formata din trei calculatoare dotate fiecare cu cate doua placi de
retea conectate intre ele cu ajutorul a 3 cabluri UTP de tip cross-over.
Fiecare calculator are
suplimentar configurata inca o interfata generica dummy0 spre cate o
retea locala. Ne propunem folosind programul de rutare quagga sa
asiguram redundata acestor trei interfete generice.
Dispunerea claculatoarelor este in forma de triunghi
legate intre ele cu ajutorul a trei cabluri UTP de tip crossover.

Configurare
router R1
<top>
Denumire router: intra.net
System de operare: Fedora Core1
1)Configuare interfete
Routerul R1 dispune de doua interfete tip Ethernet (eth0, eth1) plus o
interfata virtuala dummy0
Placi retea Ethernet:
Interfata eth0: RTL-8029(AS)
Interfata eth1: RTL-8029(AS)
Fisierul /etc/sysconfig/network-scripts/ifcfg-eth0 este de forma:
# Realtek|RTL-8029(AS)
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.0.0.1
NETMASK=255.255.255.252
HWADDR=00:E0:29:48:B2:5E
USERCTL=no
PEERDNS=no
TYPE=Ethernet
Fisierul /etc/sysconfig/network-scripts/ifcfg-eth1 este de forma:
# Realtek|RTL-8029(AS)
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
#IPADDR=192.168.9.10
IPADDR=10.0.0.10
#NETMASK=255.255.255.0
NETMASK=255.255.255.252
NETWORK=10.0.0.8
TYPE=Ethernet
#GATEWAY=192.168.1.31
HWADDR=00:E0:7D:7D:20:FA
USERCTL=no
PEERDNS=no
Se creaza un fisier /etc/sysconfig/network-scripts/ifcfg-dummy0 cu
drepturi identice cu celelalte doua si cu urmatorul continut:
# Realtek|RTL-8139/8139C/8139C+
DEVICE=dummy0
IPADDR=10.0.1.1
NETMASK=255.255.255.0
BROADCAST=10.0.1.255
NETWORK=10.0.1.0
ONBOOT=yes
BOOTPROTO=static
In fisierul /etc/modprobe.conf se adauga linia:
Alias dummy0 dummy
Acesta este de forma:
include /etc/modprobe.conf.dist
alias eth0 8139too
alias dummy0 dummy
Activam interfata dummy0:
#ifup dummy0
Se activeaza forwardarea prin
setarea variblei net.ipv4.ip_forward din fisierul /etc/sysctl.conf pe
valoarea 1
Acesta va fi de forma urmatoare:
# Kernel sysctl configuration file for
Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8)
and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
Se tasteaza de la consola comanda:
#sysctl –p
In fisierul
/etc/sysconfig/network se adauga linia: NOZEROCONF=yes
Acesta va avea forma urmatoare:
NETWORKING=yes
HOSTNAME=intra.net
NOZEROCONF=yes
Se reporneste serviciul de retea:
#service network restart
Verificare interfete:
dummy0 Link encap:Ethernet HWaddr
00:00:00:00:00:00
inet addr:10.0.1.1 Bcast:10.0.1.255 Mask:255.255.255.0
eth0 Link
encap:Ethernet HWaddr 00:C0:26:21:56:DA
inet addr:10.0.0.1 Bcast:10.0.0.3 Mask:255.255.255.252
eth1 Link
encap:Ethernet HWaddr 00:E0:7D:7D:20:FA
inet addr:10.0.0.10 Bcast:10.0.0.11 Mask:255.255.255.252
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
2)Instalare si configurarare program
quagga
Se instaleaza pachetul quagga, pachet ce vine
implicit cu kitul de Fedora (quagga-0.96.3-1).
#rpm –I quagga-0.96.3-1.rpm
Configuram fisierul /etc/quagga/zebra.conf de
forma:
hostname intra.net
password xxx
Creem un fisier
/etc/quagga/ospfd.conf cu un continut identic (inclusive
drepturi) cu al celui precedent
Pornim serviciul ospfd dupa care
zebra (ATENTIE! Aceasta ordine este obligatorie la pornire precum si la
oprire!!!)
#service ospfd start
#service zebra start
Verificam ca acestea sunt pornite:
[root@intra root]# ps ax | grep zebra
6661 ?
S 0:00 /usr/sbin/zebra -d -A 127.0.0.1
6665 pts/2 S 0:00
grep zebra
[root@intra root]# ps ax | grep ospf
6559 ?
S 0:00 /usr/sbin/ospfd -d -A 127.0.0.1
6667 pts/2 S 0:00
grep ospf
[root@intra root]# ps ax | grep ospf
Configuram ospfd_ul:
[root@intra root]# telnet localhost 2604
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, this is quagga (version 0.96.3).
Copyright 1996-2002 Kunihiro Ishiguro.
User Access Verification
Password:
intra.net> enable
intra.net# conf t
intra.net(config)# router ospf
intra.net(config-router)# ospf router-id 10.0.1.1
intra.net(config-router)# redistribute connected
intra.net(config-router)# network 10.0.0.0/30 area 0
intra.net(config-router)# network 10.0.0.8/30 area 0
intra.net(config-router)# (aici este combinatia de taste CTRL+Z)
intra.net# wr mem
Configuration saved to /etc/quagga/ospfd.conf
intra.net# exit
Connection closed by foreign host.
[root@intra root]#
Fisisierul /etc/quagga/ospfd.conf va
fi de forma:
!
! Zebra configuration saved from vty
! 2004/11/30 17:28:18
!
hostname intra.net
password xxx
!
!
!
interface dummy0
!
interface eth0
!
interface eth1
!
interface lo
!
router ospf
ospf router-id 10.0.1.1
redistribute connected
network 10.0.0.0/30 area 0.0.0.0
network 10.0.0.8/30 area 0.0.0.0
!
line vty
!
Repornim ospf_ul si zebra (atentie la
ordine!)
#service zebra stop
#service ospf stop
#service ospf start
#service zebra start
Configurare
router R2
<top>
Denumire router: gw1
System de operare: Fedora Core1
1)Configuare interfete
Routerul R2 dispune de doua interfete tip Ethernet (eth0, eth1) plus o
interfata virtuala dummy0
Placi retea Ethernet:
Interfata eth0: RTL-8139/8139C/8139C+
Interfata eth1: RTL-8139/8139C/8139C+
Fisierul /etc/sysconfig/network-scripts/ifcfg-eth0 este de forma:
# Realtek|RTL-8139/8139C/8139C+
DEVICE=eth0
BOOTPROTO=none
BROADCAST=10.0.0.7
HWADDR=00:A0:D2:1C:55:03
IPADDR=10.0.0.5
NETMASK=255.255.255.252
NETWORK=10.0.0.4
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
PEERDNS=no
Fisierul
/etc/sysconfig/network-scripts/ifcfg-eth1 este de forma:
# Realtek|RTL-8139/8139C/8139C+
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.0.0.2
NETMASK=255.255.255.252
HWADDR=00:00:21:E5:AF:2D
TYPE=Ethernet
USERCTL=no
PEERDNS=no
Se creaza un fisier
/etc/sysconfig/network-scripts/ifcfg-dummy0 cu drepturi identice cu
celelalte doua si cu urmatorul continut:
# Realtek|RTL-8139/8139C/8139C+
DEVICE=dummy0
IPADDR=10.0.2.2
NETMASK=255.255.255.0
BROADCAST=10.0.2.255
NETWORK=10.0.2.0
ONBOOT=yes
BOOTPROTO=static
In fisierul /etc/modprobe.conf se
adauga linia:
Alias dummy0 dummy
Acesta este de forma:
include /etc/modprobe.conf.dist
alias eth0 8139too
alias dummy0 dummy
Se activeaza interfata dummy0:
#ifup dummy0
Se activeaza forwardarea prin
setarea variblei net.ipv4.ip_forward din fisierul /etc/sysctl.conf pe
valoarea 1
Acesta va fi de forma urmatoare:
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8)
and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
Se tasteaza de la consola comanda:
#sysctl –p
In fisierul /etc/sysconfig/network se
adauga linia: NOZEROCONF=yes
Acesta va avea forma urmatoare:
NETWORKING=yes
HOSTNAME=gw1
NOZEROCONF=yes
Se reporneste serviciul de retea:
#service network restart
Verificare interfete:
masina gw1 (router_ul1)
dummy0 Link encap:Ethernet HWaddr
00:00:00:00:00:00
inet addr:10.0.2.2 Bcast:10.0.2.255 Mask:255.255.255.0
eth0 Link
encap:Ethernet HWaddr 00:C0:26:21:56:DA
inet addr:10.0.0.5 Bcast:10.0.0.7 Mask:255.255.255.252
eth1 Link
encap:Ethernet HWaddr 00:E0:7D:7D:20:FA
inet addr:10.0.0.2 Bcast:10.0.0.3 Mask:255.255.255.252
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
2)Instalare si configurarare program quagga
Se instaleaza pachetul quagga, pachet
ce vine implicit cu kitul de Fedora (quagga-0.96.3-1).
#rpm –I quagga-0.96.3-1.rpm
Configuram fisierul /etc/quagga/zebra.conf de forma:
hostname gw1
password xxx
Creem un fisier /etc/quagga/ospfd.conf cu un continut
identic (inclusive drepturi) cu al celui precedent
Pornim serviciul ospfd dupa care zebra
(ATENTIE! Aceasta ordine este obligatorie la pornire precum si la
oprire!!!)
#service ospfd start
#service zebra start
Verificam ca acestea sunt pornite:
[root@gw1 root]# ps ax | grep zebra
6661 ?
S 0:00 /usr/sbin/zebra -d -A 127.0.0.1
6665 pts/2 S 0:00
grep zebra
[root@gw1 root]# ps ax | grep ospf
6559 ?
S 0:00 /usr/sbin/ospfd -d -A 127.0.0.1
6667 pts/2 S 0:00
grep ospf
[root@gw1 root]# ps ax | grep ospf
Configuram ospfd_ul:
[root@ gw1 root]# telnet localhost 2604
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, this is quagga (version 0.96.3).
Copyright 1996-2002 Kunihiro Ishiguro.
User Access Verification
Password:
gw1> enable
gw1# conf t
gw1(config)# router ospf
gw1(config-router)# ospf router-id 10.0.2.2
gw1config-router)# redistribute connected
gw1(config-router)# network 10.0.0.4/30 area 0
gw1(config-router)# network 10.0.0.8/30 area 0
gw1(config-router)# (aici este combinatia de taste CTRL+Z)
gw1# wr mem
Configuration saved to /etc/quagga/ospfd.conf
gw1# exit
Connection closed by foreign host.
[root@intra root]#
Fisisierul /etc/quagga/ospfd.conf va
fi de forma:
!
! Zebra configuration saved from vty
! 2004/11/30 17:21:12
!
hostname gw1
password xxx
!
!
!
interface dummy0
!
interface eth0
!
interface eth1
!
interface lo
!
router ospf
ospf router-id 10.0.2.2
redistribute connected
network 10.0.0.4/30 area 0.0.0.0
network 10.0.0.8/30 area 0.0.0.0
!
line vty
!
Repornim ospf_ul si zebra (atentie la
ordine!)
#service zebra stop
#service ospf stop
#service ospf start
#service zebra start
Configurare
router R3
<top>
Denumire router: router3
System de operare: Fedora Core1
1)Configuare interfete
Routerul R3 dispune de doua interfete tip Ethernet (eth0, eth1) plus o
interfata virtuala dummy0
Placi retea Ethernet:
Interfata eth0: 82557/8/9 [Ethernet Pro 100]
Interfata eth1: RTL-8139/8139C/8139C+
Fisierul /etc/sysconfig/network-scripts/ifcfg-eth0 este de forma:
# Intel Corp.|82557/8/9 [Ethernet Pro 100]
DEVICE=eth0
BOOTPROTO=none
BROADCAST=10.0.0.11
HWADDR=00:D0:B7:40:A5:A0
IPADDR=10.0.0.9
NETMASK=255.255.255.252
NETWORK=10.0.0.8
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
PEERDNS=no
Fisierul
/etc/sysconfig/network-scripts/ifcfg-eth1 este de forma:
# Realtek|RTL-8139/8139C/8139C+
DEVICE=eth1
BOOTPROTO=none
BROADCAST=10.0.0.7
HWADDR=00:02:44:66:2A:62
IPADDR=10.0.0.6
NETMASK=255.255.255.252
NETWORK=10.0.0.4
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
PEERDNS=no
Se creaza un fisier
/etc/sysconfig/network-scripts/ifcfg-dummy0 cu drepturi identice cu
celelalte doua si cu urmatorul continut:
# Intel Corp.|82557/8/9 [Ethernet Pro 100]
DEVICE=dummy0
IPADDR=10.0.3.3
NETMASK=255.255.255.0
BROADCAST=10.0.3.255
NETWORK=10.0.3.0
ONBOOT=yes
BOOTPROTO=static
In fisierul /etc/modprobe.conf se adauga linia:
Alias dummy0 dummy
Acesta este de forma:
include /etc/modprobe.conf.dist
alias eth0 e100
alias eth1 8139too
alias scsi_hostadapter aic7xxx
alias dummy0 dummy
Se activeaza interfata dummy0:
#ifup dummy0
Se activeaza forwardarea prin setarea
variblei net.ipv4.ip_forward din fisierul /etc/sysctl.conf pe valoarea
1
Acesta va fi de forma urmatoare:
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8)
and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
Se tasteaza de la consola comanda:
#sysctl –p
In fisierul /etc/sysconfig/network se
adauga linia: NOZEROCONF=yes
Acesta va avea forma urmatoare:
NETWORKING=yes
HOSTNAME=router3
Se reporneste serviciul de retea:
#service network restart
Verificare interfete:
dummy0 Link encap:Ethernet HWaddr
00:00:00:00:00:00
inet
addr:10.0.3.3 Bcast:10.0.3.255 Mask:255.255.255.0
eth0 Link encap:Ethernet HWaddr
00:D0:B7:40:A5:A0
inet
addr:10.0.0.9 Bcast:10.0.0.11 Mask:255.255.255.252
eth1 Link encap:Ethernet HWaddr
00:02:44:66:2A:62
inet
addr:10.0.0.6 Bcast:10.0.0.7 Mask:255.255.255.252
lo Link encap:Local Loopback
inet
addr:127.0.0.1 Mask:255.0.0.0
2)Instalare si configurarare program
quagga
Se instaleaza pachetul quagga, pachet ce vine implicit cu kitul de
Fedora (quagga-0.96.3-1).
#rpm –I quagga-0.96.3-1.rpm
Configuram fisierul /etc/quagga/zebra.conf de forma:
hostname router3
password xxx
Creem un fisier
/etc/quagga/ospfd.conf cu un continut identic (inclusive
drepturi) cu al celui precedent
Pornim serviciul ospfd dupa care zebra (ATENTIE! Aceasta ordine este
obligatorie la pornire precum si la oprire!!!)
#service ospfd start
#service zebra start
Verificam ca acestea sunt pornite:
[root@router3 root]# ps ax | grep zebra
6661 ?
S 0:00 /usr/sbin/zebra -d -A 127.0.0.1
6665 pts/2 S 0:00
grep zebra
[root@router3 root]# ps ax | grep ospf
6559 ?
S 0:00 /usr/sbin/ospfd -d -A 127.0.0.1
6667 pts/2 S 0:00
grep ospf
[root@router3 root]# ps ax | grep ospf
Configuram ospfd_ul:
[root@router3 root]# telnet localhost 2604
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, this is quagga (version 0.96.3).
Copyright 1996-2002 Kunihiro Ishiguro.
User Access Verification
Password:
router3> enable
router3# conf t
router3(config)# router ospf
router3(config-router)# ospf router-id 10.0.3.3
router3(config-router)# redistribute connected
router3(config-router)# network 10.0.0.4/30 area 0
router3(config-router)# network 10.0.0.8/30 area 0
router3(config-router)# (aici este combinatia de taste CTRL+Z)
router3# wr mem
Configuration saved to /etc/quagga/ospfd.conf
router3# exit
Connection closed by foreign host.
[root@router3 root]#
Fisisierul /etc/quagga/ospfd.conf va fi de forma:
!
! Zebra configuration saved from vty
! 2004/12/01 15:11:22
!
hostname router3
password xxx
!
!
!
interface dummy0
!
interface eth0
!
interface eth1
!
interface lo
!
router ospf
ospf router-id 10.0.3.3
redistribute connected
network 10.0.0.4/30 area 0.0.0.0
network 10.0.0.8/30 area 0.0.0.0
!
line vty
!
Repornim ospf_ul si zebra (atentie la ordine!)
#service zebra stop
#service ospf stop
#service ospf start
#service zebra start
Teste
<top>
1)Vizualizam rutele pe fiecare masina
in parte:
Router R1
[root@intra root]# route
Kernel IP routing table
Destination
Gateway
Genmask
Flags Metric Ref Use Iface
10.0.0.4
10.0.0.9 255.255.255.252
UG 20
0 0 eth1
10.0.0.0
*
255.255.255.252
U
0
0 0 eth0
10.0.0.8
*
255.255.255.252
U
0
0 0 eth1
10.0.1.0
*
255.255.255.0
U
0
0 0 dummy0
10.0.2.0
10.0.0.9
255.255.255.0
UG 20
0 0 eth1
10.0.3.0
10.0.0.9
255.255.255.0
UG 20
0 0 eth1
127.0.0.0
*
255.0.0.0
U
0
0 0 lo
[root@intra root]# telnet localhost
2604
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, this is quagga (version 0.96.3).
copyright 1996-2002 Kunihiro Ishiguro.
User Access Verification
Password:
intra.net> show ip ospf neighbor
Neighbor ID Pri State
Dead Time
Address
Interface
RXmtL RqstL DBsmL
10.0.3.3
1 Full/DR
00:00:35 10.0.0.9
eth1:10.0.0.10 0
0 0
intra.net> show ip ospf database
OSPF Router with ID (10.0.1.1)
Router Link States (Area 0.0.0.0)
Link ID ADV
Router Age
Seq# CkSum
Link count
10.0.1.1
10.0.1.1
755 0x80000007 0x9f41 2
10.0.2.2
10.0.2.2
476 0x80000005 0x8484 1
10.0.3.3
10.0.3.3
478 0x80000007 0x07ba 2
Net Link States (Area 0.0.0.0)
Link ID ADV
Router Age
Seq# CkSum
10.0.0.6
10.0.3.3
478 0x80000004 0x55c6
10.0.0.10
10.0.1.1
755 0x80000004 0x24f9
AS External Link States
Link ID ADV
Router Age
Seq# CkSum
Route
10.0.0.0
10.0.2.2 426 0x80000005
0x9a0b E2 10.0.0.0/30 [0x0]
10.0.1.0
10.0.1.1 702 0x80000005
0xaef4 E2 10.0.1.0/24 [0x0]
10.0.2.0
10.0.2.2 416 0x80000005
0x960a E2 10.0.2.0/24 [0x0]
10.0.3.0
10.0.3.3 372 0x80000006
0x7c20 E2 10.0.3.0/24 [0x0]
Router R2
[root@gw1 root]# route
Kernel IP routing table
Destination
Gateway
Genmask Flags Metric
Ref Use Iface
10.0.0.4
*
255.255.255.252 U
0
0 0 eth0
10.0.0.0
*
255.255.255.252 U
0
0 0 eth1
10.0.0.8
10.0.0.6 255.255.255.252 UG
20
0 0 eth0
10.0.1.0
10.0.0.6 255.255.255.0
UG 20
0 0 eth0
10.0.2.0
*
255.255.255.0
U 0
0 0 dummy0
10.0.3.0
10.0.0.6
255.255.255.0
UG 20
0 0 eth0
127.0.0.0
*
255.0.0.0
U
0 0
0 lo
[root@gw1 root]# telnet localhost 2604
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, this is quagga (version 0.96.3).
Copyright 1996-2002 Kunihiro Ishiguro.
User Access Verification
Password:
gw1> show ip ospf neighbor
Neighbor ID Pri State
Dead Time Address
Interface
RXmtL RqstL DBsmL
10.0.3.3
1 Full/DR 00:00:32 10.0.0.6
eth0:10.0.0.5
0 0 0
gw1> show ip ospf database
OSPF Router with ID (10.0.2.2)
Router Link States (Area 0.0.0.0)
Link ID ADV
Router Age
Seq#
CkSum Link count
10.0.1.1
10.0.1.1 1210
0x80000007 0x9f41 2
10.0.2.2
10.0.2.2 926
0x80000005 0x8484 1
10.0.3.3
10.0.3.3 931
0x80000007 0x07ba 2
Net Link States (Area 0.0.0.0)
Link ID ADV
Router Age
Seq#
CkSum
10.0.0.6
10.0.3.3 931
0x80000004 0x55c6
10.0.0.10
10.0.1.1 1210
0x80000004 0x24f9
AS External Link States
Link ID ADV
Router Age
Seq# CkSum Route
10.0.0.0
10.0.2.2 877 0x80000005
0x9a0b E2 10.0.0.0/30 [0x0]
10.0.1.0
10.0.1.1 1157 0x80000005
0xaef4 E2 10.0.1.0/24 [0x0]
10.0.2.0
10.0.2.2 867 0x80000005
0x960a E2 10.0.2.0/24 [0x0]
10.0.3.0
10.0.3.3 824 0x80000006
0x7c20 E2 10.0.3.0/24 [0x0]
Router R3
[root@router3 root]# route
Kernel IP routing table
Destination
Gateway
Genmask
Flags Metric Ref Use Iface
10.0.0.4
*
255.255.255.252
U
0
0 0 eth1
10.0.0.0
10.0.0.10
255.255.255.252 UG 20
0 0 eth0
10.0.0.8
*
255.255.255.252
U
0
0 0 eth0
10.0.1.0
10.0.0.10
255.255.255.0
UG 20
0 0 eth0
10.0.2.0
10.0.0.5
255.255.255.0
UG 20
0 0 eth1
10.0.3.0
*
255.255.255.0 U
0
0 0 dummy0
169.254.0.0
*
255.255.0.0
U
0 0 0
eth1
127.0.0.0
*
255.0.0.0
U
0 0 0
lo
[root@router3 root]# telnet localhost
2604
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, this is quagga (version 0.96.3).
Copyright 1996-2002 Kunihiro Ishiguro.
User Access Verification
Password:
router3> show ip ospf neighbor
Neighbor ID Pri
State Dead Time
Address
Interface
RXmtL RqstL DBsmL
10.0.1.1
1 Full/Backup 00:00:35 10.0.0.10
eth0:10.0.0.9
0
0 0
10.0.2.2
1 Full/Backup 00:00:35
10.0.0.5 eth1:10.0.0.6
0
0 0
router3> show ip ospf database
OSPF Router with ID (10.0.3.3)
Router Link States (Area
0.0.0.0)
Link ID ADV
Router Age
Seq# CkSum Link count
10.0.1.1
10.0.1.1 1409 0x80000007
0x9f41 2
10.0.2.2
10.0.2.2 1127 0x80000005
0x8484 1
10.0.3.3
10.0.3.3 1129 0x80000007
0x07ba 2
Net Link States (Area 0.0.0.0)
Link ID ADV
Router Age
Seq# CkSum
10.0.0.6
10.0.3.3 1129
0x80000004 0x55c6
10.0.0.10
10.0.1.1 1409
0x80000004 0x24f9
AS External Link States
Link ID ADV
Router Age
Seq# CkSum Route
10.0.0.0
10.0.2.2 1078 0x80000005
0x9a0b E2 10.0.0.0/30 [0x0]
10.0.1.0
10.0.1.1 1356 0x80000005
0xaef4 E2 10.0.1.0/24 [0x0]
10.0.2.0
10.0.2.2 1068 0x80000005
0x960a E2 10.0.2.0/24 [0x0]
10.0.3.0
10.0.3.3 1023 0x80000006
0x7c20 E2 10.0.3.0/24 [0x0]
Test final
<top>
a)legatura intre R1 si R2 intrerupta:
[root@intra root]# ping -I 10.0.1.1 10.0.2.2
PING 10.0.2.2 (10.0.2.2) from 10.0.1.1 : 56(84) bytes of data.
ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable
b)legatura intre R1 si R2 refacuta :
[root@intra root]# ping -I 10.0.1.1 10.0.2.2
PING 10.0.2.2 (10.0.2.2) from 10.0.1.1 : 56(84) bytes of data.
ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable
64 bytes from 10.0.2.2: icmp_seq=7 ttl=63 time=0.960 ms
64 bytes from 10.0.2.2: icmp_seq=8 ttl=63 time=0.545 ms
64 bytes from 10.0.2.2: icmp_seq=9 ttl=63 time=0.591 ms
64 bytes from 10.0.2.2: icmp_seq=10 ttl=63 time=0.617 ms
64 bytes from 10.0.2.2: icmp_seq=11 ttl=63 time=0.609 ms
Concluzie:
Legatura se reia dupa 30 secunde de la intrerupere!
Similar pt. celelate 2 legaturi.
Aplicatii
practice ale programului quagga.
<top>
Sa zicem ca
dispunem de un sistem informatic ce dispune de o aplicatie software ce
ruleaza pe doua calculatoare. Unul este un server de baze de date si
altul un server web.
Aplicatia web
ruleaza pe serverul web folosind bazele de date de pe
serverul de baze de date. Ca sa avem conectivitate in permanenta
trebuie sa folosim
ip-uri care sint pe interfete de genul celor de pe dummy0 (sau pe alte
interfete care NU sint implicate in conectivitatea pe upstream).
Idea este ca
in cazul in care una din rute (de exemplu cea mai eficienta
ruta) cade (este intrerupta prin inchiderea unui router) pachetele
trebuie
sa gaseasca destinatia flosindu-se de exportul rutelor care se
realizeaza in
mod dinamic cu ajutorul programului quagga.
Atentie!
Sitemul Nu
ofera redundanta DECIT pentru ip-urile din spate (cele de pe eth3,
eth4, eth8, de genul dummy0), nu cele implicate in link-uri (/30-urile
alea dintre routere).
Daca de
pe R1 dam ping in 10.0.2.2 (R2) normal atunci ping-ul va pleca cu sursa
10.0.0.1. Daca link-ul dintre R1 si R2 pica atunci se intimpla
urmatoarele:
- 10.0.2.0/24 ar trebui sa vina via R3, care e
10.0.0.10 ;
- pachetele ICMP vor pleca spre 10.0.2.2 in
continuare cu sursa 10.0.0.1 (asta daca nu intrerupem ping-ul si dam
din nou);
- vor ajunge la 10.0.2.2 cu aceasta sursa;
- insa R2 va incerca sa raspunda la ele fix prin interfata cu
care tocmai am intrerupt link-ul pentru ca el are ruta connected pentru
10.0.0.0/30 pe acea interfata cu broken link.