Lezione 12 Internet Gianluca Realiconan.diei.unipg.it/WEB-FT/lucidiFI/Lez12_Internet.pdf · Lezione...
Transcript of Lezione 12 Internet Gianluca Realiconan.diei.unipg.it/WEB-FT/lucidiFI/Lez12_Internet.pdf · Lezione...
Lezione 12
Lezione 12
Internet
Gianluca Reali
Integrazione delle diapositive di N. Blefari Melazzi
Lezione 12
Caratteristiche generali (1/2)
Le entità di elaborazione fondamentali all’interno di questa struttura sono gli host e i router
Gli host:
sono sorgente e destinazione di informazione. Anche se dotati di diverse intefacce di rete, tipicamente fanno uso di una di queste alla volta.
sono connessi tramite connessioni di rete che supportano capacità di trasferimento comprese tra decine di byte e megabyte al secondo
I router:
hanno due o più interfacce di rete con corrispondenti indirizzi IP
inoltrano le unità informative IP
La modalità di trasferimento, nello strato di rete, è senza connessione
Lezione 12
Caratteristiche generali (2/2)
Lo strato di rete non fornisce alcuna garanzia sulla qualità di servizio (grado di integrità informativa, ritardo di trasferimento, grado di trasparenza temporale, etc.)
Il compito di rendere la qualità di servizio adeguata alle esigenze degli utenti è demandato agli strati superiori residenti negli host
I suoi protocolli
sono logicamente situati al di sopra di qualsivoglia altro protocollo di rete (eventualmente duplicandone le funzioni)
sono in grado di operare su diverse piattaforme hardware utilizzando qualsiasi sistema operativo (UNIX, Mac OS, Windows...)
Lezione 12
Struttura di rete
Internet è la particolare inter-rete basata sui protocolli TCP/IP
Internet non è quindi una nuova rete ma un insieme di risorse e di convenzioni per interconnettere delle reti (che sono quindi viste da Internet come sotto-reti)
Scopo di Internet è quindi consentire a host appartenenti a sotto-reti disomogenee (per topologia, struttura fisica, modi di trasferimento e prestazioni) di comunicare tra loro
Internet non prevede una traduzione dei protocolli nel passare da una sotto-rete all’altra ma incapsula (tunneling) le unità informative di IP nelle unità dati dei protocolli di strato di rete delle sotto-reti che attraversa
Lezione 12
Struttura di rete
Le inter-connessioni tra diverse sotto-reti sono assicurate da elaboratori operanti come router
Lezione 12
i router instradano i pacchetti solo verso la sotto-rete di destinazione e non verso il singolo host di destinazione
una volta che il pacchetto arriva alla sotto-rete di destinazione sono i protocolli di questa sotto-rete ad indirizzarlo verso lo specifico host di destinazione
Struttura di rete
R Sotto-rete 1 Sotto-rete 2
H
H
H
H
H
Lezione 12
Struttura di rete
Al crescere della complessità della inter-rete il funzionamento dei router dipende dall’intera topologia di Internet, ossia occorre un grado di conoscenza delle interconnessioni di rete oltre a quella delle sotto-reti alle quali i router sono direttamente connessi
R1 Sotto-
Rete 1 R2
Sotto-
Rete 2
Sotto-
Rete 3
Lezione 12
Struttura di rete
La struttura di rete è non gerarchica
Le sotto-reti componenti possono essere distinte in
sotto-reti che utilizzano direttamente IP come protocollo di strato 3
sotto-reti basate su altri protocolli di strato 3
I protocolli TCP/IP trattano tutte le sotto-reti in modo omogeneo; ad esempio, ognuno dei seguenti sistemi di comunicazione è visto da Internet come una singola sotto-rete
una rete in area locale (es. Ethernet)
una rete in area metropolitana (es. FDDI)
una rete geografica (es. la rete telefonica)
una connessione punto-punto dedicata
Lezione 12
Esempio di sotto-rete IP
Lezione 12
Interconnessione di reti non IP - Gateway
Lezione 12
Architettura protocollare
L’insieme di protocolli TCP/IP
riesce a inter-connettere tutti i tipi di sotto-rete in quanto assume che le funzionalità degli strati sottostanti costituiscano solo una piattaforma per il trasferimento fisico
realizza tutte le funzioni tipiche del trasporto: controllo di errore, indirizzamento, instradamento, frammentazione e aggregazione delle unità informative, loro inoltro in rete
Se alcune o tutte queste funzioni non erano state svolte da una particolare rete, TCP/IP le realizza; se erano già state svolte le duplica, realizzandole nuovamente
Ciò conduce ad eventuali duplicazioni di funzioni ma consente di non imporre alcun vincolo sulla tecnologia e sui protocolli delle sotto-reti di trasporto che interconnette (X.25, Frame Relay, ATM, LAN, MAN, rete telefonica etc.)
Lezione 12
Architettura protocollare
Le prestazioni da estremo a estremo (velocità di trasmissione delle informazioni, grado di trasparenza temporale e di integrità informativa) sono quindi fortemente legate alle caratteristiche delle sotto-reti attraversate
Il trasferimento delle unità informative può richiedere una frammentazione delle stesse laddove le dimensioni delle unità informative gestite dalle sotto-reti non coincidano con le dimensioni massime consentite
Lezione 12
Architettura protocollare
Strati Protocolli
Servizi applicativi:
TELNET
SMTP
FTP
X-Window
5-7 HTTP TALK
GOPHER
ARCHIE
WAIS
WHOIS News
Listserv
4 TCP UDP
3c IP
ICMP
3b ARP/RARP
≈3a X.25 strato 3, SNA, DECnet, ATM+AAL, LCP, LLC, etc. ≈2 X.25 strato 2, Ethernet, PPP, etc.
1 Strato fisico
RIP
DNS
NFS
SNMP
TFTP
Tutti gli strati inferiori a IP, fino a 3a compreso, sono considerati come "Network Access Layer" e sono trattati indifferentemente dalla loro costituzione
Lezione 12
Architettura protocollare
IP è un protocollo di strato di rete; le sue principali funzioni sono
l’indirizzamento
l’instradamento
la frammentazione e l’aggregazione delle unità informative
Tratta ciascun pacchetto come un messaggio indipendente da tutti gli altri; non esistono pertanto, a questo strato, i concetti di connessione e di circuito logico: il protocollo IP è senza connessione
Lezione 12
Architettura protocollare
Il servizio è inaffidabile e basato sul paradigma del “best effort”, ossia la rete cerca di “fare del suo meglio”
Il servizio è definito inaffidabile perché la consegna di una unità informativa non è garantita. Queste possono essere perse, duplicate o consegnate fuori sequenza
Il protocollo TCP offre un servizio affidabile orientato alla connessione
1) trasferisce un flusso informativo continuo e bi-direzionale
2) può sopperire a problemi di perdita, duplicazione e consegna fuori sequenza dei dati
3) attua anche un controllo di flusso che consente di adeguare il volume dei dati trasferito alle possibilità di ricezione
4) a questo scopo viene utilizzato un meccanismo a finestra scorrevole e variabile
Lezione 12
Architettura protocollare
ICMP (Internet Control Message Protocol) è un protocollo senza connessione ed è utilizzato per
risolvere eventuali situazioni anomale
controllare il trasferimento (controllo di flusso di tipo On-Off)
comunicare alle sorgenti eventuali problemi (ad es. di indirizzamento)
Esempi:
Source Quench: inviato dal destinatario, interrompe l'emissione di datagrammi del mittente;
Redirect: il destinatario segnala al mittente di re-instradare il datagramma verso un altro host;
Echo: controlla se un possibile destinatario è attivo,
Destination Unreacheable: notifica al mittente la non-raggiungibilità di un host
Lezione 12
Architettura protocollare
SNMP (Simple Network Management Protocol) è il protocollo di gestione di rete
I protocolli ARP e RARP (Address Resolution Protocol, Reverse Address Resolution Protocol) sono di supporto, e servono a determinare l'indirizzo fisico locale corrispondente ad un indirizzo Internet, (ARP), o viceversa (RARP)
Lezione 12
Il protocollo IP (Internet Protocol)
Fornisce le seguenti funzionalità:
definisce lo schema di indirizzamento;
definisce l’unità base per il trasferimento dei dati;
definisce la strada che un’unità dati deve percorrere per arrivare a destinazione;
specifica un insieme di regole che host e gateway devono seguire per elaborare le unità informative
frammenta e ri-assembla le unità dati
Lezione 12
Formato dell’unità dati
Le unità-dati dello strato IP sono dette datagrammi. La lunghezza massima di un segmento è di 65536 ottetti
0 4 8 16 19 24 31
VERS HLEN SERVICE
TYPE
TOTAL LENGTH
IDENTIFICATION Flags FRAGMENT OFFSET
TIME TO
LIVE
PROTOCOL HEADER CHECKSUM
SOURCE IP ADDRESS
DESTINATION IP ADDRESS
OPTIONS PADDING
DATA
DATA
...
Lezione 12
Formato dell’unità dati Vers: versione del protocollo usata; grazie a tale campo è possibile
che più versioni di IP operino contemporaneamente
HLEN: lunghezza dell'intestazione (specificata in parole di 32 bit)
Service type: specifica parametri della qualità di servizio richiesti dall’utente: affidabilità, velocità di trasferimento)
Total length: (16 bit) specifica la lunghezza del datagramma, misurata in ottetti, includendo l'intestazione ed i dati (216-1=65535 byte)
Identification: (16 bit) numero del datagramma; è un valore identificativo assegnato dal processo sorgente al datagramma o ai suoi frammenti
Flags: è un campo di 3 bit: X, DF e MF
–X: non usato e posto a zero
–DF: Don't Fragment; se 0 indica che il datagramma può essere frammentato, se 1 non può esserlo
–MF: More Fragment; se 0 indica che è l'ultimo frammento, se 1 che ci sono altri frammenti
Lezione 12
Formato dell’unità dati
Fragment Offset: (13 bit); posizione del frammento all'interno del datagramma, espresso in unità di 8 byte, può numerare 8192 frammenti; se uno o più frammenti non viene ricevuto, verrà scartato l'intero datagramma
Time to Live: (8 bit); indica quanto tempo il datagramma può rimanere all'interno della rete
Protocol: indica a quale protocollo dello stato superiore deve essere trasferito il contenuto informativo del datagramma
Header Cecksum: l'intestazione è protetta da un controllo di errore
Source Address: (32 bit); indirizzo di sorgente IP (ovvero dell’interfaccia di rete, non dell’utente finale)
Destination Address: (32 bit); indirizzo di destinazione IP (ovvero dell’interfaccia di rete, non dell’utente finale)
Lezione 12
Formato dell’unità dati
Options: campo di lunghezza variabile (multipli di 8 bit) che può essere omesso. È composto da tanti ottetti quante sono le opzioni implementate. Ad esempio:
– Record Route Option (RRO): consente al mittente di creare una lista vuota di indirizzi IP in modo che ogni nodo attraversato inserisce il suo indirizzo in questa lista
– Source Route Option: consente al mittente di specificare i nodi attraverso i quali vuole che transiti il datagramma
– Timestamp Option: come RRO con in più l'istante temporale in cui il datagramma attraversa i diversi nodi
Padding: rende la lunghezza dell'intestazione multipla intero di 32 bit mediante introduzione di zeri
Lezione 12
Frammentazione e ri-assemblaggio
Le reti individuali possono avere diverse limitazioni per la lunghezza dei pacchetti; il datagramma deve quindi poter essere frammentato per attraversare le diverse reti
Le procedure di segmentazione e ri-assemblaggio devono essere in grado di frammentare il pacchetto originario in un numero arbitrario di unità che, giunte a destinazione, devono poter essere ricomposte nella forma originaria
Lezione 12
Frammentazione e ri-assemblaggio
Diversi collegamenti di rete hanno MTU (Maximum Transfer Unit) diverse, corrispondenti a diverse dimensioni della trama sottostante
Differenti tipi di collegamenti, differenti MTU
Grandi datagrammi IP divisi (frammentati) nella rete
Un datagramma suddiviso in più datagrammi
Riassemblato soltanto alla destinazione finale
I bit dell’intestazione IP sono usati per identificare e ordinare i vari segmenti
frammentazione: in: un datagramma grande out: 3 datagrammi più piccoli
reassembly
Lezione 12
Frammentazione e ri-assemblaggio
ID =x
offset =0
Frag-flag DF=0, MF=0
length =4000
ID =x
offset =0
Frag-flag DF=0, MF=1
length =1500
ID =x
offset =1480
Frag-flag DF=0, MF=1
length =1500
ID =x
offset =2960
Frag-flag DF=0, MF=0
length =1040
Un datagramma grande è suddiviso in datagrammi più piccoli
Length=4000 =
20 Header
+
3980 Dati
Length=1500 =
20 Header +
1480 Dati
Length=1500 =
20 Header +
1480 Dati
Length=1040 =
20 Header +
1020 Dati
=> Lunghezza totale 3 datagr. = 4040 (2 intestaz. in più)
Lezione 12
Schema di indirizzamento
Internet è stata definita sistema di comunicazione universale perché consente ad ogni host di comunicare con ogni altro host
Al tal fine è necessario stabilire un metodo globalmente accettato per identificare ed indirizzare in modo univoco tutti gli host
Ciò ha reso necessaria la definizione di un nuovo schema di indirizzamento, dato che ognuna delle sotto-reti ne ha uno proprio, e quindi potenzialmente non univoco (a livello globale), (indirizzi MAC, indirizzi X.25, numeri telefonici etc.)
Lezione 12
Schema di indirizzamento
Gli indirizzi devono essere unici in tutta la rete (è possibile attribuire indirizzi arbitrari ad una sub-rete TCP/IP solo se questa non è connessa con altre reti)
Un indirizzo IP identifica una interfaccia di rete. Nel caso di host, un indirizzo IP corrisponde anche allo stesso host, ma non ad uno specifico utente dei servizi IP. L’identificazione di un utente (processo applicativo, in senso OSI e TCP/IP) all’interno di un host è affidata ai protocolli di strato superiore (TCP o UDP)
Lo schema di indirizzamento IP è stato progettato per consentire un efficiente instradamento. Un indirizzo IP identifica prima la rete alla quale un host è connesso e poi l’host all’interno di quella rete
Lezione 12
Schema di indirizzamento
Un indirizzo IPv4 è costituito da 32 bit, logicamente suddivisi in due parti: Net_Id e Host_Id. L’indirizzo completo può quindi essere scritto come:
IP_Address = Net_Id . Host_Id
La lunghezza dei due campi determina la classe degli indirizzi
Lezione 12
Schema di indirizzamento
127 reti, 16 777 216 host
16384 reti, 65 536 host
2 097 152 reti, 256 host
268 435 456 indirizzi
Indirizzamento “per classi”:
Lezione 12
Schema di indirizzamento
Notazione numerica, “dotted decimal” e “mnemonica”; esempio:
Un opportuno protocollo (DNS) provvede a tradurre un indirizzo numerico in mnemonico e viceversa
net5.diei.unipg.it
10001101 11111010 00101000 01100101
141. 250. 40. 101
Lezione 12
Schema di indirizzamento Al fine di assicurare che ogni indirizzo di Internet sia unico è stata
costituita un’autorità centrale con il compito di assegnare gli indirizzi: Internet Assigned Number Authority (IANA), recentemente sostituita da Internet Corporation for Assigned Names and Numbers (ICANN)
Viene però assegnata solo la parte Net_Id delegando poi l’organizzazione richiedente per l’assegnazione della restante parte dell’indirizzo, l’Host_Id
La IANA ha definito degli indirizzi IP privati
IETF ha anche riservato il blocco 169.254.0.0-169.254.255.255 per l’autoconfigurazione degli indirizzi link-local (automatic private).
BLOCCO Indirizzo iniziale Indirizzo finale
I 10.0.0.0 10.255.255.255
II 172.16.0.0 172.31.255.255
III 192.168.0.0 192.168.255.255
Lezione 12
Schema di indirizzamento
Indirizzo di classe B
Indirizzo con definizione di sotto-rete
netmask
L’operazione di AND fra l’indirizzo IP e la netmask consente di individuare l’indirizzo
della sotto-rete.
Dal punto di vista dei core router, che instradano i datagrammi sulla base del
Net-id, il subnetting è trasparente
L’organizzazione alla quale è assegnata una Net_Id potrà suddividere la parte di Host_Id per creare, al suo interno, delle sotto-reti (subnetting) ognuna delle quali avrà la stessa Net_Id; il processo può essere iterativo
Lezione 12
Schema di indirizzamento
Come determinare una rete:
Staccare ogni interfaccia dai router / host
Creare “isole” di indirizzi IP
223.1.1.1
223.1.1.3
223.1.1.4
223.1.2.2 223.1.2.1
223.1.2.6
223.1.3.2 223.1.3.1
223.1.3.27
223.1.1.2
223.1.7.0
223.1.7.1 223.1.8.0 223.1.8.1
223.1.9.1
223.1.9.2
Il sistema interconnesso è composto da 6 sotto-reti
Lezione 12
Schema di indirizzamento
Esempio di subnetting di una rete ethernet interconnessa
Lezione 12
Indirizzamento IP: CIDR
Indirizzamento per classi:
Uso inefficiente dello spazio degli indirizzi => si stanno esaurendo rapidamente
Esempio: una organizzazione che necessita di alcune migliaia di indirizzi IP è costretta a richiedere un blocco di classe B, che consente di indirizzare 64K host.
CIDR: Classless InterDomain Routing
La porzione di rete dell’indirizzo può essere di dimensione qualsiasi
Formato degli indirizzi: a.b.c.d/x, dove x è il numero di bit nella porzione di rete nell’indirizzo (numero di bit più significativi in comune nel blocco)
11001000 00010111 00010000 00000000
Parte rete
Parte host
200.23.16.0/23
Lezione 12
Indirizzamento IP: CIDR
In questo caso l’instradamento dei core router deve tener conto del formato variabile del Net-id
Per determinare il Net-id si usa la tecnica del “longest prefix match”, che consiste nell’individuare, nella tabella di routing, fra le sottoreti di destinazione note, quella avente la più lunga rappresentazione binaria compatibile con l’indirizzo IP di destinazione del pacchetto da inoltrare, ossia la più lunga fra quelle, se ce ne sono, che corrispondono a un certo numero di bit iniziali dell’indirizzo IP.
Se l’indirizzo di rete risulta sconosciuto il datagramma si instrada verso la porta di default
Lezione 12
Come ottenere l’indirizzo IP
Porzione host-id dell’indirizzo:
Codificato dall’amministratore di sistema in un file
DHCP: Dynamic Host Configuration Protocol: serve ad ottenere dinamicamente l’indirizzo IP (approccio “plug-and-play”)
L’host invia in broadcast il messaggio “DHCP discover”
Il DHCP server risponde con il messaggio “DHCP offer”
L’host richiede l’indirizzo IP con il messaggio “DHCP request”
DHCP server invia l’indirizzo con il messaggio “DHCP ack”
Lezione 12
Come ottenere l’indirizzo IP
Porzione Net-id dell’indirizzo:
Porzione allocata dello spazio degli indirizzi dell’ISP
Blocco ISP 11001000 00010111 00010000 00000000 200.23.16.0/20
Organizzazione 0 11001000 00010111 00010000 00000000 200.23.16.0/23
Organizzazione 1 11001000 00010111 00010010 00000000 200.23.18.0/23
Organizzazione 2 11001000 00010111 00010100 00000000 200.23.20.0/23
... ….. …. ….
Organizzazione 7 11001000 00010111 00011110 00000000 200.23.30.0/23
Lezione 12
Indirizzamento Gerarchico
L’indirizzamento gerarchico permette di esportare in modo efficiente le informazioni di instradamento:
“Mandami i datagrammi con indirizzo che comincia per
200.23.16.0/20”
200.23.16.0/23
200.23.18.0/23
200.23.30.0/23
Fly-By-Night-ISP
Organization 0
Organization 7 Internet
Organization 1
ISPs-R-Us “Mandami i datagrammi con indirizzo che comincia per
199.31.0.0/16”
200.23.20.0/23 Organization 2
. . .
. . .
Lezione 12
Indirizzamento Gerarchico
ISPs-R-Us esporta una strada più specifica verso Organization 1
“Mandami i datagrammi con indirizzo che comincia per
200.23.16.0/20”
200.23.16.0/23
200.23.18.0/23
200.23.30.0/23
Fly-By-Night-ISP
Organization 0
Organization 7 Internet
Organization 1
ISPs-R-Us “Mandami i datagrammi con indirizzo che comincia per
199.31.0.0/16 o
200.23.18.0/23”
200.23.20.0/23 Organization 2
. . .
. . .
Lezione 12
Indirizzamento IP: per finire …
Come può un ISP ottenere un blocco di indirizzi ?
Risposta: Internet Corporation for Assigned Names and Numbers (ICANN):
Alloca gli indirizzi
Gestisce il servizio di Guida (DNS)
Assegna i nomi ai domini, risolve le dispute
Lezione 12
Instradamento
Ogni datagramma IP attraversa un cammino composto da router e da sotto-reti
Quando un router consegna un datagramma ad una sotto-rete questo diventa una unità dati propria della sotto-rete
La rete individuale consegna tale unità dati al router successivo o alla stazione host di destinazione (se questo è all'interno della rete stessa) con le stesse modalità con le quali tratta una qualsiasi unità dati
Lezione 12
Instradamento
Bridge
host mittente
router X
router Y
sub-rete A (X25)
sub-rete B (?)
host destinatario
LAN 1
LAN 2
INTERNET
PCI PCI trama pacchet.
PCI ?
MAC LLC
Net_id Data
Net_id Data
Net_id Data
Net_id Data
Net_id Data
Net_id Data
Net_id Data
Lezione 12
Instradamento
L'instradamento in Internet può essere suddiviso in due classi
diretto
indiretto
L’instradamento diretto è possibile solo se l’host destinatario è connesso alla sotto-rete fisica nella quale il datagramma è presente. In particolare si effettua solo un instradamento diretto quando gli host mittete e destinatario si trovano nella stessa sotto-rete.
l’instradamento indiretto si applica quando l’host destinatario è connesso ad una sotto-rete diversa da quella in cui si trova l’host mittente
Lezione 12
Tabelle di instradamento
Il meccanismo per l’instradamento in IP è basato su una tabella che ogni host o router mantiene allo scopo di conoscere le possibili destinazioni e le modalità per raggiungerle
Una tabella di instradamento contiene delle coppie (R,I) dove R è l’indirizzo della rete di destinazione e I è l’indirizzo del router successivo lungo la strada che porta alla rete di destinazione
La tabella di instradamento specifica quindi solo un passo lungo il cammino verso la destinazione
Un router non conosce quindi il cammino completo che il datagramma dovrà compiere
Lezione 12
Tabelle di instradamento
20.0.0.5
20.0.0.6
30.0.0.6 40.0.0.7
30.0.0.7
Rete
10.0.0.0 Rete
20.0.0.0 Rete
30.0.0.0 Rete
40.0.0.0 R1 R2 R3
10.0.0.5
Tabella di instradamento di R2
Per raggiungere host indirizzati alla rete:
indirizzare i datagrammi verso questa strada (o
router):
20.0.0.0 inoltrare direttamente
30.0.0.0 inoltrare direttamente
10.0.0.0 20.0.0.5
40.0.0.0 30.0.0.7
Lezione 12
Algoritmo di instradamento del nodo X
1) Estrazione dell’l’indirizzo IP di destinazione dal datagramma in arrivo
2) se tale indirizzo coincide con quello di X (cioè con il nodo stesso) si estrae il contenuto informativo e lo si consegna agli strati superiori per ulteriore elaborazione
3) altrimenti si determina la Net-Id dell’indirizzo e si decrementa il Time to Live del datagramma; se il Time to Live arriva a zero si scarta il datagramma
4) se la Net-Id coincide con quella di una sotto-rete alla quale è direttamente connesso il router X (cioè il router stesso) si invia il datagramma direttamente (cioè con instradamento diretto; ciò implica la traduzione dell’indirizzo IP in indirizzo fisico e l’incapsulamento nell’unità dati della rete in questione)
5) altrimenti se è stata richiesta una strada specifica si invia verso tale strada
6) altrimenti se la Net-Id è compresa nella tabella di instradamento si inoltra il datagramma come specificato nella tabella
7) altrimenti, se è stata specificata una strada di default, si invia il datagramma al default gateway
8) altrimenti si dichiara un errore di instradamento e si scarta il datagramma
Lezione 12
Esempio di invio di un datagramma
Datagramma IP:
223.1.1.1
223.1.1.2
223.1.1.3
223.1.1.4 223.1.2.9
223.1.2.2
223.1.2.1
223.1.3.2 223.1.3.1
223.1.3.27
A
B
E
misc fields
source IP addr
dest IP addr data
Dest. Net. next router N hops
223.1.1 1 223.1.2 223.1.1.4 2
223.1.3 223.1.1.4 2
Tabella di routing in A
Lezione 12
Esempio di invio di un datagramma
223.1.1.1
223.1.1.2
223.1.1.3
223.1.1.4 223.1.2.9
223.1.2.2
223.1.2.1
223.1.3.2 223.1.3.1
223.1.3.27
A
B
E
Partendo da A, dato un datagramma IP indirizzato a B:
Guarda alla porzione rete dell’indirizzo di B
Trova B nella stessa rete di A
Lo strato di collegamento invia il datagramma direttamente a B dentro una trama di strato 2
B e A sono connessi direttamente
Dest. Net. next router N hops
223.1.1 1 223.1.2 223.1.1.4 2
223.1.3 223.1.1.4 2
misc fields 223.1.1.1 223.1.1.3 data
Lezione 12
Esempio di invio di un datagramma
223.1.1.1
223.1.1.2
223.1.1.3
223.1.1.4 223.1.2.9
223.1.2.2
223.1.2.1
223.1.3.2 223.1.3.1
223.1.3.27
A
B
E
Dest. Net. next router N hops
223.1.1 1 223.1.2 223.1.1.4 2
223.1.3 223.1.1.4 2
Partendo da A, destinazione E:
Guarda alla porzione di rete dell’indirizzo di E
E è su una rete differente
A ed E non sono direttamente connessi
Tabella di instradamento: il prossimo salto (router) verso E è 223.1.1.4
Lo strato di collegamento invia il datagramma al router 223.1.1.4 dentro una trama di stato 2
Il datagramma arriva a 223.1.1.4
…
misc fields 223.1.1.1 223.1.2.2 data
Lezione 12
Esempio di invio di un datagramma
223.1.1.1
223.1.1.2
223.1.1.3
223.1.1.4 223.1.2.9
223.1.2.2
223.1.2.1
223.1.3.2 223.1.3.1
223.1.3.27
A
B
E
Arrivando a 223.1.1.4, destinato a 223.1.2.2
Guarda la parte di rete dell’indirizzo di E
E è sulla stessa rete dell’interfaccia
del router 223.1.2.9
Router ed E sono direttamente connessi
Lo strato di collegamento inviail datagramma a 223.1.2.2 dentro una trama di strato 2 attraverso
l’interfaccia 223.1.2.9
Il datagramma arriva a 223.1.2.2
misc fields 223.1.1.1 223.1.2.2 data Dest. Net router N hops interface
223.1.1 - 1 223.1.1.4 223.1.2 - 1 223.1.2.9
223.1.3 - 1 223.1.3.27
next
Lezione 12
Determinazione delle tabelle
Le tabelle di instradamento sono dinamiche: ogni router ed ogni host “imparano” nel tempo ed aggiornano le informazioni di instradamento
La necessità di un aggiornamento dinamico è dovuta al fatto che Internet non può essere considerata stabile; inoltre in caso di guasti alcune strade non sono utilizzabili
Se l’instradamento si basa su un algoritmo adattativo, allora l’aggiornamento deve anche tener conto di altre informazioni, come lo stato di occupazione delle risorse di rete
Le tabelle di instradamento devono quindi tenere conto di tutti questi cambiamenti ed essere aggiornate continuamente (anche ad intervalli di pochi secondi)
Questa operazione è attuata mediante opportuni protocolli che consentono ai router di comunicare
Lezione 12
Sistemi autonomi
Si definisce come sistema autonomo un insieme di host, router e reti fisiche controllate da una singola autorità amministrativa; si distinguono anche router interni (core) ad un sistema autonomo e router di frontiera (edge-border)
I router all’interno di un sistema autonomo possono essere configuarti liberamente per utilizzare qualsiasi meccanismo per scoprire, comunicare ad altri router interni e controllare la consistenza dei percorsi
Ogni sistema autonomo deve però affidare in modo specifico ad uno o più dei suoi router il compito di informare il mondo esterno della sua topologia
Lezione 12
Instradamento in Internet
Le informazioni di instradamento riguardanti le strade all’interno di un sistema autonomo sono gestite in proprio per mezzo degli Interior Gateway Protocol (IGP)
Le informazioni di instradamento riguardanti strade che coinvolgono più di un sistema autonomo sono effettuate mediante gli Exterior Gateway Protocol (EGP)
La Internet Globale consiste di Sistemi Autonomi (AS) interconnessi l’uno con l’altro:
Transit AS: fornitori solo del servizio di connettività ad altri AS
Stub AS: piccole corporazioni (un solo link verso un solo transit AS)
Multihomed AS: grandi corporazioni (più link verso diversi transit AS)
Instradamento su due livelli:
Intra-AS: l’amministratore è responsabile per le scelte algoritmiche
Inter-AS: standard unico
Lezione 12
Instradamento in Internet
Inter-AS border router (exterior gateway)
Itra-AS interior router (gateway)
Lezione 12
Interior Gateway Protocol
Il modo in cui questi protocolli determinano le tabelle di instradamento può essere diverso, cioè basato sull’uso di diversi algoritmi, ognuno dei quali ha vantaggi e svantaggi
Gateway to Gateway Protocol (GGP)
Shortest Path First (SPF) e Open SPF (OSPF)
HELLO
Routing Information Protocol (RIP)
Interior Gateway Routing Protocol (IGRP)
Lezione 12
SPF (Shortest Path First) Il percorso migliore è determinato localmente mediante l’algoritmo di
Dijkstra (secondo diversi criteri)
dal momento che la topologia cambia continuamente (per guasti ed aggiunte od eliminazioni di link e di host) un continuo scambio di messaggi mantiene aggiornata la topologia memorizzata da ogni gateway
Il principale vantaggio di questo algoritmo è la velocità: al momento di determinare una strada l’algoritmo risponde immediatamente senza bisogno di interrogare altri router
Lo svantaggio principale è che per mantenere aggiornata la topologia di rete, è necessario un continuo scambio di messaggi.
Lezione 12
OSPF
“Open”: disponibile in modo pubblico
Basato sull’algoritmo di Dijkstra
L’OSPF Advertisement prevede una voce nella tabella esportata per tutti router vicini, che specifica la “distanza” da questi
Advertisement disseminati per l’intero AS (tramite flooding)
Include l’instradamento basato sul Service Type e quindi tiene conto delle richieste degli utenti in termini di prestazioni
Consente di bilanciare il carico in rete
Consente di dividere gerarchicamente un sistema autonomo
Le sue comunicazioni prevedono un’autenticazione per garantire la sicurezza
Lezione 12
OSPF
Suddivisione gerarchica di un AS
Lezione 12
OSPF
Gerachia a due livelli: area locale, backbone.
Link-state advertisements solo nell’area locale
Ogni nodo mantiene un topologia dell’area; conosce soltanto direzioni (cammino più corto) alle reti nelle altre aree.
Area border router: appartengono sia all’area specifica sia alla backbone.
Backbone router: OSPF routing limitato al backbone.
Boundary router: connessi ad altri AS.
Lezione 12
RIP
Algoritmo Distance Vector (Bellman-Ford)
È uno dei protocolli più usati, non perché abbia particolari vantaggi rispetto agli altri, ma perché è stato incluso nella Distribuzione BSD-UNIX nel 1982
Metrica delle Distanze: # di salti (max = 15 hop)
massimo costo di un percorso fissato a 15
aumenta artificialmente il numero di salti di un cammino attraverso reti lente
Distance Vector: messaggi scambiati ogni 30 secondi via Response Message (chiamato anche Advertisement)
Ogni avviso include strade fino a 25 reti di destinazione
Se non pervengono avvisi dopo 180 sec => il link è dichiarato morto
Le strade per quel vicino sono invalidate
Nuovi avvisi inviati ai vicini
Lezione 12
RIP
Elaborazione delle Tabelle:
Tabelle di Instradamento di RIP gestite da processi applicativi chiamati route-d (d da daemon)
Advertisements incapsulati in pacchetti UDP, ripetuti periodicamente
Lezione 12
Router: giroflee.eurocom.fr
Tre reti di classe C attaccate (LAN)
Router conosce solo strade attaccate alle LAN
Default router usato per uscire
Indirizzo multicast: 224.0.0.0
Interfaccia di Loopback (per il debugging)
Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ------ ---------
127.0.0.1 127.0.0.1 UH 0 26492 lo0 loopback
192.168.2. 192.168.2.5 U 2 13 fa0 C
193.55.114. 193.55.114.6 U 3 58503 le0 C
192.168.3. 192.168.3.5 U 2 25 qaa0 C
224.0.0.0 193.55.114.6 U 3 0 le0 multicast
default 193.55.114.129 UG 0 143454 le0 (subnet 193.55.114)
Lezione 12
BGP (Border Gateway Protocol) Standard de facto
lo scambio di informazioni consente ai gateway di costruire il grafo di connettività dei sistemi autonomi
L'informazione sulla raggiungibilità delle reti ha ovviamente maggior impatto nel caso in cui sia presente, lungo il percorso tra un sistema autonomo sorgente e uno di destinazione, un certo numero di altri sistemi autonomi con funzioni di transito
Ciò consente al protocollo la scelta tra più instradamenti disponibili e la possibilità di effettuare la ri-distribuzione del traffico
Protocollo Path Vector :
Simile al protocollo Distance Vector
Il protocollo effettua la verifica dello stato di un link o di un host inviando periodicamente messaggi di keepalive (il periodo raccomandato è di 30 sec.).
Ogni Border Gateway invia in broadcast ai vicini (peer) l’intero cammino (cioè la sequenza di AS) verso le destinazioni
Il Gateway X può inviare il suo cammino verso la destinazione Z:
Path (X,Z) = X,Y1,Y2,Y3,…,Z
Lezione 12
BGP
Il gateway X invia il suo cammino al peer gateway W
W può selezionare o non selezionare il cammino offerto da X
costo, criteri di policy (non inoltrare strade/traffico verso un AS concorrente), criteri di prevenzione dei cicli chiusi
consente di utilizzare opportune politiche di restrizione per il traffico in transito, stabilite dal gestore del sistema e codificate in tabelle di configurazione, che vengono poi passate al protocollo
Se W seleziona il cammino esportato da X, allora:
Path (W,Z) = w, Path (X,Z)
Nota: X può controllare il traffico entrante controllando le strade esportate ai peer:
Per esempio, se non vuole inoltrare traffico a Z => non esporta alcun cammino verso Z
Lezione 12
BGP
Messaggi BGP sono scambiati attraverso connessioni TCP semipermanenti (eBGP tra diversi AS, iBGP nello stesso AS).
I messaggi BGP:
OPEN: apre una connessione TCP verso il peer e autentica il mittente
UPDATE: esporta un nuovo cammino (o ne toglie uno presente)
KEEPALIVE mantiene la connessione viva anche in assenza di aggiornamenti (messaggi di UPDATE); inoltre riscontra (ACK) le richieste di OPEN
NOTIFICATION: riporta gli errori nei precedenti messaggi; usato anche per chiudere le connessioni
ROUTE-REFRESH: aggiunto successivamente (RFC 2918), serve chiedere conferma di un percorso esportato in seguito a una variazione di politica di instradamento. Rappresenta un’alternativa ai precedenti meccanismi di mantenimento dei percorsi
Lezione 12
ICMP (Internet Control Message Protocol)
Il protocollo IP è senza connessione e non affidabile
Se un gateway non riesce ad instradare o a consegnare un datagramma o se riscontra situazioni anomale (tra cui congestione di rete) deve poter notificare il mittente del datagramma affinché siano attuate opportune operazioni per correggere il problema
Possibili problemi possono essere:
un dispositivo di rete non funziona correttamente o non funziona del tutto (incluse le linee di collegamento)
l’host di destinazione è temporaneamente o permanentemente disconnesso dalla rete
il contatore del Time to Live arriva a zero
i gateway o le linee intermedie sono talmente congestionate da non poter gestire il traffico in transito
Lezione 12
ICMP I messaggi di ICMP sono trasportati in rete per mezzo dei datagrammi,
incapsulati nella parte dati del datagramma IP
ICMP può quindi essere considerato un sub-strato di IP (visto che serve a trasportare messaggi tra due entità IP) ma è funzionalmente al di sopra di IP (visto che i suoi messaggi governano il funzionamento di IP).
La funzione di ICMP è solo di notifica degli errori all’host di origine e non specifica le azioni che devono essere intraprese per rimediare agli errori ed ai malfunzionamenti
Sarà poi l’host di origine a porre in relazione il particolare errore con il relativo programma applicativo (ad esempio con un protocollo di instradamento, o con IP) e a decidere cosa fare per risolvere il problema
ICMP notifica eventuali errori solo al gateway o all’host che ha originato un datagramma e non a gateway od host intermedi lungo la strada attraversata dal datagramma stesso, perché ogni datagramma contiene solo l’indirizzo del mittente e quello della destinazione e quindi non è possibile, esaminando un datagramma, scoprire che strada ha percorso.
Lezione 12
ICMP
La procedura di gestione dei datagrammi prevede un’unica differenza tra i datagrammi che trasportano i messaggi ICMP e gli altri:
non vengono generati messaggi ICMP in seguito ad errori causati da datagrammi che trasportano messaggi ICMP
ciò serve ad evitare messaggi di errore relativi a messaggi di errore.
Ogni messaggio ICMP è in relazione ad uno specifico datagramma (e non potrebbe essere altrimenti visto che IP è un protocollo senza connessione)
Un messaggio ICMP contiene quindi anche un identificativo del particolare datagramma che ha generato l’errore o la situazione anomala
Lezione 12
ICMP
CONTENUTO DEI MESSAGGI ICMP:
Type (8 bit)
code (8 bit)
checksum (16 bit)
Header + primi otto byte del datagramma IP che ha causato l’errore (per la segnalazione di un problema)
…
Type Code description
0 0 echo reply (ping)
3 0 dest. network unreachable
3 1 dest host unreachable
3 2 dest protocol unreachable
3 3 dest port unreachable
3 6 dest network unknown
3 7 dest host unknown
4 0 source quench (congestion
control - not used)
8 0 echo request (ping)
9 0 route advertisement
10 0 router discovery
11 0 TTL expired
12 0 bad IP header
Lezione 12
Domain Name System
Il software implementato in Internet consente di utilizzare oltre alla notazione dotted anche un altro tipo di notazione (mnemonica):
“141.250.40.34”=“attila.diei.unipg.it”
E’ necessario che un opportuno software di rete traduca nomi in indirizzi e viceversa (il passaggio da notazione dotted a indirizzo di 32 bit è banale in quanto implica una semplice conversione decimale-binario)
Questa traduzione è attuata da un protocollo di alto livello implementato in un meccanismo noto come Domain Name System (DNS)
Lezione 12
Attribuzione dei nomi
L’insieme dei nomi è prima partizionato in un certo numero di sotto-insiemi dal Network Information Center (NIC); il compito di assegnare i nomi all’interno di un sotto-insieme è delegato ad un’autorità di livello inferiore e così via
Un nome è composto da una serie di sotto-nomi separati da un punto. Ogni punto separa un’autorità da quella che gli è gerarchicamente inferiore
attila.diei.unipg.it
autorità gerarchicamente inferiore
Lezione 12
Attribuzione dei nomi
classificazione per tipologia
Nome del dominio Tipo di organizzazione
COM Commerciali
EDU Accademiche e didattiche
GOV Statali
MIL Militari
NET Centri di Gestione di Internet
ARPA ARPANET (obsoleto)
INT Organizzazioni internazionali
ORG Altre organizzazioni
FIRM Aziende, affari
STORE Merce in vendita
WEB enfatizzante WWW
ARTS enfatizzante arte e cultura
REC enfatizzante intrattenimento e divertimenti
INFO enfatizzante fornitori di informazione
NOM enfatizzante nomenclature personali
Lezione 12
Attribuzione dei nomi
classificazione geografica
Nome
del
dominio
USA IT DE FR UK JP etc.
nazione USA Italia Germ. Franc. G.Br. Giapp. etc.
Lezione 12
Attribuzione dei nomi
. Root Domain
usa
berkeley rutgers
... nasa net mil org edu
ca ny
gov
nsf
com
ibm dec
it
unipg
Lezione 12
DNS: local name server
Ogni host ha un local name server di riferimento (di cui conosce l’indirizzo numerico)
Solitamente, un local name server, è in grado di rispondere alle richieste relative ad indirizzi “vicini” a quello richiedente
Host richiedente
Local
name server
(default)
1
query 2
reply
UD
P Q
ue
ry
UD
P R
ep
ly
Lezione 12
DNS: root name server
Se il local name server non è ha conoscenza dell’indirizzo richiesto dall’host rivolge la domanda al root name server.
Quest’ultimo può essere a conoscenza della corrispondenza tra indirizzo mnemonico e numerico; in caso contrario conosce l’authoritative name server a cui rivolgersi.
Host richiedente
Local
name server
1
query
2
query
Root
name server
3
reply
4
reply
Lezione 12
DNS: authoritative name server
Ogni host è registrato presso un authoritative name server. Questo è sempre in grado di risolvere la corrispondenza tra nome e indirizzo IP
In generale ci possono essere due o più name server tra il root e l’authoritative
Host richiedente
Local
name server
1
query
2
query
Root
name server
3
query
4
reply
Authoritative
name server
5
reply
6
reply
Lezione 12
Esempio
Host richiedente infocom.uniroma1.it
Local
name server dns.uniroma1.it
1
query
2
query
Root
name server
3
query
5
reply
Authoritative
name server dns.dept.ucla.edu
6
reply
7
reply
name server dns.ucla.edu
comnet.ucla.edu=
128.119.40.111
4
query
8
reply
Lezione 12
Tipi di interazioni
L’interazione tra name server può essere di tipo ricorsivo:
di tipo iterativo (ad A viene dato l’indirizzo del server C che può soddisfare la richiesta):
A
B
C
A
B
C
Lezione 12
Bilanciamento del carico
Il DNS viene anche usato per bilanciare il carico distribuendolo su server che replicano le stesse informazioni le varie richieste.
Esempio: Siti molto frequentati (es. cnn.com) sono replicati su più server web con indirizzi IP diversi. Un insieme di indirizzi IP è associato (nel DNS) allo stesso nome canonico. Quando un client chiede di risolvere il nome in indirizzo IP viene fornito l’insieme di indirizzi IP, ma in ordine differente ogni volta. Normalmente un client userà il primo indirizzo IP fornitogli.
Concetto di Content Distribution Networks:
Il fenomeno del caching dei nomi sui sistemi intermedi può ridurre l’efficienza di uno schema (ad esempio a rotazione dei nomi) basato esclusivamente sul DNS
Lezione 12
Traduzione di indirizzi
Ogni calcolatore collegato ad una rete ha un indirizzo che lo contraddistingue nell’ambito di quella rete (ad. es. indirizzo Ethernet contenuto nella scheda fisica del calcolatore, numero telefonico, indirizzo X.25, etc.)
Internet necessita di protocolli che permettano di associare dinamicamente gli indirizzi degli host nell’ambito delle loro reti di appartenenza ai relativi indirizzi IP
La funzionalità di un tale protocollo è legata unicamente alla rete a cui è collegato il calcolatore
Lezione 12
Traduzione di indirizzi
Il protocollo ARP (Address Resolution Protocol) permette di associare dinamicamente l'indirizzo fisico all'indirizzo IP e aggiorna contemporaneamente la tabella ARP contenente le corrispondenze già risolte
La tabella svolge la funzione di cache, cioè permette di ottenere rapidamente quelle informazioni che vengano richieste ripetutamente in brevi intervalli di tempo
Periodicamente le informazioni vengono cancellate in modo da garantire la consistenza con le mutate condizioni della topologia di rete
Lezione 12
Traduzione di indirizzi
Il protocollo RARP (Reverse Address Resolution Protocol) è utilizzato da calcolatori connessi in rete, e privi di sistemi di memorizzazione di massa, per determinare, durante la fase di inizializzazione, il proprio indirizzo IP a partire dall’indirizzo fisico della particolare interfaccia di rete
Il RARP server una volta ricevuta la richiesta risponde inviando l’indirizzo IP cercato
Lezione 12
Esempi
FTP DNS
risolvi il nome “nic.switch.ch”
l’indirizzo IP corrispondente è “130.59.1.40”
Comando utente:
“ftp nic.switch.ch”
TCP
IP L’indirizzo 130.59.1.40
appartiene alla sotto-rete locale?
No: instradamento indiretto:
invia il datagramma al router di
default
UDP
Si: instradamento diretto:
invia il datagramma
a destinazione ARP:
richiedi l’indirizzo
MAC corrispondente
all’indirizzo IP
richiesta ARP: 130.59.1.40
risposta ARP: 00:12:c3:4b:3a:01 Bus Ethernet
Lezione 12
User Datagram Protocol (UDP) Protocollo di trasporto “senza fronzoli”
Senza connessione:
Nessuna procedura di handshaking tra il mittente ed il destinatario
Ogni segmento UDP viene gestito in modo indipendente dagli altri
Offre soltanto il servizio di multiplazione agli applicativi
Perché è stato definito UDP?
Nessuna instaurazione di connessione (che può aggiugere ritardo)
Semplice: nessuno stato per le connessioni al mittente/ricevitore
Piccola intestazione nei segmenti
Nessun controllo della congestione: UDP può trasmettere i dati senza condizionamenti dalla rete
Lezione 12
UDP
Spesso usato per applicazioni di streaming multimediale:
Tolleranti alle perdite
Sensibili al ritmo trasmissivo
Altri usi di UDP:
DNS
SNMP
Trasferimento affidabile sopra UDP: l’affidabilità è aggiunta a livello applicativo
Recupero di errore specifico dell’applicazione
source port # dest port #
32 bits
Dati dell’applicazione (messaggio)
Formato del segmento UDP
length checksum
Lunghezza, in byte del
segmento UDP, intestazione
inclusa
Lezione 12
UDP
Checksum: rivelare gli “errori” nel segmento trasmesso
Lato mittente:
Tratta il contenuto del segmento come una sequenza di interi di 16-bit
Checksum: fa uso sia all’header UDP, sia all’header IP, sia dei dati (pseudo header), considerati interi di 16 bit, sommati in binario (complemento a 1). Il risultato è ulteriormente complementato a 1.
Il mittente inserisce il valore della checksum nel campo checksum di UDP
Ricevitore:
Calcola la checksum del segmento ricevuto
Controlla se il valore ottenuto è uguale a quello del campo checksum:
– NO => è stato rilevato un errore
– SI => non sono stati rivelati errori. Tuttavia questo non implica che il segmente ne sia esente …
Lezione 12
Transmission Control Protocol (TCP)
E’ un protocollo:
con connessione
controllo e recupero di errore
controllo di flusso e di congestione
ri-ordinamento delle unità informative
indirizzamento di uno specifico utente all’interno di un host
Trasferisce un flusso informativo continuo e bi-direzionale ed effettua operazioni di multiplazione e de-multiplazione
Lezione 12
TCP
Un indirizzo IP identifica solo un’interfaccia di rete e non gli utenti o i processi attestati ad un host. Compito di TCP è quindi anche quello di distinguere tra i diversi programmi applicativi ed i diversi utenti che fanno uso di un host
L'indirizzo di un utente in TCP, lungo 16 bit, indica la porta (port) con la quale l’applicazione è connessa, sia lato mettente sia lato destinatario.
Lezione 12
TCP
La componente "port" è contenuta nell'intestazione dell’unità dati di TCP, mentre la componente IP_Address è contenuta nell'intestazione dell’unità dati di IP
Questo significa che tutte le connessioni in atto tra due specifici host useranno lo stesso indirizzo IP di sorgente e lo stesso indirizzo IP di destinazione
Saranno perciò distinte solo a strato TCP. Ne segue che queste connessioni possono essere viste come multiplate su un unico indirizzo IP ovvero su di un unico “canale” IP di comunicazione
Lezione 12
TCP
Essendo TCP un protocollo con connessione, saranno presenti le fasi di instaurazione, trasferimento dati ed abbattimento
TCP accetta dal livello superiore messaggi senza vincoli sulla loro lunghezza, li frammenta e li invia in datagrammi distinti
Intestazione TCP (contiene
l’indirizzo di port)
TCP Data
Intestazione IP (contiene
l’indirizzo IP)
IP Data
Lezione 12
Formato dell’unità dati (1/5)
Le unità-dati dello strato TCP sono dette segmenti
0 4 10 16 24 31
Source Port Destination Port
Sequence Number
Acknowledgement Number
Offset Reserved Control Window
Check sum Urgent Pointer
Options Padding
Data
Data
...
Lezione 12
Formato dell’unità dati (2/5)
Source Port (16 bit): definisce l'indirizzo logico del processo sorgente dei dati.
Destination Port (16 bit): definisce l'indirizzo logico del processo destinatario dei dati
Sequence Number (32 bit): numero di sequenza in trasmissione; contiene il numero di sequenza del primo byte di dati contenuti nel segmento a partire dall'inizio della sessione (se SN=m ed il segmento contiene n byte il prossimo SN sarà pari a m+n)
Acknowledgement Number (32 bit): numero di sequenza in ricezione; nei segmenti in cui il bit ACK, presentato più avanti, è impostato ad uno, contiene il numero di sequenza del prossimo byte che il trasmettitore del segmento si aspetta di ricevere
– Nel caso di connessioni interattive bi-direzionali avviene il piggybacking degli acknowledgement (nel senso che si utilizzano i segmenti di risposta contenenti dati di utente per inviare gli acknowledgement al trasmettitore senza dover inviare dei segmenti appositi)
Lezione 12
Formato dell’unità dati (3/5)
Offset (4 bit): contiene il numero di parole di 32 bit contenute nell'intestazione di TCP. Indica l’inizio del campo dati.
Reserved (4 bit (ex-6bit)): riservato per usi futuri, per ora contiene degli zeri
Window (16 bit): larghezza della finestra; contiene il numero di byte che, a cominciare dal numero contenuto nel campo Acknowledgement Number, il trasmettitore del segmento è in grado di ricevere. SI noti che il controllo di flusso è orientato al byte
Checksum (16 bit): contiene la sequenza che permette al TCP ricevente di verificare la correttezza del segmento
Lezione 12
Formato dell’unità dati (4/5) Control bit (6 bit): i bit di controllo sono:
– CWR (congestion window reduced) (ex campo reserved, RFC 3168): se vale 1 indica che l’host sorgente ha ridotto la finestra di congestione in seguito a una notifica esplicita di congestione.
– ECE (explicit congestion notification – ECN – echo) (ex campo reserved): se vale 1 indica che l’host supporta ECN durante il three-way-hadshake.
– URG: viene posto a uno quando il campo pointer contiene un valore significativo;
– ACK: viene posto a uno quando il campo Acknowledgement Number contiene un valore significativo;
– PSH: viene posto a uno quando l'applicazione esige che i dati forniti vengano trasmessi e consegnati all'applicazione ricevente prescindendo dal riempimento dei buffer allocati fra applicazione e TCP e viceversa (solitamente infatti è il riempimento dei suddetti buffer che scandisce la trasmissione e la consegna dei dati);
– RST: viene posto a uno quando un malfunzionamento impone il reset della connessione;
– SYN: viene posto a uno solo nel primo segmento inviato durante il 3-way handshaking (fase di sincronizzazione fra le entità TCP);
– FIN: viene posto a uno quando la sorgente ha esaurito i dati da trasmettere per rilasciare la connessione.
Lezione 12
Formato dell’unità dati (5/5)
Urgent Pointer (16 bit): contiene il numero di sequenza del byte che delimita superiormente i dati che devono essere consegnati urgentemente al processo ricevente. Tipicamente sono messaggi di controllo che esulano dalla comunicazione in senso stretto. A tale traffico ci si riferisce di solito con il nome di out-of-band
Options (di lunghezza variabile): sono presenti solo raramente: le più note sono End of Option List, No-operation e Maximum Segment Size (più brevemente MSS).
Padding (di lunghezza variabile): contiene sempre degli zeri. Serve come riempitivo aggiunto per far sì che l'intestazione abbia una lunghezza multipla di 32 bit
Si noti che le unità dati di TCP possono trasportare solo messaggi di controllo (ad. es. per instaurare o abbattere una connessione) o solo dati di utente o entrambi. TCP usa il campo Control per specificare la funzione ed il contenuto di un segmento
Lezione 12
Instaurazione e rilascio di una connessione
Le due entità TCP interagenti si sincronizzano scambiandosi il proprio numero di sequenza iniziale, che rappresenta il numero a partire dal quale tutti i byte trasmessi, una volta instaurata la connessione, saranno numerati in sequenza.
il numero di sequenza in trasmissione non può iniziare da una dato valore fisso; ogni volta che si instaura una nuova connessione bisogna scegliere il numero di sequenza da cui partire in modo casuale mediante un’opportuna sincronizzazione, necessaria per risolvere potenziali situazioni anomale; IP non è affidabile e quindi i datagrammi possono andare persi, essere ritardati, duplicati o consegnati fuori sequenza.
TCP ri-trasmette i segmenti persi dopo un certo time-out
Possono nascere dei problemi se richieste originali e ri-trasmesse arrivano mentre una connessione sta per essere instaurata o se richieste ri-trasmesse sono ritardate ed arrivano dopo che una connessione è stata instaurata, usata o rilasciata, quindi può accadere che un segmento appartenente ad una “vecchia” connessione entri in un host dopo che tra gli stessi processi relativi a quel segmento sia stata instaurata una nuova connessione
Lezione 12
Instaurazione e rilascio di una connessione
Il valore iniziale del numero di sequenza è scelto in modo pseudo-casuale.
Un tempo veniva usati un clock di sistema. Ogni host usa un clock (non sincronizzato con gli altri) che incrementa un contatore a passi di 4 ms
Quando si inizia una nuova connessione, il numero di sequenza in trasmissione è posto uguale un numero pseudo-casuale)
L’host destinatario risponde con un numero di sequenza in ricezione uguale a quello in trasmissione del mittente ed indica un numero iniziale pseudo-casuale di sequenza in trasmissione.
Infine il mittente conferma nel suo numero di sequenza in ricezione il numero di sequenza in trasmissione del destinatario e comincia a trasmettere
Il destinatario comincia a trasmettere solo dopo aver ricevuto quest’ultimo terzo segmento. Tale meccanismo è noto come three way handshake.
All’instaurazione della connessione, prima di iniziare a trasmettere dei dati, vengono impostate le variabili del TCP sui due host remoti:
Memoria per i dati (buffer)
Finestra in ricezione
Lezione 12
Instaurazione e rilascio di una connessione
ULP B
TCP B
Connessione
Passive
open
Open Id
Open
success
ULP A
TCP A
Open Id
Open
success
Active open
1) SYN_segment (SYN, ISN=x)
2) SYN_segment (SYN, ACK, Ack_N=x+1, ISN=y)
3) ACK_segment (ACK, Ack_N=y+1)
ULP=Upper Layer Protocol
Lezione 12
Instaurazione e rilascio di una connessione
Chiusura di una connessione TCP => il Client chiude il socket locale;
Passo 1: il sistema terminale Client invia il segmento di controllo FIN al Server
Passo 2: il Server riceve il FIN, replica con l’ACK. Poi chiude la connessione ed invia il FIN.
client server
Close Passo 1
Close Passo 2
closed ti
med w
ait
Lezione 12
Instaurazione e rilascio di una connessione
Passo 3: il Client riceve il FIN, replica con l’ACK.
Entra nello stato “timed wait” (30, 60 120 sec): risponderà con ACK ad eventuali FIN inviati dal server per perdita dell’ACK
Passo 4: il Server riceve l’ACK. La connessione è chiusa.
Nota: con piccole modifiche, si possono gestire in modo simultaneo i FIN.
client server
closing
closing
closed ti
med w
ait
closed
Passo 3
Passo 4
Lezione 12
Instaurazione e rilascio di una connessione
Se una connessione non può essere chiusa secondo la procedura normale, a causa di situazioni anomale, o se un programma applicativo è forzato a chiudere immediatamente una connessione, TCP prevede una procedura di reset
Tale procedura consiste nell’inviare un segmento con il bit RST posto a 1. Alla ricezione di tale segmento la connessione è immediatamente terminata senza scambio di ulteriori messaggi e TCP ne informa i programmi applicativi.
Lezione 12
Controllo di errore
La strategia utilizzata per il recupero di errore è basata sull’uso di finestre in trasmissione ed in ricezione
TCP vede il flusso di dati in trasmissione come una sequenza di ottetti e quindi la finestra in trasmissione opera a livello di ottetto invece che a livello di trama o pacchetto
Gli ottetti sono numerati sequenzialmente a partire dal numero pseudo-casuale scelto durante il 3-way handshaking. La finestra in trasmissione specifica quindi il numero di ottetti che possono essere inviati senza ricevere un acknowledgement
Il mittente utilizza anche un meccanismo di time-out (TO); dopo avere inviato un segmento aspetta un certo tempo e, se non riceve una conferma, assume che il segmento si sia perso.
Lezione 12
Controllo di errore
La determinazione del time-out in Internet è complessa:
Una connessione può attraversare una sola LAN ad alta velocità o seguire un percorso attraverso numerosi gateway attraversando reti telefoniche a bassa velocità in diversi continenti
Normalmente tale tempo è scelto pari al round-trip delay (RTD) più il tempo necessario al destinatario per rispondere (il round trip delay è il tempo impiegato da un’unità dati per andare dal mittente al destinatario e tornare indietro). TCP misura dinamicamente il Round Trip Delay ed aggiorna il time-out di conseguenza
Una scelta errata porterebbe a molti inconvenienti. Ad esempio si considerino i seguenti eventi:
se la rete è congestionata, i ritardi aumentano
a causa di una scelta errata del time-out, alcuni segmenti vengono considerati persi, anche se in realtà non lo sono, e quindi ri-trasmessi
ciò aumenta la congestione che causa ancora ri-trasmissioni finché la portata tende a zero
Lezione 12
TCP: scenari di ritrasmissione
Host A
loss
Tim
e-o
ut
time
scenario con ACK perso
Host B
X
Host A
Seq=
92
tim
eou
t
time
timeout prematuro, ACK cumulativi
Host B
Seq=
100
tim
e-o
ut
Lezione 12
TCP Round Trip Delay e Timeout (1/2)
Come impostare il timeout del TCP ?
Più lungo del RTD
Il RTD può variare
Troppo breve: timeout prematuro:
Ritrasmissioni non necessarie
Troppo lungo: reazione lenta alla perdita di segmenti
Come stimare il RTD ?
Campionare il Round Trip Delay (sampleRTD): il tempo misurato dalla trasmissione di un segmento fino alla ricezione dell’ACK relativo:
Ignora le ritrasmissioni, i segmenti sono riscontrati in modo cumulativo
sampleRTD varierà, se ne vuole fare una stima “smussata”, “mediata”:
Uso di misure recenti, non soltanto dell’ultimo campione
Lezione 12
TCP Round Trip Delay e Timeout (2/2)
Media mobile esponenziale pesata
L’influenza di ogni campione decresce in modo esponenziale
EstimatedRTD = (1-x)*EstimatedRTD + x*SampleRTD
Valore tipico di x pari a 0.1 o 0.125
Come impostare il timeout
EstimtedRTD + un certo “margine di sicurezza”
Una grande variazione nel EstimatedRTD implica un margine di sicurezza più ampio:
Timeout = EstimatedRTD + 4*Deviation
Deviation = (1-x)*Deviation +x*|SampleRTD-EstimatedRTD|
Lezione 12
Controllo di flusso
Il controllo di flusso è una procedura operante tra la sorgente ed il destinatario delle informazioni intesa a limitare, in funzione delle risorse a disposizione, il flusso dei dati, prescindendo dal traffico presente nella rete
Tale meccanismo è indispensabile in Internet dove calcolatori di dimensione e velocità molto diverse comunicano tra loro; il più lento dei due deve poter rallentare l’emissione di informazione dell’altro
Lezione 12
Controllo di flusso
Il controllo di flusso nel protocollo TCP è implementato mediante un meccanismo a finestra di tipo sliding window orientata al byte, nel senso che la finestra rappresenta, istante per istante, il numero massimo di byte che possono essere trasmessi verso il destinatario
Lo schema è quindi basato sul campo Window (16 bit) in cui il destinatario scrive la larghezza (in byte) della finestra di trasmissione che il mittente dovrà usare dal quel momento in poi
La finestra comunicata dal ricevitore, Advertised window, rappresenta dunque la disponibilità di buffer in ricezione
Si noti che il ricevitore la può variare dinamicamente, informando il trasmettitore, avendo presente però che quest'ultimo la modificherà solo dopo aver ricevuto dati, corretti ed in sequenza, che abbiano "riempito" le finestre precedentemente offerte
Lezione 12
Controllo di flusso
Ricevitore: esplicitamente informa il mittente della quantità di memoria libera (che cambia in modo dinamico)
RcvWindow field nel segmento TCP
Mittente: mantiene la quantità di dati trasmessi e non ancora riscontrati, in quantità inferiore al valore ricevuto nella RcvWindow
Il mittente non può mandare in overflow il buffer del ricevitore trasmettendo
troppo e troppo velocemente
Controllo di flusso
receiver buffering
RcvBuffer = dimensione del buffer del ricevitore del TCP RcvWindow = quantità di spazio libero nel buffer
Lezione 12
Controllo di flusso
Problema della finestra errata (Silly Window Syndrome): se lo spazio disponibile in ricezione diventa nullo, appena se ne libera una minima quantità il mittente viene avvertito:
Si può arrivare alla situazione limite in cui mittente e destinatario si autosincronizzano sulla trasmissione di un singolo byte di dati => overhead del 4000%.
Per ridurre gli effetti negativi di questo fenomeno:
– Lato destinatario: quando arriva un segmento, si ritarda l’invio dell’ACK di massimo 500 ms (in questo modo si dà tempo al processo in ricezione di “pescare” dati dal buffer del TCP). Se nel frattempo un altro segmento corretto è arrivato, si riscontrano immediatamente in modo cumulativo. Si invia un ACK immediatamente se lo spazio disponibile è di almeno un MSS o del 50% del buffer in ricezione.
– Lato mittente (l’applicazione genera i dati lentamente, cioè segmenti più piccoli del MSS): se i dati precedenti sono stati trasmessi, ma la ricezione non è stata confermata, non inviare ulteriore segmenti fino all’arrivo di un ACK o alla creazione di un segmento di dimensione massima (MSS). Applica la regola anche con il “push”
Lezione 12
Generazione degli ACK del TCP
Evento
Arrivo dei segmenti in ordine,
senza buchi.
Ogni altra cosa già riscontrata
Arrivo dei segmenti in ordine,
senza buchi.
Un ACK ritardato pendente
Arrivo dei segmenti fuori ordine
più alto dell’ISN atteso
Rilevato un buco nei dati
Arrivo di segmenti che parzialmente
o completamente riempiono il buco
Azione del TCP ricevente
ACK ritardato, aspetto fino a 500 ms
per l’arrivo del prossimo segmento (Silly
Window Syndrome) - Se non arriva, invia l’ACK
Invia immediatamente un singolo ACK
cumulativo
Invia ACK duplicati, indicando l’ISN
del prossimo byte atteso
Riscontra immediatamente se il segmento
cominincia all’estremo inferiore del buco
Definita dalle RFC 1122 e 2581
Lezione 12
Controllo di congestione Il controllo della congestione ha lo scopo di recuperare situazioni di
sovraccarico nella rete
Il meccanismo sliding window di TCP funziona da estremo ad estremo e quindi, in linea di principio, non può essere usato in modo efficiente per il controllo di congestione.
Tuttavia seppure in modo indiretto, e con alcune limitazioni, lo schema sliding window di TCP può proteggere sia il destinatario sia, in caso di congestione, la rete
Se la rete è congestionata arriveranno, per una data larghezza di finestra, meno riscontri
Inoltre siccome TCP effettua misurazioni sul round trip delay, il time-out sarà stimato in modo opportuno e si eviteranno ri-trasmissioni che porterebbero ad un aumento della congestione invece che ad una sua diminuzione
TCP può utilizzare il round trip delay come misura di congestione e quindi per decidere opportunamente la larghezza della finestra
Lezione 12
Controllo di congestione
Ritmo di trasmissione limitato dalla dimensione della finestra di congestione, Congwin, sui segmenti:
Congwin
Lezione 12
Controllo di congestione
Si considera lo scadere di un time-out come un sintomo di congestione delle risorse di interconnessione
Algoritmi implementati nelle versioni più comuni del TCP:
Slow start +Congestion avoidance
Fast restransmit + Fast recovery
“Sondare” la rete per scoprire la larghezza di banda utilizzabile:
idealmente: trasmettere il più veloce possibile (il valore di Congwin più grande possibile) senza perdite
incrementare Congwin fino a riscontrare le perdite (sintomo di congestione)
perdita: decrementa Congwin, poi ricomincia a testare di nuovo la rete (incrementa Congwin)
Due “fasi” principali
slow start
congestion avoidance
Variabili importanti:
Congwin
threshold: definisce la soglia tra la fase di slow start phase e quella di congestion control
Lezione 12
Ritmo complessivo di trasmissione dati
Finestra di trasmissione risultante dai due processi di:
Controllo di congestione (Congwin)
Controllo di flusso (RcvWindow)
TrWindow = min (Congwin, RcvWindow)
w byte inviati in un RTD
Problemi di efficienza nel caso di reti con elevato prodotto banda*ritardo
max portata =
TrWindow
RTD
byte/sec
Lezione 12
TCP Slowstart
Incremento esponenziale (per ogni RTD) nella dimensione della finestra (partenza lenta ?)
Evento di perdita: timeout (Tahoe TCP) e/o 3 ACK duplicati (Reno TCP)
inizializazzione: Congwin= 1
for (ogni segmento riscontrato) Congwin++
until (evento di perdita) OR (CongWin > threshold)
Algoritmo Slowstart
Host A
RT
D
Host B
time
Lezione 12
TCP Congestion Avoidance
/* Lo slowstart è finito */ /* Congwin > threshold */
Until (evento di perdita) {
ogni w segmenti riscontrati: Congwin++
} threshold = Congwin/2
Congwin = 1
Effettua lo slowstart
Congestion avoidance
1
Il TCP Reno evita lo slowstart (procedura di fast recovery) dopo 3 ACK duplicati: procedura di fast retransmit => innesca la ritrasmissione senza aspettare il timeout
Lezione 12
TCP Fairness
AIMD: additive increase, multiplicative decrease
Incrementa la finestra di 1 per ogni RTD
Decrementa la finestra di un fattore 2 per ogni evento di perdita
Se N TCP sessioni condividono lo stesso collegamento “bottleneck”, ognuna dovrebbe ottenere 1/N della capacità del collegamento
Connessione TCP 1
Bottleneck router di capacità R
Connessione TCP 2
Lezione 12
TCP è equo ?
Esempio di due sessioni in competizione per la banda su un link:
Additive increase fornisce una pendenza di 1, quando la portata cresce
Multiplicative decrease decrementa la portata in modo proporzionale
R
R
Uguale divisione della banda
Portata Connessione 1
congestion avoidance: incremento additivo
perdita: decrementa la finestra di un fattore 2
congestion avoidance: incremento additivo perdita: decrementa la finestra di un fattore 2
Lezione 12
Punti a favore di Internet
Esiste e cresce
IP è senza connessione:
deve “solo” inoltrare i datagrammi, non effettua controllo di errore e di flusso (e quindi opera facilmente sopra diverse tipologie di sotto-rete)
non deve mantenere informazioni sullo stato delle connessioni (robustezza ai guasti)
semplicità del codice (in una rete con connessione, circa il 90% del codice serve a trattare condizioni di errore)
scalabilità (IP “gira” facilmente attorno a sistemi guasti)
facilità di riconfigurazione e di aggiunta/eliminazione di host e sotto-reti (soft local states vs. hard global states)
disponibilità di applicazioni (client/server) (gratuite)
Lezione 12
Limiti attuali di Internet
Limiti di portata (commutazione “software”)
Assenza di garanzia sulla Qualità di Servizio (IPv6 introduce il concetto di flussi) (RSVP)
Altre problematiche:
Esaurimento dello spazio degli indirizzi, assenza di gerarchie di indirizzi (superato da IPv6: indirizzi di 128 bits contro i 32 di IPv4 -> 665*10^21 per metro quadro del pianeta) (auto-configurazione)
Confidenzialità e autenticazione (superato da IPv6 o con protocolli da estremo a estremo)
Supporto della mobilità del terminale di utente