[cisco] Re: how routing works, bit level

"Ciprian Niculescu" <[email protected]> Thu, 30 Oct 2003 20:38:36 +0100
Newsgroups gmane.org.user-groups.rlug.general,gmane.org.user-groups.rlug.cisco
Message-ID <[email protected]>
corect, dar ma interesa la baza cum se facea, acum binentles cu toate
optimizarile ....

C

On Thu, 30 Oct 2003 16:45:09 +0200 (EET), "Dan Nae" <[email protected]>
said:
> Suna foarte bine in teorie, dar in practica nu face asa (sau nu mai
> face), 
> pentru ca dureaza prea mult. Exista o carte care se cheama IOS Software 
> architecture, vezi la capitolul CEF. De fapt iti genereaza dinainte un 
> arbore cu toate combinatiile posibile de ip-uri, pe care adauga pentru 
> toate destinatiile pe care le cunoaste headerele de layer2(si 3?) pentru 
> interfata pe care tre sa plece pachetul . Asa nu face decat sa 
> caute intr-un arbore binar (era 4-way parca?), fara sa mai faca 100 de 
> comparatii pe masca. Cum ai zis tu probabil ca face linuxul, si in plus 
> mai tine si un cache. Devine mai complicat cand ai mai multe tabele de 
> rutare :)
> 
> 
> On Wed, 29 Oct 2003, Claudiu C. wrote:
> 
> > > cum face un ruter (cisco in particular si/sau altul) selectia rutei din
> > > tabela, dar la nivel de algoritm intern.
> > > adica el are la dispozitie o adresa de retea si masca de retea, si adresa
> > > destinatie, cum "scaneaza" tabela de rutare si ce operatii
> > > (and,or,xor,if...) face ca sa decida.
> > > apoi avand in vedere si cazul in care exista mai multe matchuri posibile
> > > pentru adresa respectiva, dar se alege chea mai exacta.
> > 
> > Intre adresa de IP destinatie, cat si a lui, face AND cu netmask-ul.
> > 
> > Din tabela de routare are prioritate routa cu netmask-ul care da spre o retea 
> > cu cea mai mica parte de host (Adica /27 e inaintea unui /26).
> > 
> > Algoritmii de selectie din tabela sunt, in cel mai probabil caz, bazat pe 
> > tabele hash sau pe binary tree (gandeste-te ca in tabela de routare sunt mii 
> > sau zeci de mii de route).
> > 
> > 1.1 -- 1.2 ------ 1.20 <> 2.30 ------ 2.2 -- 2.1
> > 255.0                     255.0
> > 
> > Un router, cat si un host, procedeaza cam in felul asta:
> > 
> > calculeaza adresa de retea dupa "retzeta": IP AND NETMASK. In cazul de mai 
> > sus, pentru este 1.0, respectiv 2.0
> > 
> > Presupunem ca 1.1 vrea sa trimita pachet catre 1.2
> > 
> > adresa destinatie AND netmask propriu = 1.0
> > adresa proprie    AND netmask propriu = 1.0
> > 
> > adresele de retea sunt egale ? DA =>
> > afla adresa MAC de la 1.2 si incapsuleaza pachetul intr-un frame si-l pune pe 
> > ethernet.
> > 
> > Presupunem ca 1.1 vrea sa trimita pachet catre 2.2
> > 
> > adresa destinatie AND netmask propriu = 2.0
> > adresa sursa      AND netmask propriu = 1.0
> > 
> > adresele de retea sunt egale ? NU =>
> > afla adresa MAC de la 1.20 (care e configurat ca gateway pe 1.1) si trimte 
> > frame catre el.
> > 
> > Router-ul nostru ia pachetul, se uita la adresa destinatie. De aici, ceea ce 
> > presupun este cam asa (nu stiu daca e corect, nu am studiat code-ul):
> > 
> > - face AND intre IP destinatie si netmask-ul cu cel mai mare nr de biti de 
> > retea (cu cele mai putine host-uri) pe care-l are in tabela.
> > 
> > - ii rezulta o adresa de retea pe care o cauta in tabela lui (de sus in jos, 
> > dar nu cred ca merge secvential - si nu merge sigur secvential - ci prin 
> > hash-uri sau prin binary trees). Daca nu gaseste, ia urmatoarea mask, samd 
> > pana ii gaseste destinatie.
> > 
> > - daca nu ii gaseste destinatie, si are default gateway setat, il trimite mai 
> > departe catre default.
> > 
> > In cazul nostru va gasi ca 2.0 se duce pe interfata cu 2.30, afla MAC si 
> > arunca frame-ul pe ethernet de unde e "ridicat" de catre 2.1
> > 
> 
> -- 
> -------------------------
> Dan Nae
> Romanian Education Network
> Bucharest NOC
> 
>