Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lo scopo del livello network quello di capire come portare a destinazione un pac
chetto.
I vari router analizzeranno i pacchetti IP, in particolar modo l'header dei pacc
hetti, applicando algoritmi di routing e forwarding. Il livello network presente
in tutti gli host e router della rete. FORWARDING il processo implementato da u
n router di smistamento dei pacchetti. Tale smistamento avviene mediante una tab
ella di forwaring (creata attraverso un protocollo di routing/forwarding).
ROUTING il meccanismo per stabilire il miglior percorso che il pacchetto deve ef
fettuare per arrivare a destinazione.L'algoritmo permette di riempire la tabella
di forwarding. I pc non fanno routing!
Il livello network pu fornire diversi modelli di servizio al livello di trasporto
.
La terza importante funzione fornita dal livello network il connection setup ne
lle reti in cui necessaria l'instaurazione di una connessione. Prima che i pacch
etti possano essere inviati i router devono creare e stabilire un percorso (perc
orso virtuale).
I possibili modelli sono di tipo connection oriented e connection less. Le reti
a datagrammi non prevedono instaurazione di connessione tra i router e i pacchet
ti possono seguire diversi percorsi e ogni router di volta in volta decide il pe
rcorso da seguire. Tale reti non prevedono garanzie di affidabilit. L'alternativ
a sono le reti a circuito virtuale: viene stabilita una connessione a livello ne
twork tra mittente e destinatario. Si crea una cordata di router, e tutti i pacc
hetti seguiranno solo questo circuito. C' una fase di CALL SETUP, in cui si crea
un circuito al quale viene assegnato un numero (vc number). Il vantaggio del cir
cuito virtuale quello di preallocare risorse, dando garanzia al servizio. Come s
i implementa un circuito virtuale? Un circuito virtuale consiste nel path dal mi
ttente al destinatario, nei numeri di circuito virtuale, e nelle entry delle tab
elle di forwarding. Tutti pacchetti devono solo portarsi dietro il numero di cir
cuito virtuale a cui essi appartengono. Ognuno sceglie in maniera autonoma il VC
number.
RETE A DATAGRAMMI (quella di internet): non c' una fase di connection setup a liv
ello network. A differenza dei circuiti virtuali i router non hanno informazioni
di stato circa le connessioni end-to-end. La tabella di forwarding non una tabe
lla di stato. Su internet i pacchetti a livello network vengono chiamati DATAGRA
MMI.
Su internet c' un pacchetto che arriva, ha il suo campo dati e una intestazione,
che conterr l'indirizzo IP, utilizzato dai router per instradare i pacchetti. Nel
la tabella di forwarding non sono presenti tutti gli indirizzi IP ma solo in ran
ge. L'indirizzo IP una sequenza di 32 bit, scritta come 4 ottetti di bit in form
a decimale. Cosa succede se il range non si divide in maniera "pulita"?
concetto di LONGEST PREFIX MATCHING (prefisso che matcha di pi il pacchetto): se
arriva un pacchetto che sulla tabella di forwanding rispetta prefissi di pi entry
, il router sceglier la entry che matcha la destinazione col maggior numero di bi
t.
La rete a datagrammi pi flessibile all'inaffidabilit della rete (se vanno gi i rout
er - non ci sono informazioni di stato), non necessario fare preallocazione di r
isorse, ma non garantisce affidabilit ed soggetta a congestioni.
ARCHITETTURA DI UN ROUTER = il routing pu essere fatto a livello sw(realizzazione
della tabella di forwaring statica, ma non va bene nel core della rete) e hw.
Le funzioni del router sono quelle di : far girare protocolli di routing, che cr
eano le tabelle di forwarding. Abbiamo delle porte di ingresso e delle porte in
uscita (anche se queste porte sono bidirezionali). Dividiamo le porte in porte d
'ingresso (dove entrano i pacchetti) e porte d'uscita. Il routing processor dove
girano i protocolli di routing in cui si cambia la tabella di forwarding.
FUNZIONI DELLA PORTA D'INGRESSO:
- line termination (parte elettronica/fisica)
- parte che gestisce il protocollo di livello 2 e manda al blocco 3 i frame
- blocco che "legge" il pacchetto: su questo blocchettino c' una coda (coda di in
gresso); bisogna bufferizzare il pacchetto prima di switchare (nello switch fabr
ic). Abbiamo 3 tipi di switch fabric: 1)memoria condivisa (toglie dalla coda, sc
rive nella zona di memoria e l'altra legge, ma comporta latenza) 2)via BUS (bus
condiviso che collega tutti i dispositivi, ma potrebbe esserci conflitti) 3)CROS
SBAR (soluzioni pi complesse, c' una matrice di commutazione).
I router di prima generazione erano a memoria condivisa.
FUNZIONI DELLA PORTA D'USCITA:
-c' un buffer o coda d'uscita (ci sono politiche di scheduling per decidere quali
pacchetti consegnare)
-interfaccia di uscita a tutti gli effetti (link layer e parte fisica)
L'accodamento si verifica sia sulla coda d'ingresso (la coda in ingresso pu cong
estionarsi) che sulla coda d'uscita (pu anche verificarsi overflow).
I buffer possono, dunque, riempirsi. Nasce il problema del dimensionameto dei bu
ffer. Aumentare la bufferizzazione non sempre una soluzione: fare code troppo gr
andi consento ai pacchetti di rimanere in coda per molto tempo, aumentando dunqu
e il delay->scade il timer (Se c' un protocollo TCP) e si riinvierebbe il pacchet
to, sovraccaricando la coda (con vecchi e nuovi). Anche avere un buffer troppo p
iccolo un problema. L'RFC 3439 d una regola: il bufferinf medio deve essere = RTT
(250 ms)* C (capacita) / radice di N (numero di pacchetti).
NETWORK LAYER DI INTERNET
Il network layer di Internet ha diversi protocolli (almeno 3):
- il "principe" l'IP (Internet Protocol): si occupa dell'indirizzamento dei pacc
hetti, stabilisce il formato dei datagrammi e di come vanno gestiti.
- ICMP (Internet control message protocol), utilizzato per la segnalazione di er
rori
- IGMP (Internet group message protocol), utilizzato per il routing multicast.
FORMATO DEL DATAGRAMMA IPV4
I primi 4 bit sono la versione del protocollo, il secondo campo (di dimensione v
ariabile) l'header (max 20 byte), terzo campo il tipo di servizio (con una codif
ica tabellare specifica il tipo di servizio-dati, streaming, video..), ma i rout
er non lo trattano completamente. L'altro campo (16 bit) length. Poi ci sono i c
ampi 16-bit identifier, flags (4 bit) e fragment offset, che servono per la fram
mentazione. Poi c' un campo a 8 bit denominato time to live (dovrebbe dare il tem
po massimo di vita del pacchetto in secondi - questo implicherebbe una sincroniz
zazione. In realt il time to live il numero di hop (salti) massimi). Gli altri 8
bit costituiscono l'upper layer (tale campo presenta una codifica che secondo u
na tabella dice cosa c' nel campo dati, fa capire al destinatario che dentro c' un
segmento di tipo TCP o UDP). Gli altri 16 bit rappresentano l'header checksum (
checksum solo dell'intestazione, non necessario fare il checksum di tutto il dat
agramma, il checksum dei dati gi fatto da TCP/UDP). Poi ci sono due campi di 32 b
it che indicano gli IP di sorgente e di destinazione. Poi campi opzionali.
FRAMMENTAZIONE= pu essere TRASPARENTE (se il pacchetto arriva ad un router con un
a tecnologia diversa da quella che fa il router di origine, il pacchetto viene f
rammentato per poi essere ricomposto prima che esce dalla sottorete. E' traspare
nte perch una tecnica di cui mittente e destinatario non si accorgono).
La frammentazione NON TRASPARENTE (utilizzata da IP): i pacchetti vengono subito
frammentati, inserendo in ogni frammento delle indicazioni, tramite cui il dest
inatario potr compattare tutti i frammenti prima che vengano processati. Tale fra
mmentazione viene gestita dai campi 16 bit identifier, flags e fragment offset.
Tutti i frammenti relativi allo stesso pacchetto avranno lo setto identificativo
, ma offset diversi.Per sapere l'ultimo frammento utilizzo il flag MORE FRAGMENT
S (se 0 si tratta dell'ultimo frammento).
La frammentazione, in generale, necessaria ma problematica in quanto ogni framme
nto pu seguire una via diversa; se qualche frammento viene perso necessario butta
re l'intero pacchetto (non ci sono ack di conferma). In IPv6 la frammentazione v
iene abbandonata, se il pacchetto viene buttato il destinatario manda un messagg
io al mittente per avvisarlo e per notificargli la dimensione massima supportata
.
FRAMMENTAZIONE= quando un router riceve un pacchetto che contiene una quantita'
di dati superiore a quella che puo' immettere nel campo dati della frame in usci
ta.
dal DHCP (dynamic host configuration protocol). Tramite DHCP possibile ottenere
automaticamente un indirizzo IP (pi apprendere info aggiuntive, quali netmask, l
'indirizzo del gateway router, DNS del server locale ect.)Tale protocollo anche
detto "plug&play" per la sua capacit di automatizzare la connessione degli host a
lla rete. Inoltre, DHCP pu essere configurato in modo tale che un dato host ricev
a un inidirizzo IP PERSISTENTE (ogni volta che l'host entra in rete gli viene as
segnato sempre lo stesso IP), oppure riceva un indirizzo IP TEMPORANEO. Tale pro
tocollo non ha solo lo scopo di facilitare compiti che altrimenti un amministrat
ore dovrebbe fare manualmente, ma utile anche per il riutilizzo degli indirizzi
e per gli utenti "mobili".
Dhcp un protocollo client-server di livello applicazione.
funziona in 4 passi:
* client manda un paccheto udp in broadcast (255.255.255.255) sulla porta 67. Ch
e contiene un messaggio DHCPDISCOVER con un transaction_id scelto casualmente. S
i segna come ip del mittente 0.0.0.0
* il server risponde in broadcast con un "dhcp offer message". Specificando l'in
dirizzo offerto (yaddr), la networkmask, il tempo di validit dell'indirizzo, il p
roprio identificativo e l'identificativo transazione della richiesta a cui sta r
ispondendo.
* il client pu ricevere pi Dhcp Offer (che riconosce come sue grazie al transactio
n_id), tra queste sceglie una e invia al server una Dhcp Request con gli stessi
dati (sempre in broadcast, non ho capito perch).
* Il server termina con un dhcp ack
Quando non si possono o difficile aggiungere altri ip ad una subnet, si pu ricorr
ere alle NAT, per "nascondere" un'intera subnet dietro un unico indirizzo ip. Il
natting anche molto usato per rallentare l'esaurimento degli indirizzi ipv4.
L'indirizzamento dentro una subnet che usa il nat avviene mediante gli ip riserv
ati per uso locale, questi indirizzi per, in uscita ed in entrata dalla subnet de
vono essere convertiti. I pacchetti in uscita dalla subnet sono routati ad un ro
uter speciale: un nat router.
Per i pacchetti in uscita si usa l'indirizzo esterno del nat router. Il problema
per quelli in entrata, si ha una sorta di multiplexing. Il router tiene traccia
delle connessioni in uscita mediante la nat translation table, e usa queste inf
ormazioni per instradare le risposte.
Quando deve inviare pacchetti all'esterno, il nat memorizza l'ip e la porta da c
ui viene la richiesta, insieme ad un numero di porta a sua scelta, 16bit->60kpos
sibilit, che sar usato come identificativo per una data connessione. Il router sa
poi quale computer ha fatto la richiesta
Il nat comodo e funziona bene, crea per parecchi problemi quando si deve fare da
server e ricevere connessioni (oppure partecipare in un'app p2p). Si usano degli
hack come il connection reversal.
Upnp:
permette di scoprire e configurare la nat (insieme ad altre buone cose). Una app
licazione pu chiedere direttamente al nat di abilitare il port forwarding per una
certa porta.
Gli algoritmi di routing si occupano dello scambio di informazioni tra router al
fine di calcolare le routing table.
Quello che ci interessa determinare un buon (spesso subottimo per via di roba co
mmerciale o tecnica) percorso dal router a cui l'host connesso direttamente (fir
st hop) fino al router di destinazione.
Il problema formulato mediante grafi, in cui i nodi sono i router, e ad ogni lin
k tra loro associato un costo. Il costo pu essere la banda di un link, o il suo c
arico (sconsigliabile), o la lunghezza, o quello monetario. Considereremo grafi
indiretti.
Ci interessa trovare una path (serie di link) con costo minimo.
**
**
# risoluzione
fintanto che Q non vuoto ripeti:
seleziona u l'elemento di Q con d(u) minima
estrai u da Q
per ogni vicino v adiacente a u ripeti:
nuovadistanza = u.distanza + u.linkverso(v).costo
if (d.distanza == infinito):
inserisci v in Q
**
**
**
**
**
**
**
**
**
una volta fatto questo posso ricavare il path dalla catena di padri
PROBLEMATICA DEL LINK STATE: ogni nodo della rete, per calcolare il percorso mig
liore da se stesso verso tutti gli altri router, deve essere a conoscenza antici
patamente della topologia della rete. Per esplorare la topologia della rete nece
ssario fare flooding ai nodi adiacenti, che a loro volta fanno flooding. Tale te
cnica porta ad una congestione della rete, perch si inviano pacchetti (che non co
ntengono dati), di un numero pari almeno al numero di collegamenti fra i nodi.
Alternativa al link state un algoritmo di tipo DECENTRALIZZATO, che non ha bisog
no di conoscere a priori tutta la tipologia della rete, ma ogni nodo conosce sol
o i propri vicini: l'algoritmo DISTANCE VECTOR. Questo algoritmo fa uso delle eq
uazioni di Bellman-Ford.4
Se si vuole calcolare il costo del percorso di costo minimo fra x e y
dx(y) il percorso di costo minimo. Questo costo si pu scrivere come questa equazi
one:
si prendono tutti i vicini di x(e li chiamo v), se conosco il costo della comuni
cazione da x a v + il costo del cammino di costo minimo da v a y e prendo il min
imo (al variare di v) questo il costo del cammino di costo minimo da x a y.
dx(y) = min {c(x,v) + dv(y)}
Se si conosce il costo del cammino di costo minimo di tutti i vicini di x a y, a
llora possibile conoscere il cammino di costo minimo da x a y.
La formula si applica in maniera iterativa. All'inizio abbiamo infatti una stima
del costo di percorso minimo.
L'algoritmo di distance vector mi serve a calcolare una prima stima della distan
za da un nodo x a un nodo y:
- il nodo x deve conoscere la comunicazione diretta con i propri vicini diretti;
-ogni nodo mantiene lo stato (IL VETTORE DELLE DISTANZE) dei propri vicini, cio u
na stima di come i suoi vicini raggiungano le altre destinazione.
Continuamente ogni nodo trasmette il vettore delle distanze ai propri vicini. I
propri vicini fanno lo stesso. Il distance vector algorithm ITERATIVO e ASINCRON
O (i nodi non sono sincronizzati, ma ci non inficia sul risultato finale).
Ogni nodo se si accorge che cambia uno dei pesi dei suoi link aggiorna il propri
o distance vector e lo invia ai propri vicini; oppure riceve dai propri vicini d
ei distance vector diversi dal proprio distance vector. Questa operazione viene
fatta periodicamente, fin quando il distance vector si "stabilizza" (convergenza
dell'algoritmo). (esempio libro).
Il distance vector finale riempir la tabella di forwarding.
Ci sono per dei casi in cui l'algoritmo non converga.
Il DV sempre in funzione, a differenza del LS.
Se cambia il costo di un link?
1) se il costo di un link si abbassa: x deve aggiornare il proprio DISTANCE VECT
OR e deve informare i vicini del cambiamento. La notizia si propaga velocemente
("good news travels fast") e la convergenza si ottiene rapidamente.
2) se il costo aumenta: la notizia si propaga lentamente, si innesca il problema
del "conteggio all'infinito". Le iterazioni sono moltissime, a causa di una sti
ma errata (instradamento ciclico). Aumentando il peso, aumentano implicitamente
le iterazioni!
Una soluzione a questo problema l'avvelenamento inverso: se le modifiche avvengo
no nei collegamenti di y, se z sa gi di dover passare da y, metter ad infinito nel
distance vectr la parte relativa a y. In definitiva, tale tecnica consiste nel
fatto che ogni nodo, quando comunica il DV ai propri vicini, metter a infinito tu
tte quelle distanze che riferiscono a percorsi di costo minimo che passano per q
uel vicino. Tuttavia questa tecnica non funziona sempre!
Il DV alla base del RIP, ma viene evitato il problema del conteggio all'infinito
(tutti i pesi sono fissati a 1 e anche il diametro fissato ad un valore max).
COMPARAZIONE TRA LS E DV
COMPLESSITA' DEI MESSAGGI: nel LS O(N*E) DOVE E= N LINK DELLA RETE
nel DV lo scambio avviene solo tra i vicini
(al massimo 2 *
numero di link)