[cisco] Re: how routing works, bit level
"Claudiu C." <[email protected]> Wed, 29 Oct 2003 23:19:34 +0200
| Newsgroups | gmane.org.user-groups.rlug.general,gmane.org.user-groups.rlug.cisco |
|---|---|
| Message-ID | <[email protected]> |
> 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