Sei sulla pagina 1di 29

Network Layer

Il livello di rete si occupa di prendere i segmenti dal livello di trasporto incapsularli in datagrammi e
inoltrarli attraverso la rete.

Nell’esempio H1 inoltra i
pacchetti al proprio router
vicino, R1, che si occuperà
di inoltrare il pacchetto di
H1 ai propri router limitrofi
guardando l’indirizzo IP,
allo stesso modo H2
ricerverà il pacchetto dal
router limitrofo R2.

Come si può vedere dalla


figura il livello di rete si
trova negli host e anche nei
router.

Routing e forwarding

Il livello di rete per trasferire i pacchetti da un host a un’ altro utilizza 2 funzioni:

1. Forwarding, i router devono trasferire i pacchetti dalla giusta porta di ingresso al giusto
collegamento in uscita(decisione locale).
2. Routing, determina il percorso che il pacchetto deve seguire attraverso degli algoritmi di
routing.

DATA PLANE CONTROL PLANE

All’interno del livello di rete possiamo distinguere quindi due diversi piani:

1. Data plane, inoltro dei pacchetti attraverso la rete


2. Control plane, conoscenza dei percorsi che può percorrere un router attraverso la rete, in
poche parole disegna la topologia della rete nelle forwarding table
Data plane

I router decidono dove instradare il pacchetto.

• Inoltra i pacchetti al prossimo collegamento in uscita, nella direzione per raggiungere il


router destinazione
• I pacchetti viaggiano attraverso i router
• I router utilizzano ciò che il control plane ha costruito per poter instradare i pacchetti verso il
prossimo collegamento in uscita.

Illustrazione 1: Come già abbiamo


detto i router guardano le
informazioni di rete per instradare
i pacchetti

Control Plane

• Determina come il datagramma viene indirizzato dai router lungo il percorso end to end tra
mittente e destinatario.

Esistono 2 approcci per implementare il control plane:

1. Algoritmi tradizionali implementati nei router, cioè ogni router parla con il proprio vicino,
se ci sono guasti però non possono comunicare
2. SDN, approccio centralizzato, abbiamo un remote controller centralizzato a cui sono
collegati i router, attraverso dei control agents(CAs), quando ci sono problemi la
propagazione è rapida e in più calcola percorsi migliori.

Illustrazione 2: Algoritmo tradizionale, i router si scambiano i messaggi


attraverso un protocollo di instradamento, gli algoritmi sono implementati
nei router.
Illustrazione 3: Control plane con SDN

ANALOGIA BUS

Supponiamo di essere gli amministratori di un servizio di trasporto in una piccola città

Control Plane, prima di mandare gli autisti a prendere le persone dobbiamo conoscere tutte le
fermate(nelle reti equivale alle remote networks); quindi il control plane del bus, sarà conoscere
tutti i percorsi e le fermate, in questa fase non abbiamo ancora caricato nè scaricato persone.
Data Plane, equivale a trasportare le persone(pacchetti) lungo il percorso dove transita il bus.

Tabelle di instradamento e altre componenti router

Per inoltrare i pacchetti i router estraggono dal campo intestazione il valore che utilizzano come
indice nella forwarding table, che punta alla giusta interfaccia di output.

Esempio:

Le tabelle di instradamento sono


compilate dal Control Plane, con i
meccanismi già analizzati

Illustrazione 4: Arriva un pacchetto un header 0111 il router lo


inoltrerà verso l'interfaccia 2

Terminologia:

• packet switch, dispositivo che si occupa del trasferimento dall’interfaccia di ingresso a


quella di uscita, in base all’intestazione di rete.
Ne esistono di 2 tipi:

1. commutatori a livello di collegamento, stabiliscono l’inoltro a livello di collegamento


2. router, stabiliscono l’inoltro a livello di rete, sono dispositivi di livello 3, ma implementano
anche funzionalità di livello di collegamento, poiché è necessario per implementare l’inoltro
a livello di rete

Instaurazione della connessione

Analogalmente all’ handshake a 3 vie delle connessioni TCP anche alcuni protocolli di rete(ATM,
MPLS) stabiliscono che i router prima di scambiarsi dati debbano effettuare un handshake tra loro,
per impostare lo stato della connessione, prima che i pacchetti inizino a fluire tra di loro.
Le reti che effettuano la connessione sono dette “reti a circuito virtuale”(l’implementazione è molto
diversa dall’implementazione nel livello di trasporto, qui sono implementate sia nei router che nei
sistemi periferici e non solo ai bordi della rete), quelli che non la offrono sono dette “reti datagram”.
Modelli di servizio

Quali sono i servizi offerti dal livello rete? Questo dipende dal modello di servizio della rete che
definisce le caratteristiche del trasporto end-to-end di dati tra i sistemi periferici di invio e ricezione

Vediamo alcuni servizi che il protocollo di rete fornisce al livello di trasporto dell’host mittente
quando invia i segmenti:

1. Consegna garantita, il datagramma giungerà prima o poi a destinazione


2. Consegna garantita con ritardo limitato, il pacchetto verrà consegnato entro un limite di
tempo
3. Consegna ordinata, i pacchetti giungeranno nello stesso ordine con cui sono stati inviati
4. Banda minima garantita, emula il comportamento di un collegamento trasmissivo con bit
rate specificato, anche se l’effettivo percorso end-to-end può attraversare diversi
collegamenti fisici.
5. Jitter Limitato, il lasso di tempo tra l’invio di 2 pacchetti consecuiti è uguale a quello di
ricezione
6. Sicurezza, cifratura del payload(dati trasportati) di tutti i datagrammi.

Illustrazione 5: Alcuni modelli di servizio


Reti Datagram(non orientato alla connessione)

Internet è una rete datagram, e non a circuito virtuale(VC).

Prima di inviare un pacchetto viene contrassegnato con l'indirizzo del destinatario.


Come fanno i router a inoltrare tali pacchetti utilizzando indirizzi di destinazione e forwanding
table?
Supponiamo che i nostri indirizzi siamo a 32 bit, ciò comporta 2^32 indirizzi possibili che
rappresentati tutti nella tabella porterebbero a circa 4 miliardi di indirizzi(impossibile)

La ricerca LPM dev’essere


effetuata in pochi nanosecondi,
per far questo si utilizzano
DRAM e SRAM(per ridurre i
tempi di accesso) e spesso si
usano TCAM che restituisce la
porta di uscita in un ciclo di
clock indipendentemente
Illustrazione 6: soluzione per rappresentare 2^32 indirizzi
dall’address
ES:

11001000000101110001011010100001

Su quale uscita dirigiamo il pacchetto?


Dobbiamo prendere la più lunga sequenza
che matcha con l'indirizzo di destinazione,
per cui dirigeremo verso l'interfaccia 0

I router non mantengono le informazioni di stato relative alle connessioni, ma solo quelle relative
all'inoltro. Le informazioni sulle tabelle di inoltro sono aggiornate ogni 1-5 minuti, per cui i
pacchetti possono arrivare in disordine.

Architettura router

un router è composto da:


• “routing processor”,
gestisce le tabelle di
instradamento, gli algortimi
di routing, risponde a
malfunzionamenti, e
gestione delle prestazioni(è
un software che gira su una
CPU, lavora in
millisecondi)
• switching fabric, connette
porte di ingresso a porte di
uscita.

Illustrazione 7: sopra la linea control plane, sotto data plane


I componenti sono per la maggior parte hardware questo perché dobbiamo operare nell’ordine di
grandezza dei nanosecondi e a livello software non è possibile.
Esempio
Abbiamo un collegamento in input a 10Gbps e un datagramma IP a 64byte, la porta di input ha soli
52 ns, per elaborare il pacchetto prima che arrivi il prossimo, se ci sono N porte su una line card, la
pipeline di elaborazione dei datagrammi deve operare N volte più velocemente.

Porte di ingresso + porte di uscita + struttura di commutazione implementano la funzione di


inoltro(router forwarding plane)

Porte di ingresso

Svolgono diverse funzioni:

1. Funzione a livello fisico, di terminazione di ingresso in un router(mostrato in verde)


2. Funzioni a livello di collegamento, necessarie per comunicare con l’altro capo del
collegamento in ingresso
3. Funzione di ricerca(con LongestCommonPrefix), serve per inoltrare i pacchetti nella giusta
porta di uscita ogni porta di input contiene una copia, in memoria(si utilizzano memorie
molto veloci, in modo da rendere la ricerca molto rapida) della forwarding table, in input, in
modo da non dover invocare ogni volta il servizio di instradamento, è necessario mantenere
una coda poiché i
datagrammi potrebbe arrivare più velocemente di quanto lo switch fabric ci metta a smaltirli,
inoltre non è detto che il commutatore centrale sia libero.

Il lookup avviene:
1. usando le informazione nell’header del pacchetto, si determina la giusta porta di uscita
guardando la tabella di instradamento
2. il forward è basato solo sull’indirizzo IP
3. il forward è basato su qualsiasi campo nell’header del pacchetto

• In SDN abbiamo il forward generalizzato


Le porte di ingresso svolgono anche altre funzioni come “elaborazione a livello fisico e di
collegamento, numero di versione del pacchetto, checksum e TTL”

Altri componenti

output ports, memorizza i datagrammi che sono stati inoltrati dallo switch fabric e ritrasmettono il
pacchetto sul collegamento, svolge la funzione di livello fisico, di collegamento proprio come le
porte di ingresso(solitamente, nei collegamenti bidirezionali, ogni porta di uscita verso un
collegamento è accoppiata con la porta di ingresso di quel collegamento, con una line card).
NB la funzione di lookup appena vista viene svolta anche dal routing processor, in router, per cui in
router con bassa capacità si richiama il routing processor.
Struttura di commutazione

La commutazione consiste nel trasportare un pacchetto da una porta di ingresso a una porta di
usctita, esistono varie tecniche per farlo:

1. Commutazione in memoria, i router erano macchine vere e proprie, e la commutazione da


un buffer di ingresso e un buffer di uscita veniva effettuata tramite la CPU, quando arrivava
un pacchetto in ingresso la porta di ingresso svegliava la CPU tramite un interrupt, che
procedeva a copiarlo nella memoria del processo di instradamento, e come abbiamo già
analizzato individuava la giusta porta di uscita, la velocità è limitata dalla larghezza di banda
della memoria(se ci possiamo scrivere B pacchetti al secondo non possiamo andare più
veloci di B/2, poiché ogni pacchetto dev’essere letto e scritto, 2 op), inoltre può essere
inoltrato un solo pacchetto per volta; alcuni router moderni adoperano la commutazione in
memoria, ma sono multiprocesso

2. Switching via bus, le porte di ingresso trasferiscono i dati alle porte di uscita tramite un bus
condiviso; tipicamente quando arriva un pacchetto dall’interfaccia di rete la porta di ingresso
aggiungerà un ettichetta con su scritto a che porta il bus deve inoltrare il pacchetto, come
abbiamo già visto in SO2 le porte di output riceveranno ciascuna il pacchetto, ma solo la
destinataria lo accoderà, e rimuoverà l’ettichetta. La larghezza di banda della commutazione
è limitata da quella del bus. NB possiamo trasferire un solo pacchetto per volta

3. Switching tramite una rete di interconnessione, abbiamo un percorso dedicato per ogni
possibile collegamento(interfaccia di input → interfaccia di output), senza alcun percorso
condiviso, quindi 2n bus, se 2 due pacchetti sono destinati alla stessa porta di output uno dei
due dovrà aspettare
Illustrazione 8: Ogni bus
verticale interseca ogni bus
orizzontale a un punto di
incrocio, che può essere
aperto o chiuso(al momento
della commutazione), dal
controller della struttura di
commutazione
Accodamenti
Supponiamo che la velocità dei collegamenti sia uguale d’appertutto.I pacchetti vengono trasferiti
da una coda a un’ altra e un pacchetto può essere trasferito dalla porta di ingresso alla porta di
uscita nello stesso intervallo di tempo per cui un pacchetto arriva a una porta di ingresso.
Il traffico sia sulle porte di input che quelle di output dipendono dalla quantità di traffico sulla rete,
dalla velocità della struttura di commutazione, e dalla velocità della linea. Queste code possono
crescere fino a occupare tutta la memoria del router, e in questo caso si possono verificare perdite di
pacchetti.
Se la struttura di commutazione non è sufficentemente rapida a smaltire i pacchetti si può verificare
accodamento sulle porte di input, ma se ci sono molte richieste quali scheduliamo prima?Qui
supponiamo FCFS

Illustrazione 9: HBO

Ricordiamo che possiamo trasferire differenti pacchetti in parallelo quando le porte di uscita sono
differenti, nel primo caso supponiamo che il commutatore decida di trasferire il primo pacchetto in
alto a sinistra, in questo caso il pacchetto in basso a sinistra dovrà attendere e anche il suo
predecessore, anche se ha l’uscita libera; un buon algoritmo di commutazione dovrebbe evitare
questo fenomeno, molto difficile!.

Porte di uscita

È possibile che il cavo di rete non riesca a smaltire i pacchetti in arrivo dalla struttura di
commutazione, per cui deve bufferizzarli, è molto importante avere:
1. uno schedulatore di pacchetti, avendo molti pacchetti accodati sulle porte di uscita
dobbiamo stabilire quale servire, possiamo utilizzare semplici FCFS, fino ai più sofisticati
WFQ
2. policy che stabiliscano cosa fare quando arriva un pacchetto che non può essere
bufferizzato(perchè pieno), bisogna decidere se buttare il nuovo arrivato o sostituirlo con un
uno nella coda; può risultare utile eliminare pacchetti dalla coda o marcarli, prima che la
coda si riempia in modo che il mittente sappia della congestione Tutte queste tipologie di
algoritmi sono detti ARQ.
SCENARIO TIPICO DI ERRORE

Supponiamo che la velocità di linea sulle porte di input/output abbiamo lo stesso tasso di
trasmissione Rline pacchetti al secondo e ci siano N porte di input e N porte di output, e supponiamo
che abbiano tutti la stessa lunghezza e arrivino tutti in modo sincrono, vale a dire, cioè mentre
inviamo un pacchetto può arrivarne un altro oppure nessuno. La struttura di commutazione ha tasso
di elaborazione di Rswitch e supponiamo che sia N volte più veloce di Rline In questo modo
l’accodamento sulle porte di input è trascurabile, poiché abbiamo N porte e possiamo elabolare N
volte più velocemente, supponiamo che arrivino N pacchetti tutti destinati alla stessa porta di uscita,
quindi al tempo richiesto per ricevere un singolo pacchetto ne arriveranno N nuovi, la porta di
uscita può trasmettere un solo pacchetto per volta(tempo di tramissione), e in questo intervallo
possono arrivare N nuovi pacchetti che devono essere accodati; la memoria potrebbe esaurirsi
velocemente.

all’istante t arrivano arrivano più pacchetti destinati alla porta di uscita superiore(rossa);
supponendo un commutatore che opera al triplo della velocità di linea nell’unità di tempo, cioè nel
tempo per ricevere un pacchetto, il commutatore ha già trasferito tutti e 3 i pacchetti nella porta di
uscita, il che potrebbe causare overflow.

Grandezza buffer

Esiste una regola empirica[RFC 3439], la quantità di memoria riservata al buffer dev’essere uguale
alla media dell’ RTT per la capacità del collegamento, es con un RTT di 250ms e un collegamento
da 1Gbps B= RTT * C =2,5 Gbit;

recenti studi suggeriscono che con N flussi TCP il buffer dev’essere grande così.

Algoritmi di scheduling

sono possibili diversi algoritmi:


1. FIFO
2. WFQ
3. RoundRobin
dobbiamo mettere a disposizione anche delle discard policy, cioè cosa fare quando un pacchetto
arriva quando la coda è piena?

1. Drop-tail, elimina il nuovo arrivato


2. Priority, rimuove in base alla pririorità, quindi non è detto che venga scartato,
3. Random, elimina un pacchetto dalla coda in modo casuale

Ancora su scheduling

Priority, potrei avere due differenti code, una con i pacchetti ad alta priorità e una con i pacchetti a
bassa priorità, quando devo inoltrare un pacchetto mando prima quello a più alta priorità

l’appartenenza o meno a una classe potrà dipendere da alcuni


parametri del pacchetto, come IP o qualsiasi altra informazione
nell’header.

Illustrazione 10: esempio scheduling


con priorità Illustrazione 11: ciclicamente scandiamo la coda
e inviamo quelli a priorità più alta, alternativa
Round Robin con un solo buffer

Anche in questa tecnica abbiamo diverse classi di


priorità, ciclicamente si scandisce la coda e inviamo un
pacchetto ad alta priorità e poi in un pacchetto a bassa
priorità e così via.
WFQ

Trattasi di un round robin, a


ogni ciclo serviamo una coda
per un ammontare di tempo,
dipendente dalla priorità della
coda stessa.

PROTOCOLLO IP

Livello di rete di internet, esistono 2 versioni:

1. IPv4
2. IPv6

Illustrazione 12: Il livello di rete di internet

Il livello di rete di internet è composto da 3 parti:

• IP.
• Routing protocols, determina il percorso che i datagrammi seguiranno per arrivare a
destinazione, compila le tabelle di inoltro.
• ICMP, rileva errori nei datagrammi, e risponde a richieste di informazioni.
FORMATO DATAGRAMMI IPv4

Presenta numerosi campi, tra cui:

• Versione, 4 bit, specificano la versione del protocollo IP del datagramma, poiché IPv6 e
IPv4 hanno formati differenti e i router devono sapere con cosa hanno a che fare.
• Lunghezza dell’intestazione, 4 bit, specificano dove inizianoi dati, poiche IP ha un campo
Opzioni, non obbligatorio; normalmente l’intestazione è lunga 20 byte.
• Tipo di servizio, distingue il tipo di datagramma, per esempio un datagramma riservato alla
telefonia o quelli che richiedono basso ritardo, ecc…
• Lunghezza del datagramma, 16 bit, lunghezza del datagramma in byte “dati più header”, al
massimo 2^16 -1 byte
• Identificatore, flag, spiazzamento hanno tutti a che fare con la frammentazione; IPv6 non
consente la frammentazione
• Tempo di vita, per evitare che diagrammi persi viaggino per sempre nella rete è stato incluso
il campo TTL a ogni router viene decrementato di 1 quando scende a 0 viene scartato.
• Protocollo, Indica il protocollo a livello di trasporto al quale i dati vanno passati, quest’
informazione è indicata da un valore numerico
• Checksum dell’intestazione, a ogni hop il router calcola il checksum, sommando i campi
dell’intestazione in complemento a 1.
• Indirizzi IP sorgente e destinazione, Indirizzo mittente e destinazione(calcolato con DNS)
• Opzioni, allungano il campo intestazione, tra le opzioni possiamo trovare “timestamp, router
da percorrere, percorsi da effettuare ecc…”
• Dati, segmento a livello di trasporto TCP/UDP; potrebbe trasportare anche altri tipi di
messaggi, come ICMP

I datagrammi IP hanno 20byte di intestazione IP + 20 byte di intestazone TCP e messaggio


applicativo.

Frammentazione datagrammi IP
A livello di collegamento non è sempre possibile trasportare pacchetti di qualsiasi dimensione, per
questo motivo si definisce un MTU, cioè la massima quantità di dati che un frame può trasportare.
MTU pone un limite ai pacchetti di rete, poiché da un router a un altro sono incapsulati in frame,
ciò pone delle difficoltà, un datagramma per arrivare a destinazione attraverserà molti
router(presumibilmente), e sicuramente non tutti i router avranno lo stesso protocollo di rete, a
fronte di questo come faccio a spedire i pacchetti con differenti MTU?Utilizziamo la
frammentazione, supponiamo che un router riceva un pacchetto dal livello di collegamento, a
questo punto esamina l’intestazione e determina il collegamento di uscita, ma il protocollo in uscita
ha MTU più piccola della lunghezza del frammento IP, a questo il pacchetto viene spezzato in
pacchetti più piccoli e poi vengono spediti.
Un altro aspetto legato alla frammentazione è il riassemblaggio, questi pacchetti devono essere
riassemblati, farlo a livello di router non conviene, per via dei tempi di gestione, per cui se ne
occuperanno i livelli di rete dei sistemi periferici, per fare questo un il livello di rete deve riuscire a
capire quando un pacchetto e frammentato, riuscire a riconoscere tutti i frammenti ecc… per
adoperare queste funzioni utilizza i campi spiazzamento, identificazione e flag

• se flag = 1, allora è un frammento, l’ultimo frammento del pacchetto ha il bit posto a 0


• Identificatore, tutti i frammenti di uno stesso pacchetto hanno lo stesso identificatore
• spiazzamento, serve per riordinare i pacchetti

Vediamo un esempio

come deframmentiamo?

Illustrazione 13: datagramma da 4000 byte a fronte di un MTU da


1500 byte

20 byte sono di header,


per la frammentazione si
tiene conto solo della
grandezza del segmento.

I valori devono essere


multipli di 8 byte.

Illustrazione 14: deframmentazione in 3 pacchetti


Se un frammento si perde l’intero pacchetto verrà scartato.

Illustrazione 15: esempio precedente

Indirizzamento IPv4

Alcune premesse, normalmente ogni host ha un solo collegamento con la rete, quando
l’implementazione di IP dell’host vuole inviare un datagramma lo fa attraverso quel collegamento;
il confine tra host e collegamento è detto interfaccia; una volta detto questo è facile convincersi che
i router hanno 2 interfacce, avendo 2 collegamenti, uno per inviare datagrammi e uno per riceverli.
IP richiede che tutte le interfacce abbiano associato un indirizzo IP.

L’indirizzo IP è una sequenza di 4(1 byte ciascuno) numeri espressi nella forma decimale puntata,
cioè abbiamo che ogni byte è espresso in decimale ed è separato dagli altri con un punto es:
”192.168.0.1”, con 32 bit possiamo indirizzare 2^32-1 interfacce, estremamente irrealistico.

L’indirizzo IP può essere spezzato in 2, network,


che identifica la sottorete e host che identifica
l’host nella sottorete.

Nell’immagine le interfacce 223.1.1.x del router e


le interfacce che collegano hanno i primi 24 bit
uguali(network), la rete che interconnette le
interfacce dei router con l’interfaccie degli hosts è
detta sub net

Gli indirizzi IP associati a host e router non sono scelti in modo casuale, parte dell’indirizzo
dell’interfaccia è determinata dalla sottorete al quale è collegata(guardare illustrazione precedente)
Ai giorni nostri le interfacce dei router non si collegano direttamente con gli host ma abbiamo una
situazione del genere:

Una subnet è composta da device


con lo stesso indirizzo IP(parte
network), e in grado di comunicare
tra di loro senza router.

Illustrazione 16: swtich ethernet e wirless access point

A ogni subnet viene associato un indirizzo IP, es


“223.1.1.0/24” /24 viene detta maschera di
sottorete, mi dice che i primi 24 bit sono fissi, e
identificano la sottorete. Lo 0 nell’indirizzo è
quello che si dice wildcard e indica “qualsiasi
numero”

Forse la definizione di subnet che


abbiamo dato è un po’ limitata,
vediamone un’ altra.

Illustrazione 17: questo risponde alla domanda da dove


prendono gli indirizzi le organizzazioni?
Quante sono le sottoreti in
questo caso?
Certamente 223.1.1.0/24,
223.1.3.0/24, 223.1.2.6, ma ci
sono altre subnet 223.1.9.0/24,
che interconnette i router R2 e
R3, poi abbiamo 223.1.7.0/24 e
223.1.8.0/24; estendiamo quindi
la nostra definizione.

Per identificare le sottoreti


sganciamo interfaccie da host e
router in modo da creare isole di
reti isolate delimitate da queste
interfacce, ognuna di queste reti
è detta sottorete; nell’esempio
affianco vi sono 6 subnets.

Gestione dell’indirizzamento dell’internet globale

In internet gli indirizzi sono assegnati tramite la strategia CIDR, L’indirizzo mantiene la forma
esadecimale puntata A.B.C.D/X dove X indica il numero di bit dedicati alla sub net

Illustrazione 18: esempio indirizzo IP CIDR

A un’ organizzazione(università, azienda ecc…) viene assegnato un insieme di indirizzi continui,


con il prefisso in comune.

Il gruppo può creare 8


sotto-reti, ma quali
sono i vantaggi?

Nell’illustrazione a
destra

Illustrazione 19: I provider richiedo indirizzi all'ente ICANN


“200.23.16.0/20” è il blocco di indirizzi associato a un provider, il quale lo divide tra le sue 8
compagnie.

Un vantaggio di questo metodo è che un router, esterno all’organizzazione, quando deve inoltrare
un datagramma può considerare solo i primi x bit, una volta giunti nella subnet il router guarderà
solo il campo host(32-x bit) per individuare l’host.

Il che ci consente di avere tabelle di instradamento parecchio alleggerite.

Prima di CIDR si utilizzavano gli indirizzi di clsse, la parte network dell’indirizzo IP poteva essere
lunga 1,2,3 byte, rispettivamente chiamati indirizzi di classe A,B e C, il che portava a definire sotto-
reti con o troppi pochi host indirizzabili o troppi. DIVISIONE TROPPO RIGIDA.

Indirizzo IP broadcast, quando inviamo un datagramma all’indirizzo 255.255.255.255(subnet mask)


il datagramma verrà inoltrato a tutti gli host nella sottorete al quale sto inviando.

NB: nella netmask il numero di 1 indica il numero di bit statici, è anche possibile che i router ai
quali in

Host addressing DHCP

Supponiamo che un organizzazzione ha ottenuto un blocco di indirizzi, a questo punto vuole


indirizzare gli host, come li distribuisce?

1. Gli indirizzi IP delle interfacce dei router vengono settati manualmente


2. Gli indirizzi IP dell’host possono essere configurati manualmente, ma spesso si preferisce
utilizzare il DHCP

Dynamic host configuration protocol

Dhcp consente a un host di ottenere un indirizzo IP in modo automatico, gli verrà anche
comunicato:
1. una maschera di rete
2. l’indirizzo del router per uscire dalla sottorete(gateway)
3. l’indirizzo del DNS server locale.
4. Il tempo di vita dell’IP, in questo modo gli indirizzi IP non utilizzati potranno essere
riassegnati
Il DHCP può essere configurato per offrire sempre lo stesso indirizzo IP a un determinato host
oppure gli viene assegnato un indirizzo IP dinamico.Sostanzialmente è un server in ascolto di
richieste.

DHCP è un protocollo “plug&play”, poiché gli host si connettono alla rete e dinamicamente gli
viene assegnato un indirizzo IP, utilizzato anche nelle reti wirless, e nelle reti residenziali di accesso
a internet. Da questa definizione vediamo che è anche un protocollo client-server.

Supponiamo che un utente sia collegato con il proprio smartphone alla rete dell’università è che si
sposti dalla biblioteca alla propria classe, fino a un altro piano dell’università; tutte queste stanze
hanno una diversa subnet, e quindi spostandoci da una stanza all’altra dobbiamo ricollegarci, DHCP
risulta particolarmente adatto a questo compito. Altrettanto utile nelle reti di accesso agli ISP
residenziali, per esempio una rete ISP con 2000 clienti, che non ha mai più di 400 clienti attivi, non
abbiamo bisogno di 2000 indirizzi, ne sono sufficenti 512 quindi a.b.c.d/23, quando un utente si
connette gli viene assegnato un indirizzo IP, e viene tolto dalla lista degli IP disponibili, quando si
sconnette viene rimesso tra i disponibili.

Come fa un host a comunicare con il server DHCP?

Il protocollo dhcp si articola in 4 punti:

1. L’host che vuole un indirizzo IP(l’host è


già collegato alla) utilizza un messaggio
DHCP discover, segmento UDP e lo
invia alla porta 67, non sapendo
l’indirizzo IP del server DHCP il client
DHCP crea un datagramma IP con
destinazione
BROADCAST(255.255.255.255
0.0.0.0(cioè questo host)), il frame è
inviato a tutti gli host della rete
2. Offerta del server DHCP, Se un server
DHCP è collegato risponderà con un
offerta IP, DNS, netmask, gateway e
lease time, l’host non ha ancora un IP
Illustrazione 20: Il router opera come agente di quindi mandiamo il messaggio in
appoggio, cioè comunica agli host dove si trova broadcast, se ci sono diversi server
DHCP, in alcuni scenari abbiamo 1 server DHCP DHCP l’host riceverà molte offerte
per ogni sottorete
3. Richiesta DHCP, l’host sceglierà l’offerta che gli garba di più e risponderà con un DHCP
request, che riporta i parametri di configurazione
4. DHCP risponde con un messaggio DHCP ACK

DHCP offre un servizio di rinnovo automatico


dell’IP, quando scade il lease time.

Illustrazione 21: Richiesta IP

Testo 1: DHCP server IP 223.1.2.5


NAT(network address translation)

Ogni dispositivo connesso alla rete richiede un indirizzo IP, il proliferare di sotto-reti “small office,
home office”, implica che l’ISP fornisca un insieme(blocco di indirizzi contigui) di indirizzi per le
macchine connesse alla rete, supponiamo che alla rete LAN si aggiungano altri dispositivi, a questo
punto l’ISP deve fornire un’altro blocco di indirizzi(maggiore di quello di prima), e se l’ISP avesse
già allocato tutti gli indirizzi contigui(quelli di cui disponeva) per quella LAN?

La soluzione è utilizzare un NAT

Illustrazione 22: esempio router abilitato al NAT

Il router ha un’interfaccia che fa parte della rete domestica, tutte le interfacce di rete hanno lo stesso
indirizzo di sotto-rete 10.0.0.0/24, uno spazio di indirizzamento simile è detto privato(NB
moltissime reti private utilizzano questo stesso identico indirizzamento), cioè ha senso solo
all’interno della rete locale, questi indirizzi possono essere utilizzati per scambiare pacchetti
all’interno della stessa rete locale, per indirizzarare pacchetti relativi all’internet devo utilizzare un’
altra tecnica.
I router abilitati al NAT vengono visti come un dispositivo con un unico indirizzo IP unico, tutto il
traffico della rete locale ha indirizzo IP “138.76.29.7”, e il traffico in entrata deve avere lo stesso
indirizzo per la destinazione; il router ottiene il proprio indirizzo dal DHCP dell’ ISP,
successivamente manda in esecuzione un server DHCP che assegna gli indirizzi alle macchine
locali.

Il router per dirigere il traffico localmente utilizza una tabella di traduzione:

verifichiamo il funzionamento con un esempio:


l’host nella rete domestica con IP 10.0.0.1 richiede
una pagina da un web server, quindi fa una richiesta a
128.119.40.186 con porta di destinazione 80 e genera
una porta di origine(dove aspettare i dati) supponiamo
3345 e invia il datagramma nella rete locale, a questo
punto il NAT sostituisce l’indirizzo IP del
datagramma con il proprio e genera una nuova porta di origine 5001(ovviamente deve scegliere una
porta che non è gia presente nella tabella), a questo punto segna le corrispondenze nella tabella.

Il campo porta è lungo 16 bit, circa 2^16-1 connessioni simultanee con un solo IP.

Quando i pacchetti richiesti arriveranno il NAT farà il processo inverso, cioè consulterà la tabella
sostituirà i campi porta e indirizzo dei datagrammi, e invierà sulla rete locale.

Illustrazione 23: riassunto di ciò che abbiamo appena descritto

Alcune controversie

• I numeri di porta sono stati concepiti per indirizzare i processi, e non gli host.
• I router dovrebbero elaborare pacchetti fino al livello 3(rete,collegamento, fisico).
• Viola il principio end-to-end, gli host dovrebbero comunicare direttamento tra di loro, senza
intromissioni di nodi né modifica di indirizzi IP.
• Problemi connessioni P2P, il problema sta nel fatto che un peer con NAT non può agire da
server e accettare connessioni TCP, per risolvere si aggiunge un peer intermedio che non fa
uso di NAT

IPV6

Motivi introduzione:

1. I 32 bit dell’IPV4 erano troppo pochi per poter indirizzare tutte le macchine connesse in
rete.
2. Il formato dell’header consente una velocità di trasmissione maggiore
3. non c’è più il fastidioso campo optional, quindi IPV4 ha un header di 40 byte
4. non necessita di frammentazione
5. Qualita del servizio migliore, dipende dal tipo di protocollo

Formato IPV6

Novità rispetto a IPV4:

• Indirizzamento Esteso, indirizzo a 128 bit, supporta indirizzi unicast, multicast, brodcast, e
anche anycast, cioè consegna di un datagramma a un qualsiasi host all’interno del gruppo(il
gruppo è identificato dall’indirizzo anycast), normalmente il più vicino. Può essere usata per
inviare una GET HTTP al più vicino di una serie di siti.
• Intestazione Ottimizzata, alcuni campi di IPV4 sono stati eliminati, otteniamo
un’intestazione a 40 byte(lunghezza fissa), in questo modo IP ci metterà meno a elaborarli,
inoltre una nuova codifica delle opzioni ne consente l’elaborazione in maniera più flessibile.
• Etichettatura e priorità dei flussi, è possibile fare in modo che un particolare flusso di dati
possa essere etichettato, poiché il mittente vuole che sia gestito in maniera diversa, come un
QoS diverso da quella di default o un servizio realtime, in modo da poterli soddisfare,
esempio un flusso audio o video oppure traffico ad alta priorità per utenti che pagano. C’è
anche un campo a 8 bit, per identificare la priorità di 1 pacchetto.

Altri campi interessanti:


1. Classe di traffico, 8 bit, per priorità
2. etichetta flusso, 20 bit, identifica un flusso di datagrammi
3. Lunghezza del payload, intero a 16 bit, identifica il numero di byte nel datagramma IPV6
che seguono l’intestazione a 40 byte
4. Next header, protocollo a cui è destinato il payload(UDP TCP)
Campi eliminati rispetto a IPV4

1. Frammentazione/Riassemblaggio, i router intermedi non possono frammentare, e se un


pacchetto dovesse risultare troppo grande per il collegamento? Il router intermedio manda
un ICMP al mittente il quale frammenterà il pacchetto.
2. Checksum nell’intestazione, poiché livello di trasporto e buona parte dei protocolli a livello
di collegamento hanno un loro checksum, ricalcolare il cheksum per ogni router risulta
essere troppo costoso
3. Intestazione fissa a 40 byte.
4. Nuovo tipo di ICMP, con la vecchia versione di IP potevano comunicare condizioni di errore
e dare informazioni limitate a un sistema periferico(es: ping), con IPV6 può fornire
messaggi più sofisticati come “Pacchetto troppo grande”, “Opzioni IPV6 non riconosciute”
e assume le funzionalita di IGMP, utilizzato per gestire l’entrata e l’uscita degli host nei
gruppi multicast

Da IPV4 a IPV6

Tutti i nuovi router IPV6 sono retrocompatibili con IPV4, ma i router IPV4 non sono compatibili
con IPV6, come risolvere:
1. Spegnere tutte le macchine per un giorno e aggiornarle, 25 anni fa fu fatta una cosa simile e
fu un misero insuccesso.

Ci vuole un approccio più a lungo termine, cioè di aggiornamento graduale, sono possibili 2
approcci(applicabili singolarmente o insieme):

1. Metodo a doppia pila, tutti i nodi IPV6 sono dotati di un’implementazione IPV4 completa,
in modo che possano inviare o ricevere sia datagrammi IPV4 che IPV6, devono avere, di
conseguenza, sia 1 indirizzo IPV4 che IPV6, e dev’essere in grado di distinguere se un
router(al quale magari vuole inviare qualcosa) è IPV6 o no, per far questo si chiede al DNS
di restituire l’indirizzo IPV6 del nodo, se questo non lo supporta sarà restituito quello IPV4.
Illustrazione 25: Il nodo B contatta il DNS e scopre che il successivo nodo supporta solo
IPV4 quindi converte il pacchetto eliminando i campi in più
Illustrazione 24: con un approccio a doppia pila certamente due nodi IPV4 saranno in grado
di scambiarsi pacchetti IPV6 e 2 nodi IPV6 saranno in grado di scambiarsi pacchetti IPV6,
ma è anche possibile per due nodi IPV6 scambiarsi pacchetti IPV4, anche se E e F
supportano IPV6 il datagramma che gli sarà passato non avrà alcuni campi IPV6 poiché C e
D non supporta IPV6

Tunnelling

Si mette nel payload l’intero pacchetto IPV6.


Supponiamo di avere un po’ di nodi, A deve inoltrare un pacchetto IPV6 a F, ma lungo la strada ci
sono nodi IPV4(che chiameremo tunnel), B inserisce nel payload del pacchetto inoltratogli da A
l’intero pacchetto IPV6, quest’ultimo viene indirizzato al nodo E, al lato di ricezione del tunnel e
inviato al primo nodo del tunnel; i nodi del tunnel lo inoltreranno come un normale IPV4 e E,
riconoscerà che nel payload c’è un IPV6 lo estrarra e lo inoltrerà come se lo avesse ricevuta da un
nodo IPV6 adiacente.

Adozione

È molto difficile aggiornare il livello di rete, senza far danni, per questo si rimanda il più possibile;
mentre i protocolli a livello applicativo hanno conosciuto un rapido sviluppo.

SDN

Nelle reti tradizionali l’instradamento è basato solo sull’indirizzo IP di destinazione del pacchetto,
all’interno delle reti si stanno sempre di più diffondendo middlebox(switch di livello 2 o livello 3),
cioè dispositivi che agiscono non solo sugli indirizzi IP, ma anche sui livelli inferiori(livello di
collegamento) o superiore es: porte dei socket; un esempio di questi dispositivi è il NAT che
riscrivono IP e numero di porta; i firewall bloccano i pacchetti basandosi sia su porta che indirizzi
IP, ma anche il load balancer inoltrano i pacchetti, verso server, che hanno bisogno di un
determinato servizio, guardando la porta di servizio.

La gestione di questi servizi non è semplice, e in questo SDN si sta adoperando per fornire servizi a
livello di rete e collegamento in maniera unificata.

L’inoltro basato sull’indirizzo IP si caratterizza in 2 fase: “match”, ricerca dell’indirizzo IP nella


tabella di inoltro e, “action”, cioè inoltro nella struttura di commutazione; l’inoltro SDN si basa su
un concetto molto più generalizzato “match-action”, dover per “match” può essere fatto non solo
sull’indirizzo IP, ma anche su altri campi dell’intestazione di altri protocolli, l’action non include
solo l’inoltro nella struttura di commutazione, ma anche il bilancio di carico dei pacchetti attraverso
una o più porte di uscita che portano a un servizio, la riscrittura dei campi d’intestazione, bloccare
scartare un pacchetto etc…
Inoltro generalizzato

i router SDN sono chiamati


packet switch

Illustrazione 27: le tabelle match-action vengono aggiornate da


un controller centralizzato, quindi i router evitano di comunicare
tra di loro
Illustrazione 26: tabella match-action

OpenFlow(protocollo SDN)

Le tabelle match-action in openflow sono note come flow table e, ogni riga contiene:
• Una serie di valori nel campo intestazione con il quale il pacchetto sarà confrontato, nel caso
non ci siano corrispondenze il pacchetto viene scartato oppure mandato al livello superiore.
• Un insieme di contatori, il contatore viene incrementato quando un pacchetto viene
associato a una determinata occorrenza della tabella.
• Una serie di azioni che
devono essere
intraprese quando un
pacchetto viene
associato a una
determinata
Illustrazione 28: esempio azioni che possono essere intraprese, occorrenza della
nelle tabelle di flusso è possibile utilizzare le wildcard tabella

Tutti gli 11 campi


possono essere
confrontati nel “match”,
e includo campi di
livello di rete,

Illustrazione 29: In basso gli 11 campi del pacchetto che entra nella tabella
dei flussi
collegamento e trasporto, quindi a livello di collegamento i frame non trasportano solo datagrammi
di livello 4.

Switch port= porta in entrata al packet switch, sul quale il pacchetto viene ricevuto.

Non tutti i campi d’intestazione sono confrontabili.

Action

la tabella dei flussi ha molteplici azioni, nel caso per un’occorenza ne fossero specificate molte
vengono eseguite in quest’ordine:
Illustrazione 30: In questo esempio notiamo quanto sia semplice
impore dei vincoli all'inoltro

Potrebbero piacerti anche