Sei sulla pagina 1di 50

I Compendi OpenSource

di Giacomo Marciani

Ingegneria di Internet
Teoria, Formulario e Suggerimenti Pratici

Introduzione alle reti

Internet un network di networks. Proveremo questo esaminandone l'aspetto


costitutivo e telecomunicazionistico. Dal punto di vista costitutivo1 , Internet
una gerarchia di tecnologie eterogenee. Dal punto di vista telecomunicazionistico2 , Internet una infrastruttura che realizza servizi destinati ad applicazioni
distribuite 3 .
1.1

Una

Network

una interconnessione di device in mutua comunicazione. Il


l'insieme degli host s4 . Il network core l'insieme di interconnessioni che realizzano la comunicazione tra hosts remoti. Un edge router
un nodo perierico del network core utile per una determinata porzione di network edge. L'access network l'insieme di interconnessioni tra il network
edge e l'insieme degli edge routers.
network

network edge

Circuit Switching Network Una circuit switching network (cs-network)


una rete a risorse dedicate con disciplina di trasmissione end-to-end.
La end-to-end transmission una disciplina di trasmissione in base alla
quale la rete dedica un end-to-end circuit per realizzare la connessione tra
hosts remoti, ovvero un cammino di rete multiplato e dedicato. Un end-to-end
circuit pu essere implementato secondo due tecniche di multiplazione:

: lo spettro di frequenza del


physical medium viene suddiviso in band slot, ovvero bande di frequenza
dedicate di bandwidth costante. La rete dedica ad ogni connessione un
band slot.

frequency division multiplexing (fdm)

time division multiplexing (tdm)

: il tempo viene diviso in time


, ovvero intervalli di tempo costante, ognuno dei quali viene a sua
volta suddiviso in un numero costante di time slot, ovvero ulteriori intervalli di tempo costante. La rete dedica ad ogni conessione un time slot
in ogni time frame.
frame

Una CS-network garantisce un throughput costante, ma il suo upper-bound


stabilito dalla frazione di banda (FDM) o dalla frazione di tempo (TDM)
dedicati, a prescindere dal numero di utenti connessi, i quali possono essere al
pi quelli previsti dalla multiplazione; essa inoltre aetta dai silent period,
i quali comportano in denitiva un'allocazione inutile delle risorse.
1 Nuts-And-Bolts POV.
2 Service POV.
3 un'applicazione distribuita

un'applicazione che coinvolge due o pi hosts in mutua comunicazione.


4 anche detti end systems. Il termine host raorza il fatto che un end system ospiti programmi e ne esegua i processi.

Packet Switching Network Una packet switching network (ps-netwrok)


una rete a risorse condivise con disciplina di trasmissione store-and-forward e
discretizzazione dei messaggi.
I messaggi scambiati tra hosts remoti vengono discretizzati in packets5 , ai
quali viene fatta percorrere una rete di packet switches6 interconnessi da
7
links , ovvero canali sici di comunicazione.
La store-and-forward transmission una disciplina di trasmissione
in base alla quale un packet switch deve aver ricevuto un packet interamente,
prima di poterlo inoltrare all'opportuno outbound link. Per questo motivo, un
packet switch dedica un output buffer8 per ogni outbound link incidente.
Ogni packet switch mantiene una forwarding table che, disciplinata da un
9
ruouting protocol , mappa la destinazione dei packets sull'insieme degli
outbound link incidenti.
Una PS-network non garantisce un throughput costante, ma il suo upperbound stabilito dalla bandwidth del communication link ripartita per il numero
di utenti eettivamente connessi.
Una PS-network pi eciente di una CS-network in quanto la probabilit
di connessioni concorrenti una funzione subesponenziale.
Delays Una network determina necessariamente un throughput tra hosts
remoti, ovvero un upper-bound del quantitativo di dati trasferibili nell'unit di
tempo, e vi introduce inevitabilmente un delay, ovvero un vettore di ritardo
con componenti di natura e margini di ottimizzazione eterogenei.
Esaminiamo ora il delay introdotto all'interno di un packet-switching network.
Il total nodal delay dnodal il vettore di ritardo causato dal usso di
dati all'interno di un router.
dnodal = dprocessing + dqueueing + dtransmission + dpropagation

(1)

Le componenti del total nodal delay, e le relative origini, sono:

processing delay dprocessing : analisi del packet header al ne di determinare il corretto outbound link sul quale redirezionare il packet, ed
esecuzione del parity check sui bits del packet al ne di localizzarvi e correggervi eventuali errori; risulta essere una componente quantitativamente
trascurabile, ma determinante nella massimizzazione del throughut.

dqueueing : attesa del packet all'interno del output buer


queue; questa componente dipende dal grado di congestione del nodo;
queueing delay

5 anche detti chuncks of data.


6 un packet switch pu essere, tendenzialmente, un router o un link layer switch.
7 anche detti communication links, o physical links.
8 anche detto outut queue, ovvero un buer con disciplina di accesso FIFO.
9 un routing protocol determina, ad esempio, lo shortest-path da un packet switch

destinazione.

alla

risulta
dqueueing =

R
1 La
R

(2)

dove La
R il trac intensity rate, L il numero di bits del packet, a
il quantitativo medio di packets in arrivo nell'unit di tempo, ed R il
throughput del communication link.
Data la nitezza dell'output buer queue, La
R 1 induce il router ad eseguire il packet dropping, ovvero la rimozione di tutti quei packets in arrivo
che comporterebbero un overow, causando cos il packet loss, ovvero la
perdita dei packets trasmessi. Risulta dunque
dqueueing

packetloss

La
R
La
R

(3)
(4)

dove packetloss la probabilit che si verichi il packet-loss.


Sperimentalmente, una packet-switching network deve essere progettata
di modo che il trac intensity rate non superi mai il 60% su ogni nodo.

transmission delay

dtrasmission : trasferimento dei bits del packet sul

communication link; risulta

dtransmission =

L
R

(5)

dove L il numero di bits del packet, ed R il throughput del communication link.

propagation delay

dpropagation : propagazione dei bits del packet lungo

il communication link; risulta

dpropagation =

D
s

(6)

dove D la lunghezza del communication link, ed s la velocit di propagazione


del mezzo sico impiegato per la sua realizzazione10 .
Praticamente questo delay induce un bottle-neck sulla lunghe distanze.
L'end-to-end delay dendend il vettore di ritardo le cui componenti sono i
total nodal delays degli N 1 routers appartenenti al cammino dal source host
al destination host; risulta
dendend = N (dprocessing + dtrasmission + dpropagation )

La
0
R

(7)

A queste componenti va aggiunto l'host delay dhost , ovvero il delay introdotto dall'host, le cui componenti principali sono:


10 la

velocit di propagazione
s un valore tipicamente compreso nell'intervallo

.

2 108 m/s, 3 108 m/s

media sharing delay dmediasharing : ritardo volontariamente introdotto


per consentire la condivisione del communication link.

dpacketization : assemblaggio dei packets nel formato richiesto dal protocollo utilizzato.
packetization delay

Protocol Un protocol una denizione del formato e dell'ordine di un


insieme di messaggi scambiati tra entit in comunicazione, e di un insieme di
azioni in funzione della trasmissione e ricezione degli stessi.
Una qualunque attivit di rete che coinvolga due o pi entit in comunicazione deve essere goverata da un network protocol.

: un protocollo connection-oriented prevede


un handshaking process per l'apertura e la chiusura della connessione;
un protocollo connectionless stabilisce immediatamente una connessione
senza alcun processo di negoziazione.

connection orientation

stateness

: un protocollo statefull memorizza informazioni di stato della


connessione; un protocollo stateless non memorizza alcuna informazione
di stato sulla connessione.

Il protocol layering la disciplina di progettazione in base alla quale un


protocol viene modularizzato in layers che realizzano un modello di servizio mediante l'incapsulamento dei dati. Una protocol stack l'insieme gerarchico
dei layers.
La Internet protocol stack composta dai seguenti layers11 :
: le network applications si scambiano messages impiegando
un application-layer-protocol distribuito, come HTTP, SMTP, FTP, DNS,
P2P o uno sviluppato ex-novo.

application

transport

network

link

physical

: trasporto dei messages tra applications endpoints sottoforma


di segmet attraverso un transport protocol come TCP o UDP.
: scambio di datagram.

: scambio di frame.
: scambio di bit.

Gli hosts implementano tutta la protocol stack, mentre i packet switches implementano solo i layers di basso livello.
11 storicamente, la internet protocol stack era strutturata secondo il modello ISO OSI
(International Organization for Standardization Open Systems Interconnection),

il quale prevedeva due layers addizionali tra application layer e transport layer :
presentation: interpretazione dei dati.
session: limitazione, sincroizzazione e recovery dei dati.
Ad oggi compito dell'application developer sviluppare, qualora ritenuti utili, i due layers
ISO OSI aggiuntivi all'interno dell'application layer.

Application Layer

Una applicazione di rete una applicazione distribuita, ovvero un'applicazione


i cui processi12 sono eseguiti su hosts remoti in mutua comunicazione. Questi
processi comunicano scambiandosi messaggi mediante
: implementano l'interfaccia tra l'applicazione e la rete.

socket

processo di indirizzamento

della rete, un
host13 .

: un indirizzo IP idetica un host all'interno


identica un processo all'interno di un

numero di porta

Una applicazione di rete deve denire la propria architettura applicativa, ed il


proprio application-layer protocol.
Architettura applicativa L'archiettura applicativa deve essere progettata considerando l'architettura di rete come un insieme dato di APIs, ed essere
modellata su un paradigma architetturale:

: un server 14 soddisfa le richieste di molteplici clients intermittenti. La comunicazione tra i clients mediata dal server, essi non
stabiliscono mai una comunicazione diretta.

client-server

: molteplici peers 15 comunicano direttamente tra loro senza


mediazione del server 16 .
peer-to-peer

Application-layer protocol L'application-layer


plicazione di rete denito stabilendone

protocol

di una ap-

: una connessione caratterizzata dalle sue


capacit di usso, dalla sua persistenza, dalla congurazione della linea
dati e linea di controllo, e dalla conservazione o meno di informazioni di
stato della connessione. Una connessione full-duplex permette un usso
bidirezionale simultaneo; mentre una connessione half-duplex permette
un usso bidirezionale alternato. Una connessione persistente rimane
attiva anche dopo il soddisfacimento di una richiesta, potendo cos soddisfare molteplici richieste; mentre una connessione non persistente
viene chiusa nonappena la richiesta sia stata soddisfatta. Una connessione
con linea di controllo in-bound mantiene unite la linea dati e la linea di
controllo; mentre una connessione con linea di controllo out-of-bound
tipologia di connessione

12 un processo un'istanza in esecuzione di un programma all'interno di in un sistema.


Due processi locali comunicano tramite servizi di Inter Process Communication (IPC). Due
processi distribuiti comunicano tramite servizi di scambio di messaggi attraverso una rete.
13 alcune porte sono stabilmente assegnate a killer-applications da tempo aermate.
14 il server pu essere eventualmente virtualizzato da un data center.
15 un peer un host capace di svolgere sia il ruolo di client che quello di server.
16 notiamo che durante una sessione di comunicazione tra due processi, pu essere sempre
identicato un client ed un server. Il client l'host che richiede l'inizio della sessione. Il server
l'host che attende di essere contattato per stabilire una sessione.

separa le due linee in connessioni separate. Una connessione statefull


mantiene informazioni di stato della connessione; mentre una connessione
stateless ignora tali informazioni.

: il protocollo di trasporto deve essere val-

transport-layer protocol

utato in termini di

: una applicazione loss-sensitive necessita che vengano garantiti integrit ed ordine della totalit dei
pacchetti trasmessi; una applicazione loss-tolerant pu sostenere un
certo grado di packet-loss.
 throughput17 : una applicazione bandwidth-sensitive necessita che
venga garantito un throghput costante; una applicazione bandwidthelastic non necessita di un throughput costante; una applicazione
bandwidth-adaptive adatta dinamicamente la codicazione dell'informazione
in funzione del throughout istantaneo disponibile.
 tempo di trasferimento18 : una applicazione time-sensitive necessita che venga garantito un tempo di trasferimento costante; una
applicazione time-elastic si adatta al tempo di trasferimento istantaneo disponibile.
 sicurezza


data transfer reliability

: devono essere identicate le tipologie dei messaggi, la


loro sintassi, la loro semantica e le azioni in corrispondenza della trasmissione e ricezione degli stessi.

messaggi e azioni

Transport-layer protocols Internet mette a disposizione i seguenti transportlayer protocols


19 :

protocollo connectionstatefull, che ore servizi di data transfer reliability, ow control 21 e congestion control 22 . Il servizio di sicurezza23 , pu essere integrato
nell'application-layer dal Secure Socket Layer (SSL), il quale realizza
servizi di encryption, data integrity ed end-to-end authentication.

Transmission Control Protocol (TCP)

User Datagram Protocol (UDP)

oriented 20 ,

less e a bassa latenza.

24 :

protocollo connectionless, state-

17 Internet non prevede alcun servizio che ora garanzie di throughput.


18 Internet non prevede alcun servizio che ora garanzie di tempo di trasferimento.
19 denito in RFC 793.
20 il processo di negoziazione della connessione prevede un three-way handshake in apertura

di connessione, e un four-way handshake in chiusura di connessione.


21 il ow control garantisce che il usso di dati trasmessi non superi la capacit di ricezione
del destinatario, in modo da minimizzare la probabilit di packet-loss.
22 il congestion control modula il usso di dati trasmessi in funzione dello stato di congestione
della rete, in modo da minimizzare la probabilit di packet-loss.
23 nativamente non previsto dal transport service model.
24 denito in RFC 768.

Sussite dunque un trade-o tra adabilit e velocit. Notiamo comuque


che, poich molti rewall sono congurati per bloccare il traco UDP, le
applicazioni che fanno uso di tale protocollo designano comunque il TCP
come protocollo di backup.
2.1

Web

Il Web25 un servizio di pubblicazione, navigazione e fruizione di contenuti


testuali e multimediali interconnessi da link ipertestuali, basato su protocollo
HTTP.
Un oggetto Web una pagina Web, ovvero un le HTML di base con eventuali oggetti Web referenziati. Un oggetto Web referenziato da una Uniform
Resource Locator (URL), ovvero una stringa composta da un hostname ed un
lepath.
HTTP HyperText Transfer Protocol (HTTP)26 un applicationlayer protocol client-server, con connessione persistente stateless e linea di controllo in-band, basato su transport-layer protocol TCP.
Client-side e server-side sono rispettivamente implementate da un browser
Web ed un server Web, i quali comunicano mediante un'unica linea full-duplex
lungo la quale si scambiano messaggi HTTP.
Messaggi HTTP Un messaggio HTTP un testo ASCII strutturato e pu
essere di due tipologie:

request message

: messaggio di richiesta, inviato dal client al server.


method
header eld name
...
header eld name

request line
header lines
blank line

response message
status line
header lines

version

value
...

entity body

URL
value

: messaggio di risposta inviato dal server al client.

version
header eld name
...
header eld name

blank line

status code
value

phrase

value
...

entity body

Un messaggio HTTP dunque composto dalle seguenti sezioni:


25 abbreviazione di World Wide Web.
26 denito in RFC 1945 e RFC 2616.

: in un request message indica lo scopo della richiesta;


method indica il comando da eseguire sull'oggetto reperibile alla URL
secondo la versione del protocollo HTTP specicata in version.
Il valore del campo version tipicamente HTTP/1.1. I valori del campo
method possono essere:
request line







: richiesta di un oggetto.
post: invio di dati.
27
head: verica della reperibilit di un oggetto, a scopo di debug .
put: inserimento di un oggetto.
delete: rimozione di un oggetto.
get

: in un response message indica l'esito della richiesta; status


code e phrase indicano, rispettivamente tramite un codice numerico e la
corrispondente descrizione, l'esito della richiesta secondo la versione del
protocollo HTTP specicata in version.
Il valore del campo version tipicamente HTTP/1.1. I principali valori
dei campi status code e phrase possono essere:
status line

: la richiesta stata soddisfatta, e l'oggetto richiesto contenuto nel response message.


 301 moved permanently: l'oggetto richiesto non reperibile perch trasferito ad una nuova URL.
 400 bad request: il server non pu soddisfare la richiesta.
 404 not found: l'oggetto richiesto non reperibile perch non presente nel server.


200 ok

: ogni riga indica una coppia key-value, arricchendo al tipizzazione del messaggio.

header lines

entity body

: in un request message contiene dati inseriti dal client, evidentemente utili a soddisfare la richiesta; in un response message contiene
l'oggetto richiesto.

Cookies I cookies permettono il tracciamento degli utenti e l'implementazione


di un session-layer, laddove la natura stateless dell'HTTP non lo permetterebbe.
La tecnologia cookie28 consta di quattro componenti: una response header
line Set-cookie:, una request header line Cookie:, un le cookie mantenuto dal
web browser nel le system dell'utente ed un record cookie nel back-end database
del web server.
Se il Web browser invia un request message al Web server privo di cookie
27 il campo entity body del
28 denita in RFC 6265.

response message sar vuoto.

1. il Web server memorizza un record cookie < x, client host > nel proprio
back-end database;
2. il Web server invia l'opportuno response message con header line Setcookie: x;
3. il Web browser memorizza il le cookie < serverhost, x > nel le system
dell'utente;
4. da questo momento in poi, il Web browser appender l'header line Cookie:
x

Web cache Una Web cache29 una entit di rete che realizza il caching
per un web server. Una Web cache serve le richieste dei clients mantenendo in
un back-end storage le copie degli oggetti recentemente richiesti al Web server.
Ci permette di minimizzare i tempi di risposta delle richieste, i bottlenecks
tra clients e web server nonch il traco su un eventuale access network link
istituzionale. In denitiva il web caching minimizza il traco Web in Internet,
giovando alle performance di tutte le applicazioni Web. Una Web cache pu
dunque agire da server nei confronti di un client, e da client nei confronti di un
Web server.
Una content distribution network (CDN) una rete di web caches
geogracamente distribuite, al ne di localizzare il traco di rete.
Il conditional GET un meccanismo HTTP che permette ad una Web
cache di stabilire se un oggetto richiesto possa essere ritornato al client direttamente dal proprio back-end storage, o debba essere cachato richiedendolo al
Web server. Tale meccanismo realizzato mediante il metodo GET, gli header
line Last-Modied: e If-modied-since: e gli status code 200 e 304.
Se il Web browser invia alla Web cache un request message per un oggetto
non cachato

1. la Web cache inoltra il request message al Web server;


2. il Web server invia alla Web cache un response message 200 con l'oggetto
richiesto e header line Last-Modied: x0 ;
3. la Web cache inoltra l'oggetto al Web browser che ne aveva fatta richiesta;
4. la Web cache cacha l'oggetto con data x0 .
Se un Web browser invia alla Web cache un request message per un oggetto
cachato con data x
la Web cache inoltra al Web server il request message con header Ifmodied-since: x;
se l'ultima modica dell'oggetto x0 < x:
29 anche

detta proxy server.

10

 il Web server invia alla Web cache un response message 304;


 la Web cache invia il proprio oggetto cachato al Web browser.
se l'ultima modica dell'oggetto x0 > x:

 il Web server invia alla Web cache un response message 200 con
l'oggetto richiesto e l'header line Last-Modied:x0 ;
 la Web cache inoltra l'oggetto al Web browser che ne aveva fatta
richiesta;
 la Web cache cacha l'oggetto con data x0 .
2.2

File transfer

Una applicazione

di file transfer

realizza servizi di trasferimento dei le.

FTP File Transfer Protocol (FTP)30 un application-layer protocol


client-server per il trasferimento dei dati. caratterizzato da una connessione
statefull con linea di controllo out-of-band e trasport-layer protocol TCP. Il
client FTP e il server FTP comunicano tramite una linea di controllo halfduplex con connessione persistente, ed una linea dati full-duplex con connessione
transiente. Sulla linea di controllo in formato ASCII a 7 bit, client e server si
inviano rispettivamente comandi e risposte 31 . Sulla linea dati, server e client si
scambiano dati secondo le direttive della linea di controllo.
Comandi FTP I comandi comuni sono

: invio dell'identicativo utente.

USER username

PASSWORD password

LIST

RETR filename

STOR filename

: invio della password utente.

: listaggio della directory corrente.


: trasferimento di un le dal server al client.

: trasferimento di un le dal client al server.

Risposte FTP Le risposte comuni sono

331 Username OK, password required

125 Data connection already open; transfer starting

425 Can't open data connection

452 Error writing file

30 deniti in RFC 959.


31 ad ogni comando segue

sempre una risposta.

11

2.3

E-Mail

La e-Mail un servizio di messagistica asincrona, che utilizza il protocollo


SMTP ed un mail access protocol rispettivamente per l'invio e la ricezione dei
messaggi32 .
SMTP Simple Mail Transfer Protocolo (SMTP)33 un applicationlayer protocol client-server per l'invio della posta elettronica.
Ogni utente possiede una mailbox in un Mail server, il quale mantiene
una collezione di mailbox ed una message queue di messaggi in uscita. Ogni
utente comunica con il proprio Mail server attraverso uno user agent. Un
Mail server implementa sia la client-side che la server-side del protocollo SMTP:
agisce infatti da client al momento della spedizione, e da server al momento della
ricezione.
Quando un utente deve spedire una email

1. lo user agent invia la mail al Mail server del mittente mediante il protocollo;
2. il Mail server del mittente inserisce la mail nella propria message queue;
3. il Mail server del mittente preleva il messaggio dalla message queue e lo
invia al Mail server del destinatario stabilendovi una connessione TCP
sulla porta 25.
4. il Mail server del destinatario inserisce il messaggio nella mailbox del destinatario.
5. se non vi sono altri messagi dal inviare, il Mail server del mittente chiude
la connessione TCP.
Mostriamo ora un tipico dialogo SMTP
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:

220 d e s t s e r v e r . com
HELO m i t t s e r v e r . com
250 H e l l o m i t t s e r v e r . com , p l e a s e d to meet you
MAIL FROM: <mitt@mittserver . com>
250 mitt@mittserver . com . . . Sender ok
RCPT TO: <d e s t @ d e s t s e r v e r . com
250 d e s t @ d e s t s e r v e r . com . . . R e c i p i e n t ok
DATA
354 Enter mail , end with " . " on a l i n e by i t s e l f
Ciao caro ,
come s t a i ?
.

32 SMTP un push protocol, ovvero un protocollo in base al quale le connessioni TCP sono
iniziate dal host che intende inviare l'informazione. Questo vuol dire che la ricezione delle
email deve avvenire mediante un pull protocol.
33 denito in RFC 5321.

12

S : 250 Message accepted f o r d e l i v e r y


C: QUIT
S : 221 d e s t s e r v e r . com c l o s i n g c o n n e c t i o n
Mail access protocol Un mail access protocol un application-layer
protocol client-server per la ricezione della posta elettronica. Poich SMTP
un push protocol, il processo di ricezione necessita di un pull protocol.
I mail access protocol pi diusi sono
34 :

il client stabilisce una connessione


TCP con il Mail server sulla porta 110. Seguono le fasi di identicazione 35 ,
transazione 36 e aggiornamento 37 . Durante una sessione POP3 vengono
mantenute informazioni di stato per tenere traccia delle transazioni. Il
Mail server non conserva queste informazioni una volta terminata la connessione.

Post Office Protocol (POP3)

Internet Mail Access Protocol (IMAP)

38 :

il client stabilisce una


connessione TCP con il Mail server sulla porta 143 39 . Arricchisce il protocollo POP3 con funzionalit come l'organizzazione delle email in cartelle
eventualmente condivise, la scomposizione MIME dei messaggi, il supporto agli attributi, le connessioni simultanee ad una stessa mailbox. Il
Mail server conserva le informazioni di stato ache dopo aver chiuso la
connessione.

Web-Mail La Web mail un servizio di posta elettronica che utilizza il protocollo HTTP sia per la trasmissione che per la ricezione della posta elettronica.
Lo user agent un Web browser che comunica con il Mail server mediante scambio di messaggi HTTP.
2.4

DNS

Il Domain Name System (DNS)40 un servizio di indirizzamento degli host


che realizza la risoluzione degli hostname in indirizzi IP mediante un database
distribuito (database dns) su una rete di server (server DNS) che comunicano
tramite l'omonimo protocollo (protocollo DNS).
La risoluzione condotta mediante i seguenti processi:
34 denito in RFC
35 user username

1939.

pass password

36 list

retr id_mail
dele id_mail
37 l'aggiornamento secondo le transazioni impartite viene eseguito in corrispondenza della
chiusura della connessione, ovvero con il comando quit.
38 denito in RFC 3501.
39 porta 993 in caso di connessione SSL.
40 denito in RFC 1034 e RFC 1035.

13

: risoluzione di un hostname nel corrispondente indi-

host translation

rizzo IP.

host aliasing: risoluzione di un alias nel corrispondente canonical hostname di un Web server.
Mail server aliasing: risoluzione di un alias nel corrispondente canonical hostname del Mail server.

: risoluzione di un canonical hostame nei corrispondenti indirizzi IP dei Web server replicanti.
load distribution

Il database DNS mantiene una collezione di Resource Records (RRs), distribuita


su un rete di server DNS gerarchicamente strutturata in

: mappa gli hostname negli indirizzi IP dei corrispondenti TLD DNS servers.
root DNS server

Top-Level Domain (TLD) DNS server: mappa gli hostname di uno


specico TLD negli indirizzi IP dei corrispondenti authoritative DNS servers.

: mappa gli hostname nei corrisponti indi-

authoritative DNS server

rizzi IP.

: funge da server proxy per la rete DNS. Questo


server gestito da un ISP, e non appartiene nativamente alla gerarchia di
rete DNS.
local DNS server

Un server DNS pu realizzare il DNS caching, ovvero mantenere e rendere


disponibili, per un certo periodo di tempo, le mappature DNS recentemente
richieste.
Resource Record Un resorce

record (RR)

una tupla

(Name , Value , Type , TTL)


dove TTL un valore temporale che determina la validit del record in una
DNS cache, e dove il signicato di Name e Value dipende dal valore di Type.
: Value indica l'indirizzo IP dell'hostname specicato in Name.

Type=A

Type=NS

Type=CNAME

: Value indica l'hostname di un authoritative DNS server per


l'hostname specicato in Name.
: Value indica il canonical hostname di un Web server
per l'alias specicato in Name.

Type=MX: Value indica il canonical hostname di un Mail server il cui


alias specicat in Name.

14

Messaggi DNS I messaggi DNS si dividono in query DNS e reply DNS,


sebbene entrambi si attengano ad uno stesso formato.

Header
Question
Answers
Info

id
ags
no. queries
no. aswer RRs
no. authoritative RRs no. additional RRs
query
RRs
authoritative RRs
additional RRs

: una query edenticata da un id a 16-bit, replicato nella reply


per stabilire la corrispondenza; una maschera di bit specica la natura del
messaggio41 ; quattro campi numerici stabiliscono il numero di occorrenze
nelle sezioni successive del messaggio.

header

question

answers

infos

: il campo name e il campo type caratterizzano la richiesta di


una query DNS.
: uno o pi RRs, seguiti da uno o pi RRs restituiti da un
authoritative DNS server.
: informazioni addizionali42 .

Registrazione del dominio Per registrare un dominio necessario rivolgersi


ad un registrar, ovvero un ente commerciale che verica l'unicit del dominio
e si occupa del suo inserimento nel database DNS. Per registrare un dominio
tramite un registrar necessario fornirgli gli indirizzi IP dei propri authoritative
DNS server primario e secondario, dove siano stati inseriti gli RRs di tipo A e
MX, rispettivamente per il proprio Web server e Mail server.
Vulnerabilit DNS I comuni attacchi ai sistemi DNS sono di tipo Denial
Device of Service (DDoS) e Man In The Middle (MITM).
In un attacco DDoS indirizzato ad un server DNS, viene inoltrato al root
server DNS un quantitativo di query DNS cos insostenibile da rendere indisponibile il servizio. All'atto pratico, questo tipo di attacco fortemente attutito dal
DNS caching.
41 la

maschera di bit formata dai seguenti ag a 1 bit:


 query/reply ag : il messaggio una query (0) o una reply(1);
 authoritative ag : il messaggio una reply proveniente da un authoritative DNS server
(1);
 recursion-desired ag : il messaggio una query ricorsiva(1);
 recursion-available ag : il DNS server dichiara di supportare le query ricorsive(1).

42 in una reply ad una query MX, questa sezione contiene un RR con il canonical hostname
del Mail server, ed il suo indirizzo IP.

15

In un attacco DDoS indirizzato ad un host, viene inoltrato a pi authoritative server DNS un grande quantitativo di query DNS aventi come mittente
l'indirizzo IP dell'host da attaccare; in questo modo l'host viene sovraccaricato
di reply DNS no a bloccarsi.
In un attacco MITM vengono intercettate le query DNS e restituite reply
DNS maligne, in modo da redirezionare il traco utente verso siti maligni,
nanche ad infettare le DNS cache.
DDoS bandwidth-oating:
DNS DDos:
Man-In-The-Middle (MITM):
2.5

Applicazioni Peer-to-Peer

Una applicazione Peer-to-Peer (P2P) una applicazione di rete modellata


sul paradigma architetturale Peer-to-Peer. Tale architettura prevede molteplici
peers intermittenti in comunicazione diretta, senza mediazione di un server.
Storicamente, l'architettura P2P si aermata grazie alle applicazioni di
le sharing: considereremo dunque questo tipo di applicazioni per esaminare
la natura dell'architettura, sebbene essa sia implementata in molti altri servizi
quali lo streaming multimediale e l'instant messaging.
Scalabilit L'intrinseca scalabilit del P2P dovuta al duplice ruolo di
ogni peer. Consideriamo un modello quantitativo che evidenzi tale caratteristica. Il distribution time D il tempo necessario a distribuire un copia di
un le ad N entit. Confrontando il distribution time in ambiente P2P DP 2P e
il distribution time in ambiente client-server DCS , risulta

DCS max
(
DP 2P

F
NF
,
uS dC,min

F
F
NF
,
,
P
uS dC,min uS + N
i=1 ui

(8)
)

(9)

dove N il numero di entit, F la dimensione del le, uS l'upload rate


del server, dC,min il download rate del client con download rate minore, e ui
l'upload rate dell'i-esimo peer.
BitTorrent BitTorrent (BT) un application-layer protocol P2P per la
distribuzione e condivisione di le in rete, con transport layer protocol TCP.
Il le originale viene discretizzato in chucks di dimensione ssa43 . Un
tracker un server che mantiene una collezione di torrents, localizzando cos
i chuncks e coordinando i rapporti tra coloro che richiedono e coloro che distribuiscono i le. Un torrent un le statico contenente un indice di trackers
43 tipicamente

un chunk ha una dimensione di 256 KB.

16

e un indice di peers partecipanti alla distribuzione di un determinato le. Un


seed un peer che partecipa ad un torrent possendo interamente il le. Un
leecher un peer che abbandona il torrent dopo aver terminato il download
del le.
Quando un nuovo peer partecipa ad un torrent, il tracker ne registra la
partecipazione e gli invia gli indirizzi IP di un sottoinsieme random di seeds per
quel torrent. Il peer stabilisce una connessione TCP non persistente con ognuno
dei seeds, ottenendo periodicamente una lista aggiornata dei chucks posseduti.
Ordinando questi chuncks per rarit decrescente44 , il peer ne richiede l'invio. Il
peer soddisfa contemporaneamente le richieste degli altri peers, dando priorit a
quelli che gli orono la banda maggiore per le sue richieste. Questi peers vengono
detti unchocked, mentre il resto dei peers detto chocked. Il sottoinsieme degli
unchocked peers viene ricalcolato con regolarit, e ad esso viene aggiunto un
random peer detto optimisticalli unchocked peer. L'eetto di questa dinamica
che i peer tendono a trovarsi per compatibilit di trasferimento.
DHTs Distributed Hash Tables (DHTs) una architettura di rete che
permette di realizzare un database distribuito e decentralizzato di record chiavevalore. In questa soluzione ogni nodo responsabile del mantenimento di un
sottoinsieme di chiavi.
Il maggior campo di applicazione delle DHTs il le sharing P2P, dove una
chiave un ideticativo torrent ed il valore la lista di indirizzi IP dei seeds.
BitTorrent utilizza Kademlia DHT per la realizzazione di un tracker disribuito
e decentralizzato.
Ad ogni peer associato un identicativo numerico nell'intervallo [0, 2n 1].
Una funzione hash pubblica mappa le chiavi del database nell'intervallo [0, 2n
1].
Il CRUD del database viene eseguito inoltrando le richieste al peer con identicativo pi vicino al valore mappato della chiave. Per ottimizzare questo
processo di inoltro sono state create le circular DHTs, le quali virtualizzano
la rete di peers in una rete circolare modulo 2n in cui ogni peer traccia di due45
successori. In questa struttura, quando un peer deve trovare il responsabile di
una chiave, inoltra la richiesta al peer successivo, di modo che la richiesta circoli ordinatamente nella rete di peers. Quando la richiesta giunge all'eettivo
responsabile della chiave, questo contatta il peer iniziale, il quale gli impartisce
l'operazione CRUD da svolgere.
Le short-cutted circular DHTs sono delle circular DHTs in cui ogni
peer tiene traccia anche di un sottoinsieme random di peer nella rete circolare.
Questa soluzione permette di ridurre il numero di messaggi necessari a risolvere
una query
Nella progettazione DHT sussiste dunque un tradeo tra il numero di vicini
tracciati da ogni peer, e il numero totale di messagi inviati per risolvere una
44 la disciplina di accesso rarest-rst permette una rapida distribuzione dei chuncks meno
diusi, pareggiando cos il tasso di distribuzione di ogni chucnks all'interno di un torrent.
45 ogni peer traccia due successori in modo da poter sostenere la nativa intermittenza dei
peers.

17

query.

18

Transport Layer

Il transport layer realizza la comunicazione logica tra processi 46 eseguiti


su hosts remoti. Questo layer implementato esclusivamente negli host, ed il
segment la sua unit di incapsulamento.
Un processo di una network application comunica con la rete mediante una
o pi socket47 . Il transport-layer protocol realizza dunque il multiplexing/demultiplexing dei segment mediante una corrispondenza biunivoca tra processo e socket. Il port number l'identicativo numerico a 16 bit che realizza
la corrispondenza biunivoca48 : in protocolli connectionless, una socket identicata dalla coppia (IP address, port number); mentre in protocolli connectionoriented, una socket identicata dalla quadrupla (IP address, port number, source IP addres, source port
Reliable data transfer Il reliable data transfer il servizio che garantisce la consegna corretta, completa ed ordinata dei segment, dalla sorgente alla
destinazione. Un reliable protocol un protocollo che realizza il reliable
data transfer, a prescindere dalla sua implementazione nei layer sottostanti. Un
unreliable protocol un protocollo che non implementa il reliable data
transfer.
Il servizio aronta scenari di packet error e packet loss, mediante meccanismi
di

bit-level error detection: il receiver deve poter individuare eventuali


errori nei packet. Implementato mediante checksum.

: il receiver deve dare al sender un feedback sulla comunicazione. Implementato mediante acknoledgement, ovvero il meccanismo per cui il receiver invia al sender un positive acknoledgement
(ACK) che riscontra la corretta ricezione dei packet ricevuti. I duplicate
ACK, ovvero ACK riscontranti un i-esimo packet gi riscontrato, denotano dunque la scorretta o mancata ricezione di un qualunque j > i-esimo
packet. Il meccanismo di acknoledgement pu essere:
receiver feedback

: un i-esimo ACK riscontra la corretta ricezione del singolo i-esimo packet.


 cumulative acknoledgement: un i-esimo ACK riscontra la corretta ricezione no all'i-esimo packet.


individual acknoledgement

Il piggy-backed acknoledgment una tecnica di acknolegement in


cui l'ACK per i dati client-server inserito in un packet contenente dati
server-client, e viceversa.
46 un processo applicativo un'istanza di un programma in esecuzione.
47 la comunicazione tra un processo e la rete non diretta, bens' mediata dallw socket.
48 le porte nell'intervallo [1, 1023] sono le cosiddette well-known port, ovvero porte riservate

a network application note.


49 in un protocollo connectionless, due segment con diversa provenienza e stessa destinazione
sono indirizzati alla stessa socket; in un protocollo connection-oriented, due segment con
diversa provenienza e stessa destinazione sono indirizzati a socket distinte.

19

: il sender deve sapere quando e come sia necessario ritrasmettere i packet errati o perduti. Implementato mediante
packet retrasmission

: il sender invia l'i-esima collezione


di packet dopo aver riscontrato (i 1)-esima collezione di packet, e la
ritrasmette nch non abbia ricevuto l'i-esimo ACK. Gli automatic
repeat request (ARQ) protocol sono protocolli che implementano tale meccanismo di ritrasmissione.
 time-based retrasmission: il sender associa un timer ad ogni
packet inviato non riscontrato, allo scadere del quale il packet viene
ritrasmesso. Il timer-interval deve essere appositamente calibrato,
maggiorando il RTT, in modo da evitare i duplicate data packet,
ovvero ritrasmissioni inutili che introdurrebbero un ulteriore delay
ed il rischio di congestione della rete.
 sequence-number (SN): ogni packet inviato univocamente identicato dal suo sequence number, di modo che il receiver possa dedurre se un packet sia una trasmissione originale o una ritrasmissione.
Esistono due tipologie di implementazione del sequence number:
alternate-bit sequence number: il sequence number un
bit che connota un packet come trasmissione originale o ritrasmissione.
incremental sequence number: il sequece number una
stringa di bit che individua il posizionamento di un packet in
uno stream.


acknoledgement retrasmission

Un reliable data transfer protocol pu essere classicato in base alla modalit


di invio dei packet, e conseguentemente dalla tipologia di acknoledgement:

stop-and-wait protocol

dendo un individual ACK.

: il sender invia un segment alla volta atten-

il sender invia n segment alla volta in pipeline


attendendo n individual ACK o m < n cumulative ACK.

pipelined protocol:

Un pipelined protocol un reliable data transfer protocol in cui il sender


invia n segment alla volta in pipeline attendendo n individual ACK o m < n cumulative ACK.. Il pipelining non determina quindi la sola modalit di invio, ma
conseguentemente anche i meccanismi di gestione dei packet, acknoledgement e
sequence numbering. Il pipelining richiede infatti
: il sequence number indica la posizione in byte di un packet in uno stream di packet; il receiver pu
cos eventualmente comunicare al sender l'esatto packet da ritrasmettere
all'interno di uno stream in pipeline.

sequence number incrementali

packet buffering

: il sender mantiene un sender buffer che buerizza


i packet inviati non ancora riscontrati; il receiver mantiene un receiver
buffer che buerizza i packet correttamente ricevuti.
20

La channel utilization il tempo in cui il sender impegnato ad inviare


segment nel canale di comunicazione: evidentemente, un pipelined protocol ha
una channel utilization maggiore di uno stop-and-wait protocol. Tipicamente,
un pipelined protocol prevede akcnoledgement time-based retrasmission ed incremental sequence number. I pipelined protocol che realizzano il reliable data
transfer nel transport-layer sono:

: il sender invia n packet in pipeline attendendo n


cumulative ACK, mantenendo sempre al pi n packet non riscontrati.
Tale invariante induce il sender a mantenere una sliding-window di
lughezza n, la quale induce l'invio dei packet in pipeline50 , e che scorre sul
sender buer ad ogni ACK ricevuto. Il sender mantiene un timer associato all'ultimo packet inviato non ancora riscotrato 51 . In caso di timeout
vengono ritrasmessi tutti i packet successivi all'ultimo packet riscontrato.
Il receiver ignora i packet disordinati.
GBN causa lo spreco di tutta quella banda e del tempo utilizzati per inviare packet successivi ad un packet perso: i packet successivi sono dunque
disordinati e vengono dunque ignorati dal receiver, il quale non inviando
alcun ACK causano il timeout e dunque la ritrasmissione di packet recapitati, ma scartati.
go-back-n (GBN)

: una estensione del GBN pensata per indurre


il sender a ritrasmettere i soli packet persi o corrotti. Il sender invia n
packet in pipeline attendendo n individual ACK, mantenendo sempre al
pi n packet non riscontrati. Il sender associa un timer ad ogni packet
inviato, allo scadere del quale viene ritrasmesso il solo packet relativo. Il
sender ed il receiver mantengono una sliding-window di lunghezza n. Il
receiver accetta i packet disordinati 52 . Il sender ed il receiver possono non
avere la stessa percezione dei packet correttamente recapitati: la slidingwindow del sender e del receiver possono dunque non essere sincronizzate,
rendendo talvolta impossibile al receiver di riconoscere mediante sequence
number se un packet sia stato trasmesso o ritrasmesso. La dimensione
della sliding-widow deve essere tale da permettere sempre la distinzione
tra packet trasmessi e packet ritrasmessi, e quindi pari a
selective-repeat (SR)

winsize

| {sn|sn = sequence number} |


2

(10)

Congestion Control La congestion il fenomeno per cui il traco in rete


tale da non poter essere evaso. Il packet loss, dovuto al packet dropping indotto
dai router buer overow, ed il packet delay, dovuto al router queueing, sono i
tipici sintomi della congestion.
50 gli slinding-window protocol sono i protocolli che prevedono il mantenimento di una
sliding-window per l'invio dei packet in pipeline.
51 il timer viene dunque resettato ad ogni ACK ricevuto
52 il receiver consegna il contenuto del receiver buer all'application-layer solo dopo averlo
riordinato, ovvero dopo aver tutti i packet la cui assenza aveva indotto il disordine.

21

Il congestion control il servizio punta a minimizzare la probabilit


di congestion, regolando la velocit di trasmissione dei packet in funzione del
grado di congestionamento della rete. Il sender deve trasmettere solo quando
ci non induca la congestion lungo il suo route, e ritrasmettere solo i packet
eettivamente perduti.
Il congestion control pu essere implementato secondo due paradigmi:

: il transport-layer inferisce la congestion osservandone i sintomi, senza alcun supporto da parte del networklayer.

end-to-end congestion control

network-assisted congestion control: il network-layer comunica


al transport-layer la congestion mediante un servizio di notica implementabile secondo due paradigmi:

: il router congestionato invia al sender un choke


, inducendolo a ridurre o arrestare il traco in uscita.
 host-assisted: il router congestionato marca i packet in uscita di
modo che, giunti a destinazione, inducano il receiver a noticare la
congestione al sender.


router-assisted

packet

La fairness la misura della tendenza di un congestion control protocol ad


equipartire la bandwidth di un bottleneck link fra tutte le trasmissioni che lo
congestionano.
UDP Lo user datagram protocol (UDP)53 un transport-layer protocol
connectionless e unreliable.
Un UDP segment ha la seguente forma
source port

destination port

lenght

checksum
data

: port number del source host e del destina-

source/destination port

tion host.

: lunghezza del segment.

lenght

checksum

data

: checksum calcolato sul segment.

: contiene il message.

UDP considera ogni segment come un segment a se stante, senza alcuna visione
d'insieme sul usso dei dati. UDP utilizza il port number per indirizzare il
segment ricevuto alla socket opportuna. In caso di errori nel segment, UDP pu
ignorare il segment o inoltrarlo all'application-layer con un warning.
UDP preferibile per quelle applicazioni fault-tolerant che desiderino
53 denito

in RFC 768.

22

immediato controllo sulla trasmissione


ecienza
application-layer reliable protocol
numerose connessioni simultanee
3.1

TCP

Il transport control protocol (TCP)54 un transport-layer protocol


pipelined, full-duplex point-to-point55 , connection-oriented, reliable, con congestion control e ow control. Essendo implementato nei soli host, questi sono
i soli a mantenere le informazioni di stato della connessione.
TCP basato su cumulative ACK. In caso di ricezione disordinata dei segment, TCP bu ignorare i segment, oppure, pi tipicamente, buerizzarli in
attesa di colmare i gap.
Il sequence number iniziale viene randomicamente scelto dal client, in modo
da minimizzare la probabilit di collisioni con sequence number ancora circolanti
nella rete. Il sequence number deve essere sempre inserito nel segment, anche
se il segment non dovesse contenere alcun payload.
TCP supporta il piggy-backed ACK.
Il client stabilisce la connessione con il server mediante un processo di connection setup, detto 3-way-handshake, durante il quale la connessione viene
negoziata.
Il payload incapsulabile in un segment limitato dal maximum segment
size (MSS), a sua volta limitato dal maximum transfer unit (MTU) previsto dal transport-layer protocol.
Un TCP segment ha la seguente forma
source port
destination port
sequence number
ACK number
hlength
u a p r s f
receive window
checksum
urgent data pointer
options
data

: port number del source host e del destina-

source/destination port

tion host.

: sequence number del segment, ovvero il suo posizionamento in byte all'interno di uno stream di segment.

sequence number

ACK number

: indica il successivo sequence number atteso56 .

54 denito in RFC 793, 1122, 1323, 2018, 2581.


55 il multicast non supportato.
56 la natura full-duplex del TCP ha fatto si che

di uno stesso segment.

23

questo campo sia stato inserito all'interno

: lunghezza dell'header del segment.

header length

URG

ACK

PSH

RST

SYN

FIN

receive window

checksum

urgent data pointer

options

data

:
:
: utilizzato nel connection setup per inizializzare la connessione.

: utilizzato nel connection teardown per inizializzare la chiusura della


connessione.
:

: checksum calcolato sul segment.


:

: contiene il message.

Connection Management Il TCP un protocollo connection-oriented e


preve dunque un processo di negoziazione per il connection setup ed il connection teardown.
Il 3-way handshake il processo di negoziazione per il connection setup.
L'inizializzazione della connessione procede come segue

1.

syn

: il client invia il syn segment, ovvero un segment privo di payload


con SY N = 1 e sequencenumber = randomclient .

2.

synack

: il server alloca le risorse per la connessione ed invia il synack


, ovvero un segment privo di payload con SY N = 1, ACK =
randomclient e sequencenumer = randomserver .

segment

3.

: il client alloca le risorse per la connessione ed invia l'ack


, ovvero il riscontro del synack segment con eventuale
payload e SY N = 0.

ack synack

synack segment

Il 4-way handshake il processo di negoziazione per il connection teardown.


La chiusura della connessione procede come segue:
1.

: il client dealloca le risorse della connessione ed invia il


, ovvero un segment con F IN = 0.

client fin

fin

segment

2.

client finack

n segment.

: il server invia il finack segment, ovvero il riscontro del

24

3.

: il server dealloca le risorse della connessione ed invia il


, ovvero un segment con F IN = 0.

server fin

fin

segment

4.

: il client invia il finack segment, ovvero il riscontro del

server finack

n segment.

Se il client invia un segment destinato ad una porta non accetta dal server, il
server invia un reset segment, ovvero un segment con RST = 1 che induce il
client ad interrompere il processo di negoziazione.
Il TCP sore di due scenari patologici: connection setuo simultanei e connection teardown simultanei.
Il SYN flood attack un attacco DoS che sfrutta la mancante memorizzazione dei syn segment da parte del server durante il 3-way handshake,
per indurlo ad allocare cos tante risorse per connessioni inutili da inciare
l'inizializzazione delle connessioni legittime. L'hacker invia un gran numero di
syn segment senza mai riscontrare i synack segment. I syn cookie57 sono stati
sviluppati proprio per contrastare questo tipo di attacco. I cookie permettono
al server di memorizzare i syn segment. Il server allocan le risorse solo dopo
aver ricevuto il riscontro per un synack per cui esista un syn cookie.
Reliable data transfer Il TCP reliable data transfer prevede

cumulative-acknoledgement time-based (re)trasmission: il receiver attende al pi 500msec prima di riscontrare il segment ricevuto,
cos da poterne eventualmente ricevere altri e sfruttare la cumulazione.

: mantiene un timer associato al


segment non riscontrato con sequence number minore. Se non vi alcun
timer attivo, questo viene inizializzato e associato al primo segment passato al network-layer. In caso di timeout, ritrasmette il segment a cui il
timer fa riferimento, e resetta il timer con timer interval raddoppiato.
Il timer interval, inizializzato a 1, deve calibrarsi sulla percezione della
congestione della rete, cos da evitare ritrasmissioni inutili. Il calcolo
del timer interval basato sul calcolo statistico exponential weighted
moving average (EWMA), mediante il quale possibile ottenere una
stima basata su una priorit maggiore di valori recenti rispetto a quelli
passati. Il timer interval viene dunque calcolato come segue
timeout interval ewma/doubling

(11)

interval = eRT T + 4 devRT T


eRT T = (1 ) eRT T + samRT T

( = 0, 125)

devRT T = (1 ) devRT T + |samRT T eRT T |

( = 0, 25)

(12)
(13)

L'estimated RTT eRT T l'EWMA degli RTT registrati. La deviation


devRT T , ovvero la deviazione degli RTT, l'EWMA delle uttuazioni
degli RTT registrati. Il sample RTT samRT T l'ultimo RTT registrato.
RTT

57 deniti

in RFC 4987.

25

: se il receiver riceve un segment con sequence number


maggiore di quello atteso, invia un ACK riscontrante l'ultimo segment ordinatamente ricevuto. Cos facendo, se il sender riceve 3 duplicate ACK,
esso deduce un packet loss, potendo dunque accorgersene prima del timeout e provvedere cos immediatamente alla ritrasmissione

fast retrasmit

Congestion control Il congestion control implementato da TCP segue il


paradigma end-to-end58 e prevede che il sender calibri la propria trasmissione
in funzione della congestione di rete percepita.
Il sender deve mantenere l'invariante
(LastByteSent LastByteAcked) cwnd

(14)

La dierenza (LastByteSent LastByteAcked) indica i segment inviati non


ancora riscontrati, dunque quelli in pipeline. La congestion-window cwnd
la variabile che conferisce al sender la percezione della congestione. Lo start
threshold sthres indica il range entro il quale il traco pu aumentare senza
rischio di congestione. Tale stima calibrata in funzione dell'ultima congestione
percepita.
Il TCP congestion control algorithm l'algoritmo che implementa il congestion control in TCP. L'algoritmo prevede tre stati transitori:

slow start: sthres = 64kB cwnd = 1M SS e assume una crescita


esponenziale di 1M SS per ogni segment riscontrato cumulativamente59 .
Quando cwnd sthres, entra nello stato di congestion avoidance. In
e cwnd = sthres + 3M SS ed
caso di 3 duplicate ACK, sthres = cwnd
2
e
entra nello stato di fast recovery. In caso di timeout, sthres = cwnd
2
cwnd = 1M SS .

: cwnd assume una crescita lineare di 1M SS


per ogni ACK ricevuto. In caso di 3 duplicate ACK, sthres = cwnd
e
2
cwnd = sthres + 3M SS ed entra nello stato di fast recovery. In caso
di timeout, sthres = cwnd
e cwnd = 1M SS ed entra nello stato di slow
2
start.
congestion avoidance

: cwnd assume una crescita lineare di 1M SS per ogni duplicate ACK riscontrante il segment che ha indotto la transizione a questo
stato.In caso di ACK, cwnd = sthres ed entra nello stato di congestion
avoidance. In caso di timeout, sthres = cwnd
e cwnd = 1M SS ed entra
2
nello stato di slow start.
fast recovery

Il TCP congestion control dunque una implementazione che appartiene alla


classe degli additive-increase multiplicative-decrease (AIMD) congestion control.
58 il protocollo IP non permette una implementazione network-assisted.
59 un ACK riscontrante due segment induce un incremento di 2MSS.

26

Flow Control Il flow control il servizio che minimizza la probabilit


di overow nel receiver buer. Tale overow causato da un eccesso di velocit nella produzione di bit nel receiver buer rispetto alla velocit di consumo
dell'application-layer. Questo servizio implementato come speed-matching,
accoppiando la velocit di trasmissione del sender alla capacit di trasmissione
del receiver.
Il sender deve mantenere l'invariante
(LastByteSent LastByteAcked) rwnd

(15)

rwnd = rcvBuf f (LastByteRcv LastByteRead)

(16)

La dierenza (LastByteSent LastByteAcked) indica i segment inviati non


ancora riscontrati, dunque quelli in pipeline. La receiver-window rwnd
indica lo spazio disponibile nel receiver buer, conferendo cos al sender la
percezione istantanea della capacit di ricezione del receiver.
Il receiver inserisce in ogni segment inviato, il valore di rwnd, comunicando
cos istantaneamente al sender la propria capacit di ricezione. In caso di saturazione del receiver buer, ovvero ntantoch rwnd = 0, il sender invia al
receiver segment privi di payload, cosicch riscontrandoli, venga indotto a continuare a comunicargli il valore di rwnd.

27

Network Layer

Il network layer, presente nella protocol stack di ogni host ed ogni router,
realizza la comunicazione host-to-host, mediante
: trasferimento locale di un datagram da un input link ad un
opportuno output link, all'interno di uno stesso router. Questo servizio
realizzato mediante indicizzazione della forwarding table.

forwarding

routing

: determinazione del route di un datagram all'interno del network, dalla sorgente alla destinazione. Questo servizio realizzato mediante l'utilizzo di un routing protocol.

Il network service model denisce i servizi che irrobustiscono il servizio di


comunicazione, ovvero garanzia di consegna, di ordine, di bandwidth, di timing,
di jitter e di sicurezza.
Il network layer di internet prevede un singolo servizio: il best-effort
service, ovvero una versione minimalista del network service model, che non
assicura alcuno dei servizi suddetti, ma che fa di tutto per approssimarne il
risultato. Questo minimalismo permette al network layer di interconnettere
networks aventi tecnologie e caratteristiche di link layer eterogenee.
Il network layer pu realizzare la comunicazione host-to-host secondo due
paradigmi alternativi
: prevede un handshaking process tra i routers
appartenenti al route. Questo paradigma realizzato dalle virtual circuit
networks.

connection-oriented

connectionless

4.1

: non prevede alcun handshaking process. Questo paradigma


realizzato dalle datagram networks.
Virtual Circuit Networks e Datagram Networks

Virtual Circuit Networks Una virtual circuit network (VC network) una computer network con network layer connection-oriented.
Un virtual circuit (VC) l'istanza di una network layer connection
all'interno di una VC network. Intutitivamente, un VC dunque l'istanza di
un route in una VC network. Un VC number un numero casuale associato
ad un link appartenente ad un VC. Intuitivamente, un VC number dunque
l'instanza di un passaggio locale di una connessione lungo un link.
Ogni router ha una forwarding table che mappa lo spazio delle istanze di
un passaggio locale in un input link, con l'istanza di un passaggio locale in un
output link. Il matching nella forwarding table avviene secondo l'input link e
l'attuale VC number del datagram. Una generica entry nella forma
input link

input VC number

output link

28

output VC number

Quando un datagram giunge ad un router, quest'ultimo indirizza la forwarding table, sovrascrive l'output VC number sul VC number attualmente
contenuto nell header, e lo indirizza all'output link corrispondente.
Il VC setup il processo di allocamento di un VC, e consiste nell'inserimento
di una entry nella forwarding table di ogni router appartenente al VC. Il VC
teardown il processo di deallocamento di un VC, e consiste nella rimozione
della corrispondente entry dalla forwarding table di ogni router appartenente al
VC.
I routers comunicano tra loro, potendo cos allocare o deallocare il VC, mediante scambio di signaling message, secondo uno specico signaling protocol.
La forwarding table di un router viene modicata ad ogni VC setup e VC
teardown che lo veda coinvolto in un VC.
Datagram Networks Una datagram network una computer network
con network layer connectionless.
Ogni router ha una forwarding table che mappa lo spazio degli indirizzi sugli
output link. Il matching nella forwarding table avviene secondo la longest
prefix matching rule, la quale prevede il matching secondo il presso pi
lungo. Una generica entry nella forma
destination address

output link

Quando un datagram giunge ad un router, quest'ultimo indirizza la forwarding table, e lo indirizza all'output link corrispondente.
La forwarding table di un router viene modicata dal routing algorithm,
ad intervalli di tempo dell'ordine di grandezza dei minuti.
Trattandosi di una tecnologia connectionless, non sussiste alcun processo di
setup o teardown.
4.2

Routers

Un router un device che realizza il forwarding dei ussi di dati da una input
interface ad una output interface, secondo il mapping specicato dalla propria
forwarding table, popolata secondo le speciche della computer network.
E' internamente costituito da

: realizza la physical layer connection e la link layer connection tra il link entrante ed il router mediante data decapsulation, e
buerizza i packets per il lookup ed il forwarding secondo le indicazioni
del routing processor. Ogni input port possiede un input buer con disciplina di gestione drop-tail. Ogni input port possiede una shadow copy 60
della forwarding table, cos da localizzare le decisioni di forwarding ed
eliminare un bottleneck centralizzato nel routing processor.
input ports

60 la forwarding table mantenuta dal routing processor, viene da quest'ultimo copiata su


ogni input port attraverso un bus separato.

29

switching fabric: connette le input ports alle output ports. La switching fabric pu essere implementata secondo le seguenti alternative:

: la forwarding table immagazzinata in memoria secondaria. Pu trasferire un solo packet alla volta, in quanto non
possibile accedere concorrentemente ad uno stesso shared system
bus.
 bus switching: il packet viene labellato con l'identicativo della
output port di destinazione, ed inviato in broadcasting a tutte le
output ports mediante uno shared bus, senza la mediazione del routing processor. Solo la output port corrispondente al label accetta
il packet. Pu trasferire un solo packet alla volta, in quanto non
possibile accedere concorrentemente ad uno stesso shared system
bus.
 crossbar switching: un crossbar switch una griglia costituita
da 2n bus che interconnette direttamente n input ports ad n output
ports. Ogni bus orizzontale intercetta ogni bus verticale. L'intersezione
(i, j) del bus i con il bus j permette il trasferimento di un packet dalla
input port i alla output port j . Pu dunque trasferire parallelamente
pi packets, ntantoch le output ports sono dierenti


memory switching

: buerizza i packets in uscita, e realizza la physical layer


connection e la link layer connection tra il router ed il link uscente mediante data encapsulation. Ogni output port generalmente accoppiata con
una input port nella stessa line card, e possiede un packet scheduler che
disciplina l'ordine di trasmissione dei packets, tipicamente secondo una
disciplina di accesso FIFO 61 o WFQ 62 .
output ports

: mantiene la forwarding table, esegue il routing


protocol, ed esegue le funzionalit di network management.
routing processor

Il router forwarding plane63 l'insieme delle funzionalit che realizzano


il forwarding all'interno di un router, e sono tipicamente cablate nel suo hardware. Le input ports, output ports e la switching fabric implementano il router
forwarding plane.
Il router control plane l'insieme delle funzionalit distribuite che
realizzano il routing all'interno di una computer network, e sono tipicamente
software eseguiti sul router processor.
Packet Queue Una packet queue, ovvero il fenomeno di queueing all'interno
di un router, pu realizzarsi in corrispondenza delle input ports o delle output
ports. Il posizionamento e l'estensione della packet queue dipende dal trac
load, e dalla velocit relativa della switching fabric e delle line cards.
61 First-In-First-Out.
62 Weighted-Fair-Queueing.
63 anche detto router forwarding

data plane.

30

Qualora la switching fabric sia considerevolmente pi lenta delle line cards, la


packet queue si verica in corrispondenza delle input ports. Qualora la switchig
fabric sia considerevolmente pi veloce delle line cards, la packet queue si verica
in corrispondenza delle output ports.
L'head-of-the-line blocking (HOL blocking) un fenomeno che consiste nel bloccaggio temporaneo in una input port, di un packet destinato ad
una output port libera, da parte di un packet destinato ad una output port
occupata.
Gli active queue management algorithms (AQM) sono l'insieme di algoritmi che realizzano le disciplina di packet-dropping e packet-marking. Il random early detection (RED) un algoritmo AQM che permette l'inserimento
di un packet nel buer di una input port se e solo se la lunghezza media delle
output queues appartiene ad un intervallo stabilito.
4.3

IP

L'internet

protocol (IP)

il network layer protocol di Internet.

IP Datagram

Version

Header Length
TOS
Datagram Length
Identier
Flag Fragmentation Oset
TTL
Upper-Layer Protocol
Header Checksum
Source address
Destination address
Options
Data

: numero di versione IP del datagram. In base al version


number, il router sa come interpretare il datagram.

version number

header length

: dimensione in byte dell'header del datagram. Sebbene


IPv4 preveda un numero variabile di options, generalmente queste non
vengono inserite, generando cos un tipico header da 20-byte.
type of service (TOS): distingue la natura del traco a cui il datagram appartiene. E' infatti utile distinguere il traco real-time da quello
non-real-time. La policy applicata ai vari TOS determinata dal router
administrator.

: dimensione totale in byte del datagram. Sebbene il


eld da 16-bit consenta una dimensione teorica massima di 65535-byte, la
dimensione tipica non supera i 1500-byte, in quanto risulta limitata dalla
MTU del link-layer.

datagram length

identifier

ment.

: identica il datagram complessivo a cui appartiene un frag31

: posto a 1, identica un generico fragment, posto a 0 identica


l'ultimo fragment del datagram complessivo.

flag

fragmentation offset

time to live (TTL)

upper-layer protocol

: indica la posizione realtiva in byte del fragment


all'interno del datagram complessivo.
: valore decrementato di 1 da ogni router appartenente al path. Quando raggiunge il valore 0, il router scarta il datagram. Questo eld permette di evitare la circolazione innita dei datagram
all'interno di eventuali routing loop.
64 :

specica il transport-layer protocol a cui


destinato il datagram. Questo eld viene dunque utilizzato solo quando
il datagram abbia raggiunto la destinazione nale, dove infatti serve a
specicare secondo quale protocol debba essere condotto il demultiplexing.
65 :

permette al router di valutare la corretta ricezione


del datagram. Il checksum viene calcolato sull'header, preso a gruppi di
2-byte.
header checksum

: IP address della sorgente e della des-

source/destination ip address

options

data

tinazione.

: eld variabile di options. Al ne della minimizzazione dell'overhead,


questo eld viene cos raramente utilizzato da essere scomparso in IPv6.
66 :

contiene il payload del datagram, quindi il trasport-layer segment,


o altri tipi di dati come gli ICMP message.

La IP datagram fragmentation il fenomeno per cui un IP datagram di


dimensioni maggiori della maximum transmission unit (MTU)67 viene suddiviso in IP datagram pi piccoli, detti fragment, ognuno dei quali viene
incapsulato in un frame. La sorgente deve dunque disassemblare l'IP datagram
in fragment di dimensioni minori della specica MTU; mentre la destinazione
deve riassemblare l'IP datagram a partire dai fragment ricevuti. I eld identier, ag e fragmentation oset vengono impiegati per realizzare un processo di
disassemblaggio/riasemblaggio consistente.
64 6
65 il

indica il TCP, 17 indica l'UDP.


checksumming viene implementato sia nel TCP/UPD che nel IP, in quanto il trasportlayer permette al pi il check del segment e non del datagram header, inoltre perch non
detto che nella protocol stack il checksumming venga fatto in entrambi i layer.
66 anche detto payload.
67 la MTU la massima dimensione dei dati incapsulabili in un frame, ovvero in un packet
del link layer. Esistendo molte tecnologie eterogenee per l'implementazione del link layer, il
network layer si avvale della fragmentation per adattare dinamicamente il usso di IP a tutte
le tecnologie link layer attraversate.

32

Addressing Una interface il collegamento tra un host/router ed un physical link. Ogni host ha una interface, ed ogni router ha una interface per ogni
link incidente. Ogni interface identicata da un IP address, ovvero una
sequenza numerica di 32-bit in dotted-decimal notation.
Un subnet una collezione di interface adiacenti. Ad ogni subnet viene
assegnato un IP address block, ovvero una porzione di IP address contigui,
individuato da un IP address ed una subnet mask, ovvero il numero di MSBs68
dell'IP address, detti complessivamente network prex, che deniscono lo spazio
di indirizzamento della subnet. La concezione della grandezza di un IP address
block data dalla dimensione della sua subnet mask. Intuitivamente, maggiore
la subnet mask minore lo spazio di indirizzamento della subnet. Ad esempio,
192.168.0.0/24 indica un network prex 192.168.0 e dunque uno spazio di indirizzamento [192.168.0.0, 192.168.0.255]. L'IP address di una interface dunque
determinato dallo spazio di indirizzamento della subnet a cui appartiene.
La classless interdomain routing (CIDR)69 la strategia di assegnamento uciale degli IP address in Internet70 . Il CIDR concepisce la rete come
una collezione di subnet di subnet, e dunque lo spazio di indirizzamento come
una collezione di IP address block. Lo spazio di indirizzamento totale viene
infatti suddiviso in IP address block71 , che a loro volta possono essere suddivisi
in IP address block pi piccoli, e cos via. La address aggregation72 la
abilit di una subnet di utilizzare un singolo network prex73 per noticare il
network core della sua esistenza, indicandogli dunque di indirizzarle il traco
destinato agli host che le appartengono.
DHCP Il dinamic host configuration protocol (DHCP)74 un plugand-play protocol con paradigma client-server che assegna l'IP address ad ogni
host secondo le speciche della subnet di appartenenza, e gli notica informazioni addizionali come la subnet mask, l'IP address del gateway e del DNS
server. Qualora una subnet fosse sprovvista di un DHCP server, essa necessiterebbe di un DHCP relay agent, tipicamente un router, che sappia l'IP address del DHCP server esterno. Il DHCP risulta dunque essere una validissima
68 most signicant bit.
69 denitio in RFC 4632.
70 Il classfull addressing,

strategia di assegnamento uciale prima dell'adozione del


CIDR, prevedeva la suddivisione degli IP address nelle seguenti classi di spazio di indirizzamento, dierenziate per dimensione della subnet mask, e dunque per capacit di indirizzamento: la classe A con 8-bit, la classe B con 16-bit e la classe C con 24-bit. La diusione
di subnet di piccola e media dimensione rese inecace questa strategia: i 28 2 = 254 hosts
della classe C risultarono insucienti, mentre i 216 2 = 65534 hosts della classe B risultarono
eccessivi.
71 la internet corporation for assigned names and numbers (ICANN) l'autorit
che gestisce gli IP address. Essa assegna un IP address block ad ogni ISP, il quale lo suddivide
in IP address block pi piccoli da assegnare alle organization sottostanti.
72 anche detta route aggregation, o route summarization.
73 qualora una subnet O1 200.23.18.0/23 venga trasferita da una subnet A 200.23.16.0/20
ad una subnet B 199.31.0.0/16, la subnet A continua a noticare 200.23.16.0/20, mentre la
subnet B notica 199.31.0.0/16 e 200.23.18.0/23.
74 denito in RFC 2131.

33

alterativa all'impostazione manuale degli IP address in una subnet.


Il DHCP prevede le seguenti fasi per l'acquisizione dell'IP address:
1.

dhcp server discovery

: il nuovo host invia in broadcast un dhcp

dis-

cover message.

2.

: il DHCP server risponde inviando in broadcast un


, contenente transactionID, IP address, network
mask ed IP lease time.
dhcp server offer

dhcp offer message

3.
4.

dhcp request

server un
ferti.

: il nuovo host accetta i parametri oerti inviando al DHCP


, contenente l'echo dei parametri of-

dhcp request message

: il DHCP server accetta l'assegnazione dell'IP address inviando


al nuovo host un dhcp ack message.
dhcp ack

La comunicazione DHCP avviene mediante scambio di dhcp message, ovvero


UDP segment sulla porta 67.
NAT La network address translation (NAT) una tecnica di rete che
permette ad un router, detto nat-enabled router, di mappare la LAN side
di una subnet, detta NATed subnet, nella propria WAN side 75 , mediante
l'utilizzo della NAT translation table.
WAN side

router IP address

LAN side

router port number

host IP address

host port number

La NAT permette dunque di ovviare alla saturazione degli spazi di indirizzamento: la prolerazione delle soho subnet76 ne ha infatti reso indispensabile
l'implementazione e la diusione.
Il router ottiene il proprio IP address dal DHCP server del proprio ISP, ed
implementa un vero e proprio DHCP server per l'assegnazione degli IP address
ai NATed host, ovvero gli host appartenenti alla NATed subnet.
La comunicazione interna alla NATed subnet avviene normalmente, mediante l'utilizzo dell'IP address block previsto dal router, tipicamente 192.168.0.0/24.
La comunicazione esterna avviene mediante il processo di traduzione basato
sulla NAT translation table. Quando un NATed host intende comunicare con
l'esterno, questo indirizza il proprio traco in uscita al router, il quale inserisce
una entry nella NAT translation table, ed inoltra il traco alla destinazione sostituendo la propria WAN side alla sorgente originaria. Quando un host esterno
intende comunicare con un NATed host, questo indirizza il proprio traco al
75 La NAT viola il paradigma end-to-end, secondo il quale la comunicazione dovrebbe
avvenire direttamente tra host remoti, senza alcuna modicazione degli spazi di indirizzamento da parte dei nodi.
76 ovvero small oce home oce subnet.

34

router, il quale ricava dalla NAT translation table la LAN side corrispondente,
e le inoltra il traco entrante.
La NAT induce dunque al router di interagire con l'esterno come un host,
mascherando cos lo spazio di indirizzamento della NATed subnet con il proprio
IP address.
Il mascheramento dello spazio di indirizzamento della NATed subnet impedisce ai NATed host di agire come server, ovvero impedisce agli host esterni
alla NATed subnet di inizializzare connessioni con i NATed host. La NAT
traversal una tecnica di rete che ovvia a questo impedimento, permettendo
dunque ad un NATed host di agire come server verso l'esterno, e dunque ad
un host esterno alla NATed subnet di stabilirvi una connessione TCP/UDP. La
NAT traversal pu essere realizzata mediante:

: il non-NATed client A stabilisce la connessione


con il NATed server B chiedendo all'host C, con cui B gi connesso, di
chiedere a B di inizializzare una connessione con A.
connection traversal

universal plug and play protocol (UPnP): il NATed server B


richiede al router77 di mappare i propri (private IP address, private port number)
in (public IP address, public port number), permettendo cos ad un qualsiasi host B esterno alla NATed subnet di inizializzare una connessione
con B.

ICMP L'internet control message protocol (ICMP)78 il protocollo


che permette agli host e ai router di scambiarsi informazioni relative la networklayer. Sebbene questo protocollo sia considerato parte integrante del protocollo
IP, gli icmp message vegono incapsulati all'interno di un IP datagram.
Sebbene questo protocollo venga tipicamente utilizzato per il report degli
errori, trova un ampio spettro d'utilizzo in

: il source host invia un ICMP message di echo request al destination


host desiderato, il quale risponde con un ICMP message di echo reply.

ping

traceroute

: il source host invia degli UDP segment al destination host


desiderato su una porta impossibile da contattare, con TTL progressivi a
partire da 1. La progressione dei TTL fa si che gli UDP segment scadano
progressivamente al primo router, al secondo, al terzo e cos via. Ad ogni
scadenza il router invia al source host un ICMP message TTL expired,
informandolo sulla identicazione del router. Una volta giunto al destination host, l'impossibilit della porta fa si che questo invii al source host
un ICMP message destination port unknown.

Gli ICMP message pi comuni sono


77 il router deve essere UPnP-enabled router, ovvero un NAT-enabled router che supporta
il protocollo UPnP.
78 denito in RFC 792.

35

type

code

description

0
3
3
4
8
9
10
11
12

0
1
3
0
0
0
0
0
0

echo reply
destination host unreacheable
destination port unknown
source quench
echo request
router advertisement
router discovery
TTL expired
IP header bad

IPv6 IPv6 stato sviluppato dalla Internet Engineering Task Force a partire
dagli anni '90, con la principale motivazione di ovviare all'esaurimento degli IPv4
address 79 . I cambiamenti pi importanti introdotti da IPv6 sono l'estensione
della capacit di indirizzamento, il ssaggio della dimensione dell header a 40byte ed il ow labeling.
Un IPv6 datagram ha il seguente formato

Version Trac Class


Flow Label
Payload Length Next Header Hop Limit
Source address
Destination address
Data
: numero di versione IP del datagram. In base al version number,
il router sa come interpretare il datagram.

version

traffic class

payload length

: distingue la natura del traco a cui il datagram appartiene. E' infatti utile distinguere il traco real-time da quello non-realtime. La policy applicata ai vari trac class determinata dal router
administrator.
: dimensione totale in byte del payload del datagram.

: specica il transport-layer protocol a cui destinato il


datagram80 . Questo eld viene dunque utilizzato solo quando il datagram
abbia raggiunto la destinazione nale, dove infatti serve a specicare secondo quale protocol debba essere condotto il demultiplexing.
next header

: TTL del datagram.

hop limit

source/destination address

tinazione.

: IPv6 address della sorgente e della des-

79 Nel febbraio 2011, la IANA ha allocato l'ultimo blocco di IPv4 address.


80 IPv6 prevede le eventuali options in un header distinto, incapsulato nel payload

del datagram: in questo caso il valore del next header indicherebbe la presenza delle options.

36

: contiene il payload del datagram, quindi il trasport-layer segment,


o altri tipi di dati come gli ICMP message o gli options header.
data

Il processo di transizione da IPv4 ad IPv6 alquanto dicoltoso: sebbene infatti


IPv6 sia backward compatible con IPv4, IPv4 non aatto compatibile con
IPv6.
Dovendo escludere un ag day, sono state sviluppate due soluzioni per la
transizione:

: i nodi implementano una dual stack IPv4/IPv6, ovvero una


protocol stack con supporto parallelo per IPv4 ed IPv681 . Nel caso in cui
un path contenga uno o pi nodi intermedi implementanti la sola protocol
stack IPv4, ci renderebbe necessaria una traduzione del datagram da
IPv6 a IPv4, causando la perdita di molte informazioni dell'header82 .
dual-stack

: nel caso in cui un path contenga uno o pi nodi intermedi


implementanti la sola protocol stack IPv4, il datagram IPv6 viene incapsulato nel payload di un datagram IPv4, ntantoch non abbia raggiunto
un nodo implementante la protocol stack IPv6.
tunneling

IPsec IP Security (IPsec) un network layer protocol connection oriented


con servizio di sicurezza, backward compatible con IPv4 ed IPv683 .
Per poter essere utilizzato, IPsec deve essere inserito nella protocol stack
degli hosts che desiderino comunicare mediante un usso di dati criptato, senza
dover in alcun modo intaccare la protocol stack dei routers.
L'IPsec dispone dei seguenti servizi di sicurezza:

cryptographic agreement

encryption/decryption

data integrity

origin authentication

4.4

Routing Algorithms

Un routing algorithm un algoritmo che realizza il routing in una computer


network, ovvero computa il miglior route da un source host ad un destination
host, distribuendo le informazioni necessarie alla congurazione della forwarding
table di ogni router appartenente alla computer network84 .
81 i nodi implementano completamente e parallelamente sia la protocol stack con IPv4 che
la protocol stack con IPv6.
82 alcuni eld dell'header IPv6 non hanno una controparte nell'header IPv4.
83 IPsec ad oggi il pi diuso del suo genere, e deve la sua diusione al successo ottenuto
nelle Virtual Private Networks (VPN).
84 sia essa una VC network che una datagram network.

37

Un first-hop router85 il primo router a cui connesso un host, ovvero


il router che connette l'host al network core. Il source router il rst-hop
router del source host; mentre il destination router il rst-hop router del
destination host.
Un routing problem un problema di ottimizzazione discreta che consiste
nella determinazione del miglior route su rete, secondo determinati vincoli e
criteri. Un routing algorithm dunque un algoritmo che risolve un routing
problem, tipicamente formulato come un SP-path problem su grafo.
Un routing algorithm pu essere classicato in base alla conoscenza della
rete86 , pi specicamente in base alla distribuzione della conoscenza della rete,
alla necessit dell'interazione umana e alla sensibilit al traco:
: la conoscenza della rete totale e central-

global routing algorithm

decentralized routing algorithm

static routing algorithm

izzata.

: la conoscenza della rete itera-

tiva, asincrona e distribuita.

: la conoscenza della rete cambia in funzione


della modiche apportate dall'intervento del routing administrator alle
forwarding table.

dynamic routing algorithm: la conoscenza della rete si adatta dinamicamente ai cambiamenti topologici e di costo della rete.

: la conoscenza della rete si adatta

load-sensitive routing algorithm

load-insensitive routin algorithm

al livello istantaneo di congestione.


il livello istantaneo di congestione.

: la conoscenza della rete ignora

Sebbene negli utlimi 30 anni siano stati proposti molti routing algorithm, alcuni
formulati come SP-path problem o come MF-problem, ad oggi i routing algorithm impiegati in Internet sono due: il link-state algorithm ed il distance-vector
algorithm.
Link State Il link-state algorithm (LS algorithm) un global routing
algorithm in cui la conoscenza della rete viene computata mediante un link
state broadcasting algorithm e la computazione dei route mediante l'algoritmo
di DIjkstra.
Un link-state broadcasting algorithm un algoritmo che perviene
alla conoscenza della rete facendo in modo che ogni nodo invii ad ogni altro
nodo messaggi broadcast contenenti l'identicazione ed il costo di ogni suo link
incidente.
85 anche detto default router.
86 per conoscenza della rete si

intende la sua topologia e distribuzione dei costi dei link.

38

L'algoritmo di Dijkstra un algoritmo iterativo per la risoluzione degli


SP-problem su grafo, che in k iterazioni calcola gli SP-path in una rete di cardinalit k da una sorgente u a tutti i k nodi.
// Inizializzazione
N'=u for all nodes v: if v is neighbor of u: D(v)=c(u,v) else: D(v)=inf
// Loop
while N'!=N:
nd w not in N' such that D(w) is a minimum add w to N'
for all neighbor v of w and not in N': D(v)=min(D(v),D(w)+c(w,v))
Nel LS algorithm, ogni nodo comunica a tutti gli altri nodi le proprie informazioni locali: la conoscenza della rete risulta dunque consistente solo quando
globalmente consistente.
La forwarding table di ogni nodo u viene dunque popolata a partire dagli SPpath da u ad ogni altro nodo: per ogni destinazione viene infatti inserito il nexthop node, ovvero il nodo successivo ad u nel SP-path da u alla destinazione.
La direction oscillation un fenomeno patologico da cui aetta l'implementazione
load-sensitive del link-state algorithm. Esso consiste in una conitnua oscillazione
delle direzioni nella computazione del route. Intuitivamente, se la i-esima iterazione dell'algoritmo computa un route in una certa direzione, la (i + 1)-esima
iterazione computa un route nella direzione opposta, e cos via. Per ovviare a
questa patologia possono essere applicate due soluzioni: l'implementazione loadinsensitive del link-state algorithm, oppure l'esecuzione randomizzata asincrona
dell'algoritmo.
Distance Vector Il distance-vector algorithm (DV algorithm) un
decentralized routing algorithm in cui si perviene alla conoscenza della rete in
modo
distribuito: ogni nodo scambia informazioni con i soli nodi vicini; riceve

cio dai nodi vicini delle informazioni, sulle quali esegue poi una computazione locale, e le ridistribuisce agli stessi nodi vicini.

iterativo: lo scambio di informazioni avviene ntantoch ci siano aggior-

namenti da dichiarare; si tratta dunque di un self-terminating protocol.


L'algoritmo rimane in uno stato di quiescenza no alla variazione del costo
di un link.

asincrono: le computazioni locali coinvolgono direttamente i soli nodi

vicini, pervenendo dunque ad una informazione consistente e signicativa


mediante computazioni asincrone.

// Inizializzazione
for all nodes y: if y is neighbor of x: Dx(y)=c(x,y) else: Dx(y)=inf
for all y neighbor of x: Dw(y)=?
for all y neighbor of x: send distance-vector Dx=[Dx(y) : y in N] to all
neighbors
// Loop
39

while true:
while (link cost unchanged) or (not receiving updates): wait
for each y in N: Dx(y)=minv(c(x,v)+Dv(y))
if Dx(y) changed for any destination y: send distance-vector Dx=[Dx(y) : y
in N] to all neighbors
Nel DV algorithm, ogni nodo comunica ai soli nodi vicini le informazioni
risultanti da una ricomputazione locale delle informazioni precedentemente ricevute dagli stessi: la conoscenza della rete risulta dunque consistente gi quando
localmente consistente.
Ogni router mantiene una routing table, ovvero una struttura dati che
registra il suo distance-vector, ovvero il vettore dei costi per giungere da
quel router ad un destination router mediante uno dei suoi nodi vicini.
La forwarding table di ogni router u viene congurata secondo le soluzioni
della Bellman-Ford equation applicata alla routing table istantanea
du (y) = min {c(u, v) + dv (y)}
v

v vicino di u

(17)

dove dv (y) il costo del path da v ad y calcolato no a quell'istante.


Quando il costo di un link cambia, il risultato indotto dal cambiamento nel
nodo adiacente viene propagato ai nodi vicini se tale variazione del costo iduce
un cambiamento del route in almeno uno dei nodi adiacenti. Infatti, qualora
l'aumento del costo di un link inducesse y a preferire un route a z passante per
x, il quale, non essendo ancora al corrente dell'aumento, preferisce un route a
z passante per y , ci genererebbe un routing loop tra x ed y . Il routing loop
verrebbe sciolto solo dopo che il suo costo sia diventato maggiore di una qualche
soluzione alternativa.
Il count-to-infinity problem un fenomeno patologico da cui aetto
il DV algorithm. Esso pu vericarsi a seguito dell'aumento del costo di un link,
inducendo i nodi adiacenti alla generazione di un routing loop.
Il poisoned-reverse una tecnica di routing che permette ad ogni router
di evitare la generazione dei routing loop evetualmente costituiti dai soli nodi
vicini87 . Questa tecnica consiste nell'indurre un nodo x a negare ai suoi nodi
vicini y l'esistenza di un route a z , ntantoch x passi per y per giungere a z .
Viene cos prevenuta la generazione di un eventuale routing loop che coinvolgerebbe x ed y .
4.5

Autonomous Systems

Un autonomous system (AS) un gruppo di router sotto uno stesso controllo


tecnico-amministrativo. L'organizzazione di una computer network come una
collezione di AS un paradigma che, a dierenza di una organizzazione come
una collezione di router omogenei, scala e tutela le autonomie amministrative.
La rete Internet gerarchicamente suddivisa tra gli ISP, i quali suddividono la
propria porzione di rete in AS interconnessi.
87 il

poisoned-reverse non risolve il count-to-innity problem.

40

Un getaway router un router di un AS responsabile della sua connessione con l'esterno. Ogni AS deve dunque avere almeno un getaway router. La
hot potato routing una tecnica di routing applicata negli AS, la quale
prevede che ogni router interno ad un AS demandi la propria comunicazione
verso l'esterno al proprio getaway router pi vicino.
Un intra-AS routing protocol un routing protocol che realizza il
routing per i router appartenenti ad uno stesso AS. I router di uno stesso AS
devono eseguire lo stesso intra-AS routing protocol; mentre i router appartenenti
ad AS dierenti possono eseguire intra-AS protocol dierenti.
Un inter-AS routing protocol un routing protocol che realizza il routing per AS interconnessi. Gli AS interconnessi devono eseguire lo stesso inter-AS
routing protocol. Questo protocollo permette dunque ad ogni AS di mappare
la raggiungibilit delle subnet appartenenti ad altri AS, propagare queste informazioni ai propri router e computare la migliore route alla destination subnet;
permette inoltre ad ogni subnet di noticare la propria esistenza agli altri AS.
RIP Il routing information protocol (RIP) un intra-AS routing protocol che utilizza il DV routing protocol con metrica di costo data da hop-count,
ovvero il numero di subnet attraversate da un route88 .
Ogni router mantiene una routing table89 , contenente la forwarding table
ed il distance vector
destination subnet

next-hop router

hop-count

I router aggiornano le proprie routing table scambiandosi dei RIP message:


un RIP advertisement90 ogni 30 secondi contenente il distance vector, ed un
RIP request message per richiedere ai router vicini aggiornamenti sui loro
distance vector. Se un router non trasmette alcun RIP message per pi di 180
secondi, allora viene considerato irraggiungibile.
Sebbene il RIP sia considerato un network-layer protocol, esso in realt
implementato come un application-layer protocol: i RIP message sono infatti
UDP segment sulla porta 250 incapsulati in un IP packet.
OSPF L'open shortest path first (OSPF) un intra-AS routing protocol
che utilizza il LS routing protocol con metrica di costo data da hop-count o linkcapacity 91 .
Ogni router trasmette ad ogni altro router dello stesso AS un OSPF message contenente il costo dei link incidenti ogni 30 minuti od ogni volta che
questi subiscano variazioni di costo.
Un OSPF AS pu essere congurato in una gerarchia di aree, ognuna delle
quali possiede almeno un area border router, ovvero un router responsabile
88 compresa la destination subnet.
89 anche detta RIP table.
90 anche detto RIP response message.
91 il costo dato dal reciproco della link-capacity,

il traco sui link con bandwidth maggiore.

41

di modo da indirizzare preferenzialmente

della connessione con le aree esterne dello stesso AS. Una ed una sola area deve
essere congurata come backbone area, ovvero un'area contenente gli area
border router di tutte le aree, e dunque responsabile della connessione fra tutte
le aree.
OSPF supporta inoltre l'autenticazione dei router mediante cifratura MD5,
il multicast routing, l'unicast routing nonch la propagazione del traco su pi
route equivalenti.
BGP Il border gate protocol (BGP) un inter-AS routing protocol con
il quale gli AS, univocamente identicati da un autonomous system number
92
(ASN) , si scambiano informazioni incapsulate in un BGP message trasmesso
mediante connessioni TCP semipermanenti sulla porta 179.
Una BGP session la connessione mediante la quale vengono scambiati i
BGP message, ed una connessione TCP semipermanente sulla porta 179. Un
BGP peer un router connesso ad un altro router mediante una tale connessione.
Una external BGP session (eBGP session) una BGP session tra due
BGP peer appartenenti ad AS dierenti. Una internal BGP session (iBGP
session) una BGP session tra due BGP peer appartenenti allo stesso AS.
Un BGP message incapsula un route, ovvero un CIDRized prefix di una
subnet93 con i relativi BGP attribute:
AS-path: contiene gli ASN degli AS attraversati dal BGP message.

: interface del router in testa al AS-path.


Quando un router riceve un route, inserisce o meno, secondo la propria import
policy, una entry nella propria forwarding table. Quando un router riceve pi
route per uno stesso CIDRized prex, viene selezionato il route che massimizza
il local preference value, e che minimizza l'AS-path ed il costo per giungere
al next-hop router. Quando un router riceve un BGP message mediante una
eBGP session, questo lo inoltra ai router interni allo stesso AS mediante una
iBGP session.

4.6

next-hop

Broadcast Routing e Multicast Routing

Il broadcast routing il servizio del network-layer che permette ad un nodo


di trasmettere un packet a tutti i nodi della computer network.
Un broadcast packet un packet destinato ad una trasmissione broadcast.
Un broadcast routing algorithm un algoritmo che realizza il broadcasting routing, e pu basarsi sulle seguenti tecniche di broadcasting:
n-way unicast: il source node invia n copie del broadcast packet agli
n destination node, mediante unicast routing. Questa tecnica centralizza
l'overhead delle copie sul solo source node, ed assume che quest'ultimo
conosca gli indirizzi di tutti i nodi della rete.
92 assegnato dalla ICANN.
93 in BGP le destinazioni non

sono gli host, bens le subnet.

42

: il broadcast packet viene ricevuto, copiato ed inoltrato tra i


soli nodi vicini. Questa tecnica distribuisce l'overhead delle copie su tutti
i nodi della rete, e libera il source node dalla necessit di conoscere gli
indirizzi di tutti i nodi della rete. Di questa tecnica esistono due varianti:
flooding

: un nodo ricevente un broadcast packet,


lo reinoltra indiscriminatamente a tutti i nodi vicini. Questa implementazione aetta dal fenomeno patologico della broadcasting
storm, in base al quale la proliferazione e propagazione incontrollata
delle copie porta ad una saturazione fatale della rete.
 controlled flooding: un nodo ricevente un broadcast packet, lo
reinoltra ad un sottoinsieme improprio di nodi vicini qualora sia soddisfatto uno specico ooding control, ovvero un criterio di selezione
dei broadcast packet da inoltrare. Questa tecnica implementata
dai seguenti broadcast routing algorithm, ognuno dei quali realizza
un dierente ooding control:
sequence-number-controlled flooding: ogni nodo ricevente
un broadcast packet vi inserisce il proprio IP address ed il broadcast sequence number (BSN), ovvero un identicativo del broadcast packet. Ogni nodo mantiene una lista di IP address e BSN
dei broadcast packet ricevuti ed inoltrati: il broadcast packet
viene inoltrato ai nodi vicini solo se non sia trovata alcuna corrispondenza nella lista. Questo algoritmo previene la generazione
delle broadcasting storm.
reverese path forwarding (RPF)94 : ogni nodo ricevente un
broadcast packet lo inoltra a tutti i suoi nodi vicini solo se questo
gli sia stato inviato da un nodo vicino appartenente all'unicast
route dal source node a se stesso. Questo algoritmo previene la
generazione delle broadcasting storm.
spanning tree broadcasting: ogni nodo ricevente un broadcast packet lo inoltra ai soli nodi vicini appartenenti allo spanning tree radicanto nel source node. Questo algoritmo previene la
generazione delle broadcasting storm, nonch la trasmissione di
broadcast packet ridondanti. Tipiacamente, la conoscenza dello
spanning tree viene centralizzata in un nodo, detto rendezvous
node.


uncontrolled flooding

Il multicast routing il servizio del network-layer che permette ad un nodo


di trasmettere un packet ad un sottoinsieme di nodi della computer network.
Un multicast group un gruppo di host a cui pu essere destinato uno
specico traco di multicast packet. Un multicast packet un packet destinato ad una trasmissione multicast.
L'internet group management protocol (IGMP) un protocllo che
permette ad un host di informare il rst-hop router della sua appartenenza
94 anche

detto reverese path broadcasting (RPB).

43

ad uno specico multicast group. Queste informazioni vengono trasmesse in un


IGMP message, incapsulato in un IP datagram. Un IGMP message pu essere
delle seguenti tipologie:
: inviato da un router a tutti i suoi host connessi, per
indurli a noticargli l'appartenenza ad un multicast group.

membership-query

membership-report

leave-group

: inviato da un host al rst-hop router, per noticargli l'appartenenza ad uno specico multicast group.
: facoltativamente inviato da un host al rst-hop router,
per noticargli l'abbandono da uno specico multicast group. Essendo facoltativo, un router pu dedurre l'abbandono di uno dei suoi host connessi
qualora questo non risponda al membership-query.

Un multicast routing algorithm un algoritmo che realizza il multicast


routing, tipicamente, determinando lo spanning tree che connette tutti i router
a cui siano connessi gli host appartenenti ad uno specico multicast group.
Esistono due tipi di approcci per il mantenimento dello spanning tree:

group-shared tree

source-based tree

Il pruning una tecnica di multicasting che previene l'invio di multicast packet


a router a cui non siano connessi host appartenenti al multicast group. Questa
tecnica prevede che un router che riceva inutilmente un multicast packet invii
un prune message ai suoi upstream router, di modo che questi non gli inviino
pi lo specico traco multicast; e che un router ricevente un prune message
da ognuno dei suoi downstream router, invii un prune message ai suoi upstream
router.

44

Link Layer

Il link-layer realizza la comunicazione point-to-point e broadcast lungo un


link, ovvero un canale di comunicazione che connette direttamente due o pi
nodi adiacenti. Il link-layer implementato in ogni network adapter95 di
un host96 , router97 o switch98 ; pi precisamente nel link-controller, il quale
realizza quasi tutti i suoi servizi99 .
Il link-layer service model prevede:
: un datagram viene incapsulato in uno o pi
l'unit di incapsulamento del link-layer.

framing

link access

reliable delivery

error detection/correction

: un medium access control


la trasmissione dei frame lungo il link.

, ovvero

frame

protocol (MAC)

regola

: l'adabilit garantita da tecniche di ack/retrasmission e controllo degli errori locale al link. Questo servizio tipicamente
implementato nel link-layer di computer network con alto tasso di errore100 .
: tecniche di rilevazione e risoluzione
degli errori nei frame, dovuti ad attenuazione di segnale e rumore elettromagnetico.

Un link pu essere di due tipologie, individuando dunque due tipi di comunicazione:


: il link connette due soli nodi.

point-to-point link

broadcast link

ognuno di loro.

: il link connette pi nodi, ed dunque condiviso da

Una collision una sovrapposizione di frame trasmessi lungo uno stesso


link. Questo fenomeno causa la perdita di tutti i frame in collisione e quindi
l'inutilizzabilit del link per tutto il collision-interval, ovvero l'intervallo
temporale in cui si verica la collision.
95 anche detto network interface card (NIC). Fino alla ne degli anni '90, le NIC erano
componenti separate dalle motherboard (PMCIA, PCI, ...). Oggi le NIC sono nativamente
incorporate nelle motherboard, le quali vengono appunto dette LAN-on-board motherboard.
96 un host pu avere pi di un network adapter.
97 un router ha un network adapter per ogni link incidente.
98 uno switch ha un network adapter per ogni link incidente.
99 Il link-layer dunque principalmente realizzato in hardware: il software realizza le funzionalit di alto livello, come l'attivazione del link-layer controller, la risoluzione del link-layer
addressing, l'error handling e il multiplexing/demultiplexing con il trasport-layer.
100 ad esempio le wireless network.

45

Multiple Access Protocols Un mutliple access protocol un linklayer protocol che coordina la trasmissione dei frame lungo un broadcast link, in
modo decentralizzato e tale da realizzare una equa suddivisione della badwidth
tra tutti i nodi trasmittenti. Un multiple access protocol viene classicato in
base alla modalit con cui perviene a tali obiettivi:

: il canale viene equipartito tra i nodi,


secondo uno specico criterio. Elimina le collision, equipartisce la bandwidth tra i nodi attivi, senza per adattarsi dinamicamente ai nodi trasmittenti, e dunque limitando la bandwidth di ciascun nodo ad R/N bps.

channel partitioning protocol

: il canale viene equipartito in


time frame, a loro volta equipartiti in time slot, ognuno dei quali
assegnato ad un nodo per la trasmissione dei suoi frame.
 frequency division multiplexing (FDM): il canale viene equipartito in intervalli di frequenze, ognuno dei quali assegnato ad un nodo
per la trasmissione dei suoi frame.

time division multiplexing (TDM)

code division multiple access (CDMA): il canale viene condiviso da


tutti i nodi, ad ognuno dei quali viene assegnato un codice di cifratura con
cui trasmettere i propri frame. Il canale permette dunque la trasmissione
simultanea dei frame.
random access protocol : ogni nodo trasmette sfruttando l'intera
bandwidth del link, come se fosse l'unico usufruitore. La collision viene
risolta secondo specici criteri di randomizzazione del turno di ritrasmissione.

: ogni nodo pu trasmettere un frame in corrispondenza di un time slot. In caso di collision in uoa stesso time slot,
il nodo ritrasmette il frame perduto in corrispondenza di un time
slot successivo. Si tratta di un protocollo decentralizzato, in quanto
ogni nodo pu accorgersi della collision e decidere arbitrariamente
l'attesa prima della ritrasmissione. L'ecienza di questo protocollo
dunque misurata in funzione del numero di nodi attivi e del numero
di successful slot, ovvero time slot privi di collision, e risulta essere
slotted aloha

N 1

ef f = N p (1 p)

(18)

: ogni nodo ha libera disposizione del link. In caso


di collision, il nodo ritrasmette il frame perduto dopo aver atteso
il tempo medio di trasmissione di un frame. L'ecienza di questo
protocollo risulta essere
pure aloha

2(N 1)

ef f = p (1 p)

46

(19)

carrier sense multiple access conllision detection (CMSA

: ogni nodo trasmette solo dopo aver vericato l'assegna


di segnale lungo il link per un determinato intervallo di tempo. Ogni
nodo interrompe la propria trasmissione al vericarsi di una collision,
ed attende un intervallo di tempo randomico prima della ritrasmissione L'ecienza di questo protocollo risulta essere
e CMSA/CD)

ef f =
1+5

1


dprop
dtrans

(20)

. Il carrier sensing e la collision detection non riescono a prevenire


totalmente le collision a causa dell'inevitabile channel propagation
delay. La randomizzazione del tempo d'attesa per la ritrasmissione
devve essere parametrizzato: occorre infatti un intervallo ristretto
in corrispondenza di poche collision, ed un intervallo ampio in corrispondenza di numerose collision. Il binary exponential backoff algorithm un algoritmo che realizza tale parametrizzazione.

taking-turn protocol

: un master node appartenente alla subnet assegna i turni di trasmissione secondo turnazione round-robin.
 token-passing protocol: i nodi della subnet fanno circolare tra
loro in round-robin un token di assegnazione del turno di trasmissione.

polling protocol

MAC addressing Un MAC address101 una sequenza di 6 byte in dottedhexadecimal notation che identica univocamente e permanentemente un network adapter102 . Lo spazio di indirizzamente dei MAC address gestito dalla
IEEE, la quale assegna ad ogni produttore un MAC address block da 24 bit,
il quale individua un sottospazio di indirizzamento in cui ogni ad ogni network
adapter prodotto viene assegnato un MAC address.
Quando un network adapter vuole inviare un frame, vi inserisce il MAC
address del network adapter di destinazione. Quando un network adapter riceve
un frame, lo accetta solo se il MAC address indicato nel frame uguale al roprio
MAC address. Quando un network adapter vuole inviare in broadcast un frame,
vi inserisce il broadcast MAC address FF:FF:FF:FF:FF.
ARP L'address resolution protocol (ARP) il link-layer protocol103
responsabile della risoluzione degli IP address in MAC address.
101 anche detto LAN address, o physical address.
102 il MAC addressing un at addressing, ovvero

non individua alcuna gerarchia, bens una


identit: un MAC address identica un network adapter, a prescidenre dalla sua locazione
all'interno della rete. Oggi il MAC address di un network adapter pu essere cambiamento
mediante specici software.
103 sebbene ARP sia considerato funzionalmente parte integrante del link-layer, architetturalmente esso si colloca esattamente al conne tra il network-layer ed il link-layer, in quanto
incapsula in un frame informazioni di entrambi i layer.

47

Ogni host e router mantiene in memoria una ARP table contenente la mappatura degli IP address in MAC address, con il relativo TTL104 .
Un ARP packet uno packet previsto da ARP per lo scambio delle informazioni necessarie all'inserimento delle mappature nella ARP table. ARP
prevede due soli tipi di ARP packet:
:

ARP query packet

ARP response packet

Un nodo determina il MAC address di un nodo appartenente alla propria subnet, inviando in broadcast alla propria subnet un ARP query packet indicante
l'IP address desiderato. Il solo nodo con l'IP address specicato risponde alla
richiesta inviando in unicast al mittente un ARP response packet contenente il
proprio MAC address, permettendogli cos di inserire la mappatura nella ARP
table.
Un nodo determina il MAC address di un nodo esterno alla propria subnet,
demandanone la richiesta al proprio getaway router.
Error Detection and Correction Il bit-level detection and correc il servizio che realizza l'individuazione e la correzione degli errori
nei bit dei frame, spesso causati da attenuazione di segnale o rumore elettromegnetico. Questo servizio prevede l'aggiunta dei bit ECD alla stringa dati originale. La forward error correction (FEC) l'abilit del receiver di individuare e correggere gli errori nei frame ricevuti. Le tecniche ECD realizzanti la
FEC aumentano dunque l'ecienza delle trasmissioni, in quanto minimizzano
le ritrasmissioni dei frame.
Generalmente, tecniche ECD sosticate inducono un maggiore overhead nel
processamento dei fram: dunque necessario realizzare implementazioni equilibrate, che tengano cio conto del tradeo tra ecacia ed ecenza. Inoltre,
tecniche ECD implementate nel software devono mantenersi semplici e veloci,
mentre quelli implementati in hardware possono concedersi una maggiore complessit.
tion (ECD)

: il sender aggiunge alla stringa dati il parity bit, ovvero


un bit il cui valore tale da rendere pari il numero di 1 nella stringa
complessiva. Il receiver deve dunque vericare la parit dei bit a 1 nella
stringa complessiva. Questa tecnica permette di vericare la presenza
di un numero dispari di bit errati. Sperimentalmente, pi probabile
il vericarsi delle error burst, piuttosto che errori singoli localizzati. La
probabilit di errori non individuabili dunque del 50%. Questa tecnica
risulta dunque essere molto debole.
parity check

bidimensional parity check: il sender suddivide la stringa dati in una


matrice bidimensionale ed inserisce il parity bit per righe e colonne. Il
receiver deve dunque vericare la parit dei bit a 1 in ogni riga e colonna,

104 tipicamente

ssato a 20 minuti.

48

potendo cos localizzare riga e colonna dell'errore e procedere alla correzione.


: il sender aggiunge alla stringa dati il checksum, ovvero
il complemento a 1 della somma binaria delle stringhe a 16 bit contenute
nella stringa dati. Il receiver deve dunque vericare l'uguaglianza tra il
checksum ricevuto e quello calcolato sulla stringa dati ricevuta.

checksumming

cyclic redundancy check (CRC)

: ogni stringa binaria viene interpretata come un polinomio a coecienti binari. Il sender ed il receiver
accordano un generator G, ovvero una stringa binaria di r + 1 bit con
msb a 1. Il sender aggiunge in coda alla stringa dati D una stringa R di r
bit tale che la stringa complessiva DR sia divisibile per G. Il receiver deve
dunque vericare la divisibilit per G della stringa ricevuta105 . Questa
tecnica permette dunque l'individuazione di al pi r + 1 bit errati. I
calcoli CRC soo basati sulla aritmetica binaria modulo-2: addizione e sottrazioni sono dunque equivaleti allo XOR, moltiplicazioni e divisioni per
2k equivalgono rispettivamente a left-shift e right-shift di k bit. Il sender
deve dunque determinare un R tale da soddisfare la condizione
r

(D 2 ) XOR (R) = nG (D 2 ) = (nG) XOR (R) R = remainder

(21)
Link Layer Switch Uno switch un device full-duplex responsabile del
ltering e forwarding buerizzato del traco dei frame host-router e routerrouter. La protocol stack di uno switch implementa i soli link-layer e physicallayer. Uno switch trasparente agli host e ai router.
Il ltering ed il forwarding dei frame venogno realizzati mediante una switch
table, la quale mappa i MAC address sulle interface dello switch con il corrispondente timestamp, il quale induce la rimozione della entry allo scadere
dell'aging time.
MAC address

switch interface

timestamp

Uno switch popola la propria switch table, inizialmente vuota, registrando i


MAC address e la interface di ogni frame ricevuto, con il relativo timestamp.
Qualora lo switch debba inviare un frame ad un MAC address registrato
nella switch table, questo viene inviato alla interface corrispondente, ammenoch
questa non corrisponda alla interface dalla quale sia stato ricevuto. Qualora uno
switch debba inviare un frame ad un MAC address non registrato nella switch
table, questi lo invia in broadcast a tutte le proprie interface, esclusa quella da
cui sia stato ricevuto il frame.
Una switch table con un maggior grado di completezza riduce dunque il
broadcasting dei frame da parte dello switch.
105 un

resto nonnullo indica dunque un errore.

49

D 2r
G

Uno switch un device plug-n-play e self-learning, in quanto il suo inserimento nella computer network non richiede alcuna congurazione da parte del
networ administrator, e la switch table mantenuta automaticamente, dinamicamente ed autonomamente.
Uno switch permette l'interfacciamento di link implementati con tecnologie
dierenti, in quanto isola gli uni dagli altri. Il buering in uno switch permette
di ovviare alla congestione dei link, eliminando cos la possibilit di collision.
Uno switch permette inoltre la raccolta di dati statistici sul funzionamento della
computer network, nonch l'isolamento automatico delle interface difettose.
Una switched local area network (SLAN) una computer network
costituita da una collezione di LAN interconnesse da switch. Lo switch poisoning un attacco alle SLAN che consiste nell'invio di un traco di frame
destinati a MAC address nti tale da saturare la switch table con entry insignificanti, senza lasciare spazio per i MAC address legittimi, ed inducendo dunque
lo switch ad inviare in broadcast tutti i frame ricevuti.
Ethernet Ethernet un link-layer protocol full-duplex, connectionless, CSMA/CD, con tecnica di ECD CRC, MTU a 1500 byte, e privo del servizio di
reliable delivery. Questo protocollo stato realizzato in dierenti implementazioni; a met degli anni '90 stato standardizzato ad Ethernet 100Mbps.
Un ethernet frame ha la seguente forma
preamble

destination MAC

source MAC

Type

Data

CRC

: impiegato per sincronizzare il clock del source adapter e del


destination adapter, e per segnalare un frame prioritario.

preamble

source/destination MAC address

type

data

CRC

e del destination adapter.

: MAC address del source adapter

: specica il network-layer protocol per il demultiplexing.

: contiene il network-layer datagram. Questo eld ha una capacit


minima di 46 byte ed una massima pari alla MTU, ovvero 1500 byte.
Una stringa di dimensioni inferiori a 46 byte viene completata con bit
casuali, rimossi in demultiplexing secondo l'eettiva lunghezza specicata
nell'header del network-layer datagram.
: contiene il polynomial code secondo la tecnica CRC.

50