Tabelul de rutare (administrarea rețelei TCP/IP, ediția a 3-a)
2.4. Tabelul de rutare
gateway-uri de date de rută între rețele, dar toate networkdevices, gazde, precum și gateway-uri, trebuie să ia decizii de rutare. Formost gazde, deciziile de rutare sunt simple:
-
dacă gazda de destinație se află în rețeaua locală, datele sunt livrate către gazda de destinație.
-
dacă gazda de destinație se află într-o rețea la distanță, datele sunt redirecționate către un gateway local.
deciziile de rutare IP sunt pur și simplu căutări de masă. Pachetele sunt routedtoward destinațiile lor ca regia de routingtable (de asemenea, numit forwardingtable). Tabelul de rutare mapează destinațiile către interfața de rețea routerand pe care IP trebuie să o utilizeze pentru a ajunge la acea destinație.Examinarea tabelului de rutare pe un sistem Linux arată acest lucru.
pe un sistem Linux, utilizațicomanda traseu cu-noption pentru a afișa tabelul de rutare. Opțiunea-nprevine ruta de la conversia adreselor IP lanume de gazdă, ceea ce oferă o afișare mai clară. Iată un tabel de rutare dintr-un eșantion de sistem Red Hat:
comanda Thenetstat este utilizată pentru a examina routingtable pe sistemele Solaris 8. Un exemplu Solaris este acoperit mai târziu înacest capitol.
# route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface172.16.55.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0172.16.50.0 172.16.55.36 255.255.255.0 UG 0 0 0 eth0127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo0.0.0.0 172.16.55.1 0.0.0.0 UG 0 0 0 eth0
pe un sistem Linux, route-ncommand Afișează tabelul de rutare cu următoarele câmpuri:
destinație
valoarea față de care adresa IP de destinațieeste potrivit.
Gateway
router-ul pentru a utiliza pentru a ajunge la specificatdestinație.
Genmask
masca de adresă utilizată pentru a potrivi o adresă IP cu valoarea afișată în câmpul destinație.
steaguri
anumite caracteristici ale acestui traseu.Valorile posibile ale steagului Linux sunt:
steagurile R, M,C, I, și ! sunt specifice Pentru Linux. Celelalte steaguri sunt utilizate pe majoritateasistemele Unix.
U
indică faptul că traseul este în sus și operațional.
H
indică faptul că acesta este un traseu către o anumită gazdă(majoritatea rutelor sunt către rețele).
G
indică faptul că ruta utilizează un drum extern. Interfețele de rețea ale sistemului oferă rute larețele conectate direct. Toate celelalte rute folosesc gateway-uri externe.Rețelele conectate direct nu au setul de pavilion G; toate otherroutes face.
R
indică o rută care a fost instalată, probabil prin protocolul de rutare adynamic care rulează pe acest sistem, utilizând opțiunea thereinstate.
D
indică faptul că această rută a fost adăugată din cauza unui mesaj de redirecționare ICMP. Atunci când un sistem învață de o routevia o redirecționare ICMP, se adaugă traseul la tabelul de rutare, astfel încât pachetele suplimentare legate de această destinație nu va trebui să beredirected. Sistemul utilizează steagul D pentru a marca aceste rute.
M
indică o rută care a fost modificată, probabil prin protocolul de rutare adynamic care rulează pe acest sistem, utilizând opțiunea themod.
A
indică o rută memorată în cache care are o intrare asociată în tabelul ARP.
C
indică faptul că această rută a venit din memoria cache kernelrouting. Majoritatea sistemelor folosesc două tabele de rutare: baza de informații Forwarding (FIB), care este tabelul de care suntem interesațideoarece este utilizat pentru decizia de rutare și kernel routingcache, care listează sursa și destinația rutelor utilizate recent. Acest steag este documentat, dar nu am văzut niciodată steagul c Ina listarea tabelului de rutare, chiar și atunci când listați memoria cache de rutare.
L
indică faptul că destinația acestei rute este una dintre adresele acestui computer. Aceste „localroutes” se găsesc numai în memoria cache de rutare.
B
indică o rută a cărei destinație este o adresă de difuzare. Aceste „rute de difuzare” se găsesc numai înruting cache. Solaris atribuie steagul atât adreselor de difuzare, cât și adreselor de rețea; adică, atât 172.16.255.255, cât și 172.16.0.0 sunt date steagul B de către sistemele Solaris care trăiesc în rețea172.16.0.0/16.
I
indică o rută care utilizează interfața loopback pentru un alt scop decât adresarea rețelei loopback. Aceste „rute interne” se găsesc numai în memoria cache de rutare.
!
indică faptul că datagramele legate de acest lucrudestinația va fi respinsă. Linux vă permite să instalați manual rute „negative”. Acestea sunt rute care blochează în mod explicitdatele legate de o anumită destinație. Acesta este specific Linux șirareori folosit, dar este o posibilă setare de pavilion.
Metric
„costul” traseului. Metrica este utilizată pentrusortați rute duplicate dacă apar în tabel. Dincolo de aceasta, protocolul de rutare adynamic este necesar pentru a utiliza metrica.
Ref
de câte ori s-a făcut referire la traseu pentru a stabili o conexiune. Această valoare nu este utilizată de sistemele Linux.
utilizați
de câte ori această rută a fost căutată de IP.
Iface
numele interfeței de rețea utilizată de această rută.
interfața de rețea este hardware-ul și software-ul de acces pe care IP le utilizează pentru a comunica cu rețeaua fizică. Vezi capitolul 6, „configurarea interfeței” pentrudetalii.
fiecare intrare din tabelul de rutare începe cu valoarea adestination. Valoarea destinației estecheia cu care se potrivește adresa IP pentru a determina dacă aceasta estetraseul corect de utilizat pentru a ajunge la adresa IP. Destinationvalue se numește de obicei”rețeaua de destinație”, deși nu trebuie să fie o adresă de rețea. Destinationvalue poate fi o adresă gazdă, o adresă multicast, un bloc de adresăcare acoperă o agregare a mai multor rețele sau o valoare specială pentru ruta implicită sau adresa de loopback. Cu toate acestea, în toate cazurile, câmpul de destinație conține valoarea cu care adresa de destinație din pachetul IP este potrivită pentru a determina dacă IP ar trebui să livreze datagrama folosind această rută.
câmpul Genmask este masca de biți pe care IP o aplică adresei de destinație din pachet pentru a vedea dacă adresa se potrivește cu valoarea de destinație din tabel. Dacă un bit este activat în masca de biți, bitul corespunzător din adresa de destinație este formatarea semnificativă a adresei. Astfel, adresa 172.16.50.183 s-ar potrivi cu cea de-a doua intrare din tabelul de probă, deoarece ANDing adresa cu 255.55.255.0 randamente 172.16.50.0.
atunci când o adresă se potrivește cu o intrare în tabel, Gatewayfield spune IP cum să ajungă la specificatdestination. Dacă câmpul Gateway conține adresa IP a arouterului, se utilizează routerul. Dacă câmpul Gateway conține toate 0s (0.0.0.0 când ruta este rulată cu-n) sau un asterisc (*când ruta este rulată fără-n), rețeaua de destinație este o rețea conectată direct și”gateway” este interfața de rețea a computerului. Ultimul câmp afișat pentru fiecare intrare în tabel este interfața de rețea utilizată pentru traseu. În exemplu, este fie prima Ethernetinterface (eth0), fie interfața loopback(lo). Destinația, gateway-ul, masca șiinterfața definesc ruta.
celelalte patru câmpuri (Ref, Use, Flags și Metric) afișeazăsusținerea informațiilor despre traseu. Aceste câmpuri informative au doar o valoare marginală. Unele sisteme păstrează un număr precis în câmpul Ref; altele, cum ar fi Linux, nu îl folosesc cu adevărat. Linux folosește câmpul de utilizare pentru a număra de câte ori aroute trebuia să fie căutat, deoarece nu era în memoria cache de rutare când IP avea nevoie de el. Unele alte sisteme arată numărul de pachetetransmise prin traseu în câmpul utilizare. Câmpul steagului afișează informații care sunt adeseaevident chiar și fără steaguri: fiecare rută are steagul U setdeoarece fiecare rută din tabelul de rutare este în sus prin definiție, andlooking at the Gateway field vă spune dacă este sau nu un drum extern este utilizat fără a căuta steagul G. Metricvalue este utilizat numai dacă executați someversion de RoutingInformation Protocol (RIP) pe sistemul dumneavoastră. Nu fi distras de aceste informații. Inima tabelului de rutare este ruta, care este compusă din destinație, mască, poartă și interfață.
IP utilizează informațiile din tabelul de rutare (tabelul de redirecționare)pentru a construi rutele utilizate pentru conexiunile active. Routesassociated cu conexiuni active sunt stocate în routingcache. Pe Linuxsystems, cache-ul de rutare poate fi examinat prin adăugarea argumentului-C la linia de comandă route:
$ route -CnKernel IP routing cacheSource Destination Gateway Flags Metric Ref Use Iface127.0.0.1 127.0.0.1 127.0.0.1 l 0 0 0 lo192.203.230.10 172.16.55.3 172.16.55.3 l 0 0 0 lo172.16.55.1 172.16.55.255 172.16.55.255 ibl 0 0 243 lo172.16.55.2 172.16.55.255 172.16.55.255 ibl 0 0 15 lo172.16.55.3 192.203.230.10 172.16.55.1 0 0 0 eth0127.0.0.1 127.0.0.1 127.0.0.1 l 0 0 0 lo172.16.55.3 132.163.4.9 172.16.55.1 0 0 0 eth0172.16.55.2 172.16.55.3 172.16.55.3 il 0 0 149 lo172.16.55.3 172.16.55.2 172.16.55.2 0 1 0 eth0132.163.4.9 172.16.55.3 172.16.55.3 l 0 0 0 lo
cache-ul de rutare este diferit de tabelul de rutare, deoarece thecache arată rutele stabilite. Tabelul de rutare este folosit pentru a luadeciziile de rutare; memoria cache de rutare este utilizatădupă luarea deciziei. Memoria cache de rutarearată sursa și destinația unei conexiuni de rețea șigateway și interfață utilizate pentru a face această conexiune.
Linux oferă un bun exemplu pentru afișarea conținutului routingtable, deoarece comanda Linux route Afișează tabelul atât de clar. Pe sistemele Solaris, comanda route are o sintaxă foarte diferită. Whenrunning Solaris, afișa conținutul tabelului de rutare cu thenetstat-nrcommand. Opțiunea-r îi spune lui netstat să afișeze tabelul de rutare, iar opțiunea-n îi spune lui netstat să afișeze tabelul în formă numerică.
Linux încorporează informațiile despre masca de adresă în afișajul tabelului de rutare. Solaris 8supports măști de adrese; pur și simplu nu le arată cândafișarea tabelului de rutare.
% netstat -nr Routing Table: IPv4 Destination Gateway Flags Ref Use Interface ----------- ----------- ----- ---- ----- --------- 127.0.0.1 127.0.0.1 UH 1 298 lo0 default 172.16.12.1 UG 2 50360 172.16.12.0 172.16.12.2 U 40 111379 dnet0 172.16.2.0 172.16.12.3 UG 4 1179 172.16.1.0 172.16.12.3 UG 10 1113 172.16.3.0 172.16.12.3 UG 2 1379 172.16.4.0 172.16.12.3 UG 4 1119
prima intrare în tabel este traseul loopback pentru gazda locală. Aceasta este loopbackaddress menționat mai devreme ca un număr de rețea rezervat. Deoarece fiecare sistem folosește ruta loopback pentru a trimite datagrame către sine, o intrare pentru interfața loopback se află în tabelul de rutare al fiecărei gazde.Steagul H este setat deoarece Solaris creează o rută către o anumită gazdă (127.0.0.1), nu o rută către o întreagă rețea (127.0.0.0).Vom vedea din nou facilitatea loopback când vom discuta kernelconfiguration și comanda ifconfig. Deocamdată, însă, interesul nostru real este pentru rutele externe.
o altă intrare unică în acest tabel de rutare este cea cu cuvântul „implicit” în câmpul de destinație. Această intrare este pentru defaultroute, iar gateway-ul specificat în această intrare este gateway-ul implicit. Traseul implicit este celălalt număr de rețea conservat menționat anterior: 0.0.0.0. Defaultgateway este utilizat ori de câte ori nu există nici un traseu specific în tabelul fora adresa de rețea de destinație. De exemplu, acest tabel de rutare nu areintrare pentru rețeaua 192.168.16.0. Dacă IP primește orice datagramsaddressed la această rețea, le va trimite prin gateway-ul implicit172.16.12.1.
toate gateway-urile care apar în tabelul de rutare se află pe rețele conectate direct la sistemul local. În eșantionul prezentat mai sus, aceasta înseamnă că adresele gateway-ului încep cu 172.16.12, indiferent de adresa de destinație. Aceasta este singura rețea la care această gazdă eșantion este atașată direct și, prin urmare, este singura rețea la care poate furniza direct date. Gateway-urile pe care o gazdă le folosește pentru a ajunge la restul Internetului trebuie să fie pe subrețea sa.
în figura 2-4, stratul IP a două gazde și agateway din rețeaua noastră imaginară este înlocuit cu o mică bucată de masă de arouting, care arată rețelele de destinație și gateway-urile utilizate pentru a ajunge la acele destinații. Să presupunem că masca de adresă utilizată pentrurețeaua 172.16.0.0 este 255.255.255.0. Când gazda sursă (172.16.12.2) trimite date către gazda destinație (172.16.1.2), aceasta aplică masca de adresă pentru a determina că ar trebui să caute adresa rețelei de destinație 172.16.1.0 în tabelul de rutare. Tabelul de rutare din gazda sursă arată că datele legate de 172.16.1.0 sunt trimise la gateway 172.16.12.3. Sursa gazdă transmite packetto poarta de acces. Gateway-ul face aceiași pași și caută adresa de destinație în tabelul său de rutare. Gateway 172.16.12.3face livrare directă prin interfața sa 172.16.1.5. Examinarea tabelelor de rutare din Figura 2-4 arată că toate sistemelelistați numai gateway-uri în rețelele la care sunt conectate direct.Acest lucru este ilustrat de faptul că 172.16.12.1 este defaultgateway atât pentru 172.16.12.2 și 172.16.12.3, ci pentru că 172.16.1.2cannot ajunge la rețea 172.16.12.0 direct, are un defaultroute diferit.
figura 2-4. Rutare bazată pe tabel
un tabel de rutare nu conține rute end-to-end. Un traseu indică doar spre următorulgateway, numit următorul hop, de-a lungul căii către rețeaua de destinație. Gazda se află pe poarta locală pentru a livra datele, iar poarta se află pe alte porți. Pe măsură ce o datagramă se deplasează de la o poartă la alta, ar trebui să ajungă în cele din urmă la una care este conectată direct la rețeaua sa de destinație. Această ultimă poartă este în cele din urmălivrează datele către gazda de destinație.
după cum vom vedea în Capitolul 7, „Configurarea Rutării „, unele protocoale de rutare, cum ar fi OSPF și BGP,obțin informații de rutare end-to-end. Cu toate acestea, pachetul esteîncă a trecut la routerul next-hop.
IP utilizează porțiunea de rețea a adresei pentru a direcționa datagrambetween rețele. Adresa completă, inclusiv informațiile despre gazdă, este utilizată pentru a efectua livrarea finală atunci când datagrama ajunge la rețeaua de destinație.
2.3. Internet Routing Architecture | 2.5. Address Resolution |