Continguts
Capa de xarxa
Introducció
La unitat de dades d'aquesta capa són els datagrames. La principal funcionalitat de la capa és rebre segments de dades de la capa de transport, empaquetar-los en datagrames i aconseguir que arribin al node de destí. Allà, el tros de capa de xarxa que hi haurà implementat extreurà el segment l'entregarà a la capa de transport.
Forwarding and Routing
Per moure paquets desdel node transmissor fins al node receptor, hi ha dues funcions essencials que cal identificar:
Forwarding
També en català anomenat encaminament, fa referència a l'acció local del router de transferir un paquet des d'un enllaç d'entrada al corresponent enllaç de sortida. (El procés d'arribar d'un encreuament d'una ciutat fins a l'encreuament que et portarà a la següent ciutat).
Cada router té una forwarding table, que utilitza per decidir la interfície de sortida que pendrà un paquet en base a un camp que hi ha en el header del paquet que rep. Depenent del protocol de capa de xarxa que s'utilitzi, el valor d'aquest camp podria ser l'adreça de destí del paquet (DN) o un indicador de la connexió a la qual pertany tal paquet (VC).
Els algoritmes d'enrutament determinen els valors de les taules d'encaminament.
Routing
També anomenat enrutament, fa referència al procés de determinar el camí final que els paquets faràn desde l'origen fins al destí. (El procés de planejar el viatge).
Aquest enrutament és duu a terme en base a algoritmes d'enrutament, que com ja hem explicat, són els encarregats de modificar les taules d'encaminament dels routers.
Aquest algoritme pot ser:
- Centralitzat : S'executa en un node central i envia informació de routeig a tots els routers.
- Descentralitzat : Amb peces de l'algoritme d'enrutament funcionant en cadascun dels routers del camí o de la xarxa.
Circuits Virtuals i Datagrames
La capa de xarxa pot oferir un servei amb prèvia connexió o un servei sense connexió, de la mateixa manera que la capa de transport. En la capa de xarxa aquests serveis es fan entre màquines finals de la capa de xarxa oferint-los a la capa de transport. Per altra banda, a la capa de transport aquests serveis es duen a terme entre processos de diferents màquines i s'ofereix a la capa d'aplicació.
Els Virtual Circuits i les xarxes de Datagrames són dos tipus de xarxes fonamentals. Utilitzen informació molt diferent per dur a terme les decisions d'encaminament
Virtual Circuits
Un circuit virtual consisteix en:
- Un camí (una sèrie de links i routers) entre la màquina font i destí.
- Números VC, un per cada link al llarg del camí.
- Entrades a les taules d'encaminament de cada router del camí.
- Un paquet que correspon a un VC tindrà un número VC en el seu header.
- Cada router del camí ha de canviar el número VC de cada paquet que el travessa amb un de nou, que serà obtingut a partir de la taula d'encaminament.
- Quan s'estableix un nou VC a través d'un router, cal afegir una nova entrada a la taula. De la mateixa manera, quan un circuit acaba, cal esborrar l'entrada i deixar lliure els números VC.
Hi ha tres fases que intervenen en el funcionament dels cicuits virtuals:
- VC setup : La capa de transport especifica l'adreça de destí i s'espera a que la capa de xarxa determini el camí entre ell i el destí. Determina també els VC numbers per a cada link del camí i afegeix una entrada a cada router que intervindrà. Durant aquesta fase, cal reservar recursos al llarg del camí del VC, però només
- durant aquesta fase. (No confondre amb circuit-switching networks).
- Data transfer : Un cop el VC s'ha establert, les dades poden fluir al llarg del circuit.
- VC teardown: S'informa al sistema final que s'acabarà la transmissió i actualitza les forwarding tables per indicar que el circuit VC ja no existeix.
Datagram networks
En els datagram networks, cada vegada que un sistema final vol enviar un paquet, encapsula el paquet amb l'adreça de destí i fica el paquet a la xarxa. No s'utilitza cap mètode de setup.
Cadascun dels routers del camí utilitzen l'adreça de destí del paquet per encaminar-lo. Així doncs, quan un paquet arriba a una interfície d'un router, mira l'adreça del destinatari i l'encamina cap al link de sortida apropiat.
Per exemple, si un router té 4 links, es pot definir un rang d'adreçes per a cadascun d'aquests links.
En datagram networks, l'unic tipus d'informació que es manté en el routers són les taules d'encaminament, que són actualitzades pels algoritmes d'enrutament.
The Internet Protocol (IP)
Avui en dia hi ha dues versions del Internet Protocol, la versió 4 (IPv4) i la versió 6 (IPv6).
Datagram Format
El paquet amb el que tracta la capa de xarxa és el datagrama. El datagrama té els següents camps:
- Version number : 4 bits destinats a indicar la versió del datagrama.
- Header length : com que el header del datagrama pot ser de diferents mides, es reserven 4 bits per indicar-ne la llargada i per indicar quan començen les dades.
- Datagram length : es reserven 16 bits per indicar la llargada total del datagrama. Això indica que la llargada màxima d'un datagrama és de 65.535 bytes.
- Time-To-Live : per assegurar que els datagrames no circulen per sempre. Cada vegada que un paquet passa per un router, es decrementa el TTL. També caldrà recalcular el checksum.
- Header checksum
- Source and destination IP addresses : de 32 bits cadascuna d'elles
- Data : normalment conté segments de la capa de transport però pot contenir altres tipus de dades.
IP Datagram Fragmentation
La MTU (Maximum Transfer Unit) de la capa d'enllaç és una limitació per a la llargada dels datagrames IP.
Què passa si tu, sent un router, reps un datagrama IP d'una interfície i te n'adones que l'has d'encaminar cap a una interfície que té una MTU menor que el teu datagrama. Què fas? La solució és fragmentar l'IP datagram en dos o més datagrames IP més petits. Cadascun d'aquests datagrames s'anomenarà fragment.
Els fragments caldrà tornar a juntar-los abans de ser enrtegats a la capa superior. Però com que això suposaria una complicació extra molt gran per als routers, es va decidir de relegar l'obligació de fer-ho als sistemes finals.
Per fer això, van posar una sèrie de camps en el header dels datagrames que faciliten la feina. Quan un datagrama és creat, el host transmissor estampa una identificació en el datagrama així com l'adreça de destí i origen de les dades.
Tipicament, per cada datagrama que s'envia, el transmissor incrementa aquest número, per identificar diferents fragments d'un mateix datagrama.
L'últim fragment del datagrama té un flag posat a zero indicant que és l'últim que arribarà, mentre que la resta de fragments el flag ha estat a 1.
El flag d'offset s'utilitza per saber a quina part del datagrama va cada fragment i per saber si falta alguna part.
Router NAT
Un router NAT té una interfície que connecta amb la xarxa d'internet global i una interfície que connecta amb una subxarxa. Un grup de màquines connectades a internet a través d'un router NAT, des de fora, es veuen com un únic dispositiu amb una única adreça IP.
Tot el tràfic de paquets marxant de la subxarxa cap a internet té la mateixa adreça IP d'origen i tot el trànsit que arriba al router NAT amb destinació algun host de la subxarxa té la mateixa adreça IP de destí.
Un router NAT està amagant els detalls de la subxarxa al mon exterior. Però com podem distingir llavors cap a quin host de la subxarxa van els paquets? amb les NAT translation tables del router NAT.
Quan un host de la subxarxa vol rebre informació d'una pàgina web, envia una trama de dades com la següent: Source = 10.0.0.1 (adreça privada), 3345. Destí = 128.119.40.186, 80. Aquesta trama arriba primer al router NAT, que canvia l'adreça de destí per la adreça IP de la interfície que està connectada a l'exterior (IPnat), amb un número de port arbitrari (PORTnat). A la vegada, apunta a la taula que quan rebi un paquet per la interfície exterior amb destí IPnat i port PORTnat, haurà de tornar a fer el canvi per 10.0.0.1, 3345.