internet una rete di reti. quadro generale internet interconnette centinaia di milioni di sistemi...
TRANSCRIPT
InternetUna rete di reti
Quadro generale
• Internet interconnette centinaia di milioni di sistemi periferici/end system (server, pc, smartphone, cornici digitali, automobili, …) • La connessione è fatta attraverso una rete di collegamenti e
commutatori di pacchetto• I collegamenti avvengono attraverso mezzi fisici (cavi coassiali, fili di
rame, fibre ottiche e onde elettromagnetiche)• La velocità di trasmissione è misurata in bit/secondo (bps)• Vengono trasmessi pacchetti
Quadro generale
• I commutatori di pacchetto ricevono pacchetti e li ritrasmettono instradandoli verso la destinazione• Due tipi di commutatori di pacchetto:• Router• Commutatori a livello di collegamento
• I router vengono usati nel nucleo della rete• I commutatori a livello di collegamento sono usati nelle reti di
accesso• Dall’invio alla ricezione un pacchetto segue un percorso: path
Quadro generale
• I sistemi periferici accedono ad internet tramite gli ISP (Internet Service provider: aziende, compagnie telefoniche,università,…)• I provider sono organizzati in modo gerarchico (livello basso, livello
nazionale, livello internazionale)
Quadro generale
• Tutte le parti in gioco nella comunicazione rispettano dei protocolli• TCP e IP sono i due protocolli principali di internet e vengono indicati
collettivamente con TCP/IP• Gli standard di Internet vengono sviluppati dall’Internet Engineering
Task Force IETF• Gli standard sono documentati e i documenti vengono detti RFC
(Request For Comment)• La parola ‘comment’ ha una derivazione antecedente ad internet
Quadro generale
• Internet può essere vista come un’infrastruttura che fornisce servizi alle applicazioni• Applicazioni tipiche: posta elettronica, navigazione web, telefonia
(VoIP), streaming video, condivisione di file peer-to-peer (P2P), …• Queste applicazioni sono dette distribuite• Le applicazioni sono eseguite sui sistemi periferici
Quadro generale
• PROTOCOLLO• Definisce il formato e l’ordine dei messaggi scambiati tra due o più entità in
comunicazione, cosi come le azioni intraprese in fase di trasmissione e/o ricezione di un messaggio o di un altro evento
Quadro generale
• I sistemi periferici vengono anche chiamati host
• Gli host sono di due categorie: client e server
• I client richiedono servizi ai server
Quadro generale
• Da una qualunque rete (domestica, residenziale, mobile) si accede all’esterno attraverso un edge router• I due accessi più diffusi sono: DSL e via cavo• Le linee telefoniche trasportano dati e segnali telefonici in tre bande
distinte in modo da condividere lo stesso collegamento DSL:• Downstream (verso l’abitazione ad alta velocità tra 50KHZ e 1 MHZ)• Upstream (verso DSLAM media velocità tra 4 e 50 KHZ)• Canale telefonico a due vie (tra 0 e 4 kHz)
• Il DSLAM è un collettore che ha anche la funzione di separare dati e telefonia
Quadro generale
• La DSL utilizza l’infrastruttura esistente della compagnia telefonica• L’accesso a internet VIA CAVO utilizza quelle della televisione via cavo
• Esistono inoltre • l’accesso Ethernet e WiFi che avviene nel raggio di pochi metri• l’accesso 3G e LTE in un raggio di decine di chilometri dalla stazione base
Quadro generale
• Le applicazioni distribuite scambiano tra loro messaggi• Ogni messaggio viene suddiviso in pacchetti• I pacchetti viaggiano attraverso commutatori di pacchetto (router e
commutatore a livello di collegamento) che connette più collegamenti• Ogni commutatore di pacchetto, dopo aver ricevuto l’intero pacchetto
inizia a trasferirlo in uscita• Per un pacchetto di L bit trasmesso su un canale con velocità di R bps, il
tempo di trasmissione è L/R secondi• I router necessitano di memorizzare l’intero pacchetto prima di inviarlo
(ritardo di trasmissione)
Quadro generale
• Ogni pacchetto in arrivo al commutatore di pacchetto attende in coda di output per il suo turno (ritardo di accodamento)• La coda ha dimensione finita e come conseguenza si ha perdita di
pacchetti
Quadro generale
• Ciascun router ha una tabella di inoltro che utilizza per stabilire su quale collegamento instradare il pacchetto• Più avanti vedremo come vengono impostate le tabelle di inoltro
attraverso i protocolli di instradamento
Quadro generale
• Nella commutazione di circuito le risorse sono allocate per tutto il tempo della comunicazione (per esempio la telefonata)• Internet usa la commutazione di pacchetto• Molte reti telefoniche stanno migrando verso la commutazione di
pacchetto, utilizzata in particolare per le comunicazioni internazionali• Nella commutazione di circuito le risorse sono allocate per tutto il
tempo della comunicazione (per esempio la telefonata)• Internet usa la commutazione di pacchetto• Molte reti telefoniche stanno migrando verso la commutazione di
pacchetto, utilizzata in particolare per le comunicazioni internazionali
Quadro generale
• I sistemi periferici si collegano ad internet tramite un ISP di accesso• La connettività avviene attraverso DSL, cavo, wifi, cellulare, …• ISP, oltre che una compagnia di telecomunicazione o televisione, può
essere un’azienda o università o altro• Gli ISP si connettono tra loro creando una rete di reti• Gli ISP di accesso si connettono agli ISP regionali che a loro volta si
connettono all’ ISP di primo livello (ne esistono una dozzina)• Gli ISP si distinguono per la copertura geografica
VIAGGIO DEI PACCHETTI
• Un pacchetto parte da un host ed attraversa una serie di router prima di giungere a destinazione (host destinazione)• Ad ogni tappa subisce ritardi di:• Elaborazione• Accodamento• Trasmissione• Propagazione
• La somma dei ritardi è detta ritardo totale di nodo
VIAGGIO DEI PACCHETTI
• Ritardo di elaborazione (microsecondi o meno)• Il router esamina il pacchetto per determinare dove dirigerlo
• Ritardo di accodamento (microsecondi o millisecondi)• Attende in coda la trasmissione sul collegamento
• Ritardo di trasmissione (microsecondi o millisecondi)• Come abbiamo visto è L/R
VIAGGIO DEI PACCHETTI
• Ritardo di propagazione (millisecondi)• Tempo impiegato dal pacchetto per giungere dal router A al router B• Dipende dal mezzo fisico e dalla distanza tra i due router ed è dato da d/v,
dove d è la distanza tra i router e v la velocità di propagazione nel collegamento
• La velocità di trasmissione dipende dalla lunghezza del pacchetto (oltre che dalla velocità di trasmissione del collegamento), mentre quella di propagazione dipende dalla distanza tra i router (oltre che dalla velocità di propagazione del collegamento)
VIAGGIO DEI PACCHETTI
• A differenza degli altri ritardi, il ritardo di accodamento può variare da pacchetto a pacchetto
• Se a è la velocità di arrivo dei pacchetti ed L la lunghezza dei pacchetti, L x a è la velocità di arrivo dei bit in coda. Se R è la velocità di trasmissione, L x a / R è detta intensità di traffico. E’ auspicabile che tale rapporto sia inferiore ad 1.
• Si ha perdita di pacchetti quando l’intensità di traffico si approssima ad 1
VIAGGIO DEI PACCHETTI
• Throughput istantaneo: velocità alla quale B riceve il file inoltrato da A• Throughput medio è dato da F/T bps dovee F è la lunghezza del file da ricevere
e T il tempo necessario affinché B riceva tutti i bit inviati.• Se su una rete vi sono solo A mittente e B ricevente, il throughput è dato dal
minimo delle velocità di trasmissione dei vari collegamenti attraversati (collo di bottiglia)• Se uno dei collegamenti, ad esempio quello a più alta velocità è condiviso tra più
operazioni, potrebbe diventare il più lento e costituire esso il collo di bottiglia• Quindi il throughput dipende dalla velocità di trasmissione dei collegamenti e
dal traffico della rete
Livelli dei protocolli
• Pila di protocolli di internet consiste di 5 livelli ed assume come modello la pila OSI:• APPLICAZIONE (corrispondente ad applicazione, sessione e presentazione nel
modello OSI)• TRASPORTO• RETE• COLLEGAMENTO• FISICO
Livelli dei protocolli
• Applicazione – fornisce messaggi• HTTP, SMTP, FTP, DNS, …
• Trasporto – fornisce segmenti + indirizzo• TCP, UDP
• Rete – fornisce instradamento datagrammi• IP e protocolli di instradamento
• Collegamento – effettua trasporto al nodo successivo (frame)• Ethernet, PPP, …
• Fisico – sposta singoli bit del frame• Protocolli dipendenti dal mezzo fisico
Livelli dei protocolli
• Ogni livello trasmette al livello successivo nella pila• Il mittente trasmette un messaggio a partire dal livello ‘applicazione’
fin giù verso il livello ‘fisico’• Il destinatario riceve i pacchetti sul ‘fisico’ . Questi vengono spostati
via via verso il livello superiore fino al livello ‘applicazione’
Livello APPLICAZIONE
• La maggior parte delle applicazioni consiste di coppie di processi che si scambiano messaggi attraverso la rete• La SOCKET è un’interfaccia attraverso cui il livello applicazione riceve e
trasmette messaggi da e verso il suo livello successivo: livello di trasporto• Il processo ricevente è identificato da: IP e socket• L’interfaccia socket è anche detta ‘PORTA’
Livello APPLICAZIONEEsempi di applicazioni
• WEB – HTTP• TRASFERIMENTO FILE – FTP• POSTA ELETTRONICA – SMTP• SERVIZIO DI DIRECTORY – DNS
Livello APPLICAZIONEutilizzo protocolli del livello di trasporto
• Nella progettazione di un’applicazione si dovrà scegliere tra i protocolli di trasporto forniti da Internet:
• TCP•UDP
Livello APPLICAZIONEutilizzo protocolli del livello di trasporto
• TCP• Servizio orientato alla connessione-effettua handshaking prima di iniziare la
comunicazione e la chiude la connessione dopo l’invio• Servizio di trasferimento affidabile-trasporta i dati senza errori e nel giusto
ordine• Effettua controlli di congestione effettuando strozzature negli invii (client e
server)
• I progettisti di applicazioni web scelgono TCP
Livello APPLICAZIONEutilizzo protocolli del livello di trasporto
• UDP• Senza connessione-non effettua handshaking• Trasferimento dati non affidabile-non garantisce l’arrivo del messaggio e non
garantisce l’ordine• Non effettua controlli di congestione
• I progettisti di applicazioni di telefonia come Skype scelgono UDP
Livello APPLICAZIONEHTTP
• E’ il principale protocollo a livello di applicazione• Definisce le regole di colloquio tra client e server• E’ implementato in due programmi: client e server• Un browser web implementa il lato client di HTTP• Un web server implementa il lato server di HTTP• HTTP utilizza TCP anziché UDP• Quando il client ha mandato un messaggio alla sua interfaccia socket,
questo è gestito dall’altro protocollo• HTTP è un protocollo senza memoria di stato (stateless protocol)
Livello APPLICAZIONEHTTP
• Il modello è un client che invia una richiesta al server ed il server che risponde• Ciascuna coppia richiesta/risposta può avvenire su • Connessioni TCP distinte - connessione NON persistente• Unica connessione TCP – connessione persistente
• HTTP usa di default la connessione persistente ma può usarle entrambi• RTT (round-trip-time) è il tempo impiegato da un piccolo pacchetto
per viaggiare dal client al server e tornare indietro
Livello APPLICAZIONEHTTP: formato del messaggio RICHIESTA
• Riga di richiesta: metodo, campo URL, campo versione HTTP• Righe di intestazione• Metodi principali: GET – POST• Nel metodo GET, l’URL contiene i dati trasmessi• Nel metodo POST i dati sono presenti nel ‘body’ del messaggioche è
vuoto nel caso di GET• Il campo URL contiene l’oggetto richiesto• Nelle righe di intestazione viene tra l’altro indicato:• L’host in cui risiede l’oggetto richiesto• Il tipo di connessione richiesto (persistente o non persistente)• Il tipo di browser
Livello APPLICAZIONEHTTP: formato del messaggio RISPOSTA
• Riga di stato: versione protocollo, codice di stato, messaggio di stato• Righe di intestazione: tipo di connessione, data, data ultima modifica,
lunghezza del contenuto, tipo del contenuto• Corpo• Esempio di riga di stato:• HTTP/1.1 200 OK
Livello APPLICAZIONEHTTP: cookie
• I server HTTP sono privi di stato• Per ovviare a ciò, HTTP adotta i cookie• Al primo collegamento, il sito crea un identificativo nel proprio
database e risponde inviando l’identificativo• Il browser riceve la risposta e registra il cookie nel client• Ad ogni richiesta, il browser invia l’identificativo al server
Livello APPLICAZIONEHTTP: proxy server
• Per ottimizzazione, le richieste HTTP possono essere dirette verso un proxy server che contiene gli oggetti precedentemente richiesti• Ad ogni richiesta il proxy server confronta la data dell’oggetto
richiesto con quella del corrispondente oggetto sul server• A seconda della data inoltra la richiesta al server o restituisce l’oggetto
al client• Generalmente un proxy server è installato ed acquistato da un ISP
Livello APPLICAZIONEHTTP: prova su PC
• telnet /index.php 80• GET /index.php HTTP/1.1• Host: www.categoriesdownload.com• Connection: close
Livello APPLICAZIONEFTP
• Usato per trasferire file tra host locale ed host remoto• L’host locale fornisce il nome dell’host remoto per ottenere una connessione e poi utente e
password sulla connessione• FTP utilizza due connessioni• Connessione di controllo per informazioni di controllo come utente e password e
informazioni relative alle cartelle• Connessione dati per l’invio dei file• La connessione di controllo avviene sulla porta 21• La connessione dati avviene sulla porta 20• Ad ogni invio di file, viene aperta una nuova connessione dati (non persistente) e rimane la
stessa connessione di controllo per tutta la durata della sessione (persistente)• Mantenere lo stato dell’utente e della sessione limita di molto il numero totale di sessioni
Livello APPLICAZIONEFTP ed HTTP
• HTTP e FTP sono entrambi protocolli di trasferimento file• Entrambi fanno uso di TCP• A differenza di FTP, nell’HTTP non ci sono informazioni di stato da
mantenere
Livello APPLICAZIONEFTP: comandi
• I comandi inviati e le risposte usano la connessione di controllo e sono inviati in formato ascii a 7 bit• Esempi di comandi:• USER username• PASS password
• Esempi di risposte:• 331 Username OK, password required• 125 Data connection already open
Livello APPLICAZIONEFTP: esempio
• Si possono verificare facilmente su un server di test come ftptest.net con cui si crea una connessione con: telnet ftptest.net 21
Livello APPLICAZIONEPosta elettronica: SMTP
• Vi sono tre componenti:• User agent (per esempio Microsoft Outlook) per inoltrare e leggere messaggi• Server di posta che contiene le caselle di posta• Protocollo SMTP
• SMTP trasferisce i messaggi dal mail server del mittente a quello del destinatario• SMTP fa uso del servizio di trasferimento dati affidabile TCP• SMTP presenta un lato client in esecuzione sul mail server del mittente
ed un lato server presente sul mail server del destinatario• Client e server sono interscambiabili a seconda di chi dei due trasmette
Livello APPLICAZIONEPosta elettronica: SMTP
• SMTP fa uso di connessioni persistenti: se il mail server di invio ha molti messaggi da inviare allo stesso mail server in ricezione, può mandarli tutti sulla stessa connessione TCP• telnet serverName 25 o 465
Livello APPLICAZIONEPosta elettronica: SMTP e POP3
• SMTP è usato per trasferire la posta dal server del mittente a quello del destinatario ed anche per trasferire la posta dal server agent del mittente al server di posta del mittente• Dal server del destinatario al suo user agent è usato un altro
protocollo: POP3• E’ un protocollo di accesso alla posta. Entra in funzione quando lo
user agent (il client) apre una connessione TCP verso il mail server (il server) sulla porta 110.• A connessione stabilita il POP3 procede in 3 fasi:• AutorizzazioneTransazione Aggiornamento
Livello APPLICAZIONEPosta elettronica: SMTP e POP3
• SMTP è usato per trasferire la posta dal server del mittente a quello del destinatario ed anche per trasferire la posta dal server agent del mittente al server di posta del mittente• Dal server del destinatario al suo user agent è usato un altro
protocollo: POP3• E’ un protocollo di accesso alla posta. Entra in funzione quando lo
user agent (il client) apre una connessione TCP verso il mail server (il server) sulla porta 110.• A connessione stabilita il POP3 procede in 3 fasi:• AutorizzazioneTransazione Aggiornamento
Livello APPLICAZIONEPosta elettronica: SMTP e IMAP
• In alternativa al POP3 esiste l’IMAP con le stesse peculiarità ed in più la capacità di gestire cartelle sul server
Livello APPLICAZIONEPosta elettronica: SMTP e posta web• Sostituisce POP3 ed IMAP con HTTP quando gli user agent sono
browser
Livello APPLICAZIONESMTP e HTTP
• Entrambi i protocolli trasferiscono file da un host ad un altro• Sia HTTP persistente che SMTP utilizzano connessioni persistenti• HTTP è un protocollo pull, mentre SMTP è un protocollo push• HTTP incapsula ogni oggetto in un separato messaggio: se vi sono N immagini
in una pagina, crea N+1 messaggi. SMTP pone tutti gli oggetti in un unico messaggio.• Il formato tipico di un messaggio costituito da un’intestazione:
• From: [email protected]• To: [email protected]• Subject: abcdefghijkl
seguita da una riga vuota e poi dal testo del messaggio
Livello APPLICAZIONEDNS
• Ciascun host all’interno di internet è identificato attraverso un indirizzo detto IP e composto di 4 byte (ciascuno varia da 0 a 255)• Quindi esistono due modi per identificare gli host: il nome e l’indirizzo IP• DNS è un database distribuito implementato in una gerarchia di DNS
server ed un protocollo a livello di applicazione che consente agli host di interrogare il database• Il protocollo DNS utilizza UDP e la porta 53• DNS viene utilizzato da altri protocolli a livello di applicazione:
HTTP,SMTP, FTP per tradurre i nomi degli host in indirizzi IP• Ciò avviene nel modo che illustreremo:
Livello APPLICAZIONEDNS
• Il browser estrae il nome dell’host dall’URL e lo passa al lato client dell’applicazione DNS• Il client DNS invia un’interrogazione contenente l’hostname ad un DNS
server• Il client DNS riceve la risposta• A questo punto il browser può dare inizio ad una connessione TCP verso il
processo server HTTP collegato alla porta 80 di quell’indirizzo IP• Il DNS può avere a fronte di un hostname una famiglia di indirizzi IP. Questo
è il caso di server replicati. Il DNS fornirà l’insieme degli indirizzi sempre in ordine diverso per consentire un utilizzo più equilibrato dei server.
Livello APPLICAZIONEDNS
• Il browser estrae il nome dell’host dall’URL e lo passa al lato client dell’applicazione DNS• Il client DNS invia un’interrogazione contenente l’hostname ad un DNS server• Il client DNS riceve la risposta• A questo punto il browser può dare inizio ad una connessione TCP verso il
processo server HTTP collegato alla porta 80 di quell’indirizzo IP• Il DNS può avere a fronte di un hostname una famiglia di indirizzi IP. Questo è
il caso di server replicati. Il DNS fornirà l’insieme degli indirizzi sempre in ordine diverso per consentire un utilizzo più equilibrato dei server.• Anche il DNS gestisce il caching
Livello APPLICAZIONEP2P
• Lo scenario è quello di coppi di host connessi in modo intermittente, chiamati peer, che comunicano direttamente l’uno con l’altro.• I peer sono computer fissi e portatili di utenti privati• In una Client/Server, il server dovrebbe provvedere ad uploadare il file
su ciascun client.• In una P2P (di cui BitTorrent è un esempio), ciascun peer può
redistribuire agli altri qualsiasi porzione del file abbia ricevuto aiutando cosi il server
Livello TRASPORTOINTRODUZIONE
• Un protocollo a livello di trasporto mette a disposizione una comunicazione logica tra processi applicativi di host differenti• I protocolli a livello di trasporto sono implementati nei sistemi periferici, ma non nei
router della rete.• Lato mittente il livello di trasporto converte i messaggi che riceve da un processo
applicativo in pacchetti a livello di trasporto• Il livello di trasporto passa il segmento al livello di rete dove viene incapsulato
all’interno di un pacchetto a livello di rete (datagramma).• I router leggono solo i campi del datagramma e non quelli applicativi• Il livello di rete del ricevente estrae il segmento dal datagramma e lo passa al livello
di trasporto che a sua volta ne estrae il messaggio passandolo al livello applicativo
Livello TRASPORTOOverview
• Il livello di trasporto mette a disposizione due protocolli:• UDP che fornisce un servizio non affidabile e non orientato alla connessione• TCP che offre un servizio affidabile ed orientato alla connessione
• Un’applicazione sceglie uno di questi due protocolli• Il protocollo a livello di rete è IP e fornisce comunicazione logica tra host• Entrambi i protocolli hanno le seguenti due funzionalità:
• Consegna dati da processo a processo• Controllo degli errori
• In particolare le due funzioni di sopra sono le uniche fornite da UDP, invece TCP ne fornisce molte altre che esamineremo in seguito
Livello TRASPORTOMultiplexing e Demultiplexing
• E’ la funzione «Consegna dati da processo a processo»• Se ad esempio sul nostro computer abbiamo una sessione FTP, due sessioni
Telnet e stiamo scaricando pagine web, avremo 4 processi applicativi in esecuzione: 2 Telnet, 1 FTP ed 1 HTTP. Quando la nostra macchina riceve dati dal livello di rete sottostante deve indirizzare i dati ricevuti ad uno di questi processi• Un processo può gestire una o più socket, attraverso le quali i dati passano per
raggiungere il processo• Quindi il livello di trasporto non trasferisce i dati direttamente ad un processo ma
ad una socket• Una socket ha un identificatore univoco che ha un formato differente a seconda
del protocollo di trasporto utilizzato (TCP o UDP)
Livello TRASPORTO>> Multiplexing e Demultiplexing
•Demultiplexing: trasportare i dati dei segmenti/pacchetti verso la giusta socket•Multiplexing: processo inverso, prende i dati provenienti dalle socket e li inserisce in pacchetti con intestazione per passarli al livello di rete
Livello TRASPORTOMultiplexing e Demultiplexing UDP
• All’interno di un pacchetto a livello di trasporto viaggiano, tra le altre, le informazioni sulla porta origine, ip origine, porta destinazione e ip destinazione• Il lato client dell’applicazione consente al livello di trasporto l’assegnazione
automatica del numero di porta• Il lato server dell’applicazione assegna un numero di porta specifico• Una socket UDP viene identificata dalla coppia: indirizzo IP, numero porta di
destinazione• Quindi in UDP due pacchetti provenienti da diversi client ma diretti verso lo stesso
processo verranno presi in carico dalla stessa socket• L’indirizzo IP di origine ed il numero di porta di origine servono come indirizzo di
ritorno
Livello TRASPORTOMultiplexing e Demultiplexing TCP
• All’interno di un pacchetto a livello di trasporto viaggiano, tra le altre, le informazioni sulla porta origine, ip origine, porta destinazione e ip destinazione• Il lato client dell’applicazione consente al livello di trasporto l’assegnazione
automatica del numero di porta• Il lato server dell’applicazione assegna un numero di porta specifico• Una socket TCP viene identificata da 4 parametri: indirizzo IP di origine, numero
porta di origine, indirizzo IP di destinazione, numero porta di destinazione• Quindi in TCP due pacchetti provenienti da diversi client ma diretti verso lo stesso
processo verranno presi in carico socket differenti• L’indirizzo IP di origine ed il numero di porta di origine servono come indirizzo di
ritorno
Livello TRASPORTOWEB server e TCP
• Sia i segmenti per stabilire la connessione iniziale, sia quelli che trasportano messaggi di richiesta HTTP hanno la porta destinazione 80• In generale un web server genera un nuovo processo per ogni connessione e
ciascuno di questi processi ha una propria socket attraverso la quale giungono richieste e sono inviate risposte HTTP• Se client e server usano HTTP persistente, allora scambiano messaggi HTTP
attraverso la stessa socket per tutta la durata della connessione• Se client e server usano HTTP non persistente allora viene creata e chiusa una
nuova connessione TCP per ciascuna coppia richiesta/risposta, e da quel momento viene creata e chiusa una nuova socket per ogni richiesta/risposta
Livello TRASPORTOUDP
• UDP è un protocollo di trasporto con le seguenti funzionalità:• Consegna dati da processo a processo• Controllo degli errori
• In pratica questo protocollo prende i messaggi dal processo applicativo, aggiunge il numero di porta di origine e di destinazione per il multiplexing / demultiplexing e passa il segmento risultante al livello di rete (IP)• UDP utilizza il numero di porta di destinazione per consegnare il pacchetto al
processo applicativo• UDP non è orientato alla connessione
Livello TRASPORTOUDP: struttura dei pacchetti
• L’intestazione UDP presenta solo 4 campi di 2 byte ciascuno:• Lunghezza: indica il numero di byte del pacchetto
• Checksum
• Numero di porta di origine
• Numero di porta di destinazione
• CHECKSUM• Viene utilizzato per verificare che i bit del segmento siano rimasti inalterati durante il trasporto
• Lato mittente UDP effettua il complemento a 1 della somma di tutte le parole da 16 bit nel segmento e l’eventuale riporto viene sommato al primo bit. Tale risultato viene posto nel campo checksum del pacchetto
Livello TRASPORTOUDP: esempio per checksum
• Supponiamo di avere le seguenti tre parole di 16 bit:• 0110011001100000• 0101010101010101• 1000111100001100
• La somma delle prime due è:• 1011101110110101
• A cui sommo la terza ed ottengo• 0100101011000001
• Sommo il riporto al primo bit ed ottengo• 0100101011000010
• Calcolo il complemento a 1• 1011010100111101
• In ricezione si sommano le tre parole iniziali ed il checksum. Se non ci sono errori il risultato della somma dovrebbe essere • 1111111111111111
Livello TRASPORTOUDP
•Sebbene UDP metta a disposizione tale controllo, non fa niente per risolvere la situazione di errore. Alcune implementazione di UDP scartano il segmento, altre lo trasmettono all’applicazione con un avvertimento di errore
Livello TRASPORTOTCP: inizio
• Viene detto ‘ORIENTATO ALLA CONNESSIONE’ -> handshake• Handshake a tre vie: il client invia un pacchetto TCP-il server risponde con
un secondo pacchetto-il client risponde con un terzo pacchetto• Lo stato della connessione risiede nei due sistemi periferici -> i router
sono ignari• La connessione TCP è full-duplex -> può esserci passaggio contemporaneo
di dati nei due versi sulla stessa connessione• La connessione TCP è punto-punto -> tra singolo mittente e singolo
destinatario -> non è possibile il multicast (da un mittente a molti destinatari)
Livello TRASPORTOTCP: invio dei dati
• Dopo aver instaurato la connessione, i due processi C/S possono scambiarsi dati (pacchetti)• Il client manda dati attraverso la socket• Dalla socket passano al TCP in esecuzione sul client• TCP dirige i dati al buffer di invio• Dal buffer di invio di tanto in tanto preleverà blocchi di dati e li invierà
al livello di rete• Ogni lato della connessione presenta un proprio buffer di invio e
ricezione• Una connessione conserva: buffer, variabili e connessione socket
Livello TRASPORTOTCP: pacchetti o segmenti
• La massima quantità di dati prelevabili e posizionabili in un pacchetto viene limitata dal MSS (maximun segment size)
• Ogni segmento ha un’intestazione a lunghezza variabile da 20 a 32 byte• Struttura di un pacchetto TCP:
• Numero porta origine 16 bit• Numero porta destinazione 16 bit• Checksum 16 bit• Numero di sequenza e numero di acknowledgement: usati per trasferimento dati affidabile -
entrambi da 32 bit• Campo finestra di ricezione indica il numero di byte che il destinatario può accettare e viene usato
per il controllo del flusso 16 bit• Campo lunghezza intestazione 4 bit• Campo flag: ack, rst, syn, fin, psh, urg lungo 6 bit
• Il bit ack indica che trattasi di un segmento di acknowledgement
Livello TRASPORTOTCP: numeri sequenza e acknowledgement
•Numero di sequenza: numero nel flusso di byte del primo byte del pacchetto•Numero di acknowledgement: scritto dal processo mittente è
il numero di sequenza del byte successivo che l’host A attende dall’host B• Se A ha ricevuto 500 byte da B, scriverà 501
nell’acknowledgement number• TCP effettua l’acknowledgement solo dei byte fino al primo
mancante nel flusso -> TCP offre acknowledgement cumulativi
Livello TRASPORTOTCP:sequenza e acknowledgement•Cosa fa un host destinatario quando riceve segmenti
fuori sequenza?•Due approcci comunemente seguiti:• Scarta i pacchetti non ordinati• Li mantiene ed attende quelli mancanti (più seguito)
Livello TRASPORTOTCP: trasferimento dati affidabile
• Il servizio di rete IP non è affidabile –>• Non garantisce la sequenza• Non garantisce la consegna• Non garantisce l’integrità dei dati
• I datagrammi di IP possono:• Sovraffollare i buffer dei router• Non raggiungere la destinazione• Arrivare in ordine casuale• Arrivare con bit alterati
Livello TRASPORTOTCP: trasferimento dati affidabile
• TCP usa:• TIMER• ACKNOWLEDGEMENT duplicati
• Ciascun segmento include un numero di sequenza• Se il timer non è già in funzione TCP lo avvia quando il segmento viene passato ad IP• Il timer è associato al più vecchio segmento che non ha ricevuto acknowledgement
(variabile TimeoutInterval)• Per timeout su ack, TCP ritrasmette il segmento che lo ha causato e riavvia il timer• Se riceve un segmento di acknowledgement (lo capisce dal bit ack impostato) confronta
il numero di sequenza con la sua variabile relativa all’ultimo numero di sequenza che non ha ricevuto acknowledgement e si comporta di conseguenza
• Ricordare che TCP adotta acknowledgement cumulativi
Livello TRASPORTOTCP: trasferimento dati affidabile
• Quando il destinatario riceve un segmento con numero di sequenza superiore a quella attesa, invia nuovamente un ack relativo all’ultimo segmento ricevuto nella corretta sequenza • Se il mittente riceve 3 ack duplicati per lo stesso dato, il
mittente ritrasmette il segmento mancante
Livello TRASPORTOTCP: controllo di flusso e di congestione• TCP evita che il mittente saturi il buffer del ricevente• TCP regola l’invio a seconda della congestione percepita• Entrambi gli obiettivi si raggiungono rallentando il mittente• TCP usa la variabile ‘finestra di ricezione’ per fornire al mitt un’indicazione
dello spazio libero nel buffer del dest• Il dato relativo alla ‘finestra’ viene inviato dal ricevente nel pacchetto• Il mittente verifica costantemente che la differenza tra l’ultimo byte inviato e
l’ultimo byte per cui ha ricevuto ack non superi il valore della finestra• Quando la finestra è zero, il mittente continua ad inviare segmenti con dati da
1 byte ed il destinatario risponderà con un ack fino a che non si torni ad una situazione di finestra > 0
Livello TRASPORTOTCP: gestione della connessione
• Passo 1. Il TCP client invia uno speciale segmento al TCP server che non contiene dati applicativi ed il bit SYN è ad 1. il numero di sequenza è inizializzato.• Passo 2. Il TCP server estrae il pacchetto dal datagramma, alloca i buffer e le
variabili TCP ed invia un segmento al client TCP senza dati applicativi, con bit SYN ad 1 e campo ACK con valore inizializzato lato server che corrisponde ad un numero di sequenza iniziale lato server. • Passo 3. Alla ricezione del pacchetto SYNACK il client alloca buffer e variabili ed
invia un altro segmento con bit SYN posto a zero, il campo ack impostato con il valore ricevuto dal server ed il campo dati del segmento può contenere informazioni• Per terminare una connessione ciascuno dei due (mittente o destinatario) può
inviare un pacchetto con il bit FIN posto ad 1.
Livello TRASPORTOTCP: controllo di congestione
• Principi guida del controllo di congestione:• Un segmento perso implica congestione e TCP decrementerà il
tasso di trasmissione del mittente• La ricezione di un acknowledgement non duplicato comporterà un
aumento del tasso di trasmissione• Per la verifica di questi eventi, mittente e destinatario
utilizzano variabili associate alla connessione
Livello RETEIntroduzione
• Il ruolo del livello di rete è quello di trasferire pacchetti da un host ad un altro• In una generica trasmissione da H1 ad H2• Il livello di rete in H1 prende i segmenti dal livello di trasporto, li incapsula
in un datagramma (pacchetto a livello di rete) e li trasmette al proprio router limitrofo (il più vicino), R1.• Nell’host H2 il livello di rete riceve i datagrammi (che hanno una loro
struttura definita) dal proprio router contiguo R2, estrae i segmenti e li consegna al livello di trasporto• In questo schema i router hanno la sola funzione di inoltrare i datagrammi
dai loro collegamenti di ingresso a quelli di uscita
Livello RETEIntroduzione
• Due importanti funzioni del livello di rete:• Inoltro: quando un router riceve un pacchetto lo deve trasferire da uno dei collegamenti di input
(quello a cui è giunto) ad uno di output• Instradamento: il livello di rete deve determinare tramite algoritmo di instradamento il percorso che
i pacchetti devono seguire
Per inoltrare i pacchetti i router estraggono dal campo di intestazione il valore che utilizzano come indice nella tabella di inoltro per ottenere l’interfaccia di collegamento a cui il pacchetto dovrà essere inoltrato.Il router riceve messaggi di instradamento che vengono utilizzati per configurare la sua tabella di inoltro.Tra i vari servizi che una rete può offrire (consegna garantita, consegna ordinata, …), il livello di rete Internet mette a disposizione un solo servizio: servizio best-effort. In realtà questo vuol dire ‘nessun servizio’ in quanto anche non consegnando nulla soddisferebbe la definizione di ‘servizio best-effort’.
Livello RETEReti datagram
• Quando un pacchetto giunge al router, questo utilizza l’indirizzo di destinazione per cercare nella tabella di inoltro a quale interfaccia di collegamento avviarlo• Nella tabella di inoltro presente in ciascun router non ci sono tutti
gli indirizzi IP presenti nella rete (sarebbero 2^32 = 4.294.967.296). • In genere nelle tabelle sono presenti prefissi o intervalli di valori. • In caso di prefissi sceglie il prefisso più lungo per inoltrare• Le tabelle di inoltro vengono gestite da algoritmi che le aggiornano
con periodicità che va da 1 a 5 minuti
Livello RETEArchitettura di un router
• Porte di ingresso• Sono interfacce fisiche di input: nulla a che fare con le porte
software associate alle applicazioni di rete ed alle socket• E’ qui che, utilizzando le informazioni della tabella di inoltro, viene
determinata la porta di uscita a cui dirigere un pacchetto attraverso la struttura di commutazione• Una volta determinata la porta di output di un pacchetto esso può
essere inviato alla struttura di commutazione. Se la struttura di commutazione è impegnata, il pacchetto viene accodato sulla porta di input
Livello RETEArchitettura di un router
• Struttura di commutazione• Connette fisicamente le porta di ingresso e quelle di uscita
• Porte di uscita• Memorizzano i pacchetti che provengono dalla struttura di commutazione e li
trasmettono sul collegamento in uscita• Processore di instradamento• Esegue i protocolli di instradamento• Gestisce le tabelle di inoltro• Gestisce le informazioni sui collegamenti attivi• Implementa le funzioni di gestione della rete
Livello RETEArchitettura di un router
• Le porte di input, le porte di output e la struttura di commutazione implementano la funzione di inoltro• Questa implementazione avviene quasi sempre in modalità hardware
per ragioni di ottimizzazione dei tempi di elaborazione (nanosecondi)
Livello RETEArchitettura di un router
• Si possono formare code di pacchetti sia presso le porte di ingresso che presso quelle di uscita• Quando queste code crescono, la memoria dei router può
esaurirsi e quindi può avvenire perdita di pacchetti.
Livello RETEIndirizzamento IPv4
• Il collegamento tra Host e collegamento fisico è detto interfaccia• Un router è connesso almeno a due collegamenti• Anche il confine tra un router ed il suo collegamento è detto interfaccia• Ad ogni interfaccia è associato un indirizzo IP e non all’host o al router che
la contiene• Un router può interconnettere tre sottoreti su tre collegamenti. Ciascuno
di questi collegamenti ha un proprio indirizzo IP.• Ciascuna sottorete ha un indirizzo di sottorete • L’indirizzo di una sottorete è nella forma a.b.c.d/x dove x rappresenta il
numero di bit prefisso della sottorete
Livello RETEIndirizzamento IPv4
223.1.1.4223.1.1.1
223.1.1.3
223.1.3.2223.1.3.1223.1.2.2223.1.2.1
223.1.7.0
223.1.7.1
223.1.2.6 223.1.3.27
223.1.9.2
223.1.9.1
223.1.8.0 223.1.8.1
Nella figura vi sono 6 sottoreti
223.1.1.0/24223.1.2.0/24223.1.3.0/24223.1.9.0/24223.1.8.0/24223.1.7.0/24
Livello RETEIndirizzamento Internet globale
• La strategia di assegnazione degli indirizzi Internet è detta CIDR (classless interdomain routing).• L’indirizzo IP viene diviso in due parti ed ha la forma a.b.c.d/x dove x indica il
numero di bit nella prima parte dell’indirizzo (prefisso)• I router esterni alla rete dell’organizzazione considerano solo gli x bit del prefisso• I bit 32-x possono essere usati per distinguere i dispositivi interni
all’organizzazione che quindi avranno tutti lo stesso prefisso e saranno usati dai router interni alla rete• Prima dell’adozione del CIDR le part di rete di un indirizzo IP dovevano essere
lunghe 8, 16 o 24 bit. Tale schema di indirizzamento era noto come classful addressing dato che le sottoreti con indirizzi di sottorete 8, 16 e 24 erano note rispettivamente come reti di classe A, B e C
Livello RETEIndirizzamento Internet globale
• Il classful addressing portò ad un rapido esaurimento degli indirizzi della classe B e ad uno scarso utilizzo dello spazio di indirizzamento assegnato• Indirizzo IP broadast 255.255.255.255. Quando un host
emette un datagramma con destinazione 255.255.255.255, il messaggio viene consegnato a tutti gli host sulla stessa sottorete
Livello RETEOttenimento blocco indirizzi
• Un blocco di indirizzi viene fornito dal provider a varie organizzazioni.• Ad esempio, un provider che dispone del blocco di indirizzi 200.23.16.0/20 può fornire i seguenti
blocchi di indirizzi a varie organizzazioni:• 200.23.16.0/23• 200.23.18.0/23• 200.23.20.0/23• …• 200.23.30.0/23
• Notiamo che la terza parte di 20 bit è di 4 bit, cioè 16, quindi gli altri 4 bit possono variare generando i numeri da 17 a 255, fermo restando i primi 20 bit
• L’autorità globale per l’assegnazione degli indirizzi è ICANN (Internet Corporation for Assigned Names and Numbers), società senza scopo di lucro, che si occupa anche dell’assegnazione dei nomi di domini
• Esistono anche i registri internet regionali. Per l’europa è il RIPE
Livello RETEDHCP e NAT
• In una sottorete, ciascun host può ottenere un indirizzo IP sia in modo manuale che automatico e dinamico• Esiste il protocollo DHCP che consente attraverso un server della sottorete di
assegnare un indirizzo IP ad un host • Nelle reti domestiche, ai dispositivi interni viene assegnato un IP che ha significato
solo all’interno della rete• Gli IP dei dispositivi sono ‘nattati’ attraverso un router NAT che ha un indirizzo IP
riconosciuto all’esterno• Un dispositivo che richiede una pagina web, ha nella sua richiesta numero di porta e
indirizzo IP. Il router inoltra questa richiesta al destinatario sostituendo IP e porta e tenendo traccia in una tabella di traduzione NAT (NAT translation table) per il response
Livello RETEICMP
• Le tre componenti del livello di rete sono:• Protocollo IP• Protocollo di instradamento (RIP,… che vedremo)• Protocollo ICMP
• ICMP viene utilizzato per scambiarsi messaggi tra host e router. Tipicamente questi sono messaggi di errore. Per esempio quando un router non ha potuto trovare un percorso verso un host, il router stesso emette un messaggio di errore verso l’host mittente
Livello RETEAlgoritmi di instradamento
• Un host è connesso direttamente ad un router di default che chiameremo router sorgente, cui trasferisce tutti i pacchetti diretti all’esterno della sottorete• Anche l’host di destinazione ha un router di default che chiameremo
router di destinazione• La rete è un grafo fatto da nodi (router) collegati da archi (collegamenti).
Ciascun arco ha un costo associato.• Il problema è instradare un pacchetto tra questi due router, cercando un
percorso a costo minimo• La ricerca di un percorso fa uso di algoritmi detti ‘algoritmi di
instradamento’
Livello RETEAlgoritmo di Dijkstra
• In quest’algoritmo la topologia di rete e tutti i costi dei collegamenti sono disponibili in input all’algoritmo.• Ciò si ottiene facendo inviare a ciascun nodo pacchetti sullo stato (identità e
costo) dei suoi collegamenti a tutti gli altri nodi della rete (broadcast)• Tutti i nodi avranno la stessa vista della rete e ciascun nodo che lancerà
l’algoritmo avrà lo stesso risultato degli altri• L’algoritmo in esame calcola il percorso a costo minimo da un dato nodo a
tutti gli altri nodi della rete• Al termine dell’algoritmo per ciascun nodo si avrà il suo predecessore lungo
il percorso a costo minimo da nodo origine.• Da qui si potrà costruire la tabella di inoltro.
Livello RETEAlgoritmo di Dijkstra
Calcoliamo i percorsi a costo minimo da u a tutte le destinazioni
u
x y
z
wv
5
3
1
3
1
2
2
1
5
2
Livello RETEAlgoritmo di Dijkstra
• Indichiamo con • D(v): il costo minimo del percorso dal nodo origine alla
destinazione v per quanto concerne l’iterazione corrente dell’algoritmo• P(v): il predecessore immediato di v lungo il percorso a costo
minimo dall’origine a v• N’: il sottoinsieme di nodi v già considerati, cioè quelli per cui il
percorso a costo minimo dall’origine a v è già noto definitivamente
Livello RETEAlgoritmo di Dijkstra
• Passo 0: inizializzazione• N’ è composto solo da u• Per ogni nodo n adiacente imposta D(n)=c(n , v) dove c(n , v)
è il costo del collegamento• Qui i valori dei percorsi a costo minimo noti da u ai suoi nodi
adiacenti v, w, e x sono posti rispettivamente a 2,5,1• I costi verso y e z non sono impostatiPasso N’ D(v) - p(v) D(w) -p(w) D(x) - p(x) D(y) - p(y) D(z) - p(z)
0 u 2 – u 5 – u 1 – u - -
Livello RETEAlgoritmo di Dijkstra
• Passo 1: prima iterazione• Individua un nodo n non in N’ tale che D(n) sia minimo ed
aggiungilo ad N’ (dalla tabella, nel nostro esempio n è x)• Aggiorna D(s) per ciascun nodo s adiacente a n e non in N’ nel
seguente modo:• D(s) = min (D(s), D(n)+c(n , s))
• Nel nostro esempio i nodi s adiacenti ad x sono y, w, v, quindi la tabella diventa la seguente
Passo N’ D(v) - p(v) D(w) -p(w) D(x) - p(x) D(y) - p(y) D(z) - p(z)
0 u 2 - u 5 - u 1 - u - -
1 ux 2 - u 4 - x 2 - x
Livello RETEAlgoritmo di Dijkstra
• Passo 2 : seconda iterazione• I nodi v ed y hanno il costo D minimo, quindi scegliamo uno dei due, per esempio y.
• Aggiungiamo y ad N’
• I nodi adiacenti non ancora in N’ da considerare sono w e z
• Applicando l’iterazione otteniamo la tabella seguente
Passo N’ D(v) - p(v) D(w) -p(w) D(x) - p(x) D(y) - p(y) D(z) - p(z)
0 u 2 - u 5 - u 1 - u - -
1 ux 2 - u 4 - x 2 - x
2 uxy 3 - y 4 - y
Livello RETEAlgoritmo di Dijkstra
• Passo 3 : terza iterazione• Il nodo v ha il costo D minimo
• Aggiungiamo v ad N’
• I nodi adiacenti non ancora in N’ da considerare è solo w
• Applicando l’iterazione otteniamo la tabella seguente
Passo N’ D(v) - p(v) D(w)-p(w) D(x) - p(x) D(y)- p(y) D(z) - p(z)
0 u 2 - u 5 - u 1 - u - -
1 u x 2 - u 4 - x 2 - x
2 u x y 3 - y 4 - y
3 u x y v 3 - y
Livello RETEAlgoritmo di Dijkstra
• Passo 4 : quarta iterazione• Il nodo w
• Aggiungiamo w ad N’
• I nodi adiacenti non ancora in N’ da considerare è solo z
• Applicando l’iterazione otteniamo la tabella seguente
Passo N’ D(v) - p(v) D(w)-p(w) D(x) - p(x) D(y)- p(y) D(z) - p(z)
0 u 2 - u 5 - u 1 - u - -
1 u x 2 - u 4 - x 2 - x
2 u x y 3 - y 4 - y
3 u x y v 3 - y
4 u x y v w 4 – y
Livello RETEAlgoritmo di Dijkstra
• Passo 5 : quinta iterazione• Il nodo z
• Aggiungiamo z ad N’
• I nodi adiacenti non ancora in N’ da considerare … non ve ne sono
Passo N’ D(v) - p(v) D(w)-p(w) D(x) - p(x) D(y)- p(y) D(z) - p(z)
0 u 2 - u 5 - u 1 - u - -
1 u x 2 - u 4 - x 2 - x
2 u x y 3 - y 4 - y
3 u x y v 3 - y
4 u x y v w 4 – y
5 u x y v w z
Livello RETEAlgoritmo di Dijkstra
• Per ciascun nodo abbiamo il suo predecessore. Quindi possiamo costruire il percorso minimo da u a qualunque nodo. Per esempio da u a z: il predecessore di z è y, il cui predecessore è x, il cui predecessore è u, dunque il percorso sarà: u x y z.• Un utile esercizio è cambiare i costi e vedere come variano i percorsi
Passo N’ D(v) - p(v) D(w)-p(w) D(x) - p(x) D(y)- p(y) D(z) - p(z)
0 u 2 - u 5 - u 1 - u - -
1 u x 2 - u 4 - x 2 - x
2 u x y 3 - y 4 - y
3 u x y v 3 - y
4 u x y v w 4 – y
5 u x y v w z
Livello RETEAlgoritmo distance vector (DV)
• L’algoritmo di Dijkstra usa informazioni globali, mentre il seguente algoritmo è iterativo, asincrono e distribuito.• Iterativo: si ripete finché non avviene ulteriore scambio informativo
tra nodi vicini• Asincrono: non richiede che tutti i nodi operino al passo con gli altri• Distribuito: ciascun nodo riceve informazioni dai nodi vicini e
restituisce a questi i risultati
Livello RETEAlgoritmo distance vector (DV)
• Relazione importante (formula di Bellman-Ford):• Sia d (x,y) il costo del percorso a costo minimo dal nodo x al nodo y• Sia c (x,y) il costo del percorso sull’arco che congiunge x ed y• Allora
d (x , y) = min ( c(x , v) + d(v , y) ) al variare di v• dove v indica tutti i nodi vicini ad x• La relazione dice che dopo aver viaggiato da x a v,
consideriamo il costo minimo da v ad y; dunque il problema è individuare quel v per cui sia minima la somma.
Livello RETEAlgoritmo distance vector (DV)
• Indichiamo con D(x , y) una stima del costo del percorso a costo minimo da x ad y per tutti i nodi y del grafo.• Indichiamo con D(x) l’insieme (o vettore) delle distanze dal
nodo x a tutti i nodi del grafo• Nell’algoritmo che presentiamo, ciascun nodo x mantiene le
seguenti informazioni:• c(x , v) per tutti i suoi vicini v• D(x) costo del percorso da x verso tutti i nodi• D(v) per ciascun vicino v, cioè i vettori di tutti i suoi vicini (di x)
Livello RETEAlgoritmo distance vector (DV)
• Di quando in quando un nodo invia una copia del proprio vettore delle distanze a ciascuno dei suoi vicini. Quando il generico nodo x riceve un nuovo vettore da uno dei suoi vicini v, applica la formula di Bellman-Ford per aggiornare il proprio vettore (e lo distribuisce a sua volta ai suoi vicini) come segue:
• D (x , y) = min ( c(x , v) + D(v , y) ) per ciascun nodo y del grafo• Ogni volta che il vettore delle distanze cambia in un nodo, questo manderà il
proprio vettore a tutti i suoi vicini. In questo modo la stima de costi D(x,y) convergerà verso d(x,y) che è l’effettivo costo minimo da x ad y.• Ogni nodo quindi attende aggiornamento dai suoi vicini.
Livello RETEAlgoritmo distance vector (DV)
• D (x , y) = min ( c(x , v) + D(v , y) ) per ciascun nodo y del grafo• Vediamo con un semplice grafo il funzionamento dell’algoritmo:
y
zx2
7
1
X
x y z
0 2 7
Y
x y z
2 0 1
Z
x y z
7 1 0
Livello RETEAlgoritmo distance vector (DV)
• Quando x riceve il vettore da y e da z aggiorna il proprio così:• D(x,x)=0 (non varia)
• D(x,y)=min(c(x,y)+D(y,y), c(x,z)+D(z,y))=min(2+0, 7+1)=2 (non varia)
• D(x,z)=min(c(x,z)+D(z,z), c(x,y)+D(y,z))=min(7+0, 2+1)=3 (varia)
• A questo punto x aggiorna la propria tabella di inoltro verso il nodo z: il percorso minimo passa da y per andare verso z
• Oltre ad aggiornare la propria tabella di inoltro invia il proprio vettore modificato ai suoi nodi vicini che aggiorneranno i propri rispettivi vettori
y
zx2
7
1X
x y z
0 2 7
Y
x y z
2 0 1
Z
x y z
7 1 0
X
x y z
0 2 3
2 0 1
7 1 0
Livello RETEAlgoritmo distance vector (DV)
• Quando z riceve il vettore da x si aggiorna• D(z,z)=0 (non varia)
• D(z,y)=min(c(z,y)+D(y,y), c(z,x)+D(x,y))=min(1+0, 7+2)= 1 (non varia)
• D(z,x)=min(c(z,x)+D(x,x), c(z,y)+D(y,x))=min(7+0, 1+2)=3 (varia)
• A questo punto z aggiorna la propria tabella di inoltro verso il nodo x: il percorso minimo passa da y per andare verso x
• Oltre ad aggiornare la propria tabella di inoltro invia il proprio vettore modificato ai suoi nodi vicini che aggiorneranno i propri rispettivi vettori
y
zx2
7
1X
x y z
0 2 7
Y
x y z
2 0 1
Z
x y z
7 1 0
Z
x y z
0 2 3
2 0 1
3 1 0
Livello RETEAlgoritmo distance vector (DV)
• Anche y riceverà i vettori dai vicini e resta come esercizio per il lettore. Si noterà che il vettore delle distanze di y non cambia e quindi non invierà nulla ai vicini.• In generale, ogni qualvolta interviene una modifica nel costo
di un collegamento, il nodo interessato invia il vettore ai suoi vicini.• Nell’algoritmo DV, ciascun nodo comunica solo con i vicini inviando i
costi da sé stesso verso tutti i nodi che conosce. • Nell’algoritmo Dijkstra invece comunica in modalità broadcast con tutti i
nodi comunicando soltanto i costi dei collegamenti direttamente connessi.
Livello RETEInstradamento gerarchico
• Al crescere del numero dei router accade che:• il tempo di calcolo diventa proibitivo
• è necessaria un’enorme quantità di memoria
• Il traffico generato dal broadcast occupa parecchia banda
• Per risolvere questi problemi si organizzano i router in sistemi autonomi (AS), mettendoli sotto l stesso controllo amministrativo (stesso ISP o stessa rete aziendale).
• I router sotto lo stesso AS eseguono lo stesso algoritmo di instradamento• Vi sarà dunque un protocollo di instradamento intra-AS per ciascun AS ed un
protocollo di instradamento inter-AS• In internet tutti i sistemi autonomi usano lo stesso protocollo intra-AS chiamato BGP4• Ciascun router riceve informazioni sia dal protocollo intra-AS che da quello inter-AS
per configurare la propria tabella di inoltro
Livello RETEInstradamento in internet
• In internet è usato RIP come protocollo di instradamento all’interno di un sistema autonomo.• RIP è di tipo DV in cui tutti i collegamenti hanno costo unitario• In RIP i router adiacenti si scambiano gli aggiornamenti approssimativamente
ogni 30 secondi• Ciascun router mantiene una tabella di instradamento che include il vettore delle
distanze e la tabella di inoltro• Una tabella di instradamento avrà una riga per ciascuna sottorete del sistema
autonomo• Per il routing interno ai sistemi autonomi a livello di ISP di livello superiore, viene
usato OSPF e l’algoritmo Dijkstra• BGP è lo standard dei protocollo di instradamento tra sistemi autonomi
Livello RETELivello di collegamento