Sei sulla pagina 1di 62

Reti

di calcolatori e internet
Che cos'è Internet?
Gli "ingranaggi" di internet
Internet è una rete di calcolatori. Data la varia natura dei dispositivi che vi si connettono, questi
vengono detti host (ospiti) o sistemi periferici (end system).
I sistemi periferici sono connessi tra loro tramite una rete di collegamenti (communication link) e
commutatori di pacchetti (packet switch).
La velocità di trasmissione (transmission rate) viene misurata in bit/secondo (bps).
Quando un sistema periferico vuole inviare dati a un altro sistema periferico, suddivide i dati in
sottoparti e aggiunge un'intestazione a ciascuna di esse: l'insieme delle informazioni risultati viene
detto pacchetto.
Esistono vari commutatori di pacchetto, i due principali sono i router e i commutatori a livello di
collegamento (link-layer switch). Gli switch sono solitamente usati nelle reti di accesso, mentre i
router nel nucleo della rete.
Un pacchetto percorre un percorso (route o path).
I sistemi periferici accedono a Internet tramite i cosiddetti Internet Service Provider (ISP). Un
provider è un insieme di commutatori di pacchetto e di collegamenti. Ciascuna rete di un ISP, sia di
alto sia di basso livello, è gestita in modo indipendente, fa uso del protocollo IP e si conforma a
determinate convenzioni riguardo a nomi e indirizzi.
I due principali protocolli sono TCP (Transmission Control Protocol) e IP (Internet Protocol).
Gli standard di Internet vengono sviluppati dall'Internet Engineering Task Force (IETF). I
documenti sugli standard vengono detti RFC, request for comment.

Descrizione dei servizi
Ci sono applicazioni distribuite, ovvero che coinvolgono più sistemi periferici e si scambiano
reciprocamente dati, come VoIP e P2P.
Le applicazioni per Internet vengono eseguite sui sitemi periferici e non sui commutatori di
pacchetto del nucleo della rete. I sistemi periferici collegati a Internet forniscono della API
(Application Programming Interface) che specificano come il pezzo di software eseguito su un
sistema periferico possa chiedere a Internet di recapitare dati a un altro specifico pezzo di
software eseguito su un altro sistema periferico.

Che cos'è un protocollo?
Un protocollo definisce il formato e l'ordine dei messaggi scambiati tra due o più entità in
comunicazione, così come le azioni intraprese in fase di trasmissione e/o di ricezione di un
messaggio o di un altro evento


Ai confini della rete
I sistemi periferici vengono anche detti host in quanto ospitano (ed eseguono) programmi
applicativi quali browser e web server.
Gli host si possono dividere in client e server.

Le reti di accesso
Le reti di accesso (access network) sono le reti che connettono fisicamente un sistema al suo edge
router (router di bordo), che è il primo router sul percorso dal sistema d'origine a un qualsiasi altro
sistema di destinazione collocato al di fuori della stessa rete di accesso.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Accesso residenziale
DSL (digital subscriber line), via cavo, fibra ottica.
Il modem DSL dell'utente usa la linea telefonica esistente per scambiare dati con un digital
subscriber line access multiplex (DSLAM) che si trova nella centrale locale della compagnia
telefonica. Il modem DSL residenziale converte i dati digitali in toni ad alta equenza per poterli
trasmettere alla centrale locale sul cavo telefonico; tutti i segnali analogici in arrivo dalle abitazioni
vengono riconvertiti in formato digitale nel DSLAM.
Le linee telefoniche residenziali trasportano contemporaneamente dati e segnali telefonici
tradizionali codificandoli in tre bande di frequenza non sovrapposte:
• un canale di downstream (verso l'abitazione) ad alta velocità, nella banda tra 50 kHz e 1
MHz
• un canale di upstream (verso il DSLAM) a velocità media, nella banda tra 4 e 50 kHz
• un canale telefonico ordinario a due vie, nella banda tra 0 e 4 kHz.

Mezzi trasmissivi
Si dividono in due categorie:
• mezzi vincolati (guided media): fibra, cavo coassiale, doppino
• mezzi non vincolati (unguided media): WiFi, satellitare
UTP: Unshielded Twisted Pair [doppino non schermato]
Cavo coassiale: non più usato
Fibra ottica: veloce, pochissime interferenze, stabile, usata nelle dorsali
Canali radio terrestri: (Esempio: WiFi). L'ambiente determina la perdita di segnale lungo il
percorso causata dalla distanza (path loss), dall'attraversamento di ostacoli (shadowfading), dalla
riflessione sulle superfici (multipathfading) o dall'interferenza con altri canali radio o segnali
elettromagnetici.
Canali radio satellitari: Nelle comunicazioni si usano due tipi di satellite: quelli geostazionari (GEO,
geostationary earth orbit) e quelli a bassa quota (LEO, low-earth orbiting).


Il nucleo della rete
1) Commutazione di pacchetto
Le applicazioni distribuite si scambiano messaggi. I messaggi lunghi sono suddivisi in pacchetti, che
viaggiano attraverso collegamenti e commutatori di pacchetto (router e switch).
Se un sistema periferico o un commutatore invia un pacchetto di L bit su un canale a velocità R
bps, il tempo [ritardo] di trasmissione è uguale a :
d = L/R, [L] = bit, [R] = bps

Trasmissione store and forward
Il commutatore deve ricevere l'intero pacchetto prima di poter cominciare a trasmetterlo sul
collegamento in uscita.
Si consideri il caso generale della trasmissione di un pacchetto dalla sorgente alla destinazione su
un percorso consistente di N collegamenti (N-1 router) ognuno con velocità di trasmissione R.
"
dend_to_end = 𝑁
#

Secondo il meccanismo di "store and forward", un messaggio di 7,5 Mbit deve passare per 4
router e 5 link ciascuno con ampiezza di banda di 1,5Mbit/s per andare da host sorgente ad host
destinazione. Quanto tempo impiega la trasmissione in assenza di frammentazione del messaggio?
25s
Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017
Secondo il meccanismo di "store and forward", un messaggio di 7,5 Mbit deve passare per 4
router e 5 link ciascuno con ampiezza di banda di 1,5Mbit/s per andare da host sorgente ad host
destinazione. Quanto tempo impiega approssimativamente (a meno di errore inferiore allo 0,1%) il
trasferimento se messaggio è frammentato in 5.000 pacchetti da 1.500 bit l'uno? (considerare solo
i tempi di trasmissione)
5s

Ritardi di accodamento e perdita di pacchetti
Ogni commutatore di pacchetto contiene più collegamenti. Per ciascuno di questi, il commutatore
tiene un buffer (coda) di output per conservare i pacchetti che sta per inviare su quel
collegamento. Oltre al ritardo store-and-forward, quindi, i pacchetti subiscono anche ritardi di
accodamento.
Dato che i buffer hanno lunghezza finita, se un buffer è pieno o il pacchetto viene scartato, o ne
viene buttato uno in coda. C'è perdita di pacchetto (packet loss)!

Tabelle di inoltro e protocolli di instradamento
Ogni router ha una tabella di inoltro (forwarding table) che mette in relazione gli indirizzi di
destinazione (o loro parti) con i collegamenti in uscita.
Arriva un pacchetto router guarda tabella per capire verso dove mandarlo.
Internet ha parecchi protocolli di instradamento (routing protocol) specifici che usa per impostare
automaticamente le tabelle di inoltro.

2) Commutazione di circuito
Nelle reti a commutazione di circuito le risorse richieste lungo un percorso (buffer e velocità di
trasmissione lungo i collegamenti) per consentire la comunicazione tra sistemi periferici sono
riservate per l'intera durata della sessione di comunicazione. Nella commutazione a pacchetto i
messaggi usano le risorse quando necessario, e di conseguenza potrebbero doversi mettere in
coda.
Circuito = mittente e destinatario mantengono la connessione per tutta la durata della
comunicazione
Quando la rete stabilisce un circuito, gli garantisce una certa larghezza di banda.
Connessione end-to-end tra due host che vogliono comunicare.
Internet funziona a commutazione di pacchetto!

Multiplexing nelle reti a commutazione di circuito
FDM: Frequency Division Multiplexing.
Spettro di frequenza diviso tra le varie connessioni. Reti telefoniche ~4kHz
Ampiezza di banda = bandwidth
TDM: Time Division Multiplexing
Tempo diviso in frame di durata fissa, a loro volta suddivisi in un numero fisso di slot temporali.
Ogni connessione ha diritto a uno slot di tempo per ogni frame.
La commutazione di circuito è dispendiosa perché inattiva durante i periodi di silenzio.

Una rete di reti
Struttura di rete 1: tutti gli ISP sono connessi in un unico ISP globale di transito (immaginario)
Struttura di rete 2: centinaia di migliaia di ISP di accesso e più ISP globali di transito (connessi tra
loro). In ogni regione può esservi un ISP regionale al quale tutti gli ISP di accesso della regione si
connettono. Ogni ISP regionale si connette all'ISP di primo livello (tier-1 ISP)

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


C'è una relazione cliente-fornitore a ogni livello della gerarchia.
Struttura di rete 3: Aggiunge ISP provinciali, regionali, regionali più grandi, ...
Struttura di rete 4: Aggiunge:
• PoP (point of presence): su tutti i livelli tranne quelli degli ISP di accesso. Gruppi di router
tramite i quali gli ISP clienti si collegano al fornitore
• Multi-homing: qualunque ISP (tranne quelli di primo livello) può connettersi a due o più ISP
fornitori.
• Peering: coppia di ISP vicini e di pari livello gerarchico connettono direttamente le loro reti
in modo che tutto il traffico tra di esse non debba passare per un intermediario. Nessun ISP
deve pagarne un altro!
• IXP (internet exchange point): punto d'incontro in cui più ISP possono fare peering fra loro
Struttura di rete 5: Aggiunge content provider networks (reti che si occupano di distribuire
contenuti).
Google ha la propria rete privata per interconnettere i data center; aggira i provider di alto livello
facendo peering con gli ISP di basso livello connettendosi a loro o direttamente o tramite IXP


Ritardi, perdite e thorughput nelle reti a commutazione di pacchetto
I principali ritardi sono:
• elaborazione
• accodamento
• trasmissione
• propagazione
Che complessivamente formano il ritardo totale del nodo (nodal delay).

Ritardo di elaborazione (processing delay)
Esaminare l'intestazione del pacchetto, controllare gli errori, ...
Può influenzare il throughput massimo di un router.

Ritardo di accodamento (queueing delay)
Tempo che il pacchetto passa in coda.
Ratio di arrivo N pacchetti ogni NL/R secondi.
Ritardo dell'n-esimo pacchetto:
d = (n - 1) L / R, [L] = bit, [R] = bps

Ritardo di trasmissione (transmission delay)
Tempo richiesto per trasmettere tutti i bit del pacchetto sul collegamento.
d = L/R, [L] = bit, [R] = bps

Ritardo di propagazione (propagation delay)
Tempo per attraversare il collegamento fra i due router.
d = x/v, [x] = m, [v] = m/s

Se la velocità di propagazione del segnale nel mezzo è di 250 milioni di metri al secondo,
l'ampiezza di banda del link è di 25 kbps e la dimensione del pacchetto è di 100 bit, calcolare la
distanza a cui il ritardo di propagazione è uguale a quello di trasmissione (si trascurino tutte le
altre possibili cause di ritardo):
x/v = L/r --> x = 1000km

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Se la velocità di propagazione del segnale nel mezzo è di 300 milioni di metri al secondo,
l'ampiezza di banda del link è di 12 Mbps e la dimensione del pacchetto è di 1.500 byte, calcolare
la distanza a cui il ritardo di propagazione è uguale a quello di trasmissione (si trascurino tutte le
altre possibili cause di ritardo):
300 km

Se il ritardo di propagazione di un pacchetto di 1500 byte è di 60 microsecondi, quale deve essere
l'ampiezza di banda per avere un ritardo di trasmissione uguale?
200 Mbps

Se la somma dei ritardi di trasmissione e di propagazione è di 13 microsecondi per un pacchetto di
1500 byte, su un tratto di 900 m, sapendo che il segnale propaga alla velocità di 300.000 km/s,
calcolare l'ampiezza di banda del collegamento.
1,2 Gbps

Se la somma dei ritardi di trasmissione e di propagazione è di 13 microsecondi per un pacchetto di
1500 byte, su un tratto di 300 m, sapendo che il segnale propaga alla velocità di 300.000 km/s,
calcolare l'ampiezza di banda del collegamento.
1 Gbps

Se la velocità di propagazione del segnale nel mezzo è di 300 milioni di metri al secondo,
l'ampiezza di banda del link è di 1 Gbps e la dimensione del pacchetto è di 500 byte, calcolare la
distanza a cui il ritardo di propagazione è uguale a quello di trasmissione (si trascurino tutte le
altre possibili cause di ritardo):
1.200 m

Se la velocità di propagazione del segnale nel mezzo è di 300 milioni di metri al secondo,
l'ampiezza di banda del link è di 1 Gbps e la dimensione del pacchetto è di 10kb, calcolare la
distanza a cui il ritardo di propagazione è uguale a quello di trasmissione (si trascurino tutte le
altre possibili cause di ritardo):
3km

Se il ritardo di propagazione di un pacchetto di 1500 byte è 100µs, quanto deve essere l'ampiezza
di banda per avere un ritardo di trasmissione uguale?
120Mbit/s

Considerate una LAN ethernet a 10Mbps. Assumete che il segnale si propaghi a 250 milioni di
metri al secondo e considerate un frame ethernet di lunghezza minima. Calcolate la minima
efficienza nel caso in cui un host riesca sempre a rilevare la collisione provocata da un frame da
esso emesso.
ttrans = 2tprop
29%

Se il ritardo di propagazione di un pacchetto di 1500byte è 100µs, quale deve essere l'ampiezza di
banda per avere un ritardo di trasmissione uguale?
120 Mbps

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Trovare la distanza massima tra due host collegati su una LAN ethernet a 1 Gbps al di sotto del
quale è sempre possibile rilevare una collisione, se la velocità di propagazione è di 200*10^6 m/s e
se i 2 host sono collegati a 4 repeater che introducono un ritardo di 25 bit ciascuno nella
propagazione del segnale:
37.6 m [2(d/v + 25*4/R) = 72*8/R]

Intensità di traffico
i = L*a/R, , [L] = bit, [a] = pacchetti/s, [R] = bps
Se i > 1, i pacchetti arrivano più velocemente di quanti ne vengano ritrasmessi, quindi il ritardo di
coda tenderà a infinito.

In una rete con ampiezza di banda R=100 Mbps, circolano pacchetti della dimensione di L=1500
byte. A quale numero minimo di pacchetti per secondo – tra quelli elencati di seguito - il ritardo di
coda è senz'altro dominante sui ritardi di elaborazione, propagazione e trasmissione?
8.000 pacchetti/s [96%]

Dato un link di 10m da 1 Gbps, percorso da pacchetti da 1500 byte alla velocità di 300.000 km/s,
quali dei seguenti ritardi dipende dall'intensità del traffico in quel momento?
Ritardo di coda


Perdita di pacchetti
Se a un router arriva un pacchetto ma la coda è piena, questo pacchetto viene scartato. C'è una
situazione di buffer overflow!

Ritardo end-to-end
dend-to-end = N (delab + dtrasm + dprop)



Livelli dei protocolli e loro modelli di servizio
Architettura a livelli
Un'architettura a livelli consente di discutere una parte specifica e ben definita di
un sistema articolato e complesso. Questa stessa semplificazione ha un valore considerevole
grazie all'introduzione della modularità, che rende molto più facile cambiare l'implementazione
del servizio fornito da un determinato livello. Nel caso di sistemi grandi e complessi, che vengono
costantemente aggiornati, la capacità di cambiare l'implementazione di un servizio senza
coinvolgere altre componenti del sistema costituisce un ulteriore importante vantaggio legato alla
stratificazione.

Stratificazione dei protocolli
I protocolli vengono suddivisi in livelli o strati (layer). Ciò che interessa sono i servizi offerti da uno
strato a quello superiore: si tratta del modello di servizio (service model). La stratificazione dei
protocolli presenta vantaggi concettuali e strutturali. La modularità rende più facile aggiornare la
componentistica.
Considerati assieme, i protocolli dei vari livelli sono detti pila dei protocolli (protocol stack).

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017





Livello di applicazione (application layer)
È la sede delle applicazioni di rete e dei relativi protocolli.
HTTP, SMTP, FTP, ...
PDU (Protocol Data Unit): messaggi

Livello di trasporto (transport layer)
Trasferisce i messaggi del livello delle applicazioni tra punti periferici gestiti dalle applicazioni.
TCP: servizio orientato alla connessione. L'utente deve stabilirla, usarla e rilasciarla. Fraziona i
messaggi lunghi in segmenti in modo da gestire il traffico
UDP: servizio senza connessione.
PDU: segmenti

Livello di rete (network layer)
Trasferisce i pacchetti a livello di rete da un host all'altro. Il protocollo internet a livello di
trasporto (TCP/UDP) passa al livello di rete un segmento e un indirizzo di destinazione. Il livello di
rete mette a disposizione il servizio di consegna al livello di trasporto nell'host di destinazione.
Protocollo: IP. Definisce i campi dei datagrammi e come i sistemi periferici e i router agiscono su
tali campi.
PDU: datagrammi

Livello di collegamento (data link)
Trasferisce un pacchetto da un nodo (host o router) al successivo, affidandosi al livello di
collegamento.
Alcuni protocollo garantiscono la consegna affidabile.
Il livello di rete riceve un servizio diverso da ciascuno dei diversi protocolli a livello di
collegamento.
PDU: frame

Livello fisico (physical layer)
Trasferisce i singoli bit di un frame da un nodo a quello successivo. I protocolli di questo livello
sono ancora dipendenti dal collegamento e dipendono anche dal mezzo trasmissivo.




Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017
Incapsulamento
Un messaggio a livello di applicazione viene incapsulato in un segmento a livello di trasporto, che
viene incapsulato in un datagramma a livello di rete, che viene incapsulato in un frame a livello di
collegamento. Man mano si aggiungono informazioni, per esempio bit di controllo di errore
eccetera.










































Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Livello di trasporto
Un protocollo a livello di trasporto mette a disposizione una comunicazione logica tra processi
applicativi di host differenti.
Comunicazione logica: è come se gli host che eseguono i processi fossero connessi direttamente
I processi applicativi usano la comunicazione logica fornita dal livello di trasporto per scambiare
messaggi, senza preoccuparsi dei dettagli dell'infrastruttura fisica utilizzata per trasportarli!
Dal lato del mittente il livello di trasporto converte i messaggi che riceve da applicazione in
segmenti, spezzando i messaggi applicativi in parti più piccole e aggiungendo a queste
un'intestazione di trasporto. Il livello di trasporto passa quindi il segmento al livello di rete, dove
viene incapsulato in un datagramma e inviato a destinazione. I router agiscono solo sul
datagramma, non sul segmento!
Mentre un protocollo a livello di trasporto mette a disposizione una comunicazione logica tra
processi che vengono eseguiti su host diversi, un protocollo a livello di rete fornisce
comunicazione logica tra host!
Determinati servizi possono essere garantiti da un protocollo di trasporto anche se il sottostante
protocollo di rete non offre un servizio corrispondente!

Panoramica del livello di trasporto di Internet
Due protocolli:
• UDP (user datagram protocol): servizio non affidabile e non orientato alla connessione
• TCP (transmission control protocol): servizio affidabile e orientato alla connessione
A livello di rete abbiamo il protocollo IP con modello best-effort (NON affidabile!)
TCP e UDP servono a estendere il servizio di consegna tra sistemi periferici di IP a un servizio di
consegna tra processi in esecuzione su sistemi periferici.
Passaggio da host-to-host a process-to-process è il (de)multiplexing a livello di trasporto.
UDP e TCP forniscono un controllo di integrità basato sul riconoscimento di errori nelle
intestazioni dei propri segmenti.
UDP non garantisce che i dati inviati a un processo arrivino al destinatario.
TCP fornisce un trasferimento dati affidabile grazie a controllo di flusso, numeri di sequenza,
acknowledgement e timer. Quindi TCP converte il servizio inaffidabile fra sistemi periferici che è IP
in un servizio affidabile di trasporto dati fra processi. TCP fornisce anche un controllo di
congestione.
UDP non regola il traffico.

Quali tra i seguenti servizi sono forniti sia da TCP che da UDP:
Controllo di errore ed inoltro dei dati alla applicazione appropriata

Nell'architettura a strati di internet dire a quale strato /strati fornisce direttamente i servizi lo
strato di trasporto:
Allo strato di applicazione

Multiplexing e demultiplexing
Nell'host destinatario il livello di trasporto riceve segmenti dal livello di rete immediatamente
sottostante. Il livello di trasporto ha il compito di consegnare i dati di questi segmenti al processo
applicativo appropriato in esecuzione nell'host.
Un processo può gestire una o più socket. Il livello di trasporto scambia dati con questo, non
direttamente con il processo!
Nei segmenti ci sono le indicazioni sulla porta alla quale mandare il contenuto.
Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017
Lato ricevente, il livello di trasporto esamina questi campi per identificare la socket di ricezione e
quindi vi dirige il segmento. Il compito di trasportare i dati dei segmenti a livello di trasporto verso
la giusta socket viene detto demultiplexing. Il compito di radunare frammenti di dati da diverse
socket sull'host di origine e incapsulare ognuno con intestazioni a livello di trasporto (che verranno
poi utilizzate per il demultiplexing) per creare dei segmenti e passarli al livello di rete, viene detto
multiplexing.
Multiplexing e demultiplexing entrano in gioco ogni volta che un pacchetto passa da un livello
superiore a uno inferiore o viceversa.
Il multiplexing a livello di trasporto richiede:
• che le socket abbiano identificatori unici
• che ciascun segmento presenti campi che indichino la socket cui va consegnato il
segmento

Questi sono i campi numero
porta di origine e numero porta
di destinazione.
I numeri di porta sono di 16 bit e
vanno da 0 a 65535, quelli che
vanno da 0 a 1023 sono chiamati
numeri di porta noti (well-
known port numbers)
È importante notare che una
socket UDP viene identificata
completamente da una coppia
che consiste di un indirizzo IP e
di un numero di porta di
destinazione.
Il numero di porta di origine
serve come parte di un "indirizzo di ritorno".
Al contrario di UDP, due segmenti TCP in arrivo con IP o porta di origine diversi vengono diretti su
due socket differenti anche se destinati alla stessa porta sullo stesso IP, ad eccezione dei segmenti
TCP che trasportano la richiesta per stabilire la connessione.


Trasporto non orientato alla connessione: UDP
UDP fa il minimo che un protocollo di trasporto debba fare. A parte multiplexing/demultiplexing
e un basilare controllo degli errori, non aggiunge nulla a IP.
UDP prende i messaggi dal processo applicativo, aggiunge il numero di porta di origine e di
destinazione per il multiplexing/demultiplexing, aggiunge altri due piccoli campi e passa il
segmento risultante al livello di rete.
Notiamo che in UDP non esiste handshaking tra le entità di invio e di ricezione a livello di
trasporto. Per questo motivo, si dice che UDP sia non orientato alla connessione.
Motivi per scegliere UDP e non TCP:
• Controllo più fine a livello di applicazione su quali dati sono inviati e quando.
Spesso le applicazioni realtime vogliono i dati entro brevissimo tempo e non si interessano
ad eventuali piccole perdite di pacchetti.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


• Nessuna connessione stabilita.
TCP usa 3-way-handshake, mentre UDP non introduce alcun ritardo nello stabilire la
connessione. Per questo DNS usa UDP!
• Nessuno stato di connessione.
TCP mantiene buffer, parametri, ack, ...
UDP non li mantiene, quindi risparmia spazio e può gestire più client
• Meno spazio usato per l'intestazione del pacchetto.
TCP aggiunge 20 byte, UDP 8 byte.
Le applicazioni possono ottenere un trasferimento affidabile con UDP se l'affidabilità è insita
nell'applicazione stessa.

Struttura dei segmenti UDP
Header = 4 campi da 2 byte l'uno:
• Numero porta d'origine
• Numero porta di destinazione
• Lunghezza (numero di byte del segmento UDP, intestazione + dati)
• Checksum

Checksum UDP
Serve per rilevare gli errori.
Lato mittente UDP effettua il complemento a 1 della somma di tutte le parole a 16 bit del
segmento, e l'eventuale riporto finale viene sommato al primo bit. Tale risultato viene messo nel
campo checksum del segmento UDP.
In ricezione, si sommano le tre parole iniziali e il checksum. Se non ci sono errori nel pacchetto,
l'addizione darà 1111111111111111, altrimenti se un bit vale 0 sappiamo che è stato introdotto
almeno un errore nel pacchetto.
Il checksum viene usato perché non c'è garanzia che tutti i collegamenti tra origine e destinazione
controllino gli errori, e comunque si potrebbe verificare un errore quando il pacchetto si trova
nella memoria del router.
Principio end-to-end: dato che certe funzionalità devono essere implementate su base end-to-
end, le funzionalità posizionate ai livelli inferiori possono diventare ridondanti o di scarso valore
se confrontate con le stesse funzionalità offerte dai livelli superiori
UDP controlla la presenza di errori ma non fa nulla per risolverli


Principi del trasferimento dati affidabile
Con un canale affidabile a disposizione nessun bit dei dati trasferiti è corrotto (0 al posto di 1 o
viceversa) o va perduto e tutti i bit sono consegnati nell'ordine di invio. Questo è reso difficile
dalla possibile inaffidabilità del livello "al di sotto".
RDT: Reliable Data Transfer
UDT: Unreliable Data Transfer

Trasferimento dati affidabile su un canale con errori sui bit
Vengono usate notifiche positive (ACK, acknowledgement) e notifiche negative.
I protocolli di trasferimento dati affidabili basati su ritrasmissioni sono noti come protocolli ARQ
(automatic repeat request). Questi protocolli devono avere 3 funzionalità aggiuntive:
• Rilevamento dell'errore
• Feedback del destinatario (ACK/NAK)

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


• Ritrasmissione
Quando il mittente è in attesa di ACK/NAK dal ricevente, non può ricevere dati dal livello
superiore. Si chiamano protocolli stop-and-go.
Miglior modo di risolvere il problema di ACK/NAK corrotti: il mittente reinvia il pacchetto a
seguito della ricezione di un ACK/NAK alterato. Introduce il problema dei pacchetti duplicati.
Il mittente numera i propri pacchetti con un numero di sequenza.
Si può avere lo stesso effetto di un NAK mandando l'ACK dell'ultimo pacchetto ricevuto integro.
Un mittente che riceve due ACK per lo stesso pacchetto (duplicati) sa che il destinatario non ha
ricevuto correttamente il pacchetto successivo a quello confermato due volte.

Canale che oltre a corrompere i pacchetti, ne perde anche
Il mittente deve rilevare la perdita di pacchetto. Se il mittente è disposto ad attendere un tempo
sufficientemente lungo per essere certo dello smarrimento, può semplicemente ritrasmettere il
pacchetto. Nella pratica, si prende un arco di tempo in cui la perdita è probabile ma non
garantita. Se un pacchetto arriva "troppo" tardi e il mittente l'ha già rispedito, il destinatario
riceverà due pacchetti duplicati. In questo caso basta il numero di sequenza per capire che uno va
scartato.
Implementare un meccanismo di ritrasmissione basato sul tempo richiede un contatore
(countown timer). Il mittente dovrà inizializzare il contatore ogni volta che invia il pacchetto,
rispondere a un interrupt generato dal timer con l'azione appropriata e fermare il contatore.
Protocollo ad alternanza di bit: i numeri di sequenza si alternano tra 0 e 1.
Checksum, numeri di sequenza, contatori e pacchetti di notifica positiva e negativa giocano tutti
un ruolo cruciale e necessario per il funzionamento del protocollo.

Trasferimento dati affidabile con pipeline
La modalità stop-and-wait è troppo inefficiente!
Si usa il pipelining! Conseguenze:
• Intervallo numeri di frequenza aumentato
• I lati di invio e di ricezione dei protocolli possono dover memorizzare in un buffer più di
un pacchetto
• Due approcci di base: Go-Back-N e selective repeat

Go-Back-N (GBN)
Mittente trasmette più pacchetti senza aspettare un ACK, ma può avere massimo N pacchetti
nella pipeline.
base = numero di sequenza del più vecchio pacchetto che non ha ancora ricevuto ACK
nextseqnum = più piccolo numero di sequenza non utilizzato
Quattro intervalli di numeri di sequenza:
• [0, base-1]: pacchetti già trasmetti e che hanno ricevuto un ACK
• [base, nxtseqnum-1]: pacchetti inviati, in attesa di ACK
• [nextseqnum, base+N-1]: numeri da usare per i pacchetti da inviare immediatamente, nel
caso arrivassero dati dal livello superiore
• [base+N, +∞]: non possono essere utilizzati finché non si ricevono ulteriori ACK
N = ampiezza della finestra (window size)
GBN è un protocollo a finestra scorrevole (sliding-window protocol)

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017





Il numero di sequenza di un pacchetto viene scritto in un campo a dimensione fissa di un
pacchetto (k bit -> numeri di sequenza variano fra 0 e 2k-1 )
Il mittente GBN deve rispondere a 3 tipi di evento:
• Invocazione dall'alto: quando dall'alto si chiama rdt_send() controlla se la finestra è piena.
Se lo è, rimanda il dato all'applicazione, altrimenti manda il pacchetto. Nella realtà spesso
si può chiamare redt_send() solo se la finestra non è piena
• Ricezione di un ACK: l'ACK del pacchetto con numero di sequenza n è cumulativo: tutti i
pacchetti con numero di sequenza ≤n sono stati ricevuti correttamente
• Evento di timeout: quando c'è timeout il mittente reinvia tutti i pacchetti spediti che
ancora non hanno ricevuto un ACK.

Compiti del destinatario GBN:
• Se un pacchetto con numero di sequenza n viene ricevuto "in ordine", manda ACK per quel
pacchetto e consegna i dati al livello superiore
• In tutti gli altri casi, scarta il pacchetto e rimanda l'ACK dell'ultimo pacchetto ricevuto "in
ordine"
GBN incorpora molte delle tecniche TCP per il trasferimento affidabile dei dati

Il meccanismo di Go-Back-N implementa un protocollo:
di trasferimento affidabile con pipeline

Ripetizione selettiva (SR, selective repeat)
Si evitano ritrasmissioni non necessarie. Il destinatario è quindi obbligato a mandare ack
specifici per i pacchetti ricevuti in modo corretto!
Si usa di nuovo una finestra di ampiezza N.
Il destinatario SR manda ack per tutti i pacchetti ricevuti correttamente, sia in ordine che fuori
sequenza. Questi ultimi vengono memorizzati in un buffer finché non sono stati ricevuti tutti i
pacchetti mancanti. Il destinatario manda ack anche per pacchetti ricevuti con numero di
sequenza sotto l'attuale base della finestra! Se il mittente non riceve questo ack, la sua finestra
non può avanzare! Quindi la finestra del mittente e quella del destinatario non sempre
coincidono.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017







La mancanza di sincronizzazione tra le finestre del mittente e del destinatario ha importanti
conseguenze quando abbiamo a che fare con un intervallo finito di numeri di sequenza
La finestra deve avere ampiezza inferiore o uguale alla metà dello spazio dei numeri di sequenza
dei protocolli SR.
Nella pratica, bisogna assicurarsi che un numero di sequenza non venga riutilizzato finché il
mittente non sia sicuro che ogni pacchetto mandato precedentemente con lo stesso numero di
sequenza non si trovi più nella rete. Si fissa un lasso di tempo e lo si usa per determinare se possa
trovarsi o meno nella rete.

I meccanismi di Go-Back-N e di Ritrasmissione Selettiva (SR) hanno in comune:
La presenza di un buffer con finestra scorrevole sul lato sender

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Trasporto orientato alla connessione: TCP
Prima di effettuare lo scambio, i due processi devono effettuare l'handshake. Lo stato della
connessione risiede completamente nei due sistemi periferici. I router vedono datagrammi, non
connessioni, quindi sono ignari delle connessioni TCP.
TCP offre un servizio full duplex ed è punto a punto. Il multicast non è possibile.

Stabilire la connessione - three way handshake:
• Client contatta il server inviando uno specifico segmento TCP
• Server risponde con un altro specifico segmento TCP
• Client risponde con un terzo segmento speciale

Un programma client è un programma che:
Inizia la conversazione

TCP dirige i dati al buffer di invio della connessione, uno dei buffer riservato durante l'handshake
a tre vie, da cui, di tanto in tanto, preleverà blocchi di dati e li passerà al livello di rete.
La massima quantità di dati prelevabili e posizionabili in un segmento viene limitata dalla
dimensione massima di segmento (MSS, maximum segment size). MSS viene impostato dopo aver
determinato la lunghezza del frame più grande che può essere inviato a livello di collegamento
dall'host mittente locale, la cosiddetta unità trasmissiva massima (MTU, maximum transmission
unit) e poi scegliendo un MSS tale che il segmento TCP, una volta incapsulato il datagramma IP,
stia all'interno di un solo frame a livello di collegamento, considerando che l'intestazione TCP/IP in
genere è 40 byte. Ethernet e PPP hanno MSS di 1500byte.

PPP è un protocollo usato solamente:
Punto a punto livello data link

TCP accoppia ogni blocco di dati del client con un'intestazione, formando segmenti TCP che
vengono passati al sottostante livello di rete, dove sono incapsulati in datagrammi IP che
vengono poi immessi nella rete.
Quando all'altro capo TCP riceve un segmento, i dati del segmento vengono memorizzati nel
buffer di ricezione della connessione TCP. L'applicazione legge il flusso di dati da questo buffer.
Ogni lato della connessione presenta un proprio buffer di invio e di ricezione.

Struttura dei segmenti TCP
Segmento = intestazione + blocco di dati
La MSS limita la dimensione massima del campo dati del segmento

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017



v Data offset = lunghezza intestazione TCP in multipli di 32 bit. La lunghezza varia a causa del
campo opzioni
v Receive window = numero di byte che il destinatario è disposto ad accettare
v Opzioni = facoltativo e di lunghezza variabile, usato quando mittente e destinatario negoziano
la MSS o come fattore di scala per la finestra nelle reti ad alta velocità
v Flag
Ø ACK: valore nel campo di acknowledgement è valido o meno (ack per segmento ricevuto
con successo)
Ø RST, SYN, FIN: impostare e chiudere la connessione
Ø PSH: se vale 1, destinatario deve inviare immediatamente i dati al livello superiore
Ø URG: dati urgenti. La posizione dell'ultimo byte di dati urgenti viene denotata da urgent
pointer

Qual e' la massima dimensione L di un file - in byte - per la quale i numeri di sequenza TCP non si
ripetono mai?
4 GB [32 bit di sequence number, dimensione massima = 232 byte]

Numeri di sequenza e numeri di ACK
TCP vede i dati come un flusso di dati non strutturati, ma ordinati. I numeri di sequenza si
applicano al flusso di byte trasmessi e non alla serie di segmenti trasmessi.
Quindi il numero di sequenza di un segmento è il numero del primo byte del segmento nel flusso
di byte!
TCP effettua l'ack solo dei byte fino al primo byte mancante nel flusso, quindi si dice che offre
acknowledgement cumulativi.
Cosa fa un host quando riceve segmenti fuori sequenza? Due opzioni:
• scarta i segmenti non ordinati
• mantiene i byte non ordinati e aspetta quelli mancanti per colmare i vuoti



















Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Numeri di sequenza e ack
Ricorda che:
• Il numero di sequenza di un
segmento è il numero di sequenza
del primo byte nel campo dati
• Il numero di acknowledgement è il
numero di sequenza del
successivo byte di dati che l'host
sta aspettando
Quindi se il destinatario manda come ack
il sequence number n + 1, dice al mittente
che ha ricevuto con successo tutti i
pacchetti fino a n e che sta aspettando n
+ 1.
Il riscontro dei dati dal client al server
viene trasportato in un segmento che a
sua volta trasporta dati dal server al
client: l'acknowledgement è piggybacked
sul segmento dati dal server al client.

Timeout e stima del tempo di andata/ritorno
Il timeout deve essere più grande del tempo di andata e ritorno sulla connessione (RTT, round
trip time)
EstimatedRTT = (1 - α) * EstimatedRTT + α * SampleRTT
Con generalmente α = 0.125
EstimatedRTT è una media mobile esponenziale ponderata (pesata) dei valori di SampleRTT
DevRTT stima quanto generalmente RTT reale si discosta da EstimatedRTT
DevRTT = (1 - ß) * DevRTT + ß * |SampleRTT - EstimatedRTT|
Con generalmente ß = 0.25
TimeoutInterval = EstimatedRTT + 4 * DevRTT
Latenza:
Latenza = 2RTT + dim_pacchetto/R

E' aperta una connessione Telnet. Il client invia un pacchetto con carico utile di 20 caratteri con
numero di sequenza 51 e numero di riscontro 60. Quale saranno rispettivamente i corrispondenti
numeri di sequenza e di riscontro del successivo pacchetto di echo back da server a client?
60, 71

Nell'impostazione del timeout di ritrasmissione TCP:
viene usata la deviazione istantanea tra ultimo RTT campionato e sua media pesata

Trasferimento dati affidabile
TCP crea un servizio di trasferimento dati affidabile sopra il servizio inaffidabile, best-effort che è
IP, garantendo che il flusso di dati in arrivo all'applicazione destinataria sia esattamente quello
che è stato spedito.
TCP usa un solo timer di ritrasmissione anche se ha trasmesso più segmenti.
Esistonono tre eventi principali relativi alla trasmissione e ritrasmissione dei dati:

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


• Dati provenienti dall'applicazione: TCP incapsula i dati in un segmento e lo passa a IP.
Ogni segmento include un numero di sequenza che rappresenta il numero del primo byte
di dati del segmento nel flusso di byte.
• Timeout: TCP ritrasmette il segmento che lo ha causato e riavvia il timer
• Ricezione di un ACK: TCP confronta il valore y di ACK con la propria variabile SendBase,
uguale al numero di sequenza del più vecchio byte che non ha ancora ricevuto un
acknowledgement. SendBase - 1 è il numero dell'ultimo byte che sappiamo essere stato
ricevuto correttamente. Gli ack di TCP sono cumulativi, quindi y conferma la ricezione
anche di tutti i byte precedenti al numero y.
Se y > SendBase, il mittente aggiorna SendBase e poi, se non ci sono ancora segmenti in
attesa di ack, riavvia il timer



Raddoppio dell'intervallo di timeout
Se il timer scade, TCP ritrasmette il pacchetto ma aspetta il doppio del tempo
(indipendentemente da EstimatedRTT e tutto il resto). Di conseguenza, gli intervalli crescono
esponenzialmente ad ogni ritrasmissione.
Tuttavia, tutte le volte che avviene uno degli altri possibili avvenimenti (ricezione di un ACK o
ricezione di dati dall'applicazione superiore) il timer viene resettato in base a EstimatedRTT e
DevRTT. Se la rete è congestionata, TCP si comporta con rispetto verso essa!

Ritrasmissione rapida
Il mittente può in molti casi rilevare la perdita dei pacchetti ben prima che si verifichi l'evento di
timeout grazie agli ACK duplicati relativi a un segmento il cui ACK è già stato ricevuto dal
mittente.
Se il destinatario TCP riceve un pacchetto con un numero di sequenza superiore al prossimo
numero di sequenza atteso, rileva un buco nel flusso di dati [segmento mancante]. Tale vuoto
potrebbe essere dovuto a una perdita o a un riordinamento dei pacchetti all'interno della rete. Il
destinatario reinvia l'ack relativo all'ultimo byte di dati ricevuto correttamente.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017



Se il mittente TCP riceve tre ACK duplicati per lo stesso dato, considera questo evento come
indice che il segmento che lo segue è andato perduto.
Nel caso in cui siano stati ricevuti tre ACK duplicati, il mittente TCP effettua una ritrasmissione
rapida (fast retransmit) rispedendo il segmento mancante prima che scada il timer.

Go-Back-N o Selective Repeat?
TCP, per il fatto della ritrasmissione a partire dall'ultimo byte ricevuto correttamente e gli ack
cumulativi, si avvicina a GBN.
Tuttavia esistono alcune differenze chiave tra TCP e Go-Back-N.
Molte implementazioni TCP memorizzano in un buffer i segmenti ricevuti correttamente, ma non
in ordine.
Una modifica proposta a TCP, il cosiddetto riscontro selettivo (selective acknowledgment),
consente al destinatario di mandare acknowledgement in modo selettivo per i segmenti non in
ordine anziché cumulativamente per l'ultimo segmento ricevuto senza errori e nell'ordine giusto.
Se combinato con la ritrasmissione selettiva, TCP è molto simile a un generico protocollo SR.

Controllo di flusso
Se l'applicazione sul ricevente è lenta nella lettura dei dati può accadere che il mittente mandi in
overflow il buffer di ricezione inviando molti dati troppo rapidamente.
TCP offre un servizio di controllo di flusso (flow-control service) alle proprie trasmissioni per
evitare che il mittente saturi il destinatario. Il servizio paragona la frequenza d'invio del mittente
con quella di lettura del ricevente. I mittenti TCP possono anche essere rallentati dalla
congestione nella rete IP (controllo di congestione).
TCP offre controllo di flusso facendo mantenere al mittente una variabile finestra di ricezione
(receive window) che fornisce al mittente un'indicazione dello spazio libero disponibile nel buffer
del destinatario. Dato che TCP è full duplex, i due mittenti hanno finestre di ricezione distinte!
L'host A sta inviando file all'host B.
Definiamo le seguenti variabili.
• LastByteRead: numero dell'ultimo byte nel flusso di dati che il processo applicativo in B ha
letto dal buffer.
• LastByteRcvd: numero dell'ultimo byte, nel flusso di dati, che proviene dalla rete e che è
stato copiato nel buffer di ricezione di B
• RcvBuffer: buffer di ricezione per la connessione
• rwnd: finestra di ricezione

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


TCP non può mandare in overflow il buffer, quindi
LastByteRcvd - LastByteRead ≤ RcvBuffer
rwnd = RcvBuffer - [LastByteRcvd - LastByteRead]

B comunica all'Host A quanto spazio disponibile sia presente nel buffer della connessione,
scrivendo il valore corrente di rwnd nel campo apposito dei segmenti che manda ad A.
B inizializza rwnd con il valore di RcvBuffer e, ovviamente, deve tenere traccia di variabili
specifiche per ogni connessione.

A tiene traccia di due variabili:
• LastByteSent
• LastByteAcked
La differenza fra le due dice i byte mandati per i quali si sta ancora attendendo un ack.
LastByteSent - LastByteAcked ≤ rwnd
A non manda in overflow il buffer di ricezione di B.
Le specifiche TCP richiedono che A continui a inviare segmenti con un byte di dati quando la
finestra di ricezione di B è zero, per evitare che il trasferimento si blocchi completamente.

Gestione della connessione TCP
1. TCP lato client invita uno speciale segmento al TCP lato server. Questo segmento non
contiene dati, ma uno dei bit nell'header, il bit SYN, è posto a 1. Questo segmento viene
detto segmento SYN. Inoltre il client sceglie a caso un numero di sequenza iniziale
(client_isn) e lo pone nel campo numero di sequenza del segmento SYN.
2. Quando il datagramma IP contenente il segmento SYN viene consegnato al server, questo
estrae il segmento dal datagramma, alloca i buffer e le variabili TCP alla connessione e
invia un segmento di connessione approvata al client TCP. Il bit SYN è posto a 1 e il campo
ACK assume il valore client_isn+1. Infine il server sceglie il proprio numero di sequenza
iniziale (server_isn) e lo
mette nel campo numero di
sequenza. Questo è detto
segmento SYNACK
3. Alla ricezione del segmento
SYNACK anche il client alloca
buffer e variabili alla
connessione. Client invia un
altro segmento al server,
ponendo a server_isn+1 il
campo ACK. Il bit SYN è a 0.
Il campo dati può già
contenere informazioni da
mandare al server.
D'ora in poi il bit SYN sarà sempre a
0.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Questo scambio di 3 messaggi è il
three-way handshake.


Quando si termina una connessione, le
risorse (buffer e variabili) vengono
deallocate.
A manda un comando di chiusura, che
forza l'invio di un segmento TCP
speciale con bit FIN posto a 1.
Quando B questo segmento, manda un
ack e spedisce il proprio segmento di
shutdown con bit FIN posto a 1.
A risponde con un ack e le risorse
vengono deallocate.




Cosa succede se un server riceve un pacchetto TCP SYN da un client il cui numero di
porta/indirizzo IP non corrispondono ad alcuna socket nell'host? Per esempio, il server riceve una
richiesta sulla porta 80 ma non è in ascolto su quella porta.
Allora invia al mittente un messaggio di reset con il bit RST posto a 1.


Principi del controllo di congestione
Generalmente, la perdita di pacchetti è causata da buffer overflow nei router quando il traffico
diventa eccessivamente intenso.

Cause e costi della congestione
Scenario 1: due mittenti e un router con buffer illimitati
R = capacità del router

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017



Il collegamento non è in grado di consegnare pacchetti al destinatario a un tasso maggiore di R/2.
Quando la velocità di invio si avvicina a R/2 [da sx] il ritardo medio cresce sempre di più.
Quando la velocità supera R/2, il numero medio dei pacchetti in coda continua a crescere e il
ritardo medio tende a ∞!
Quando il tasso di arrivo dei pacchetti si avvicina alla capacità del collegamento, si rilevano
lunghi ritardi di accodamento!

Scenario 2: due mittenti e un router con buffer limitato
I pacchetti che giungono in un buffer pieno saranno scartati.
Carico offerto (offered load): tasso al quale il livello di trasporto invia segmenti.
La velocità d'invio non supera R/2, ma tutto viene trasmesso e ricevuto.
Se ammettiamo che il mittente rimandi il pacchetto solo quando questo viene perso (per esempio
a causa di buffer overflow), il throughput va asintoticamente a R/3.
Se ammettiamo che il mittente possa andare in timeout e ci sia perdita di pacchetti, ci sono
ulteriori costi. Il throughput va asintoticamente a R/4.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Scenario 3: quattro mittenti, router con buffer finiti e percorsi composti da più collegamenti





Il motivo della diminuzione del throughput al crescere del traffico diventa evidente quando si
considera la quantità di lavoro sprecato da parte della rete. In uno scenario di traffico intenso,
ogni qualvolta un pacchetto viene scartato sul router del secondo hop, il lavoro effettuato dal
router del primo hop nell'instradamento del pacchetto verso il secondo router finisce per essere
sprecato. La rete avrebbe funzionato altrettanto bene (anzi, altrettanto male) se il primo router
avesse semplicemente scartato il pacchetto e fosse rimasto inattivo. Più nello specifico, la
capacità trasmissiva utilizzata dal primo router per instradare il pacchetto al secondo potrebbe
essere utilizzata in modo più proficuo trasmettendo un altro pacchetto.
L'eliminazine di pacchetti per via della congestione costa!


Controllo di congestione TCP
TCP impone a ciascun mittente un limite alla velocità di invio sulla propria connessione in
funzione della congestione di rete percepita.
Il meccanismo di controllo di congestione TCP fa tener traccia agli estremi della connessione di
una variabile aggiuntiva: la finestra di congestione (congestion window), indicata con cwnd, che
impone un vincolo alla velocità di immissione di traffico sulla rete da parte del mittente.
LastByteSent - LastByteAcked ≤ min{cwnd, rwnd}
Assumiamo che il buffer di ricezione sia abbastanza grande da trascurare il vincolo della finestra di
ricezione
LastByteSent - LastByteAcked ≤ cwnd
Definiamo evento di perdita per il mittente TCP l'occorrenza o di un timeout o della ricezione di
tre ACK duplicati da parte del destinatario.
Un evento di perdita indica al mittente che c'è congestione!
Se gli ack arrivano con frequenza relativamente bassa, allora la finestra di congestione verrà
ampliata piuttosto lentamente.
Se gli ack arrivano con frequenza più alta, la finestra di congestione verrà ampliata più
rapidamente.
Dato che TCP utilizza gli acknowledgement per scatenare (o temporizzare) gli incrementi
dell'ampiezza della finestra di congestione, si dice che TCP è auto-temporizzato (self-clocking).

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


TCP come può capire a che tasso trasmettere?
Principi guida di TCP:
• Un segmento perso implica congestione, quindi i tassi di trasmissione del mittente TCP
dovrebbero essere decrementati quando un segmento viene perso
• Un acknowledgement indica che la rete sta consegnando i segmenti del mittente al
ricevente e quindi il tasso di trasmissione del mittente può essere aumentato quando
arriva un acknowledgement non duplicato
• Rilevamento della larghezza di banda tramite gli ack

Il meccanismo di controllo di congestione implementato in TCP prevede:
la dimensione della finestra di invio in funzione del traffico

Algoritmo di controllo della congestione TCP
Tre componenti fondamentali: slow start, congestion avoidance e fast recovery.
L'unica non obbligatoria [ma suggerita] è la fast recovery

1) Slow start
Il valore di cwnd parte da 1 MSS e aumenta di 1 MSS ogni
volta che il mittente riceve un ack.
Ogni volta che il trasferimento va a buon fine, il mittente
invia due segmenti per ogni ack ricevuto. La velocità
trasmissiva raddoppia ad ogni RTT.
Se c'è un evento di timeout, il mittente reimposta cwnd a 1
e riparte da capo. Inoltre, pone il valore di una variabile
ssthresh (slow start threshold) a cwnd/2: metà del valore
che aveva la finestra di congestione quando la congestione è
stata rilevata.
Quando cwnd arriva a valere ssthresh, TCP entra in una fase
di congestion avoidance.
L'ultimo modo in cui una fase di slow start può terminare è
se si ricevono 3 ack duplicati: in questo caso, avvengono
ritrasmissione rapida e fast recovery.

2) Congestion avoidance
Arrivato a cwnd = ssthresh/2 si incrementa cwnd di 1 MSS ogni RTT.
L'algoritmo di congestion avoidance quando si verifica un timeout si comporta nello stesso modo
di slow start: il valore di cwnd è posto uguale a 1 MSS e il valore di ssthresh viene impostato alla
metà del valore di cwnd al momento del timeout.
In caso di acknowledgement duplicati TCP dimezza il valore di cwnd (aggiungendo 3 MSS per
tenere conto dei duplicati ricevuti) e imposta il valore di ssthresh pari al valore di cwnd al
momento del ricevimento degli ACK. Infine, TCP entra nello stato di fast recovery.

3) Fast recovery
cwnd incrementato di 1 MSS per ogni ACK duplicato ricevuto relativamente al segmento perso
che ha causato l'entrata di TCP nello stato di fast recovery. Infine, quando arriva un ACK per il
segmento perso, TCP entra nello stato di congestion avoidance dopo aver ridotto il valore di
cwnd.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Retrospettiva sul controllo di congestione TCP
[assumendo che le perdite siano indicate da triplo ack e non da timeout]
Il controllo di congestione di TCP consiste in un incremento additivo lineare della cwnd pari a 1
MSS per RTT e quindi di un decremento moltiplicativo che dimezza la cwnd in corrispondenza di
un evento di triplice ACK duplicato.
AIMD: additive-increase multiplicative-decrease


La maggior parte dei protocolli TCP usa l'algoritmo Reno che include fast recovery. L'originale
Tahoe non lo includeva.
Vegas tenta di evitare la congestione a priori.
CUBIC è l'algoritmo TCP di default su Linux.

Descrizione macroscopica del throughput TCP
Sappiamo che TCP ha un comportamento a dente di sega. Ma quale potrebbe essere il throughput
medio?
0.75 ∗ 𝑊
𝑡ℎ𝑟𝑜𝑢𝑔ℎ𝑝𝑢𝑡_𝑚𝑒𝑑𝑖𝑜 =
𝑅𝑇𝑇

Con W = ampiezza media della finestra
Detto L il tasso di perdita
1.22 ∗ 𝑀𝑆𝑆
𝑡ℎ𝑟𝑜𝑢𝑔ℎ𝑝𝑢𝑡_𝑚𝑒𝑑𝑖𝑜 =
𝑅𝑇𝑇 𝐿

Utilizzazione del canale
@ ∗ "/#
𝑈 =
#BB C "/#

Assenza di stallo:
W * MSS/R = MSS/R + RTT
W = 1 + R/MSS RTT

Consideriamo il caso di due terminali, uno al CERN di Ginevra e l'altro al Fermilab di Chicago
collegati tra loro da un link con ampiezza di banda R=1Gbps. Il tempo di RTT tra di essi vale 30 ms.
Supponiamo che i dati siano scambiati in pacchetti della dimensione L=1.000 byte. Quanto deve
essere grande la finestra affinché l'utilizzazione del canale sia continua? Il numero di pacchetti
minimo (si trascurino i meccanismi TCP di controllo flusso e congestione) è di:
3.751

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017



Consideriamo il caso di due terminali, uno al CERN di Ginevra e l'altro al Fermilab di Chicago
collegati tra loro da un link con ampiezza di banda R=1Gbps. Il tempo di RTT tra di essi vale 20 ms.
Supponiamo che i dati siano scambiati in pacchetti della dimensione L=2.000 byte. Quanto deve
essere grande la finestra affinché l'utilizzazione del canale sia continua? Il numero di pacchetti
minimo (si trascurino i meccanismi TCP di controllo flusso e congestione) è di:
1.251

Si definisce latenza come il tempo trascorso da quando il client inizia la connessione TCP a quando
riceve l'oggetto richiesto nella sua interezza. Spedite un oggetto della dimensione di O=100 Kbyte.
Se la MSS e' S=500 byte ed RTT=100 ms, supponendo che il protocollo di trasporto usi finestre
statiche di dimensione W (numero intero di segmenti), determinare il piu' piccolo valore di W per
cui la latenza e' la minima possibile (nonche' il valore della latenza stessa) per una ampiezza di
banda di R=1 Mbps. Ignorate gli eventuali overhead di intestazione introdotti dagli strati di
trasporto, rete e link ed escludete che ci possano essere eventi di perdita dati.
Latenza minima=1 s, W=26

In una connessione ad alta velocità i dati vengono trasferiti in segmenti di MSS pari a 1500 byte, su
un tratto in cui in media RTT=100ms. Per raggiungere un throughput di 10 Gbps, quale deve essere
la frequenza di smarrimento(numero di pacchetti smarriti su numero di pacchetti inviati)?
2x10-10

Fairness
Abbiamo K connessioni end-to-end.
Si dice che un meccanismo di controllo di congestione sia equo (fair) se la velocità trasmissiva
media di ciascuna connessione è approssimativamente R/K
È stato dimostrato che quando più connessioni condividono un collo di bottiglia, quelle con RTT
inferiore sono in grado di acquisire più rapidamente larghezza di banda su un particolare
collegamento, non appena la banda si libera. In altre parole, aprono le proprie finestre di
congestione più rapidamente e quindi avranno throughput superiori rispetto alle connessioni con
RTT più alto.
Le applicazioni che fanno uso di UDP non sono fair. Le sorgenti UDP possono soffocare il traffico
TCP.

Supponiamo che ci sia un link con banda 900 kbps che supporta 10 applicazioni client/server su
TCP in contemporanea che trasferiscono file di grandi dimensioni.Secondo il meccanismo di
fairness di TCP, ciascuna connessione in media ottiene 1/10 della banda disponibile, cioè 90 kbps.
Se si aggiunge una 11esima applicazione che usa 20 connessioni TCP parallele (ad esempio HTTP
parallelo), per trasferire file di grandi dimensioni, quanto sarà la frazione di banda in media
occupata da questa nuova applicazione?
600 kbps [20/30 della banda disponibile]

Scaricate un file di grandi dimensioni via HTTP alla velocità media di T = 50kBps da un sito per cui
RTT=90 ms.La dimensione dei singoli pacchetti trasferiti è di L=500 byte. Trascurando gli eventi di
timeout si hanno solo ACK ripetuti tre volte per cui si passa con incremento lineare da finestre
della dimensione di nL/2 a finestre della dimensione di nL e poi si ripete per l'arrivo di 3 ACK
duplicati. Il valore di n , numero di pacchetti massimo nella finestra è quindi:
n = 4/3 * T * RTT / L = 12

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Scaricate un file di grandi dimensioni via HTTP alla velocità media di T = 75kBps da un sito per cui
RTT=100 ms.La dimensione dei singoli pacchetti trasferiti è di L=500 byte. Trascurando gli eventi
di timeout si hanno solo ACK ripetuti tre volte per cui si passa con incremento lineare da finestre
della dimensione di nL/2 a finestre della dimensione di nL e poi si ripete per l'arrivo di 3 ACK
duplicati. Il valore di n , numero di pacchetti massimo nella finestra è quindi:
n = 4/3 * T * RTT / L = 20


Scaricate un file di grandi dimensioni via HTTP alla velocità media di T = 300kBps da un sito per cui
RTT=100 ms.La dimensione dei singoli pacchetti trasferiti è di L=500 byte. Trascurando gli eventi
di timeout si hanno solo ACK ripetuti tre volte per cui si passa con incremento lineare da finestre
della dimensione di nL/2 a finestre della dimensione di nL e poi si ripete per l'arrivo di 3 ACK
duplicati. Il valore di n , numero di pacchetti massimo nella finestra è quindi:
n = 4/3 * T * RTT / L = 80
































Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Livello di rete
Il livello di rete prende i segmenti dal livello di trasporto e li incapsula in datagrammi, che
trasmette al router. Colui che riceve i datagrammi dal proprio router contiguo estrae i segmenti e
li consegna al livello di trasporto.
I router inoltrano i datagrammi dai loro collegamenti di ingresso a quelli di uscita.

Inoltro e instradamento
Inoltro (forwarding): quando un router riceve un pacchetto, lo deve trasferire sull'appropriato
collegamento in uscita. Azione locale con cui il router trasferisce i pacchetti da un'interfaccia di
ingresso a quella in uscita.
Instradamento (routing): il network layer deve determinare -attraverso algoritmi di
instradamento- il percorso che i pacchetti devono seguire. Processo di rete che determina i
percorsi dei pacchetti nel loro viaggio dalla sorgente alla destinazione

Per inoltrare i pacchetti i router estraggono dal campo di intestazione il valore che utilizzano come
indice nella tabella di inoltro (forwarding table). Il risultato indica a quale interfaccia di
collegamento debba essere diretto il pacchetto. A seconda del protocollo, il valore
nell'intestazione del pacchetto può rappresentare l'indirizzo di destinazione o la connessione cui
appartiene.
L'algoritmo di instradamento determina i valori inseriti nelle tabelle di inoltro dei router.
L'algoritmo di inoltro può essere centralizzato o decentralizzato. In entrambi i casi, il router riceve
messaggi di instradamento, che vengono utilizzati per configurare la sua tabella di inoltro.
I router sono dispositivi a livello di rete (livello 3), ma devono anche implementare protocolli di
livello 2 perché i dispositivi di livello 3 richiedono i servizi del livello 2 per implementare le loro
funzionalità (di livello 3).
Terza funzione: instaurazione della connessione

Indicare quali tra gli strati della pila protocollare di Internet compiono il processo di instradamento
durante il percorso tra gli host mittente e destinatario
Rete


Modello di servizio della rete
Definisce le caratteristiche di trasporto end-to-end di dati tra i sistemi periferici di invio e di
ricezione.
Servizi che possono essere offerti:
• Consegna garantita: prima o poi il pacchetto giunge a destinazione
• Consegna garantita con ritardo limitato
• Consegna ordinata [di un flusso di pacchetti]
• Banda minima garantita
• Jitter limitato: il lasso di tempo tra la trasmissione di due pacchetti consecutivi è uguale a
quello di ricezione (o non supera un certo limite)
• Servizi di sicurezza





Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017
ATM offre due modalità di servizio:
• CBR (constant bit-rate): si dota un flusso di pacchetti di un canale virtuale con proprietà
simili a quelle di un collegamento trasmissivo dedicato a banda fissa tra host di invio e di
ricezione
• ABR (available bit-rate): può smarrire celle, ma il loro ordine non viene alterato e c'è MCR
(minimum cell transmission rate) garantito


Reti datagram
Pacchetto va contrassegnato con l'indirizzo del destinatario. Ogni router presenta una tabella di
inoltro che fa corrispondere gli indirizzi di destinazione alle interfacce di collegamento.
Quando si verificano corrispondenze multiple, il router adotta la regola di corrispondenza a
prefisso più lungo; in altre parole, viene determinata la corrispondenza più lunga all'interno della
tabella e i pacchetti vengono inoltrati all'interfaccia di collegamento associata.
I router nelle reti datagram non conservano informazioni sullo stato della connessione, ma quelle
sullo stato dell'inoltro. Tuttavia, la scala temporale in cui l'informazione di stato dell'inoltro varia è
relativamente lunga. Infatti, in queste reti, le tabelle di inoltro vengono gestite da algoritmi che le
aggiornano in periodi che vanno da 1 a 5 minuti circa.

Se ci sono sei router tra due host, ignorando la frammentazione quante tabelle di routing saranno
utilizzate da un pacchetto che viaggia tra i due host?
7

Se invio un datagramma di 3000 byte in un link con MTU di 500 byte quanti frammenti sono
generati? Il datagramma originale ha il numero 305 nel campo "identification number". Assumete
un overhead di intestazione tipico.
7 frammenti (6 da 500byte e uno da 120byte)

Se un applicativo genera una sequenza di 40 byte ogni 20ms e ciascuna sequenza viene
incapsulata in un pacchetto TCP e poi in un pacchetto IP quale percentuale del datagram ottenuto
sarà almeno di overhead rispetto alla sequenza generata dall’applicativo?
La tua risposta : 50%

Se un applicativo genera una sequenza di 12 byte ogni 20ms e ciascuna sequenza viene
incapsulata in un pacchetto UDP e poi in un pacchetto IP, quale larghezza di banda avrà almeno
bisogno per riuscire a trasmettere per un lungo tempo?
16kbps

Supponiamo che i datagrammi che si scambiano due host A e B siano di dimensione massima di
1540 byte (header inclusi). Assumendo intestazioni tipiche a livello di rete e trasporto, quanti
datagrammi sono necessari per inviare un file MP3 da 3,001MB su una connessione TCP?
2.001

Formato dei datagrammi
Campi principali:
• Numero di versione: 4 bit. Specificano la versione del protocollo IP del datagramma.
• Lunghezza dell'header: 4 bit. Indicano dove iniziano effettivamente i dati.
• Tipo di servizio (TOS, type of service): 8 bit. Distinguono i diversi tipi di datagramma.
Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017
• Lunghezza del datagramma: 16 bit. Comunque raramente i pacchetti superano i 1500 byte
• Identificatore, flag, spiazzamento di frammentazione: legati alla frammentazione. IPv6
non consente frammentazione sui router
• Tempo di vita (TTL, time-to-live): assicura che i datagrammi non rimangano in circolazione
per sempre nella rete
• Protocollo: usato solo quando il fatagramma raggiunge la destinazione finale. Indica il
protocollo a livello di trasporto a cui vanno passati i dati del datagramma [6 = TCP, 17 =
UDP]. Il ruolo è analogo al numero di porta nel segmento a livello di trasporto. Protocollo
collega livello di rete e di trasporto, porta collega livello di trasporto e applicazione.
• Checksum dell'header: consente al router di individuare errori sui bit dei datagrammi
ricevuti
• IP sorgente e destinazione
• Opzioni: consentono di estendere l'intestazione IP. Eliminate da IPv6.
• Dati (payload): generalmente contiene il segmento a livello di trasporto



Frammentazione dei datagrammi IP
I frame ethernet possono trasportare fino a 1500 byte di dati.
MTU (maximum transmission unit): dimensione massima di un frame a livello di collegamento
Le diverse tratte del percorso mittente-destinatario possono essere di tipologie diverse e avere
MTU diverse. Quindi un router può frammentare i dati del datagramma IP in due o più
datagrammi IP più piccoli, detti frammenti, e trasferirli sul collegamento di uscita. I frammenti
dovranno essere riassemblati prima di raggiungere il livello di trasporto alla destinazione, perché
TCP e UDP attendono segmenti interi dal livello di rete.
Sono i sistemi periferici che riassemblano i datagrammi, non i router interni.
Nell'header IPv4 ci sono i campi identificazione, flag, spiazzamento di frammentazione.

Durante una connessione TCP un pacchetto IPv4 in viaggio dall'host A all'host B viene
frammentato in nove parti. Una delle parti, diciamo la settima non arriva a destinazione all'host B.
Che cosa succede?
Dopo la ricezione di un ACK duplicato tre volte del pacchetto precedente o allo scadere del
timeout, A rimanda l'intero pacchetto

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017




Il payload del datagramma viene passato al livello di trasporto presso la destinazione soltanto
dopo che il livello IP ha completamente ricostruito il datagramma originario. Se qualche
frammento non arriva a destinazione, il datagramma incompleto viene scartato senza essere
inoltrato al livello di trasporto.
IPv6 elimina la frammentazione!


Indirizzamento IPv4
Interfaccia: confine fra host e collegamento fisico
|| confine tra un router e i suoi collegamenti
IP richiede che tutte le sue interfacce abbiano un
indirizzo IP di 32 bit (4 byte). Ci sono 232 indirizzi IP,
circa 4 miliardi. Sono scritti normalmente in
notazione decimale puntata
Le sottoreti sono anche dette reti IP.
IP assegna a una sottorete un indirizzo del tipo
223.1.1.0/24, dove la notazione /24 è detta
maschera di sottorete (subnet mask) e indica che i
24 bit più a sinistra definiscono l'indirizzo della
sottorete. Nell'esempio ci sono 6 sottoreti: tre per
la comunicazione tra router, e 3 sono le reti "locali"
di PC. Ovvero: abbiamo una rete per ogni interfaccia che si collega ai computer più le tre sottoreti
per le interfacce che fanno comunicare i router tra loro.
CIDR (classless interdomain router): strategia di assegnazione indirizzi IP.
Forma decimale puntata a.b.c.d/x. Gli x bit a sinistra formano il prefisso, i restanti bit vengono
utilizzati per indicare gli host o per definire una sottorete della rete.
Prima di CIDR si usava il classful addressing: le reti con subnet mask di 8, 16 e 24 bit erano dette di
classe A, B e C. Non si potevano usare altre dimensioni!

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017



Indirizzo IP broadcast (livello 2): 255.255.255.255. Messaggio consegnato a tutti gli host nella
sottorete.
Indirizzo sottorete = AND logico fra indirizzo e maschera di rete

Una organizzazione ha 1600 host a cui deve assegnare un indirizzo IP. Richiede al suo ISP un blocco
di indirizzi della forma a.b.c.d/x in cui x indica il numero di bit che denotano la parte di rete
dell'indirizzo. Quale percentuale di indirizzi rimangono liberi nel blocco assegnato?
22%

Una organizzazione ha 7000 host a cui deve assegnare un indirizzo IP. Richiede al suo ISP un blocco
di indirizzi della forma a.b.c.d/x in cui x indica il numero di bit che denotano la parte di rete
dell'indirizzo. Quanto vale x?
19

Arrivate in una organizzazione e vi danno il seguente configurazione per la interfaccia di rete del
vostro calcolatore:
IP: 200.23.10.40
NetMask: 255.255.255.240
Gateway: 200.23.10.33
Quante schede di rete, inclusa la vostra, possono essere configurate su questa lan, esclusa
l'interfaccia del router?
13 [16 - uno per la rete - uno per il broadcast - uno per il router]

Arrivate in una organizzazione e vi danno il seguente configurazione per la interfaccia di rete del
vostro calcolatore:
IP: 200.23.10.5
NetMask: 255.255.255.224
Gateway: 200.23.10.1
Quante schede di rete, inclusa la vostra, possono essere configurate su questa lan, esclusa
l'interfaccia del router?
29 [32 - uno per la rete - uno per il broadcast - uno per il router]

Una organizzazione gestisce un indirizzo 149.76.1.0/24. Deve suddividerlo tra le sue 6 sedi.
Imposta una maschera a 27 bit che in notazione decimale risulta: 255.255.255.224. Ad un host
viene assegnato l’indirizzo 149.76.1.84: quali sono gli indirizzi riservati - indirizzo di rete ed
indirizzo di broadcast - per quella sottorete?
149.76.1.64 e 149.76.1.95

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Una organizzazione gestisce un indirizzo 149.76.1.0/24. Deve suddividerlo tra le sue 8 sedi.
Imposta una maschera a 27 bit che in notazione decimale risulta: 255.255.255.224. Dovete
amministrare la sottorete 149.76.1.32/27: quali sono gli indirizzi riservati - indirizzo di rete ed
indirizzo di broadcast - per quella sottorete?
149.76.1.32 e 149.76.1.63


Come ottenere l'indirizzo di un host: DHCP
DHCP: dynamic host configuration protocol
Consente a un host di ottenere un indirizzo IP in modo automatico, così come di apprendere
informazioni aggiuntive, quali la sua maschera di sottorete, l'indirizzo del router per uscire dalla
sottorete (gateway) e l'indirizzo del suo DNS server locale.
Spesso DHCP assegna un IP temporaneo. Viene detto protocollo plug&play per la capacità di
automatizzare la connessione degli host alla rete.
DHCP è un protocollo client-server.
Per i nuovi host, DHCP si articola in 4 punti:
• Individuazione del server DHCP: host identifica il server con cui interagire. Messaggio UDP
broadcast attraverso la porta 67 DHCP discover. Destinazione: 255.255.255.255, mittente:
0.0.0.0 (che significa che l'host "ascolta" su tutte le interfacce di rete che possiede)
• Offerta del server DHCP: server manda messaggio DHCP offer a 255.255.255.255. Ciascun
messaggio di offerta contiene l'ID di transazione del messaggio di identificazione ricevuto,
l'IP proposto al client, la subnet mask e la durata della concessione (lease time)
• Richiesta DHCP: il client sceglie tra le offerte dei server e risponde con un messaggio DHCP
request, che riporta i parametri di configurazione
• Conferma DHCP: il server risponde al messaggio di richiesta DHCP con un DHCP ACK, che
conferma i parametri richiesti

DHCP fornisce indirizzi IP dinamici sia pubblici che privati

NAT: Network Address Translation
Reame (realm) con indirizzi privati: una rete i cui indirizzi hanno significato solo per i dispositivi
interni.
I router abilitati al NAT appaiono all'esterno come un unico dispositivo con un unico indirizzo IP. In
sostanza, il router abilitato al NAT nasconde i dettagli della rete domestica al mondo esterno.
Se tutti i datagrammi in arrivo al router NAT dalla rete geografica hanno lo stesso indirizzo IP
destinazione (nello specifico, quello dell'interfaccia sul lato WAN del router NAT), allora come
apprende il router a quale host interno dovrebbe essere inoltrato un dato datagramma? Il trucco
consiste nell'utilizzare una tabella di traduzione NAT (NAT translation table) nel router NAT e
includere nelle righe di tale tabella i numeri di porta oltre che gli indirizzi IP.
Critiche:
• I numeri di porta dovrebbero indicare i processi, non gli host
• I router dovrebbero elaborare i pacchetti solo fino al livello 3
• Viene violato il principio end-to-end
• Bisognerebbe usare IPv6 anziché tamponare il problema dei pochi indirizzi IP con NAT
Sono permesse al più 216 connessioni contemporanee con la rete pubblica attraverso il NAT.

Il NAT permette di avere:
una sottorete che non usa indirizzi pubblici

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


UPnP
Universal Plug&Play: protocollo che consente a un host di individuare e configurare un NAT
vicino. Viene usato per fornire il servizio di attraversamento del NAT (NAT traversal)
Con UPnP un'applicazione in esecuzione in un host può richiedere una corrispondenza NAT tra i
propri (indirizzo IP privato, numero di porta privato) e (indirizzo IP pubblico, numero di porta
pubblico) per un qualsiasi numero di porta pubblico. Se il NAT accetta la richiesta e crea una
corrispondenza, allora i nodi esterni possono iniziare connessioni TCP verso (indirizzo IP pubblico,
numero di porta pubblico). Inoltre, UPnP consente alle applicazioni di conoscere (indirizzo IP
pubblico, numero di porta pubblico), in modo che possano annunciarli al mondo esterno.
Riassumendo, UPnP consente a un host esterno di iniziare sessioni di comunicazione con host con
NAT, usando sia TCP che UDP. I NAT hanno costituito per molto tempo un problema per le
applicazioni P2P, ma UPnP, fornendo un'efficace e robusta soluzione per l'attraversamento del
NAT, può rappresentare la risposta al problema.


ICMP (Internet Control Message Protocol)
ICMP si trova appena sopra IP: i messaggi ICMP vengono trasportati come payload di IP,
esattamente come i segmenti TCP o UDP.
I messaggi ICMP hanno un campo tipo e un campo codice e contengono l'intestazione e i primi 8
byte del datagramma IP che ha provocato la generazione del messaggio, in modo che il mittente
possa identificare il datagramma che ha generato l'errore.
Ping invia un messaggio ICMP di tipo 8 e codice 0 verso l'host specificato. L'host destinazione,
vedendo la richiesta di echo, risponde con un messaggio ICMP di tipo 0 e codice 0.




Algoritmi di instradamento
Gli algoritmi di instradamento, che vengono eseguiti nei router di rete, si scambiano e calcolano le
informazioni che vengono usate per configurare le tabelle di inoltro.
Generalmente, un host è connesso direttamente al cosiddetto router predefinito (default router),
chiamato anche first-hop router ("router di primo hop"), cui trasferisce tutti i pacchetti diretti

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


all'esterno della sottorete. Faremo riferimento al router di default dell'host sorgente come router
sorgente, mentre il router predefinito dell'host di destinazione sarà il router di destinazione.
Si cerca il percorso a costo minimo (least-cost path). In certi casi può essere anche il percorso più
breve (shortest path).
Gli algoritmi di instradamento sono classificabili come:
• Globali: calcola il percorso a costo minimo conoscendo la struttura di tutta la rete.
L'algoritmo riceve in ingresso tutti i collegamenti tra i nodi e i loro costi. Gli algoritmi con
informazioni di stato globali sono spesso detti algoritmi link state (LS, o con stato del
collegamento), dato che l'algoritmo deve essere conscio del costo di ciascun collegamento
della rete
• Decentralizzati: il percorso a costo minimo viene calcolato in modo distribuito e iterativo.
nessun nodo possiede informazioni complete sul costo di tutti i collegamenti di rete.
Inizialmente i nodi conoscono soltanto i costi dei collegamenti a loro incidenti. Poi,
attraverso un processo iterativo e lo scambio di informazioni con i nodi adiacenti, un nodo
gradualmente calcola il percorso a costo minimo verso una destinazione o un insieme di
destinazioni.

Altro criterio:
• Statici: i percorsi cambiano raramente, spesso per intervento umano
• Dinamici: determinano gli instradamenti al variare del volume di traffico o della topologia
della rete

Altro criterio ancora:
• Load sensitive: i costi dei collegamenti variano dinamicamente per riflettere il livello
corrente di congestione
• Load insensitive: non sensibili al carico

Algoritmo link-state (LS)
Si fa inviare a ciascun nodo pacchetti sullo stato dei suoi collegamenti a tutti gli altri nodi della
rete. Questo viene detto link-state broadcast.

Algoritmo di Dijkstra
Dijkstra calcola il percorso a costo minimo da un nodo (l'origine, u) a tutti gli altri nodi nella rete, è
iterativo e ha le seguenti proprietà: dopo la k-esima iterazione, i percorsi a costo minimo sono noti
a k nodi di destinazione e, tra i percorsi a costo minimo verso tutti i nodi di destinazione, questi k
percorsi hanno i k costi più bassi.
D(v): costo minimo del percorso dal nodo origine alla destinazione v per quanto concerne
l'iterazione corrente dell'algoritmo
p(v): immediato predecessore di v lungo il percorso a minimo costo da u a v
N': sottoinsieme di nodi contenente tutti e soli i nodi v per cui il costo dall'origine u a v è noto.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017




Quando l'algoritmo LS termina, abbiamo per ciascun nodo il suo predecessore lungo il percorso a
costo minimo dal nodo origine. Per ciascun predecessore abbiamo il rispettivo predecessore, e in
questo modo riusciamo a costruire l'intero percorso dall'origine a tutte le destinazioni. La tabella
di inoltro in un nodo, diciamo u, può pertanto essere costruita da queste informazioni
memorizzando, per ciascuna destinazione, il nodo del successivo hop sul percorso a costo minimo
da u alla destinazione.
Costo: O(n2)
I router si possono auto-sincronizzare tra loro. Un modo per evitare tale auto-sincronizzazione è
determinare su ciascun router in modo casuale l'istante di emissione.

Algoritmo Distance Vector (DV)
LS usa informazioni globali, mentre distance vector è iterativo, asincrono e distribuito.
Distribuito: ciascun nodo riceve informazioni dai nodi adiacenti
Iterativo: questo processo si ripete fino a quando non interviene ulteriore scambio informativo tra
vicini.
Auto-terminante: il calcolo semplicemente si blocca
Asincrono: non richiede che tutti i nodi operino al passo con gli altri
Sia dx(y) il costo del percorso a costo minimo dal nodo x al nodo y. Allora i costi minimi sono
correlati dalla formula di Bellman-Ford:
dx(y) = minv{c(x,v) + dv(y)}

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017





Un nodo x aggiorna la propria stima del vettore delle distanze quando vede il cambiamento di
costo in uno dei collegamenti direttamente connessi o quando riceve da qualche vicino un vettore
aggiornato.
Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017




Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Modifica dei costi e guasto dei collegamenti
Ci può essere instradamento ciclico: un pacchetto destinato a x continua a rimbalzare fra y e z
Può diventare problema di conteggio all'infinito

Aggiunta dell'inversione avvelenata (poisoned reverse)
Se z instrada tramite y per raggiungere x, z informa y che la sua distanza da x è infinita, ovvero
Dz(x) = +∞
y quindi non tenterà mai di instradare attraverso z

In un algoritmo di routing che utilizza una metodologia distance-vector:
È necessario conoscere quali connessioni ci sono con i router vicini

Confronto fra LS e DV
N = insieme dei nodi (router)
E = insieme degli archi
• Complessità dei messaggi:
LS vuole che ciascun nodo conosca il costo di ogni collegamento nella rete. Ciò implica
l'invio di O(|N|*|E|) messaggi. Se cambia un costo, il costo va comunicato a tutti i nodi.
Quando cambiano i costi dei collegamenti, l'algoritmo DV propaga i risultati dei costi
cambiati se il nuovo costo ha causato la variazione del percorso a costo minimo per uno o
più nodi connessi a tale collegamento.
• Velocità di convergenza:
LS è un algoritmo O(N2) che richiede O(N*E) messaggi.
DV può convergere lentamente, presentare cicli e avere il problema del conteggio
all'infinito
• Robustezza
Un nodo può alterare o eliminare i pacchetti ricevuti in broadcast LS. Ma i nodi LS si
occupano di calcolare soltanto le proprie tabelle di inoltro, e gli altri nodi effettuano calcoli
simili per quanto li riguarda. Ciò significa che i calcoli di instradamento sono in qualche
modo isolati, il che fornisce un certo grado di robustezza.
Con DV, un nodo può comunicare percorsi a costo minimo errati a tutte le destinazioni.
Un calcolo errato su un nodo si può diffondere per l'intera rete

Nessuno dei due algoritmi è superiore ed entrambi vengono utilizzati
Gli algoritmi di instradamento a commutazione di circuito sono utilizzabili nelle reti a
commutazione di pacchetto quando si devono riservare risorse sui collegamenti


Instradamento gerarchico
• Scalabilità: Si deve fare qualcosa per ridurre la complessità del calcolo dei percorsi nelle
reti di grandi dimensioni
• Autonomia amministrativa: Da un punto di vista ideale, ciascuno dovrebbe essere in grado
di amministrare la propria rete nel modo auspicato, pur mantenendo la possibilità di
connetterla alle reti esterne
I router vengono organizzati in sistemi autonomi (AS), generalmente composti da gruppi di router
posti sotto lo stesso controllo amministrativo. I router di un AS eseguono lo stesso algoritmo di
instradamento (per esempio, un algoritmo LS o DV) e gli uni hanno informazioni sugli altri.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


L' algoritmo di instradamento in esecuzione in un AS è detto protocollo di instradamento interno
al sistema autonomo (intra-AS routing protocol). Ovviamente, è necessario connettere gli AS tra
loro, e pertanto uno o più router (i cosiddetti router gateway) avranno il compito aggiuntivo di
inoltrare pacchetti a destinazioni esterne.
In Internet tutti i sistemi autonomi usano lo stesso protocollo di instradamento intra-AS, chiamato
BGP4.


Un approccio, spesso utilizzato nella pratica, consiste nell'utilizzare un instradamento che prende il
nome di "instradamento a patata bollente" (hot-potato routing). In questo caso, il sistema
autonomo si sbarazza del pacchetto (la patata bollente) non appena possibile, per la precisione nel
modo meno costoso possibile. Ciò avviene facendo inviare il pacchetto da un router al gateway
con il minor costo (ovviamente scelto tra tutti i gateway che hanno un percorso verso la
destinazione)
Riepilogando, i problemi di scalabilità e di autorità amministrativa vengono risolti definendo dei
sistemi autonomi. All'interno del sistema autonomo, tutti i router adottano lo stesso protocollo di
instradamento interno. Tra loro, i sistemi autonomi eseguono lo stesso protocollo di
instradamento tra sistemi autonomi. Il problema di scalabilità viene risolto, dato che un router
intra-AS necessita soltanto delle informazioni sui router del proprio sistema autonomo. Il
problema dell'indipendenza amministrativa viene risolto dato che ogni organizzazione può
eseguire qualsiasi protocollo di instradamento intra-AS; però, ciascuna coppia di sistemi connessi
deve adottare lo stesso protocollo di instradamento inter-AS quando scambia informazioni di
raggiungibilità.

Considerate l’insieme di 8 nodi e 14 link con le seguenti caratteristiche: c(x,y)=6; c(x,v)=3; c(x,w)=1;
c(y,z)=14; c(y,v)=1; c(y,t)=4; c(v,w)=1; c(v;u)=1; c(v;t)=9; c(w;u)=3; c(u,t)=2; c(u,s)=4; c(s,t)=1,
c(t,z)=2. Determinare il numero di passi necessari al calcolo del percorso di minima distanza da x a
z, nonché il costo di questo percorso ed il nodo immediatamente precedente a z. Per passo si
intende l’insieme di operazioni eseguite in ogni ciclo, in particolare: aggiunta all’insieme dei nodi
esaminati di un nodo con percorso di costo minimo, aggiornamento dei percorsi di costo minimo.
Passi 6, costo 7, nodo t

Quale di queste caratteristiche si applica bene a BGP?
BGP deve essere usato all'interno di un autonomous system





Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Data Link
Terminologia
Host e router sono nodi [così come bridge e switch].
Canali di comunicazione che uniscono nodi adiacenti lungo communication path sono link.
Protocol data unit di livello 2 è detto frame e incapsula il datagramma (PDU livello 3).

Cosa fa?
Lo strato di link trasferisce datagrammi da un nodo al nodo fisicamente adiacente sopra un link.
Il datagramma viene trasferito da differenti protocolli di link su differenti link (es. Ethernet su un
link, 802.11 sull'ultimo link). Ogni protocollo di link fornisce servizi differenti (es. RDT, Reliable
Data Transfer).

Servizi
Lo strato di link:
• incapsula il datagramma nel frame (aggiunge header e coda)
• accede al canale, nel caso il mezzo sia condiviso
• utilizza il MAC al posto dell'IP per identificare la sorgente e la destinazione
• utilizza la consegna affidabile principalmente su reti ad alto tasso di errore (es. WiFi), non
su reti a basso tasso come la fibra
• controlla il flusso: bilancia invio e ricezione tra nodi adiacenti
• rileva gli errori causati da attenuazione di segnale e rumore. Il receiver rileva gli errori e o
chiede al sender la ritrasmissione, o scarta il frame
• in altri casi, il receiver identifica e corregge gli errori di bit senza richiedere la ritrasmissione
• sia half-duplex che full-duplex

Dov'è implementato?
In ogni nodo e host, nella Network Interface Card (NIC) o sul chip. È attaccato al sistema di bus
dell'host e consiste in una combinazione di HW/SW/FW.

Comunicazione fra adattatori
Mittente: incapsula datagram, aggiunge bit di controllo errori, RDT, controllo flusso, ...
Destinatario: controlla errori, RDT, flusso, ecc . L'adattatore è semi-autonomo.

Rilevazione degli errori
EDC: Error Detection and Correction (bit di ridondanza). NON affidabile al 100%!
D: Dati protetti dal controllo di errore [possono includere i campi di header]

Controllo di parità
Singolo bit di parità: rileva singoli errori sui bit
Bit di parità bidimensionale: rileva e corregge singoli errori sui bit

La parità bidimensionale può:
segnalare e correggere un qualunque errore singolo



Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Internet checksum
Rileva bit invertiti nel segmento trasmesso. Viene usato solo nello strato di trasporto!
Sender: contenuti segmento = sequenza di interi a 16 bit. Checksum = somma complemento 1 dei
contenuti del segmento. Il valore checksum è nel campo checksum UDP.
Receiver: calcola il checksum e verifica l'uguaglianza

Protocolli ad accesso multiplo
Algoritmo distribuito che determina come i nodi dividono il canale, ovvero quando un nodo può
trasmettere. Comunicazioni sulla divisione del canale devono usare il canale stesso! No
coordinamento con canale out-of-band.

Broadcast
Singolo canale condiviso. Due o più trasmissioni simultanee dai nodi creano interferenza! Quindi
solo un nodo alla volta può inviare con successo. Un nodo che riceve due o più segnali allo stesso
tempo verifica una collisione.

Protocollo di accesso multiplo ideale
Canale broadcast di tasso R bit/s
Un solo nodo vuole trasmettere -> invia a tasso R
M nodi vogliono trasmettere -> in media inviano a tasso R/M


Protocolli MAC di divisione di canale
Tassonomia
Tre classi generali:
• Canale partizionato: viene diviso in pezzi più piccoli, allocati a nodi per uso esclusivo. Ci
sono efficienza ed equità a carico alto, ma è inefficiente a basso carico.
• Accesso random: canale non diviso, collisioni permesse, c'è ripristino da collisione.
Efficiente a basso carico, troppe collisioni a carico alto
• Turni: accesso condiviso strettamente coordinato. Cerca il meglio dei due sopra!

TDMA [Time Division Multiple Access]
L'accesso al canale è "periodico", ogni stazione ottiene uno slot di lunghezza fissata (= tempo di
trasmissione pacchetto) ad ogni giro. Gli slot inutilizzati vanno IDLE.

FDMA [Frequency Division Multiple Access]
Spettro del canale diviso in bande di frequenza (una per ogni stazione). Tempo inutlizzato per la
trasmissione nella banda di frequenza è idle

Accesso random
Quando un nodo ha un pacchetto da inviare, lo trasmette al pieno tasso dati R del canale. Se due o
più nodi trasmettono c'è collisione. Il protocollo ad accesso random specifica come rilevare
collisioni e come riprendere dalle collisioni (es. ritrasmissioni ritardate)



Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


1. Slotted ALOHA
Si basa sulle seguenti ipotesi:
• tutti i frame hanno la stessa dimensione
• tempo diviso in slot di uguale dimensione (= tempo per trasmettere un frame)
• nodi iniziano a trasmettere frame solo all'inizio degli slot
• nodi sono sincronizzati
• se due o più nodi trasmettono nello stesso slot, tutti i nodi rilevano la collisione

Operazione:
• quando un nodo riceve un nuovo frame, esso trasmette nello slot successivo
• niente collisione: il nodo può inviare nuovo frame nello slot successivo
• se c'è collisione, il nodo ritrasmette frame in ogni slot successivo con probabilità p fino al
successo


Efficienza: frazione [sul lungo periodo] di slot con successo quando ci sono molti nodi, ognuno con
molti frame da inviare.
Per efficienza massima con N nodi, bisogna trovare p* che massimizza Np(1-p)N-1. Questo limite è
1/e = 0.37. Nel migliore dei casi il canale viene usato per trasmissioni utili il 37% del tempo!

La probabilità ottimale p* con cui viene ritentata una trasmissione dopo una collisione in slotted
ALOHA:
dipende dal numero di stazioni attive

Che caratteristiche ha il protocollo slotted ALOHA?
E' un protocollo che ha bisogno di sincronizzazione


2. ALOHA puro
È più semplice, non c'è sincronizzazione. Quando il primo frame arriva, viene tramsesso
immediatamente. La probabilità di collisione aumenta: un frame inviato a t0 collide con frame
inviati nell'intervallo di tempo [t0 - 1, t0 + 1].

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017



Efficienza = p(1 - p)2(N-1) = 1 / (2e) = 0.18. Nel migliore dei casi il canale viene usato per trasmissioni
utili il 18% del tempo, ancora peggio di slotted ALOHA!

Il protocollo ALOHA ha un'efficienza approssimativamente uguale a:
18%

Che caratteristiche ha il protocollo ALOHA?
E' un protocollo completamente distribuito

ALOHA è un protocollo nato per un sistema satellitare, quindi wireless, eppure utilizza un
meccanismo di collision detection. Come mai ciò non è in contraddizione con quanto detto a
proposito dell'utilizzo di CD nelle reti wireless?
Visto che Aloha è usato per un sistema wireless satellitare ci si trova in una rete in cui un host
centrale (il satellite probabilmente) invia dati a N host in broadcast (posizionati a terra) e riceve
dati potenzialmente da ognuno di questi.
Supponiamo innanzitutto che la frequenza di invio sia diversa da quella di ricezione.
Un meccanismo di collision detection può essere tranquillamente implementato, basta introdurre
un sistema basato sugli ACK.
In particolare quando il satellite parla, parla una volta sola per tutti, chi non sente qualcosa si
arrangia.
Quando, invece, una stazione di terra invia un pacchetto, dopo averlo ricevuto il satellite invia un
ACK per quel pacchetto (lo sentiranno tutti ma non è un problema, basta che lo senta
l'interessato). Se l'ACK non arriva alla stazione mittente questa riproverà dopo il solito tempo
"random" probabilistico.

Ad esempio:
t=0
A invia un pacchetto
B invia un pacchetto

t=n (n tempo per arrivare al satellite)
Satellite rileva collisione
Satellite non fa nulla

t=n+m (m tempo per cui si aspetta ACK)
A non riceve ACK
A estrae k=0
A invia
t=n+m+n
Satellite invia ACK

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


B non riceve ACK
B estrae k=1

t=n+m+512*k
B invia
t=n+m+512*k+n
Satellite invia ACK

Altro esempio:
t=0
A invia un pacchetto

t=n
Satellite lo riceve
Satellite fa ACK per A
t=2*n
B sente ACK di A, non fa nulla
A sente ACK di A, capisce che non deve ritrasmettere


3. CSMA (Carrier Sense Multiple Access)
Rileva accesso multiplo sulla portante. Ascolto prima di trasmettere! Se il canale è libero (idle)
trasmetto l'intero frame; se il canale è occupato, si differisce la trasmissione.
Le collisioni possono verificarsi lo stesso, a causa del ritardo di propagazione. Se c'è una collisione,
l'intero tempo di trasmissione del pacchetto viene sprecato.
Distanza e ritardo di propagazione contribuiscono a determinare la probabilità di collisione.

4. CSMA/CD (Carrier Sense Multiple Access with Collision Detection)
Come CSMA, ma le collisioni vengono rilevate in poco e le trasmissioni in collisione abortite,
riducendo lo spreco del canale. La rilevazione di collisione è facile in LAN cablate (si misurano le
intensità dei segnali e si confrontano i segnali trasmessi e ricevuti), difficile in LAN wireless (il
receiver si spegne mentre sta trasmettendo).


In un protocollo CSMA/CD per LAN Ethernet il segnale di jam è di 48 bit. Quanto tempo impiega un
host a trasmettere il segnale di jam su una LAN a 10 Mbps?
4,8 micro sec

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


In un protocollo CSMA/CD per LAN Ethernet il segnale di jam è di 48 bit. Quanto tempo impiega un
host a trasmettere il segnale di jam su una LAN a 100 Mbps?
0.48 micro sec


Domanda sul CSMA/CD
In telecomunicazioni CSMA/CD acronimo in inglese di accesso multiplo tramite rilevamento della
portante con rilevamento delle collisioni) è un protocollo di accesso multiplo, evoluzione del
protocollo di livello MAC CSMA, nato per la risoluzione dei conflitti di trasmissione, ovvero
collisioni, dovuti al CSMA puro, presenti in un certo dominio di collisione su reti locali cablate di
tipo broadcast.
Il protocollo implementa la direttiva: "Ascolta prima di trasmettere e mentre trasmetti. Se mentre
trasmetti rilevi collisioni, fermati, segnala a tutte le altre stazioni la collisione e riprova più tardi
secondo modalità di ritrasmissione stabilite." Le modalità di ritrasmissione stabilite di solito
consiste semplicemente in aspettare un tempo pseudo casuale e e poi ritentare la ritrasmissione.


Turni
1. Polling
Il nodo master invita gli slave a trasmettere a turno. È usato tipicamente con dispositivi slave
"dumb". Sono strettamente legati: polling overhead, latenza, singolo punto di failure (master).

2. Passaggio di token
Token di controllo passato da un nodo al successivo in sequenza.
Sono strettamente legati: token overhead, latenza, singolo punto di failure (token).


LAN
Indirizzi IP a 32 bit:
Usati nello strato di rete e per inoltro del livello 3

Indirizzo MAC (o di LAN o fisico o Ethernet)
Usato localmente per inviare il frame da una interfaccia ad un'altra inferfaccia fisicamente
collegata. È impresso nella ROM dell'adattatore e qualche volta è impostabile via SW

Indirizzi LAN
Ogni adattatore sulla LAN ha un unico indirizzo di LAN
Gli indirizzi MAC sono piatti, quindi si possono spostare schede di rete da un LAN all'altra
Gli indirizzi IP sono gerarchichi, quindi non sono portabili e dipendono dalla rete IP a cui il nodo è
collegato.


ARP (Address Resolution Protocol)
ARP table: ogni nodo IP (host, router) sulla LAN ha una tabella ARP, ovvero una mappa degli
indirizzi IP/MAC per qualche nodo di LAN.
TTL (Time To Live): tempo dopo cui mappatura sarà dimenticata (~20min).
È "plug&play" perché i nodi creano loro tabelle ARP senza l'intervento dell'amministratore di rete.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017
Il protocollo ARP:
mappa indirizzi IP in MAC address

Si dice spesso che il MAC è un indirizzo "fisico" e l'indirizzo IP è un indirizzo "logico": spiegate qual
è la differenza.
L'indirizzo MAC è proprio dell'interfaccia [scheda] di rete, è "scritto nell'hardware" e teoricamente
non si può cambiare, perché è impresso nella ROM dell’adattatore di rete (NIC). L'indirizzo IP
identifica il dispositivo in una rete e spesso è variabile: nella vita reale, spesso basta riavviare il
modem/router di casa o disconnettere e riconnettere un dispositivo per ricevere (in quest'ultimo
caso tramite DHCP) un indirizzo IP diverso.

Una rete 100BaseT di classe C è concentrata su uno switch ethernet. Uno host è collegato in
questa LAN: da quando è in funzione ha cercato di scaricare la posta elettronica dal mail server
ospitato su un host all’interno della rete, si è collegato al server DNS situato su un diverso host
all’interno della LAN, ed ha scaricato documenti via web da un sito esterno alla LAN. In questo
periodo non è stato contattato da nessun altro nodo. Quando cercate di visualizzare la sua tabella
ARP usando il comando “arp -a” al prompt della finestra di comandi, quante entry avrà la tabella
ARP se in nodi funzionanti in rete sono 147?
3

Una rete 100BaseT di classe C è concentrata su uno switch ethernet. Uno host è collegato in
questa LAN: da quando è in funzione ha cercato di scaricare la posta elettronica dal mail server
ospitato su un host all’interno della rete, si è collegato al server DNS, sempre situato sullo stesso
host del mail server , ed ha scaricato documenti via web da un sito esterno alla LAN. In questo
periodo non è stato contattato da nessun altro nodo. Quando cercate di visualizzare la sua tabella
ARP usando il comando “arp -a” al prompt della finestra di comandi, quante entry avrà la tabella
ARP se in nodi funzionanti in rete sono 147?
2

Quante entry contiene la tabella ARP (usando il comando ARP-a) di un host appartenente a una
LAN sapendo le sue connessioni attive e sapendo i nodi esistenti nella LAN?
Restituisce tante entry quante sono le sue connessioni attive NELLA lan (ARP non vede connessioni
a nodi esterni)


1. Invio di pacchetti all'interno della LAN
Partendo da A, dato datagramma IP indirizzato a B:
• controllo indirizzo di rete di B e vedo che B è sulla stessa rete di A
• lo strato di link invia un datagramma a B dentro un frame dello strato di link
• A vuole inviare un datagramma a B e conosce il suo IP
• il MAC di B non è nella tabella ARP di A
• A invia in broadcast un pacchetto ARP di query, che contiene l'IP di B. Tutte le macchine
sulla LAN lo ricevono
• B riceve il pacchetto ARP e risponde a A mandandogli il suo (di B) MAC. Frame mandato al
MAC di A (unicast)
• A mette in cache la coppia IP-MAC di B nella sua ARP table finché l'informazione non
diviene vecchia. L'informazione, se non rinnovata entro TTL, scade.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


2. Routing in un'altra LAN
Datagramma inviato da A a B attraverso un router R
Assumiamo che A conosca l'IP di B, l'IP del router di primo salto R, il MAC di R.
• A crea un datagramma IP con sorgente A, destinazione B
• A crea un frame [contenente il datagramma di cui sopra] con MAC address di R come
destinazione
• il frame viene inviato da A a R
• R riceve il frame, estrae il datagramma, lo passa al livello di rete (IP)
• R inoltra il datagramma IP con sorgente A, destinazione B
• R crea frame con MAC address di B come destinazione [contentente il datagramma IP da A
a B]
Ricapitolando:
A usa una forwarding table per il percorso a B: passa attraverso R.
A usa ARP table (LAN 111.111.111.0) per avere il MAC di R (per 111.111.111.0)
R usa ARP table (LAN 222.222.222.0) per avere il MAC di B, crea un frame che contiene il
datagramma IP A-to-B e lo invia a B
Nel router R ci sono due ARP table: una per ogni rete IP (LAN).

Quattro reti IP 200.13.36.0/26, 200.13.36.64/26, 200.13.36.128/26 e 200.13.36.192/26 su
ethernet 100BaseT sono collegate tra loro via un router rispettivamente alle interfacce
200.13.36.1 di MAC address cc:cc:cc:cc:cc:c1, 200.13.36.65 di MAC address cc:cc:cc:cc:cc:c2,
200.13.36.129 di MAC address cc:cc:cc:cc:cc:c3 e 200.13.36.193 di MAC address
cc:cc:cc:cc:cc:c4.L'host 1 di indirizzo IP 200.13.36.5 vuole spedire un datagramma all'host 2 di
indirizzo 200.13.36.150. Se il MAC address del host 1 è aa:aa:aa:aa:aa:aa e quello dell'host 2 è
bb:bb:bb:bb:bb:bb, a livello dello strato di link, quale indirizzo MAC di destinazione deve
impostare l'host sorgente sul frame affinchè il datagramma arrivi a 2?
cc:cc:cc:cc:cc:c1 perché così l’host fa arrivare al router che poi inoltra il pacchetto alla interfaccia
cc:cc:cc:cc:cc:c3

Due reti IP 200.13.36.0/25 e 200.13.36.128/25 su ethernet 100 BaseT sono collegate tra loro con
un router alle interfacce 200.13.36.1 di MAC cc:cc:cc:cc:cc:cc e 200.13.36.129 di MAC
dd:dd:dd:dd:dd:dd
L'host di indirizzo 200.13.36.5 vuole spedire un datagramma all'host 2 di indirizzo 200.13.36.200.
Se il MAC dell'host 1 è aa:aa:aa:aa:aa:aa e il MAC dell'host 2 è bb:bb:bb:bb:bb:bb a livello
di strato di link quale indirizzo MAC deve impostare l'host sorgente affinché il datagramma arrivi a
destinazione?
- cc:cc:cc:cc:cc:cc


Ethernet
Tecnologia di LAN "dominante".
Economica, usata ampiamente per le LAN, più semplice ed economica di LAN a token o ATM,
prestazioni in crescita continua [10 Gbit/s!!!].
È senza connessione: no handshaking fra NIC (Network Interface Controller) che invia e NIC che
riceve.
È inaffidabile: NIC che riceve non invia ack/nack a NIC che invia. Quindi il flusso di datagrammi
passato allo strato di rete può avere buchi: questi saranno riempiti se l'applicazione usa TCP,
altrimenti l'applicazione vedrebbe "buchi".

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Topologia fisica
Bus: popolare fino a metà anni '90 (tutti i nodi nello stesso dominio di collisione)
Stella: oggigiorno prevalente. Switch attivo nel centro. Ogni "conversazione" usa un protocollo
Ethernet separato, quindi i nodi non collidono tra loro

Struttura del frame
Adattatore che invia incapsula datagramma IP (o di un altro protocollo dello strato di rete) nel
frame di Ethernet.


Preambolo: 7 byte 10101010 (hex: AA), un byte 10101011 (hex: AB)
Usato per sincronizzare gli orologi di receiver e sender
Indirizzi: Se l'adapter riceve un frame con l'indirizzo di destinazione che corrisponde al
proprio, o con un indirizzo broadcast (pacchetto ARP), l'adapter passa i dati
nel frame allo strato di rete, altrimenti scarta il frame
Tipo/Lunghezza: Indica il protocollo dello strato superiore, principalmente IP. Per valori fino a
1500 indica la lunghezza del payload
Dati: 46-1500 byte
CRC: Controllo al receiver: se un errore viene rilevato, il frame è scartato

N.B.: La lunghezza minima del payload è di 46 byte perché la lunghezza minima del frame è 64
byte + 8 di preambolo = 72 byte!
26 byte di header + CRC, 46 byte minimo di dati

In uno schema CRC a 32 bit il sender sceglie 32 bit addizionali e li appende al dato originale per
proteggerlo da eventuali errori. Quanti bit avrà il generatore G condiviso?
I 32 bit addizionali garantiscono protezione fino a 32+1 bit. Il generatore avrà 33 bit.

Il metodo CRC con un generatore G a 32 bit può:
segnalare qualunque sequenza di errori fino a 31 bit consecutivi compresi

Un messaggio di 1400 byte è incapsulato in un segmento TCP con header di dimensioni tipiche, a
sua volta incapsulato in un datagramma IP con header di dimensioni tipiche ed infine in un frame
ethernet. Quale sarà la dimensione del frame ethernet?
1466 byte
Questo perché un segmento TCP, che è lungo 1400byte + 20 byte di header, viene incapsulato in
un segmento IP (altri 20 byte di header), inclapsulato in un frame (altri 26 byte fra header [22] e
EDC [4])

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Un messaggio di 6 byte è incapsulato in un segmento UDP, a sua volta incapsulato in un
datagramma IP di dimensioni tipiche ed infine in un frame ethernet. Quale sarà l'overhead di
intestazione del frame ethernet in percentuale rispetto alla dimensione totale del frame stesso?
36% [26/72]

CSMA/CD con backoff esponenziale
• NO slot
• Adapter non trasmette se rileva che qualche altro adapter sta trasmettendo: rilevazione di
portante
• Adapter che trasmette abortisce quando rileva che un altro adapter sta trasmettendo:
rilevazione di collisione
• Prima di tentare una ritrasmissione, adapter aspetta un intervallo di tempo casuale:
accesso random
• Adatta i tentativi di ritrasmissione alla stima di carico corrente (carico pesante = attesa più
lunga)
D
• Efficienza = , tende a 1 per tprop --> 0: MOLTO MEGLIO DI ALOHA! Ed è ancora
D C EF𝑝𝑟𝑜𝑝/F𝑡𝑟𝑎𝑛𝑠
decentralizzato, semplice ed economico

Consideriamo una LAN ethernet a 100Mbps. Per potere avere una efficienza di 0,75 quale deve
essere la massima distanza tra due nodi, assumendo che i frame siano quelli di lunghezza minima
e che il segnale viaggi a 250 milioni di metri al secondo?
96m.
Ricordando che tprop = d/s e ttrasm = L/R, e che
D
Efficienza =
D C EF𝑝𝑟𝑜𝑝/F𝑡𝑟𝑎𝑛𝑠
Si calcola il valore di d.

Algoritmo:
1. Adapter crea un frame da un datagramma
2. Se il canale è libero per T ≥ 96 bit time, inizia a trasmettere il frame. Se canale è occupato,
aspetta
3. Se adapter trasmette intero frame senza rilevare un'altra trasmissione, il frame è
trasmesso con successo
4. Se adapter rileva un'altra trasmissione mentre trasmette, abortisce e manda il segnale di
jam (48 bit time)
5. Dopo aver abortito, adapter entra nel backoff esponenziale: dopo la collisione m-esima,
adapter sceglie un K a caso da {0, 1, 2, ..., 2m-1}, aspetta K * (512 bit time) e ritorna al punto
2.

Qualche dettaglio
• {0, 1, 2, ..., 2m-1} per m ≤ 10, {0, 1, 2, ..., 1023} per m > 10
• Bit time = 0.1µs, per K = 1023 vale 50ms

Cosa succede quando due host A e B sono a distanza tale che il più piccolo frame ethernet viene
emesso completamente da A prima che il segnale di jam emesso da B a causa della collisione arrivi
in A?
A è convinto di avere inviato il frame in modo corretto

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Il compito dell’interazione destinatario-sorgente per l’eventuale rinvio del pacchetto perso è
lasciato ai livelli superiori della pila protocollare

Assumiamo che ci siano due host A e B attaccati alle opposte estremità di un segmento ethernet
alla distanza di 900 m. I due host devono inviare l'uno all'altro frame da 1.000 bit
ciascuno.Supponiamo che la velocità del segnale sia di 200 milioni di metri al secondo, che
l'ampiezza di banda sia di 10 Mbps e che ci siano quattro ripetitori tra i due host che introducono
un ritardo di 25 bit ciascuno sulla trasmissione.Entrambi gli host iniziano a trasmettere a t=0. Dopo
la collisione A estrae K=0 e B K=1. Dopo quanto tempo il frame di B è completamente consegnato
ad A, assumendo che B inizi a trasmettere senza problemi subito dopo che ha ricevuto il frame da
A?
282µs
tprop = d/v + 4 * ritardo_hub = 14.5µs = 145 bit
ttras = L/R = ttras_frame + ttras_jam = 104.8µs = 1048 bit
Sequenza degli eventi:
t = 0: A inizia a trasmettere
t = 145 bit: arriva a B il primo bit della trasmissione contemporanea
t = 145 + 145 bit: arriva a B l’ultimo bit della trasmissione contemporanea
t = 290 + 48 bit: arriva a B l’ultimo bit del segnale di jam trasmesso da A
t = 338 + 96 bit: A inizia a trasmettere
t = 434 + 155 bit: arriva a B il primo bit della trasmissione da A
t = 579 + 1000 bit: arriva a B l’ultimo bit della trasmissione da A
t = 1579 + 96 bit: B inizia a trasmettere
t = 1675 + 145 bit: arriva ad A il primo bit della trasmissione da B
t = 1820 + 1000 bit: arriva ad A ultimo bit della trasmissione da B

Assumiamo che due host A e B attaccati alle estremità di un segmento ethernet ad una distanza di
900m. Si vuole trasmettere un pacchetto composto da frame di 1000 bit ciascuno. La veloctià di
propagazione è di 300*10^6 m/s e l'ampiezza di banda di 10Mbps. Nel collegamento sono
presenti 4 ripetitori che introducono 25 bit di ritardo ciascuno. Al tempo t = 0 entrambi gli host
trasmettono e quando rilevano la collisione A estrae k = 0 e B k = 1. Dopo quanto tempo il frame di
B è completamente consegnato ad A, assumendo che B inizi a trasmettere senza problemi subito
dopo che ha ricevuto il frame di A?
2 * 13 + 4.8 + 9.6 + 113 + 9.6 + 113 = 276


Standard 802.3 Ethernet: strati link & fisico
Molti standard Ethernet differenti. In comune hanno il protocollo MAC e il formato del frame.
Arrivano a toccare i 10Gbit/s, dipendenti anche dal mezzo usato nello strato fisico: cavo di rame,
fibra, ...

Interconnessione di spezzoni di LAN [con hub di backbone]
Hub:
• "repeater dello strato fisico"
• bit che arrivano in un link passano a tutti gli altri link
• no buffer di frame! Replica il segnale e basta
• no CSMA/CD su hub: sono gli adapter a rilevare le collisioni!
• forniscono funzionalità di gestione di rete

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017



Un hub di backbone interconnette gli spezzoni della LAN, estendendo la massima distanza tra i
nodi. Però in questo modo i domini di collissione dei singoli segmenti diventano un unico dominio
di collisione!
NB: non si possono collegare spezzoni 10BaseT (10 Mbit/s) e 100BaseT (100 Mbit/s)

Bridge/switch:
• "switch = bridge multi-porta"
• ciò che dico per i bridge vale anche per gli switch
• dispositivi dello strato di link
• spezzano la LAN in segmenti LAN (che diventano separati domini di collisione),
aumentando il throughput totale max
• "store and forward" frame Ethernet
• forwarding: come determino a quale spezzone della LAN inoltrare il frame? [sembra un
problema di routing]
• filtrano i pacchetti: frame sullo stesso segmento di LAN non sono di solito inoltrati sugli
altri segmenti LAN
• esamina header frame e selettivamente inoltra frame basati su indirizzi MAC di
destinazione
• quando un frame è inoltrato su un segmento, usa CSMA/CD per accedere al segmento
• sono trasparenti: gli host sono ignari della presenza del bridge
• numero di nodi e copertura geografica senza limite

I bridge sono plug&play, self-learning: non hanno bisogno di essere configurati!
C'è una bridge table con entry (Node LAN Address, Bridge Interface, Time Stamp). Le entry datate
nella ARP table sono scartate (TTL può essere 60 min). I bridge imparano quali host possono
essere raggiunti attraverso quali interfacce: quando un frame viene ricevuto, il bridge impara la
locazione del sender e registra la coppia <sender, locazione> nella bridge table.

Un bridge multiporta è funzionalmente simile a:
uno switch


Interconnessione senza backbone
Non raccomandata per due ragioni:
• Hub di Computer Science è punto di guasto
• Traffico tra EE e SE deve passare sul segmento di CS

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017










Dorsale raccomandata



Algoritmo di spanning tree
Avere ridondanza [percorsi alternativi da sorgente a destinazione] aumenta l'affidabilità.
Path multipli -> percorsi ciclici: i bridge possono moltiplicare e inoltrare i frame per sempre!
Quindi si organizzano i birdge in uno spanning tree disabilitando un sottoinsieme di interfacce.



Come viene gestito l'instradamento tra due switch collegati da percorsi multipli, cioè quando ci
sono più strade per andare da uno switch all'altro?
Algoritmo spanning tree che disabilita i percorsi ridondanti
Lo spanning tree per definizione è utilizzato da bridge e switch.

Confronto bridge/router
Sono entrambi dispositivi store-and-forward: il router è dello strato di rete (liv. 3), il bridge dello
stato di link (liv. 2).
Il router mantiene tavole di routing e implementa algoritmi di routing; il bridge mantiene bridge
table e implementa filtraggio, algoritmi di apprendimento e di spanning tree.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Pro dei bridge: sono più veloci e richiedono meno elaborazione di pacchetti, le bridge table
sono self-learning
Contro dei bridge: tutto il traffico è confinato ad uno spanning tree, anche quando bandwith
alternativa è disponibile, e non offrono protezione dalle broadcast storm
Pro dei router: sono supportate topologie arbitrarie, i path ciclici sono limitati da contatori
TTL e buoni protocolli di routing, forniscono protezione contro le broadcast
storm
Contro dei router: richiedono configurazione indirizzo IP (no plug&play) e maggiore
elaborazione dei pacchetti

In sostanza: un bridge va bene nel piccolo [poche centinaia di host], mentre i router vanno usati in
grandi reti [migliaia di host]


Switch Ethernet
Essenzialmente un bridge multiporta. Inoltra a livello 2 (frame), filtra usando indirizzi di LAN.
È senza collisioni (full duplex): ogni link ha il suo dominio di collisione. Ci sono molte interfacce,
spesso connesse con una tipologia a stella con al centro lo switch.
Switching cut-through: frame inoltrato dalla porta di input a quella di putput senza aspettare
l'assemblaggio dell'intero frame -> latenza ridotta!
Combinazione di interfacce a 10/100/1000 Mbps.
Gli switch possono essere collegati fra loro. Autoapprendimento anche in questo caso!



Tre LAN dipartimentali sono collegate tra loro da una dorsale in fibra. La topologia di ciascuna LAN
è a stella: le tre LAN usano rispettivamente le tecnologie ethernet 100BaseT, 10BaseT e 100BaseT.
Ciascuna Lan finisce in uno switch ethernet con una uscita sulla dorsale dove finiscono in un
concentratore (hub) che interconnette le tre LAN, che a sua volta esce nel router di frontiera dei
tre dipartimenti. Quale caratteristica deve essere richiesta per potere collegare le tre LAN in
questo schema?
Che tutti e tre gli switch di ciascuna LAN abbiano una uscita sulla dorsale alla stessa velocità delle
porte del concentratore
Questo perché l’HUB non ha buffer, ma gli switch sì

Tre LAN dipartimentali sono collegate tra loro da una dorsale in fibra. La topologia di ciascuna LAN
è a stella: le tre LAN usano rispettivamente le tecnologie ethernet 100BaseT, 10BaseT e 100BaseT.
Ciascuna Lan finisce in uno switch ethernet con una uscita a 1Gbps sulla dorsale dove finiscono in
un concentratore (hub) che interconnette le tre LAN. In quanti domini di collisione è divisa la rete
se tutti i collegamenti nelle LAN sono full-duplex?
1 (solo l'hub)

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Quali sono le ragioni che impediscono di usare un protocollo di livello 2 come 802.3 su scala
geografica, per reti delle dimensioni di internet?
-switch e bridge non offrono protezioni dalle broadcast storm e gli switch non sfruttano tutti i
canali possibili a causa dello spanning tree
-il trasporto non è affidabile
-l'indirizzamento sarebbe statico, dipendente dai MAC address e non è adatto ad una rete globale
in continuo cambiamento
-le tabelle arp e di switching avrebbero dimensioni spropositate
-se si usano gli hub diventerebbe tutto molto ingestibile e poco performante, soprattutto perché
viene usato il CSMA/CD
-se si usano gli switch, gli algoritmi di pathing/routing degli switch sono poco ottimizzati per tanti
host
Per questo meglio usare i router:
* Hanno il TTL sui pacchetti
* Possono filtrare meglio potenziali attacchi di broadcast
* Hanno un pathing/routing gerarchico


VLAN (Virtual LAN) 802.1Q
Tutti il traffico broadcast di livello 2 (ARP e DHCP con MAC di destinazione in locazione
sconosciuta) deve attraversare l'intera LAN --> problemi di sicurezza, privacy, efficienza!
Port-based VLAN: porte dello switch raggruppate (via SW) in modo che un singolo switch fisico
operi come switch multipli virtuali. Il traffico viene isolato!
Posso anche definire VLAN basate su MAC dei terminali invece che sulle porte dello switch.
Appartenenza dinamica: porte possono essere assegnate dinamicamente alle VLAN.
Inoltro tra VLAN: fatto via routing, proprio come switch separati. (I router che compri includono
switch)
Porta trunk: frame inviati tra le VLAN definite su switch fisici multipli.
I frame inoltrati in una VLAN tra più switch non possono essere semplici frame 802.1, perché
devono contenere info sulla VLAN ID! Il protocollo 802.11q aggiunge/rimuove campi di
intestazione aggiuntivi per i frame inoltrati tra porte collegate in trunk.
Nel campo Tipo/Lunghezza c'è il valore 8100, poi ci sono 13 bit per il VLAN ID e 3 bit di priorità.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017



























Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017
Wireless

Generalità
Wireless hosts: sistemi che eseguono applicazioni, telefoni, computer, ...
Wireless links: mezzi di collegamento tra host e base station. I link possono avere rate di
trasmissione diversi e anche distanze supportate diverse.
Base station: non esiste qualcosa di simile nei wired networks. La base station è responsabile
dell'invio e della ricezione dei dati. Un host è associato ad una base station quando è nell'area
coperta dalla base station e quando usa quella base station come mezzo di comunicazione verso
altri network. Le celle telefoniche e gli access point sono esempi di base station
Si dice che gli host che sono associati alla base station operano in infrastructure mode quando
tutti i servizi tradizionali necessari al networking (DNS, Routing, etc) sono forniti dal network a
cui l'host è connesso.
Se gli host sono in modalità ad hoc invece non hanno un'infrastruttura a cui connettersi: è l'host
stesso che deve fare da routing, DNS ecc.
Quando un host passa da una base station all'altra si ha un processo detto handoff: questo
processo non è semplice e genera moltissimi potenziali problemi.
Dire wireless è diverso da dire mobile: una rete mobile trova l'utente ovunque si trovi e mantiene
la sessione attiva con l'utente che si muove.
Bande licenziate: 2.4 e 5 GHz.
Bande non licenziate: operatori mobili, ... (GSM UMTS LTE)
Più bassa è la lunghezza d'onda, più facilmente vengono attraversati gli oggetti

Classificazione
Possiamo classificare le reti wireless in base a due criteri: il numero di "salti" wireless che un
pacchetto fa nella sua trasmissione e se il network ha la "infrastructure" oppure no.
• Single-hop, infrastructure-based. Questi network hanno una base station che è connessa
ad un network cablato più grande (ad esempio Internet). L'unica comunicazione wireless è
quella tra host e base station.
È la situazione classica dell'802.11 che usiamo a casa, oppure della rete 3G.
• Single-hop, infrastructure-less. Questi network non hanno una base station, ma ci può
essere un host tra tutti che fa da cordinatore. Esempi: Bluetooth e 802.11 ad-hoc.
• Multi-hop, infrastructure-based. In questi network c'è una base station che è connessa via
cavo ad un network ma alcuni nodi wireless potrebbero aver bisogno di passare da altri
nodi wireless per parlare con la base station. Esempio: wireless mesh networks (può
essere conveniente avere una dorsale fatta di segnali radio).
• Multi-hop, infrastructure-less. Non c'è una base station e per parlare tra loro i nodi
potrebbero aver bisogno di altri nodi. Sono molto complicate. Esempi: MANETs, VANET
(reti di emergenza)


Una rete wireless configurata come wireless mesh possiede:
Nodi wireless che funzionano anche da relay e un nodo che permette di connettersi alla rete
wireline

In una rete wireless ad-hoc:
Nessun nodo è dedicato alla connessione con reti wireline esterne

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


In una rete ad-hoc NON VI SONO AP

Standard WiFi
802.11b 2.4GHz 1-11 Mbit/s
802.11g 2.4GHz 54 Mbit/s
802.11a 5.8GHz 54 Mbit/s
802.11n 2.4 e 5.8GHz 150Mbit/s [antenna MIMO 4x4: Multiple Input Multiple Output, si
possono attenuare o eliminare disturbi]
802.11ac 5.8GHz 800Mbit/s [MIMO 8x8]

Lo standard 802.11a prevede la trasmissione:
Solo nella banda 5GHz

Priorità
Implementata con i timer. Tempo più breve -> maggiore priorità!
Come vengono implementate le priorità dei vari messaggi nello standard 802.11?
Imponendo tempi di carrier sense differenti a seconda del messaggio

Wireless Link
Differenze dal link wired:
• Diminuzione potenza segnale. Le radiazioni elettromagnetiche si attenuano man mano che
il segnale wireless passa attraverso la materia. Anche se non ci sono ostacoli il segnale si
disperde, soprattutto all'aumentare della distanza (diminuisce con il quadrato della
distanza)
• Interferenza. Se due station trasmettono alla stessa frequenza, le due si interferiscono.
Addirittura anche tipologie diverse di trasmissione potrebbero interferire. In più anche
motori, microonde fanno interferenza.
• Propagazione multipath. Se (perché gli oggetti che comunicano sono in movimento,
oppure per altri motivi) le onde della trasmissione rimbalzano (in modi diversi e
imprevedibili) esse arriveranno a destinazione in momenti diversi.
• Più errori. Gli errori sui bit sono molto più comuni nei wireless networks.

In un canale radio, il cambiamento di forma d'onda dei simboli ricevuti puo' essere dovuto
Alla propagazione multipath
Esatto, le copie ritardate e attenuate del simbolo trasmesso distorcono le forme d'onda ricevute

Il multipath può generare:
Interferenza dannosa generata dallo stesso segnale trasmesso

Host
Un modo per misurare la qualità del segnale è il rapporto segnale rumore (SNR). Viene misurato
in dB. Più è grande il SNR più il segnale è di buona qualità.
Un altro modo per misurare la qualità della trasmissione da parte dell'host è il BER: bit error rate.
Da considerare:
• In generale se si aumenta la potenza aumenta il SNR e diminuisce il BER. Aumentare la
potenza costa però energia e dopo un certo livello si arriva ad un limite.
• Per un certo SNR, aumentare il trasmission rate aumenta anche il BER.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


• Il SNR (e quindi anche il BER) potrebbero cambiare in base alla mobilità dell'host o a
cambiamenti dell'ambiente. In alcuni casi è possibile cambiare potenza al volo.
• Indice di modulazione numerica: [bit/s / Hz]

Per aumentare dinamicamente la banda un sistema 802.11:
aumenta l'indice di modulazione numerica

Se su un link wireless aumenta SNR, si ha lo stesso BER
Aumentando il rapporto bit/s per Hz

Se su un link wireless diminuisce SNR, si ha lo stesso BER
Diminuendo il rapporto bit/s per Hz

La frequenza di trasmissione dati in una rete 802.11:
cala se cresce il tasso di errori rilevato dalla Frame Check Sequence

Un sistema 802.11 NON utilizza mai la modulazione della potenza di trasmissione per gestire la
qualità del collegamento.

Hidden Terminal Problem
A parla con B, C parla con B. A non sente C (perché ad esempio troppo distante, o nascosto
dall'ambiente). Sia A che C sono convinti che tutto stia andando bene.

Una stazione puo' non ricevere i segnali trasmessi da un'altra stazione associata allo stesso Access
Point
A causa della distanza reciproca o in un caso di hidden terminal

Fading
A parla con B, C parla con B. Il segnale di C arriva ad A talmente basso che A non lo sente, e anche
viceversa. A e C credono che sia tutto ok.


WiFi: 802.11 Wireless LANs
Ci sono molte varianti dello standard 802.11, la più popolare è la 11g. Più varianti possono essere
usate dallo stesso dispositivo.
Tra le varianti cambiano la frequenza e il data rate.
Tutte le varianti usano CSMA/CA [collision avoidance, non detection!]
Tutte le varianti supportano la modalità infrastructure ed ad hoc.

Architettura
Il Basic Service set definisce i blocchi fondamentali dell'architettura WiFi. Uno o più host wireless
ed una base station centrale, che prende il nome di access point. L'access point è generalmente
collegato ad un router via cavo (oppure, come succede a casa, access point e router sono lo stesso
hardware).
La stazione wireless ha un MAC di 6 byte (come Ethernet). Ogni AP ha il suo MAC, ogni host ha il
suo MAC.
Noi studiamo l'architettura infrastructure, quella ad-hoc è troppo complicata.

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


Access Point
L'access point ha un SSID (Service Set Identifier) e viene acceso su un determinato canale (può
sceglere tra 11 canali nello standard 802.11b).
La scelta del canale è fondamentale per evitare interferenze con AP vicine. Due canali non sono
overlapping se sono separati da almeno 4 canali. 1, 6, 11 è l'unico insieme di canali non
overlapping.
Per connettersi all'access point, l'host deve associarsi, attraverso una procedura di autenticazione.
L'host dopo l'associamento ottiene l'indirizzo IP generalmente attraverso DHCP.
L'access point invia periodicamente un beacon frame che include l'SSID e il MAC address.
L'host ascolta i beacon frames per fare la lista delle stazioni disponibili.

Nello standard 802.11b, quanti AP vicini possono trasmettere contemporaneamente senza che ci
sia interferenza mutua
La tua risposta : Tre
Esatto, infatti nonostante ci siano 11 (o 13, a seconda della regolamentazione nazionale) possibili
canali, solo tre possono essere scelti in modo che i segnali trasmessi siano completamente
interferenti

Quando è l'access point ad inviare i beacon frames si parla di scansione passiva.
Se invece è l'host che manda un frame di probing in broadcast si parla di scansione attiva.
Una volta eseguita l'associazione con un host, l'access point potrebbe richiedere l'autenticazione
(eseguita attraverso semplici controlli sull'indirizzo MAC o con soluzioni più sofisticate basate su
chiavi, username e password).

L'AP, quando riceve trame destinate ad un terminale in sleep mode
La tua risposta : le memorizza e le trasmette dopo il successivo beacon, che sveglia il terminale
Un access point non entra MAI in sleep mode!

Accesso al mezzo
Come politica di accesso al mezzo è stato scelto il CSMA/CA. Ognuno parla quando vuole, ma solo
quando il canale è libero.
Non è possibile fare collision detection in quanto un host non può ricevere e trasmettere
contemporaneamente (ed anche se fosse possibile ci sarebbe il problema del fading e
dell'hidden terminal).
Visto che il wireless è più soggetto ad errori e visto anche che la politica CSMA/CA non fa troppo
per evitare le collisioni, si è deciso di introdurre un sistema di ACK a livello di link.
Se il trasmittente non riceve ACK entro un determinato lasso di tempo, il trasmittente re-invia il
pacchetto.
Vediamo nei dettagli come si devono comportare il sender e il receiver di un pacchetto:
1. Il sender vede che il canale è libero
¨ aspetta un breve intervallo di tempo (DIFS)
¨ il sender invia il frame per intero e aspetta ACK
2. il sender vede che il canale è occupato
¨ sceglie un valore di backoff esponenziale random e inizia a fare count-down
solo da quando il canale è rilevato libero
¨ quando il contatore arriva a zero il sender trasmette e aspetta un ACK
3. il receiver riceve il pacchetto, invia l'ack (dopo un tempo SIFS)

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


¨ se il sender non riceva l'ack re-invia il pacchetto, dopo aver atteso ancora un
backoff esponenziale
Il tempo di attesa DIFS è superiore al tempo SIFS perché gli ACK devono avere priorità nei
confronti delle nuove trasmissioni di dati. Solo ACK può dire se c'è stata collisione per il problema
dell'hidden terminal
Per ovviare al problema del fading e dell'hidden terminal il protocollo WiFi mette a disposizione
una buona soluzione: prenotare il canale prima di trasmettere.
Prima di parlare un host invia all'AP un frame di RequestToSend ed aspetta il ClearToSend
(RTS/CTS) da parte dell'AP. Il CTS viene anche usato implicitamente per dire alle altre stazioni di
non trasmettere in quel periodo di tempo.
CTS e RTS sono pacchetti piccoli, così eventuali collisioni sono brevi e lo spreco di risorse è ridotto.

L'efficienza del meccanismo RTS/CTS è dovuta in particolare a:
la brevità dei pacchetti RTS che limita la durata delle collisioni

Perche' nelle wireless LAN 802.11 non si usa la collision detection?
La tua risposta : Per due motivi: la collisione puo' verificarsi al ricevitore ma non essere avvertita
localmente al trasmettitore, inoltre la differenza di potenza fra segnale trasmesso e ricevuto rende
difficile progettare circuiti che rivelino l'interferenza mentre la stazione sta trasmettendo

Il tempo di attesa DIFS e' superiore al tempo SIFS perche'
La tua risposta : Gli ACK devono avere priorita' nei confronti delle nuove trasmissioni di dati
Esatto, i differenti temi di attesa sono il metodo utilizzato sul canale wireless per implementare le
priorita'

Se due pacchetti RTS collidono, dopo quanto vengono ritrasmessi?
Si usa il backoff esponenziale

Frame WiFi
Molto simile a quello Ethernet, ma con alcune differenze.
Alcuni campi degni di nota:
v Payload: generalmente meno di 1500Byte, ma può arrivare fino a 2312 Byte.
v Address: 4 campi address. Il primo per il MAC del destinatario, il secondo per il MAC del
mittente, il terzo è il MAC del router a cui il mittente è associato, il quarto usato per
trasmissioni ad-hoc.
v Sequence number: 2byte. Per permettere al meccanismo di ACK di funzionare
v Durata: 2byte. Utilizzato per indicare la durata della prenotazione nei frame RTS e CTS.
v Frame Control: 2byte. Contiene dettagli ulteriori sul frame, ad esempio la versione del
protocollo, il tipo del frame, se è un frame host->AP o AP->host etc


Mobilità all'interno di subnet
Cosa succede se ci spostiamo da un AP all'altro mentre usiamo WiFi?
Finché ci si muove all'interno di AP che hanno la stessa subnet non si perderanno le connessioni
TCP aperte. Nel caso invece ci muoviamo da una subnet all'altra vengono messi in atto dei
meccanismi più avanzati per tentare di salvare le connessioni aperte, ma noi non li vedremo.
L'host si muove da AP1 verso AP2. Il segnale verso AP1 inizia a diminuire. Host si connette ad AP2
che ha lo stesso SSID di AP1. Mantiene lo stesso indirizzo IP e non deve chiudere le connessioni

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017


TCP. Visto che AP1 e AP2 sono collegate allo stesso switch, lo switch tramite il self-learning si
accorge che l'host è passato da AP1 ad AP2 e continuerà il suo lavoro senza troppi problemi.
C'è da ricordare che uno switch non è fatto per supportare troppi di questi salti tra AP1 e AP2,
delle volte per far funzionare questa cosa vengono introdotti degli hack, ad esempio AP2 quando
vede che host si connette invia un broadcast allo switch con MAC del mittente quello dell'host


Feature avanzate
Adattamento del rate
Visto che la connessione tra un host e il suo AP potrebbe subire peggioramenti e miglioramenti,
802.11 fornisce un implementazione di adattamento dei rate. Questa funzionalità permette di
alzare il rate di trasmissione in caso non ci siano problemi (dopo 10ACK di fila si passa alla tier di
data-rate successivo) o di abbassare il rate in caso di 2 mancati ACK consecutivi. Molto simile al
TCP.

Power management
Il consumo di energia è importante. Un nodo può mettersi in sleep state settando un bit
nell'header del frame. Mentre è in sleep state l'AP bufferizza (cioè non invia) tutti i pacchetti che
erano destinati al nodo che ora dorme. Ogni 100msec l'AP invia nel proprio beacon frame la lista
dei pacchetti che ha in buffer, il nodo si sveglia, vede se c'è qualche pacchetto destinato a lui, in
caso positivo lo richiede, altrimenti torna a dormire. In questo modo un nodo che non ha
pacchetti in ricevimento può stare a dormire per 99% del tempo.

In una rete wireless ad-hoc:
Riconosce quali terminali sono entrati in sleep mode e li sveglia nel caso arrivino nuove trame ad
essi destinate

Perché non viene implementato il Collision Detection nelle reti Wireless?
- Non viene implementato per due motivi:
a) la possibilità di rilevare collisioni richiede la capacità di inviare e ricevere contemporaneamente.
Essendo in genere la potenza del segnale ricevuto nettamente inferiore alla potenza del segnale
trasmesso all'adattatore 802.11, risulta molto costoso costruire hardware che possano rilevare
una collisione.
b) l'adattatore, anche se fosse in grado di trasmettere e ricevere nello stesso istante, non
potrebbe rilevare tutte le collisioni a causa del problema del terminale nascosto e
dell'attenuazione del segnale

Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017