Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1° Capitolo
Descrivere le varie componenti del ritardo in una rete a pacchetto (9) ✔[Descrivere i vari tipi di ritardo in una
rete a pacchetto. (1) ] {Libro: par. 1.4.1 ed.6}
Un pacchetto parte da un host sorgente, attraversa una serie di router e arriva a un host destinazione. Durante questo
tragitto, il pacchetto può subire 4 tipi di ritardo che sommati tra loro forniscono il ritardo totale di nodo. Questi ritardi sono:
- Ritardo di elaborazione (Delab): Il tempo richiesto per esaminare l’header del pacchetto e per determinare
dove dirigerlo fa parte del processing delay. Questo può includere altri fattori, tra i quali il tempo richiesto per
controllare errori a livello di bit nel pacchetto.
- Ritardo di accodamento (Dqueue): Ogni commutatore, per ciascuno dei collegamenti a cui è connesso,
mantiene un buffer di output (o coda) dove conserva i pacchetti che sta per inviare. Un pacchetto in arrivo che
richiede l’invio attraverso un determinato collegamento, ma lo trova occupato dalla trasmissione di un altro, deve
accodarsi nel buffer. Questo comporta dei ritardi di accodamento che vanno ad incrementare i tempi di
trasmissione di un pacchetto. Tali ritardi ovviamente sono variabili e dipendono dal livello di traffico sulla rete.
Dato che la dimensione del buffer è finita può accadere che un pacchetto in arrivo trovi il buffer completamente
pieno. Si verificherà una perdita di pacchetto (packet loss). E’ la componente piu’ complessa del ritardo totale di
nodo - per caratterizzarla si fa uso di misure statistiche quali il ritardo di accodamento medio, la varianza del
ritardo di accodamento e la probabilità che il ritardo di accodamento superi un valore fissato.
a è la velocità media di arrivo dei pacchetti alla coda (packet/s), R la velocità di trasmissione (bit/s). Supponiamo
che tutti i pacchetti siano di L bit. La velocità media di arrivo dei bit è La (bit/s); Il rapporto La/R è detto intensità
di traffico. Se La/R>1 : la coda tenderà a crescere all’infinito e con essa il ritardo di accodamento.
Se l’intensità di traffico è vicina a zero, allora gli arrivi di pacchetti sono pochi e piuttosto distanziati (poco ritardo
di accodamento) mentre se è vicino ad 1 il tasso di arrivo dei pacchetti è molto alto e si forma facilmente una
coda (ritardo di accodamento aumenta).
- Ritardo di trasmissione (Dtrans): è la quantità di tempo richiesta dal router per trasmettere in uscita il
pacchetto. Questo ritardo non dipende dalla distanza tra due router ma solo dalla lunghezza del pacchetto (L) in
bit e dalla velocità di trasmissione del collegamento (R) in bps. Il ritardo di trasmissione dunque risulta essere
L/R.
- Ritardo di propagazione (Dprop): è il tempo richiesto per la propagazione di un bit da un router al router
successivo, è quindi in funzione della distanza tra i due router (d), ma non dipende dalla lunghezza del pacchetto.
Il bit viaggia alla velocità di propagazione del collegamento (v), che dipende dal mezzo fisico (compresa tra
2x10^8 m/s e 3x10^8 m/s). Il ritardo di propagazione è quindi dato da d/v.
Dtot= Dproc+ Dqueue+Dtrans+Dprop
Illustrare le caratteristiche generali e i relativi vantaggi delle reti a commutazione di circuito e delle reti a
pacchetto (1) ✔{par. 1.3 ed. 6}
Commutazione di circuito:
Le risorse richieste per la comunicazione tra due end-system sono riservate per l’intera durata della sessione di
comunicazione ed inoltre prima che la comunicazione avvenga, la rete deve stabilire una connessione (circuito) end-to-
end tra mittente e destinatario, con capacità trasmissiva assegnata. Ciò causa un dispendio delle risorse e quindi una
perdita di efficienza, visto che quando inizia una sessione, bisogna attenderne la fine per iniziarne un’altra. Un circuito
in un collegamento è implementato con due tecniche diverse, TDM o FDM; FDM indica che lo spettro di frequenze di un
collegamento viene suddiviso tra le connessioni stabilite con quel collegamento. Nello specifico viene dedicata un’
1
ampiezza di banda bandwidth) a ciascuna connessione; TDM indica che si divide il tempo in intervalli (frame) di durata
fissa, divisi a loro volta in slot; quando si stabilisce una connessione tramite un collegamento, le viene dedicato uno slot
di tempo in ogni frame, solo per quella connessione.
Commutazione di pacchetto: i messaggi da scambiare dalla sorgente vengono divisi in parti più piccole chiamate
pacchetti; questi pacchetti vengono trasmessi tramite router e commutatori a livello di collegamento fino alla destinazione.
Ogni pacchetto è composto da un
: Header utilizzato ai fini dell’identificazione e gestione e Payload che contiene i dati veri e propri. Viene usata la tecnica
dello store and forward: il commutatore deve ricevere l’intero pacchetto e storarlo in un buffer prima di poterlo inoltrare
alla destinazione. Ogni commutatore ha un buffer di output dove conserva i pacchetti che attendono la trasmissione; ciò
può causare ritardi di accodamento o perdita di pacchetti. Ogni pacchetto che percorre la rete contiene nella sua
intestazione (header) l’indirizzo ip della sua destinazione. Ogni router ha una tabella di inoltro (forwarding table) che
mette in relazione gli indirizzi di destinazione con in collegamenti in uscita del router stesso. Quando il pacchetto giunge
ad un router, quest’ultimo esamina l’indirizzo della destinazione e consulta la propria tabella per determinare il
collegamento uscente appropriato verso cui dirigere il pacchetto in uscita.
Internet implementa parecchi protocolli di instradamento (routing protocol) per impostare automaticamente queste tabelle
di inoltro.
Le grandi differenze tra commutazione di pacchetto e di circuito risiede nell’efficienza e nella velocità. Nella
commutazione di circuito la velocità è divisa a seconda di quanti collegamenti ci sono nello stesso circuito. Nella
commutazione di pacchetto invece è disponibile tutta la velocità per ogni singolo collegamento, con i dovuti ritardi e
attese del caso. Inoltre l’efficienza nella commutazione di pacchetti è molto maggiore visto che non vi è inutilizzo di
risorse nei momenti di silenzio, cosa che avviene nella commutazione di circuito. Infatti nelle reti a commutazione di
pacchetto i messaggi utilizzano le risorse di rete (il canale) solo quando necessario, al contrario della commutazione a
circuito. La commutazione a circuito offre però una maggiore garanzia sulla ricezione dei pacchetti, che viaggiano su
canali dedicati. Non esiste dunque il problema della congestione, che esiste invece per la commutazione di pacchetti.
2° Capitolo
2
– attaccando i dati inviati dal client alla fine dell’url. Il metodo Post si differenzia dal get in quanto i parametri non vengono
passati attraverso url-method. I messaggi di risposta sono identificati attraverso il codice di stato (200 ok, 400 bad
request..) . Gli header http sono righe testuali free-format che specificano caratteristiche generali della trasmissione,
dell’entità trasmessa, della richiesta effettuata, della risposta generata. Il server mantiene nell’header informazioni
riguardo : lunghezza messaggio, ultima modifica dell’oggetto, data della risposta, il tipo dell’oggetto inviato e il tipo di
server.
Descrivere le differenze tra le versione 1.0 e 1.1 del protocollo HTTP (2) ✔
Le differenze tra le due versioni risiedono soprattutto nel fatto che HTTP 1.0 utilizza connessioni non persistenti: per
mandare più oggetti appartenenti ad esempio alla stessa pagina, viene aperta e chiusa una nuova connessione TCP ad
ogni oggetto; invece, in HTTP 1.1 c’è l’utilizzo di connessioni persistenti, ovvero per più richieste e risposte successive
tra stessi client e server viene usata sempre la stessa connessione TCP permanente, ed inoltre questa connessione può
essere usata non solo per la sola pagina web in questione, ma per spedire più pagine web. In un protocollo HTTP
l’inizializzazione di una connessione TCP (handshaking) comporta un RTT: il tempo impiegato da un pacchetto di
dimensione trascurabile per viaggiare dal client al server e poi tornare al client. L’invio della richiesta HTTP da parte del
client e l’inoltro della risorsa da parte del client comportano un altro RTT. Il tempo totale di risposta è di 2RTT+tempo di
trasmissione della risorsa per unprotocollo non persistente. In un protocollo HTTP con persistenza dunque il RTT
“pagato” per la connessione è sfruttato anche per altri oggetti. I tempi medi di risposta totali si riducono notevolmente
per http persistente. Nella versione 1.1 c’è anche il pipelining, ovvero la capacità di effettuare richieste di oggetti una
dopo l’altra senza aspettare le risposte alle richieste pendenti. Queste migliorie nella versione 1.1 comportano una
notevole diminuzione dell’onere di lavoro sul web server e dei ritardi dovuti alla versione 1.0.
4
Un server IMAP associa ad ogni messaggio una cartella (ad esempio i messaggi in arrivo nella cartella INBOX). Consente
la creazione di cartelle e lo spostamento di messaggi in esse. Conserva info di stato tra sessioni diverse (nomi cartelle
e assegnazioni di messaggi ad esse). Inoltre consente di ricevere parte di un messaggio, cosa utile con connessioni a
velocità ridotte.
L’ultimo protocollo usato è HTTP. Questo viene usato nelle web mail, ovvero caselle di posta aperte tramite un browser.
Quello che cambia è la comunicazione tra user agent e il primo mail server che è attuata tramite protocollo HTTP e non
più SMTP.
Architettura P2P
È un modello di architettura logica in cui i nodi non sono gerarchizzati sotto forma di client e di server, ma sotto forma di
nodi equivalenti o paritari (peer). Qualsiasi nodo dunque è in grado di avviare o completare una transazione. Due host
della rete sono connessi in modo intermittente e comunicano direttamente tra di loro. Con l’architettura client-serer il
tempo di distribuzione cresce linearmente con il crescere dei client N che scaricano il file. Con l’architettura P2P con il
crescere dei peer N che scaricano il file, il tempo di distribuzione diminuisce. L’architettura P2P (al contrario di Client-
Server) può essere scalabile e questo è la diretta conseguenza del fatto che i peer re-distribuiscono i bit oltre che a
scaricarli. Ci sono tre tipologie di architetture P2P –Decentralizzate pure •Tutti i nodi sono peer, nessun coordinatore
centralizzato •Ogni peer può funzionare come router, client, o server –Parzialmente centralizzate •Alcuni nodi (supernodi)
facilitano l’interconnessione tra i peer –Indice locale centralizzato per risorse dei peerlocali •Prima comunicazione con
un supernodo (a), poi con il peer(b) –Decentralizzate ibride •Presenza di un server centralizzato che facilita l’interazione
tra i peer (servizio di localizzazione). Overlay network: è la rete virtuale che interconnettei peer ed è basata su una rete
fisica sottostante (tipicamente IP). Ci sono 3 tipi di reti : reti strutturate (p2p che fanno uso di DHT), reti non strutturate.
Le reti non strutturate si dividono in : Sistemi decentralizzati ibridi: directory centralizzata (napster), Sistemi
decentralizzati puri: ricerca flood-based (gnutella), Sistemi parzialmente centralizzati.
Skype
Skype è un’applicazione P2P che supporta inoltre instant messaging e conferencing. E’ sviluppata con un protocollo
completamente proprietario per cui le info conosciute sono attribuite unicamente a studi di reverse engineering.
Skype utilizza un rete di overlay con tre tipi di host: Skype Clients, Skype login server e SuperNode.
Ciascun client Skype mantiene una lista di indirizzi IP di super nodi conosciuti. I super nodi sono responsabili della
localizzazione degli utenti, del routing delle chiamate, del mantenimento delle informazioni circa gli host connessi alla
rete Skype.
Alla prima esecuzione dopo l’installazione, un client Skype comunica con il server Skype. Durante la comunicazione, la
cache dell’host è popolata di 7 indirizzi IP di super nodi da usare per il bootstrap. A questo punto l’host può contattare
uno di essi per il join. Selezionato il super nodo per il join, parte la fase di autenticazione con user name e password con
il server Skype. L’host viene periodicamente aggiornato con indirizzi IP di nuovi super nodi. Gli indici mappano i nomi a
indirizzi IP, distribuiti tra i super nodi. Per i login successivi un client sceglie uno degli indirizzi dei super nodi e stabilisce
direttamente la connessione. Il server Nat copre i peer client per il riconoscimento in Skype – la comunicazione viene
permessa attraverso i supernodi che trasmettono per conto dei due peer protetti da NAT.
6
può anche aggiungere nuove coppie al database. Un primo metodo di realizzazione sarebbe la distribuzione casuale
delle coppie e la memorizzazione in ogni peer dell’IP di tutti gli altri: ciò però non è affatto scalabile e non va quindi bene.
Un metodo migliore è il seguente: si assegna un identificatore ad ogni peer (da 0 a 2^n-1 con n fissato); anche ogni
chiave deve essere sempre nello stesso intervallo precedente; queste chiavi però spesso non sono nel formato giusto,
e per creare interi a partire da esse si usa una funzione hash che ne crea la corrispondenza (tramite questa funzione
più chiavi possono avere la stessa corrispondenza ma è una probabilità molto ridotta quindi trascurabile). Come si
assegnano le chiavi ai peer? Si assegna ogni coppia chiave-valore al peer il cui id è il più vicino alla chiave, e se la
chiave corrisponde proprio ad uno degli id, allora si assegna proprio a quel peer, mentre se è più grande di tutti gli id,
allora si memorizza nel peer con l’id più piccolo (convenzione modulo-2^n). Però con questo metodo c’è un problema
quando un peer vuole aggiungere una nuova coppia: per determinare il peer con id più vicino alla chiave dovrebbe
conoscerli tutti, cosa infattibile.
Questo problema si risolve con la DHT circolare. In questa realizzazione ogni peer tiene traccia solo del predecessore
immediato e successore. Un peer per sapere quale sia responsabile per una certa chiave, interroga il successivo o il
precedente, e se non è nessuno dei due, manda avanti al successore in senso orario sul cerchio, fino ad arrivare al
responsabile che invia risposta al peer originario che ha mandato la richiesta. Però così facendo, nel caso peggiore, ogni
peer dovrebbe mandare una richiesta sul cerchio. Questo problema si aggira con l’aggiunta delle scorciatoie che
permettono ad un peer di conoscere anche un numero piccolo di peer sparsi nel cerchio. Una situazione ottimale è che
il numero di peer vicini e il numero di messaggi scambiati siano O(logN) con N numero di peer. Infine c’è il problema
dell’uscita o entrata di peer dal sistema. Questo si risolve con il turnover. Ogni peer conosce due successori, il primo e
il secondo e verifica periodicamente che ognuno sia attivo. Se uno di essi se ne va, il peer rende il secondo come primo
successore e poi prende il successore immediato di questo e lo rende suo secondo successore. All’entrata di un nuovo
peer, esso chiede quale sia il suo successore nella rete DHT, e poi fa in modo che esso aggiorni la sua lista includendo
il nuovo peer.
Descrivere le diverse modalità per la ricerca nelle reti peer to peer (5) ✔
Viene utilizzato un indice nel sistema p2p che mappa le informazioni per la locazione del peer. La locazione è
composta dall’indirizzo IP e il numero di porta. Ci sono diversi tipi di meccanismi per la ricerca dei peer. Una prima
distinzione viene fatta per le applicazioni file sharing e instant messagging.
Nel file sharing l’indice tiene traccia dinamicamente delle posizioni dei file condivisi dai peer. I peer devono
comunicare all’indice quale file contegono e i peer cercano nell’indice per determinato dove i file possono essere
trovati. Nell’istant messagging gli indici mappano i nomi utenti alle posizioni. Quando l’utente inizia l’appicazione
instant messagging deve informare l’indice della sua posizione. I peer cercano l’indice per determinare l’indirizzo ip
dell’utente.
Nel peer con directory centralizzata (napster): Un nodo centralizzato (directory server) possiede il mapping delle
risorse-peer(index), fornendo un servizio di discovery dei peer e di look up delle risorse.
Il peer si connette inizialmente ad un server centralizzato fornendo il proprio indirizzo IP e il nome degli oggetti resi
disponibili per la condivisione. In questo modo il server raccoglie le info sui peer attivi e le aggiorna dinamicamente.
Gli svantaggi di questo tipo di architettura sono: la presenza di un singolo punto di fallimento, un collo di bottiglia per le
prestazioni, e soprattutto il server potrebbe contenere informazioni che violano il copyright.
Il trasferimento dei file è di fatto decentralizzato, ma la locazione dei contenuti è pesantemente centralizzata. Nel p2p
decentralizzato(gnutella) non esistono server. Gnutella è supportato da un bootstrap server per ottenere la lista dei
peer attivi. Si realizza con un’architettura di rete sovrapposta (overlay network) fatta da connessioni TCP in corso. Le
problematiche da risolvere sono come costruire e gestire la rete di peer e come localizzare i contenuti all’interno della
rete. Viene utilizzata la tecnica di ricerca query flooding : viene inoltrata la query di ricerca ai peer vicini che
trasmettono ai peer vicini finchè la risorsa non viene trovata oppure viene raggiunto il limite imposto dalla rete. Il p2p
con parzialmente centralizzato sfrutta le caratteristiche positive di napster e gnutella. Ogni peer è associato ad un
gruppo leader che è esso stesso un peer. I super peer memorizzano le informazioni in condivisione dei “figli” e
indicizzano le risorse disponibili nei peer che gestiscono. Ogni group leader è in grado di interrogare altri group leader
:Il flooding riguarda solo i supernodi. Un peer che si connette deve essere associato ad un group leader o deve essere
designato esso stesso group leader. Quando un nodo si connette alla rete non chiede al nodo di bootstrap ma ai
superpeer. Il super peer chiedono informazioni al nodo di bootstrap su gli altri super peer.
L’overlay network è costituita da connessioni TCP tra peer e group leader e tra coppie di group leader.I peer
spediscono le query al proprio group leader; quest’ultimo risponde per ogni richiesta con l’indirizzo IP del detentore
della risorsa e i metadati associati alla risorsa. Il group leader inoltra sia le richieste sia le eventuali risposte da parte di
altri group leader. Nelle reti strutturate vengono utilizzate le DHT : tabelle hash distribuite. Per la ricerca nelle reti DHT
viene utilizzata una corrispondenza tra l’id del peer e chiave attraverso funzioni hash.
7
3° Capitolo
9
1. Il pacchetto con numero di sequenza all’interno della finestra viene ricevuto correttamente -> ricade all’interno
della finestra del ricevente e al mittente viene restituito un pacchetto di ACK selettivo. Se il pacchetto non era
già stato ricevuto viene inserito nel buffer. Se presenta un numero di sequenza uguale alla base della finestra di
ricezione, esso e tutti i pacchetti consecutivi ricevuti vengono consegnati al livello superiore.
2. Viene ricevuto il pacchetto con numero di sequenza nell’intervallo dei pacchetti già riscontrati -> si genera un
ACK, anche se è un pacchetto che il ricevente ha già riscontrato.
3. In tutti gli altri casi si ignora il pacchetto.
Occorre assicurarsi che un numero di sequenza non venga riutilizzato finché il mittente non sia sicuro che ogni pacchetto
mandato precedentemente non si trovi più nella rete. La finestra di ricezione deve avere ampiepzza inferiore o uguale
alla metà dello spazio dei numeri di sequenza dei protocolli SR.
Checksum in TCP
Per il calcolo del valore checksum il TCP ha bisogno di aggiungere una pseudo intestazione al datagramma, per
effettuare così un controllo anche sugli indirizzi IP di destinazione e provenienza. La pseudo intestazione viene creata e
posta in testa al datagramma TCP. Viene inserito in essa un ulteriore byte di zeri per raggiungere un multiplo di 16.
Successivamente viene calcolata la checksum su tutto il messaggio così formato, viene scartata la pseudo intestazione
e passato il datagramma al livello IP.
In fase di ricezione, il livello TCP ricrea la pseudo intestazione interagendo con l’IP sottostante, calcola la checksum e
verifica la correttezza del messaggio ricevuto. In caso di errore il datagramma verrà scartato (e quindi ritrasmesso dal
mittente).
Descrivere come viene realizzata la comunicazione affidabile nel protocollo TCP (24) TCP è un protocollo a livello
di trasporto che offre un servizio affidabile. Per fare in modo che tutti i pacchetti inviati da un host raggiungano la
destinazione nello stesso ordine, senza perdite e senza errori utilizza diversi elementi e meccanismi, riuscendo a
mantenere un throughput maggiore dei protocolli stop-and-wait.
10
Nel PDU di TCP il campo CheckSum di 16 bit si occupa di verificare la validità del segmento. Questa informazione è
importante in quanto il protocollo IP non prevede nessun controllo di errore sulla parte dati del frame. Tcp associa a ogni
pacchetto un numero di sequenza, detto campo numero sequenza e un campo del sistema di feedback, detto campo
numero di acknowledgment , entrambi di 32 bit, per rimanere informato dell'ultimo pacchetto ricevuto dal destinatario.
Inoltre possiede delle variabili che delimitano una finestra di pacchetti (una finestra di dimensione size dove il primo
pacchetto è il più vecchio che non ha ricevuto un ack) e mantiene un timer per registrare eventuali ritardi. Nel campo
flag dell’intestazione del segmentio tcp– c’è il bit ACK che viene utilizzato per indicare se un ack è valido. Sostanzialmente
il lavoro del mittente è il seguente: riceve dei pacchetti dal livello applicativo, se la finestra non è piena (ovvero se non
tutti i pacchetti sono già stati inviati e tutti in attesa di ack) TCP crea i segmenti gli associa il loro numero di sequenza e
li passa a IP, e se il timer non era già attivo lo mette in funzione. Ciascun segmento include un numero di sequenza che
rappresenta il numero del primo byte di dati del segmento nel flusso di byte. Il timer è associato al piu’ vecchio segmento
che non ha ricevuto ack. Il destinatario mantiene una variabile che contiene il prossimo numero di sequenza del pacchetto
che si aspetta di ricevere. Risponde con un ack relativo a quel pacchetto se il numero di sequenza è quello giusto. Tcp
confronta il valore di ACK con la variabile sendBase (base della finestra). La variabile sendbase è il numero di sequenza
del piu’ vecchio byte che non ha ancora ricevuto un ack. Tcp utilizza acknowledgment cumulativa, come in BGN,
pertanto viene mandato un unico ack per confermare la ricezione di tutti i byte precedenti. Se l’ack mandato è maggiore
di sendbase, allora l’ack si riferisce a uno o piu’ segmenti che precedentemente non avevano ancora ricevuto conferma.
Quindi il mittente aggiorna la variabile sendbase – trasla la finestra di ricezione – e riavvia il timer se non ci sono
segmenti che necessitano di ack. Se invece il pacchetto che il destinatario si aspettava di ricevere non corrisponde, con
probabilità di evento ‘packet loss’, trasmette un ack con associato l'ultimo pacchetto ricevuto - un ack duplicato visto
che aveva mandato lo stesso quando aveva ricevuto quel pacchetto in precedenza, quindi evitando di mandare un nak.
In questo caso viene rilevato un buco nel flusso di dati, ossia un segmento mancante. Se avviene l’arrivo di un segmento
che colpa parzialmente o completamente il buco dei dati ricevuti – viene inviato immediatamente un ack, ammesso che
il segmento cominci all’estremità inferiore del buco. Per il mittente possono accadere due eventi negativi: scade il timer
o riceve ack duplicati. Se scade il timer, TCP ritrasmette il pacchetto più vecchio che non ha ricevuto l'ack e raddoppia il
tempo del timer (è un'azione minima per il controllo di congestione); se riceve per tre volte un ack duplicato deduce
che il pacchetto con numero di sequenza più piccolo è andato perso e lo ritrasmette prima che scada il timer
(ritrasmissione rapida). TCP non segue esattamente il protocollo GBN in quanto non ritrasmette tutti i pacchetti che
non hanno ricevuto l'ack ma solo il più vecchio, questo perché normalmente il destinatario ha anche lui un buffer in cui
può inserire i pacchetti anche se non gli arrivano in modo ordinato. Può anche essere implementato come un ibrido tra
GBN e SR se al destinatario si dà la possibilità di inviare ack di pacchetti non ricevuti in ordine.
Descrivere il funzionamento del meccanismo dei riscontri ritardati (“delayed ACK”) e illustrare i vantaggi
dell’uso di tale meccanismo in TCP. (12)
Quando il ricevitore TCP riceve un segmento, non invia immediatamente un Ack, ma attende una certa frazione di
secondi (solitamente 200 ms). Ritardando la trasmissione di un Ack, aumenta la probabilità di poterne fare il
piggybacking in un pacchetto di dati. Se entro tale intervallo di tempo riceve un altro segmento, allora invia un Ack
complessivo – ack cumulativo. In questo caso si può dire che il messaggio inviato "piggybacks" (porta con sé) l'ACK
relativo all'ultima ricezione avvenuta. Altrimenti, scaduto il timer, invia ugualmente un Ack (ritardato per questo motivo).
L’invio immediato di un ACK si ha solo per segmenti fuori sequenza.
Questo si traduce essenzialmente in una riduzione del numero di Ack inviati dal ricevitore al trasmettitore. Se non si
usassero gli ack ritardati, ci sarebbe un aumento più rapido della finestra di congestione.
11
Descrivere come viene calcolato il timer di ritrasmissione nel protocollo TCP (2) ✔
TCP utilizza un meccanismo di timeout e ritrasmissione per recuperare i segmenti persi. Il timeout dovrebbe essere più
grande del tempo di andata e ritorno sulla connessione.
Impostare la durata del timer non è immediato: un tempo troppo breve costerebbe un numero esagerato di ritrasmissioni
inutili che aumenterebbero la congestione, ugualmente un tempo troppo lungo potrebbe segnalare un errore dopo che il
mittente abbia già inviato molti altri pacchetti inutilmente.
La durata del timer è innanzitutto relazionata con il tempo di RTT (tempo di andata e ritorno sulla connessione).
Chiamando SampleRTT la durata di un generico RTT e EstimatedRTT una media dei valori si ha EstimatedRTT = (1-
alfa) x EstimatedRTT + alfa x SampleRTT. Contano di più i valori più recenti perché sono i più utili per sapere se la rete
è congestionata o meno – il valore raccomandato per alfa è 0,875.
Si definisce anche DevRTT = (1-beta) x DevRTT + beta x (SampleRTT-EstimatedRTT) una stima di quanto SampleRTT
e EstimatedRTT si discostano tra loro. Più sono distanti più è grande DevRTT e viceversa.
A questo punto l'intervallo di timeout è calcolato come TimeoutInterval = EstimatedRTT + 4 x DevRTT. Così il timeout
sarà sempre più grande della media degli RTT, in particolare molto più grande se ci sono fluttuazioni o poco più grande
se SampleRTT e EstimatedRTT non si scostano molto.
Descrivere come viene realizzato il controllo di flusso nel protocollo TCP (6) ✔
Gli host agli estremi della connessione TCP riservano dei buffer di ricezione per la connessione. Quando la connessione
riceve byte corretti e in sequenza, l’host li posiziona nel buffer di ricezione.II processo applicativo associato leggerà i dati
da questo buffer, ma se tale applicazione è lenta nella lettura dei dati può accadere che il mittente mandi in overflow il
buffer di ricezione del destinatario: TCP offre un servizio di controllo di flusso (flow-control service) per evitare che il
mittente saturi il buffer del ricevente – e che quindi si verifichi una perdina dei pacchetti.Il mittente mantiene una variabile
chiamata finestra di ricezione, che permette di sapere lo spazio libero disponibile nel buffer del destinatario, per evitare
di saturarlo. TCP essendo full-duplex, permette ai due host differenti di avere finestre di ricezione differenti. La
dimensione del buffer di ricezione del destinatario, inizialmente ha valore RcvBuffer; con questo metodo TCP riesce
quindi ad offrire il controllo di flusso.
RcvBuffer è la dimensione del buffer di ricezione, LastByteRead è l'ultimo byte del flusso letto dal processo applicativo e
LastByteRcvd è l'ultimo byte del flusso ricevuto. Si deduce che LastByteRcvd – LastByteRead <= RcvBuffer sennò è
overflow. Il mittente tiene a sua volta una finestra di ricezione rwnd che ha dimensione RcvBuffer – (LastByteRcvd –
LastByteRead), ovvero quantità di spazio disponibile nel buffer, e altre due variabili: LastByteSent che è l'ultimo byte del
flusso inviato e LastByteAcked che è l'ultimo byte del flusso che ha ricevuto un ack. Il controllo di flusso è assicurato
mantenendo la quantità di pacchetti che non hanno ricevuto un ack (LastByteSend – LastByteAcked) minore o uguale
della finestra rwnd (quanto spazio libero rimane al destinatario).
L'effetto del controllo di flusso come del controllo di congestione è un rallentamento da parte del mittente. Un problema
che può sorgere del controllo di flusso è quello che avviene quando il buffer del destinatario dopo essere stato saturo
inizia a liberarsi ma il mittente non ne è consapevole visto che ha smesso di inviare pacchetti all'host dopo che rwnd è
diventato 0. Per risolvere questo problema il mittente invia a intervalli regolari pacchetti di un byte per informarsi sulla
dimensione del buffer.
Illustrare le differenze tra il controllo di congestione “end- to-end” e “network assisted”. Presentare, inoltre,
esempi di controllo di congestione network assisted (1) ✔
Controllo di congestione end-to-end: la presenza di congestione non può esser controllata dal livello di rete, quindi
deve esser dedotta per forza dai sistemi periferici (TCP usa questo controllo visto che IP non è in grado di riconoscere
presenza di congestione; nel TCP la perdita di segmenti viene vista come congestione e quindi si diminuisce in
automatico l’ampiezza della finestra).
Controllo di congestione assistito dalla rete: i componenti a livello di rete aiuta nel riconoscere la presenza di
congestione fornendo lo stato della congestione di rete tramite un bit (feedback esplicito). Questo feedback viene fornito
in due modi: avviso diretto dal router o settaggio di un campo in un pacchetto che va da mittente a destinatario.
Un esempio di questo ultimo controllo è ATM ABR; in questo servizio, ci sono celle (pacchetti) RM (di gestione di risorse),
usate per trasmettere info sulla congestione (sia in modo diretto che tramite il destinatario). Ci sono 3 meccanismi per
segnalare al destinatario la congestione degli switch (router): bit EFCI, ovvero un bit contenuto in ogni cella con
indicazione esplicita di congestione; il destinatario deve controllarlo in ogni cella, e se lo trova attivo, pone a 1 il bit CI
nella cella RM e la rispedisce al mittente, quindi tramite EFCI e CI il mittente può esser notificato di congestione; bit CI
ed NI: le celle RM che vanno dal mittente al destinatario hanno questi due bit, CI ovvero congestion indicator e NI ovvero
no increase; il primo viene impostato in caso di traffico intenso a 1, il secondo viene impostato in caso di traffico moderato
a 1; quando il destinatario riceve tale cella, lascia i due campi indicati come stanno, tranne nel caso di meccanismo EFCI
dove modifica il valore CI; impostazione ER , ovvero un campo di ogni cella RM; uno switch congestionato può diminuire
il valore di questo campo in ogni cella RM di passaggio, quindi il campo ER sarà impostato alla velocità minima supportata
da tutti gli switch sul percorso.
12
Descrivere come viene realizzato il controllo di congestione in TCP (20) (o In generale)
✔
In generale, in TCP, se il mittente si accorge di scarso traffico, incrementa il proprio tasso trasmissivo, altrimenti lo
decrementa; infatti si usa una variabile aggiuntiva detta finestra di congestione (cwnd) che impone un vincolo alla
velocità di immissione di traffico sulla rete da parte del mittente; la quantità di dati ricevuti senza ack è limitata da
cwnd. La velocità di invio del mittente quindi è data da cwnd/RTT byte al secondo. TCP utilizza gli ACK per aumentare
l’ampiezza della propria finestra di congestione. Se gli ACK arrivano con frequenza bassa, la finestra di congestione
verrà ampliata lentamente, se giungono con frequenza alta, la finestra di congestione verrà ampliata rapidamente, quindi
si dice che TCP è auto-temporizzato, cioè utilizza gli ACK per temporizzare gli incrementi d’ampiezza della finestra.
TCP ha alcuni principi guida per far funzionare il proprio protocollo di controllo di congestione:
-Un segmento perso implica congestione, i tassi di trasmissione del mittente TCP dovrebbero essere decrementati. Un
evento di timeout o la ricezione di quattro ACK per un dato segmento è un’indicazione implicita di evento di perdita che
scatena una ritrasmissione.
-Un ACK indica che la rete sta consegnando i segmenti del mittente al ricevente e quindi il tasso di trasmissione del
mittente può essere aumentato quando arriva un ACK non duplicato.
Nello specifico ci sono 3 fasi principali nel controllo della congestione in TCP: slow start, congestion avoidance e fast
recovery.
Slow start: quando viene stabilita una connessione TCP il valore di cwnd è inizialmente posto a 1 MSS (dimensione
massima del segmento -> maximum segment size); questo valore si incrementa di 1 MSS ogni volta che un segmento
trasmesso riceve un ack; cioè al primo ack da 1 segmento inviato precedentemente, ne invia 2; poi 4 (visto che riceve 2
ack), poi 8 (visto che riceve 4 ack) e così via: praticamente si raddoppia la velocità trasmissiva ad ogni RTT. Vediamo
che la velocità cresce esponenzialmente fino a quando non vi è un episodio di perdita di un pacchetto, indicato da un
evento di timeout, il mittente mette il valore di cwnd pari a 1 e inizia di nuovo il processo di slow start. Inoltre, pone
il valore di una seconda variabile di stato ssthresh (slow start threshold, soglia di slow start) a cwnd/2: metà del valore
che aveva la finestra di congestione quando la congestione è stata rilevata. Quando cwnd è pari a ssthresh, la fase di
slow start termina e TCP entra in modalità di congestion avoidance. Slow start può terminare anche quando
vengono rilevati tre ACK duplicati, TCP opera una ritrasmissione rapida ed entra nello stato di fast recovery.
Congestion avoidance: quando si arriva in questo stato, cwnd è pari alla metà di quanto era prima della congestione.
Si riparte da questa situazione e si incrementa di 1 MSS per RTT. Quando c’è una perdita, si verificano due casi; se
c’è timeout si fa come slow start ricominciando da cwnd=1MSS e ssthresh=cwnd/2; se si ricevono 3 ack duplicati, non
serve questa aggressività e quindi si dimezza cwnd (aggiungendo 3 MSS per tenere conto dei duplicati ricevuti) e si
mette ssthresh pari al valore che aveva prima degli ack. Infine si passa a fast recovery.
Fast recovery: si incrementa il valore di cwnd di 1 MSS per ogni ack duplicato ricevuto relativamente al segmento perso
che ha causato l’entrata in questa modalità. Quando arriva l’ack per il segmento perso, allora si passa a congestion
avoidance dopo aver ridotto il valore di cwnd; se invece c’è timeout si passa a slow start dopo aver posto cwnd a 1 MSS
e ssthresh a cwnd/2. In pratica il controllo di congestione in TCP consiste in un incremento additivo lineare di cwnd alla
ricezione di ack e in un decremento moltiplicativo che dimezza cwnd in presenza di ack duplicati (supponendo l’assenza
di timeout); dopo il decremento riprende a crescere per verificare l’eventuale presenza di più banda e poi decresce di
nuovo e così via.
4° Capitolo
Descrivere i servizi Datagram e a circuito virtuale. Inoltre descrivere le differenze con relativi vantaggi e
svantaggi.
Esistono due tipologie di servizio a livello rete: Datagram e a circuito virtuale.
Con il servizio datagram, i pacchetti entrano nella rete e seguono ognuno un percorso diverso in base a diversi fattori.
Tutti arrivano a destinazione con un ordine di arrivo non definito. Ogni nodo intermedio deve avere un modo per fare
routing, ossia ogni pacchetto deve essere identificato con gli indirizzi IP mittente e destinazione.
Il servizio a circuito virtuale utilizza invece un canale virtuale logico attraverso cui viaggiano i pacchetti. La difficoltà
iniziale sta nel creare, mediante algoritmi di routing, il canale virtuale. Una volta creato può essere numerato con un
id, un identificatore di flusso, ed utilizzato per instradare i pacchetti. Il router deve solo verificare l’id ed instradare il
pacchetto nel relativo canale. Il servizio datagram offre un controllo della congestione molto complesso- demandato ai
livelli superiori, mentre nel servizio a circuito virtuale è semplice. Il circuito virtuale porta del ritardo iniziale per la
creazione del circuito, mentre datagram no. Per quanto riguarda l’instradamente, il processo globale di rete che
determina i percorsi dei pacchetti dalla sorgente alla destinazione – coincide con l’operazione di riempimento delle
forwarding table per il servizio a circuito virtuale. L’instradamente per il servizio datagram invece non porta nessuna
informazione- i pacchetti non fanno mai la stessa strada. Gli effetti dei guasti nei router per il servizio datagram non ha
effetti drastici nei datagram – a parte i pacchetti persi. Mentre per il servizio a circuito un guasto al router fa crollare tutti
i percorsi e canali virtuali – con un recupero molto complesso. Il livello di rete mette a disposizione un servizio best-
effort cioè “col massimo impegno possibile”, per cui non c’è garanzia che i pacchetti vengano ricevuti nell’ordine in cui
sono stati inviati, così come non è garantita la loro consegna. Non c’è garanzia sul ritardo end-to-end, né su una
larghezza di banda minima. Nonostante ciò il livello rete è best-effort by design, perché si dimostra essere efficiente e
soprattutto più veloce se combinato con determinate politiche di controllo implementate ai livelli superiori. Internet
utilizza il servizio datagram – Atm invece utilizza il servizio dei circuiti virtuali. Internet non offre garanzia di banda,
perdina, ordine e timing – mentre ATM offre servizio CBR per la telefonata con garanzia.
14
un pacchetto attraverso la struttura di commutazione. La tabella di inoltro viene elaborata e aggiornata dal
processore. Una sua copia conforme è memorizzata su ogni porta di ingresso.
- Struttura di commutazione (switching fabric): connette fisicamente le porte di ingresso a quelle di
uscita. Lo switching può essere effettuato in memoria, via bus o attraverso una rete di interconnessione.
- Porte di uscita: che memorizzano i pacchetti che provengono dalla struttura di commutazione e li
trasmettono sul collegamento in uscita, operando le funzionalità necessarie del livello di collegamento e fisico.
- Processore di instradamento (routing processor): esegue le funzioni del piano di controllo, cioè di
routing. Nei router tradizionali esegue di i protocolli di instradamento, gestisce le tabelle di inoltro e le
informazioni sui collegamenti attivi, ed elabora la tabella di inoltro per il router. Nei router SDN, il processore è
responsabile della comunicazione con il controller remoto.
Le funzioni del piano dei dati (quindi routing), quindi svolte da porte di ingresso, porte di uscita e struttura di
commutazione sono implementate quasi sempre in hardware perché operano su scala temporale dei nanosecondi. Le
funzioni del piano di controllo (forwarding) sono invece implementate via software ed eseguite dal processore di
instradamento, perché operano sulla scala dei millisecondi o secondi.
Indirizzamento Ip
Generalmente un host ha un solo collegamento con la rete e lo utilizza per inviare e ricevere datagrammi. Il confine tra
host è collegamento è detto interfaccia. Un router invece ha il compito di ricevere datagrammi da un collegamento ed
inviarli su un altro, dunque presenta almeno 2 interfacce. Il protocollo IP sia assegnato un indirizzo IP ad ognuna di
queste interfacce, e non al singolo host. L’indirizzo IPv4 è formato da 32 bit (4 byte) per tanto esistono circa 4 miliardi
di indirizzi possibili. Tali indirizzi sono scritti in dotted-decimal notation cioè ciascun byte è indicato in forma decimale
ed è separato con un punto dagli altri (es. 192.128.1.1). Concettualmente l’indirizzo IP si compone di due parte :
Identificatore di rete e precisamente della sottorete (Net_ID) e Identificatore di host (Host_ID). Una sottorete è una
porzione di rete dove i nodi presenti sono in grado di comunicare tra loro senza dover passare per un router. Per
determinare le sottoreti di una rete complessa si sganciano le interfacce da host e router in maniera tale da creare
isole di reti isolate delimitate dalle interfacce.
Illustrare la regola di corrispondenza del prefisso più lungo ed il suo impiego nell'instradamento nelle reti IP
(1)
Un pacchetto che viene inviato da un host in una rete a datagramma viene contrassegnato con un indirizzo di
destinazione. Nel viaggio dalla sorgente alla destinazione, i pacchetti attraversano una serie di router che utilizzato tali
indirizzi di destinazione per inoltrarli. In particolare ogni router presenta una tabella di inoltro grazie alla quale può cercare,
tramite l’indirizzo di destinazione, verso quale interfaccia di collegamento deve inviare il pacchetto. Per far ciò il router
confronta un prefisso dell’indirizzo di destinazione del pacchetto con una riga della tabella e se c’è corrispondenza il
16
router inoltra il pacchetto verso il collegamento associato. Può succedere che un indirizzo di destinazione corrisponda a
più righe della tabella e in questo caso il router adotta la regola di corrispondenza a prefisso più lungo (Longest Prefix
Max): cioè viene determinata la corrispondenza più lunga all’interno della tabella e i pacchetti vengono inoltrati
all’interfaccia di collegamento associata.
Algoritmo dijkstra
Ogni nodo ha a disposizione il grafo della rete ed utilizza l’algoritmo per costruire lo Spanning Tree del grafo, ovvero
l’albero dei cammini di costo minimo. Ad ogni nodo si assegna un’etichetta che rappresenta il costo massimo per
raggiungere quel nodo. L’algoritmo modifica le etichette cercando di minimizzarne il valore e di renderle permanenti.
L’algoritmo è di tipo iterativo: ad ogni interazione si determina il costo minimo verso un altro nodo, e se n è il numero di
nodi della rete, alla n-esima interazione il forwarding è completo per l’intera rete. L’algoritmo consiste in un passo di
inizializzazione, più un ciclo di durata pari al numero di nodi della rete. Al termine avremo i percorsi più brevi dal nodo
sorgente a tutti gli altri nodi. In un algoritmo di questo tipo se il costo del link è proporzionale al traffico su quel link, cioè
viene scelta una metrica che porti in conto livello di congestione del link, allora è possibile che si creino oscillazioni.
L’algoritmo periodicamente, infatti, ricalcolerà le route instradando i pacchetti verso i link meno trafficati, rendendoli di
fatto più trafficati rispetto a prima. Periodicamente il traffico oscilla tra diversi rami, mentre sarebbe preferibile che questo
traffico si distribuisse uniformemente. Un buon algoritmo che voglia essere dipendente dal carico lo deve randomizzare
in modo proporzionale alla quantità di carico stesso. La tecnica piu’ semplice e usata è quella round-robin.
Descrivere il meccanismo dell'avvelenamento del percorso inverso (“poisoned reverse”) (3) (nel protocollo RIP)
Poison Reverse è un algoritmo implementato che viene spesso utilizzato all'interno dei protocolli distance vector.
L'uso dell’inversione avvelenata è quello di risolvere il problema count-to-infinity . L’idea di base dell’avvelenamento
inverso è quella di assicurarsi che un percorso non ritorna nello stesso nodo se un costo è cambiato all'interno della
rete. Il router invierà un’informazione allo stesso router da cui l’ha ricevuta, ma con una metrica “infinita”, comunicando
di fatto a quel router che per lui la destinazione è irraggiungibile e non deve essere considerata dalle tabelle di routing.
Lo scopo è simile alla modalità semplice, ma con una maggiore efficacia contro gli anelli di routing.
In RIP: Alcuni protocolli di routing di distance-vector, come RIP, utilizzano un numero massimo di hop per determinare il
numero di router che il traffico deve attraversare per raggiungere la destinazione. A ogni route è assegnato un numero
di numero di hop che viene incrementato man mano che le informazioni di routing vengono passate dal router al router.
Una route è considerata irraggiungibile se il numero di hop supera il massimo consentito. L'avvelenamento da route è
un metodo per dimenticare rapidamente le informazioni di routing obsolete dalle tabelle di routing di altri router
modificando il numero di hop in modo che non sia raggiungibile (superiore al numero massimo di hop consentito) e
inviando un aggiornamento del routing. Nel caso del RIP, il numero massimo di hop è 15, pertanto per eseguire
l'avvelenamento da route su una route il conteggio dell'hop viene modificato in 16, ritenerlo irraggiungibile e viene inviato
un aggiornamento del routing. Poison reverse prevede l'invio di aggiornamenti con conteggi hop irraggiungibili
immediatamente a tutti i nodi della rete. Questo rende tutti i nodi sulla route non valida infinitamente distanti da essa,
impedendo a qualsiasi router di inviare pacchetti sulla route non valida.
Descrivere il funzionamento di un router NAT (6) / Descrivere il meccanismo della traduzione degli indirizzi
NAT (2)
NAT è una tecnica che consiste nel modificare gli indirizzi IP contenuti negli header dei pacchetti in transito su un sistema
che agisce da router all'interno di una comunicazione tra due o più host. Il NAT permette di condividere un indirizzo IP
routabile fra più terminali in indirizzamento privato. Tutti i terminali della rete interna hanno virtualmente, lo stesso
indirizzo IP, se visti dall’esterno. In pratica un insieme di macchine interne alla rete è vista dall’esterno con un unico ip
pubblico, che è quello del router. Il NAT mantiene una tabella di routing per gestire le connessioni e le diverse
18
comunicazioni fra host. Per multiplexare i diversi indirizzi IP su un indirizzo pubblico il NAT dinamico usa il meccanismo
di traslazione della porta cioè l’attribuzione di una porta sorgente diversa ad ogni nuova richiesta in maniera tale da poter
mantenere una corrispondenza tra le richieste che provengono dalla rete interna e le risposte dei terminali su Internet,
tutte indirizzata all’indirizzo IP del router. Quando un host fa una richiesta a un webserver, setta il numero di porta
d’origine e invia il datagramma; il router lo riceve, genera per esso un nuovo numero di porta d’origine e lo sostituisce a
quello iniziale; inoltre sostituisce l’indirizzo IP sorgente col proprio indirizzo IP; quando genera un nuovo numero di porta
d’origine e aggiunge alla propria tabella di routing una nuova riga; in tutto ciò il web server è ignaro di questa
manipolazione e risponde all’indirizzo ip del router NAT con la porta di destinazione impostata da quest’ultimo; poi il
router, ricevuto il datagramma di risposta, consulta la tabella di routing usando numero di porta di destinazione e ip di
destinazione per inoltrarlo al corretto host. Nat risolve il problema della limitazione degli indirizzi ip disponibili – indirizzi
ip delle reti domestiche non esistono piu’ se non all’interno. Questo però genera un problema trasversale : associare un
indirizzo ip e un numero di porta limita il numero di porta che può assegnare. La nat limita il numero di connessioni
utilizzabili. Per risolvere questo problema: configurare NAT Statico. Il NAT associa un indirizzo IP pubblico ad un indirizzo
IP privato interno alla rete. Permette di connettere terminali della rete interna ad internet in maniera trasparente ma non
risolve il problema della scarsità di indirizzi.
Routing in internet
Il modello semplificato utilizzato per la trattazione degli algoritmi di instradamento era quello che vedeva la rete come
un insieme di router interconnessi, ognuno di questi indistinguibile dagli altri, nel senso che eseguivano tutti lo stesso
algoritmo per calcolare le route. Questo modello risulta un po' semplicistico e presenta diverse problematiche:
• Scalabilità: al crescere del numero di router, il tempo richiesto per calcolare, memorizzare e comunicare le
informazioni di instradamento diventa proibitivo.
• Autonomia amministrativa: Internet è una rete di ISP che generalmente desiderano gestire i propri router
liberamente e in modo diversificato all’interno della rete.
Questi problemi possono essere risolti organizzando la rete in Autonomous System, generalmente composti da
gruppi di router amministrato da un’unica autorità. Ogni AS deve essere identificato con un AD number (16 bit)
assegnato da ICANN. I router di uno stesso AS eseguono lo stesso algoritmo di instradamento.
Ogni AS è responsabile del routing interno(intra-AS) delle sue reti ed inoltre tutti gli AS devono scambiarsi
informazioni di raggiungibilità tramite un routing esterno (inter-AS).
Le tabelle di routing interne di un AS sono mantenute da algoritmi come :
• RIP (distance vector) • OSPF (link state) • IGRP (Interior Gateway Routing Protocol)
Le tabelle di routing esterne di un AS sono mantenute invece da :
• EGP (Exterior Gateway Protocol), ormai obsoleto • BGP (Border Gateway Protocol): approccio path vector. Esistono
diversi sistemi autonomi. Gli Stub AS sono sistemi associati aglio utenti, come università o aziende. Alcuni sistemi
STUB possono essere Multihomed AS : sistemi autonomi con piu’ connessioni verso altri sistemi autonomi. I
multihomed as generano traffico verso l’esterno e ricevono traffico ma non fanno da tramite. Questo è fatto per ragioni
di ridondanza ed economiche. I Transit AS sono reti di transito che non hanno necessariamente utenti ma il ruolo di
interconnettere fra di loro altre reti.
Descrivere e motivare le differenze principali tra i protocolli di routing intra-AS e interAS (1)
I protocolli di routing intra-AS sono protocolli che vanno ad operare all’interno di sistemi autonomi composti da router che
eseguono lo stesso protocollo di instradamento. I protocolli intra-AS più famosi sono RIP e OSPF.
Per poter invece conoscere le destinazioni raggiungibili all’esterno del sistema e informare tutti i router all’interno per
poterne configurare la tabella di inoltro per gestire le destinazioni esterne si usa il protocollo inter-AS. Il protocollo inter-
AS più famoso e usato è il BGP. Per motivi politici si preferisce usare protocolli inter-AS per poter determinare in quale
sistema possano fluire i dati e in quale no, cosa inutile da fare in intra-AS poiché dentro uno stesso sistema esiste un
unico controllo amministrativo; un’altra differenza sono le prestazioni: interAS è importante la questione delle politiche
,quindi se un percorso soddisfa tale vincolo la velocità diventa di secondaria importanza; viceversa, intra-AS non
importano le questioni politiche e quindi ci si può soffermare maggiormente sulle prestazioni.
Infine, la scalabilità: inter-AS un problema molto critico è la gestione dell’instradamento verso e tra un gran numero di
reti; intra-AS invece ciò ha minore importanza, visto che se un singolo dominio diventa troppo grande può esser ripartito
19
in più aree. Il routing intra-as si occupa di ottimizzare i percorsi all’interno del sistema autonoma. Gli algoritmi inter-as si
occupano di capire dove inviare i pacchetti verso sistemi autonomi esterni per farli arrivare a destinazione.
Descrivere come viene effettuato il routing inter-AS in Internet (14) [nelle reti IP] (Descrivere come viene realizzato
l’instradamento inter-AS nella rete Internet.) Corrisponde alla risposta sul bgp
5° Capitolo
21
Descrivi i principali protocolli a suddivisione di canale
I cosiddetti protocolli ad accesso multiplo fissano le modalità con cui i nodi regolano le loro trasmissioni sul canale
condiviso. Dato che tutti i nodi sono in grado di trasmettere frame, è possibile che due o più lo facciano nello stesso
istante. Tra questi si genera una collisione e una conseguente perdita di frame, mentre il canale rimane inutilizzato.
Occorre dunque coordinare la trasmissione dei nodi attivi. Il multiplexing a divisione del tempo, TDM e quello a
divisione di frequenza, FDM, sono due tecniche che possono essere utilizzate per suddividere la larghezza di banda di
un canale broadcast fra i nodi che lo condividono.
TDM suddivide il tempo in time frame e poi divide ciascun intervallo di tempo in N time slot. Ogni slot è quindi
assegnato a uno degli N nodi. Ogni volta che un nodo ha un pacchetto da inviare, trasmette i bit del pacchetto durante
lo slot di temo assegnatogli. TDM riesce ad evitare le collisioni ed è perfettamente imparziale: ogni nodo ottiene,
durante ciascun intervallo di tempo, un tasso trasmissivo di R/N bps. Tuttavia, anche quando non vi sono altri nodi che
devono inviare, quello che vuole inviare deve attendere il suo turno. FDM suddivide il canale condiviso in frequenze
differenti (ciascuna con larghezza di banda R/N) e assegna ciascuna frequenza a un nodo. Quindi, a partire da un
canale da R bps, FDM crea N canali di R/N bps. Come TDM, anche FDM evita le collisioni e divide equamente la
larghezza di banda tra gli N nodi. Tuttavia, anche con FDM la larghezza di banda è limitata a R/N, anche quando vi è
solo un nodo che deve spedire.
Descrivere il funzionamento e le caratteristiche del protocollo ALOHA (puro e slotted). (3)
Aloha è un protocollo ad accesso casuale, privo di slot, completamente decentralizzato. Questa classe di protocolli per
l’accesso multiplo concerne situazioni in cui un nodo trasmette sempre alla massima velocità consentita dal canale, cioè
R bps. Quando si verifica una collisione, i nodi coinvolti ritrasmettono ripetutamente i loro frame fino a quando non
raggiungono la destinazione senza collisioni. La ritrasmissione non è immediata, ma il nodo attende per un periodo di
tempo casuale indipendente da quello degli altri nodi. Le differenti scelte arbitrarie del tempo di attesa operate dai diversi
nodi possono consentire ai frame di attraversare il canale senza ulteriori collisioni.
Nell’ALOHA puro non appena arriva un frame al livello di collegamento, il nodo lo trasmette immediatamente e
integralmente nel canale broadcast. Se un frame va in collisione, allora il nodo lo ritrasmette immediatamente con
probabilità p o aspetterà, restando inattivo per un altro periodo di tempo, con probabilità 1-p. Un frame inviato da un nodo
al tempo t0 può collidere con altri frame inviati in [t0-1, t0+1].
Quindi la probabilità di successo di un dato nodo è data dalla probabilità che il nodo trasmetta (p) congiunta alla
probabilità che nessun altro trasmetta in [t0, t0+1] S = p (1-p)N-1(1-p)N-1 = p(1-p)2(N-1)
Il successo di uno su N nodi quindi è S = N p (1-p)2(N-1) Il valore ottimo di p, per N che tende ad infinito, è 1/2e = 18%
. Slotted aloha è una versione moderna di aloha; la velocità è la massima consentita di R bps, ogni frame consiste di L
bit, il tempo è suddiviso in slot di L/R secondi. I nodi cominciano la trasmissione all’inizio degli slot e sono sincronizzati
in modo da sapere tutti quando iniziano gli slot, e questa è la differenza principale con la versione iniziale di aloha. Il
protocollo prevede che quando un nodo ha un nuovo frame da spedire, attende fino all’inizio dello slot successivo e poi
trasmette l’intero frame. Se non si verifica una collisione non occorre effettuare una ritrasmissione. Se si verifica una
collisione, il nodo ritrasmette con probabilità p il suo frame durante gli slot successivi. Il nodo al prossimo slot può
trasmettere o non trasmettere, inoltre le probabilità tra tutti i nodi sono indipendenti tra loro. Efficienza: In presenza di
molti nodi attivi esistono due possibili problematiche per portano il protocollo ad essere non particolarmente efficiente. In
primo luogo, una certa frazione degli slot presenterà collisioni e di conseguenza andrà “sprecata”. Il secondo problema
è che una grande frazione degli slot risulterà vuota. I soli slot non sprecati saranno quelli utilizzati da un solo nodo per
trasmettere.
La probabilità che una trasmissione abbia successo per un dato nodo è data dalla probabilità che quel solo nodo
trasmetta (p) mentre i rimanenti N-1 rimangano inattivi (1-p)N-1: S = p (1-p)N-1
Poiché ci sono N nodi: S = Np(1-p)N-1. Il valore ottimo di p per N che tende all’infinito è 1/e = 37%, ovvero solo il 37%
degli slot compie lavoro utile che non va sprecato, e ciò è dovuto al fatto di esser fortemente decentralizzato. La
probabilità di collisione si dimezza in Slotted Aloha rispetto ad Aloha Puro.
Descrivere il funzionamento di uno switch (10) [funzionamento di uno switch ethernet] [Motivare inoltre perché la
topologia “attiva” di una rete LAN non possa avere dei cicli.]
È un dispositivo di rete che si occupa di commutazione a livello di collegamento. Lo switch agisce sull’indirizzamento e
sull’instradamento all’interno delle reti LAN mediante indirizzo fisico, selezionando i frame ricevuti e dirigendoli verso la
porta in uscita corretta. Lo switch è trasparente ai nodi, cioè un nodo indirizza i frame verso altri nodi senza sapere
che questi frame saranno ricevuti da uno switch che si occuperà di inoltrarli ad altri nodi. I frame che arrivano a uno
switch possono essere molti e per questo motivo le interfacce di uscita di uno switch sono dotate di un buffer : è un
dispositivo store-forward.
Uno switch filtra e inoltra i frame: il filtraggio è una funzionalità dello switch che determina se un frame debba essere
inoltrato a una qualche interfaccia o debba essere scartato; l’inoltro consiste nell’individuare l’interfaccia verso cui il frame
deve essere diretto e quindi inviarlo verso di essa. Per svolgere queste due operazioni lo switch è dotato di una tabella
di commutazione (switch table) composta dalle seguenti voci: indirizzo MAC del nodo, interfaccia dello switch che
conduce al nodo, il momento in cui la voce per quel nodo è stata inserita nella tabella. Questa tabella viene configurata
22
per autoapprendimento: inizialmente la tabella è vuota, dopo di che, ad ogni frame che riceve, lo switch archivia nella
tabella l’indirizzo MAC del campo indirizzo sorgente del frame, l’interfaccia da cui arriva il frame e il momento di arrivo.
Quando tutti i nodi nella LAN avranno inviato un frame, allora la tabella sarà completata. Se dopo un determinato tempo,
detto aging time, lo switch non riceve più frame da un determinato indirizzo sorgente, questo verrà cancellato dalla
tabella. Per questo motivo gli switch sono detti dispositivi plug-and-play in quanto non richiedono interventi
dell’amministratore di rete o dell’utente, cioè non ha bisogno di essere configurato.
Nell’ipotesi in cui un frame con indirizzo MAC di destinazione A giunge allo switch sull’interfaccia x gli scenari possibili
sono tre:
1. Nella switch table non vi è una voce per l’indirizzo A; lo switch inoltra copie del frame ai buffer di uscita di tutte le
interfacce, eccetto x (manda il frame in broadcast); 2. Nella switch table vi è una voce che associa l’indirizzo A
all’interfaccia x. Il frame proviene da un segmento di rete che contiene la scheda di rete A, quindi non deve uscire su
nessuna interfaccia e viene dunque scartato; 3. Nella switch table vi è una voce che associa l’indirizzo A all’interfaccia
y≠x; il frame viene inoltrato al segmento di LAN collegato all’interfaccia y.
Gli switch possono essere interconnessi tra loro.
I vantaggi dello switch sono:
- Eliminazione delle collisioni: Gli switch, a differenza degli hub, mettono i frame nei buffer e non trasmettono più
di un frame su ogni segmento di LAN a un certo istante evitando quindi le collisioni;
- Collegamenti eterogenei: Dato che uno switch isola un collegamento da un altro, i diversi collegamenti nella LAN
possono funzionare a velocità diverse e possono usare mezzi trasmissivi diversi;
- Gestione: se una scheda di rete ha un malfunzionamento e manda continuamente frame Ethernet, uno switch
può individuare il problema e disconnettere interamente la scheda non funzionante.
Cos’è un bridge
I bridge sono dispositivi utilizzati per collegare due o più LAN tra loro in maniera più efficiente degli hub.Come
dispositivi hardware oggi sono raramente utilizzati essendo stati sostituiti dagli switch. I bridge filtrano i pacchetti. Se la
destinazione è sullo stesso segmento di LAN del mittente non vi è nessuna azione da parte dei bridhe.
Se destinazione su un segmento di LAN differente da quello del mittente: Il bridge inoltra la frame sul segmento di LAN
del destinatario. I bridge eseguono un algoritmo di auto apprendimentoper scoprire a quali interfacce sono collegati gli
host: Informazioni salvate in tabelle dette “filtering tables” : Quando una frame è ricevuta, il bridge “prende nota” del
segmento di LAN di provenienza in una filtering table. La struttura di una entry nella filtering table: (Node MAC
Address, Bridge Port, Time Stamp). Le entry della filtering table vengono cancellate dopo un po’ di tempo, se non
arrivano altre frame dal’host a cui si riferiscono. I bridge isolano i domini di collisione, grazie alla loro capacità di porre
le frame in un buffer (dispositivi store & forward). Non appena una frame può essere inoltrata su un link d’uscita, un
bridge usa il protocollo CSMA/CD sul segmento LAN d’uscita prima di trasmettere. I vantaggi del bridge sono che :
Non introducono limitazioni sul numero massimo delle stazioni, né sull’estensione geografica- Possono collegare
differenti tecnologie, dal momento che sono dispositivi di tipo store & forward - Sono trasparenti: non richiedono alcuna
modifica negli adattatori dei computer né configurazione da parte di un amministratore (plug & play)- Isolano i domini di
collisione, determinando un aumento complessivo del throughput massimo. Per incrementare l’affidabilità, può essere
utile introdurre un certo grado di ridondanza: percorsi alternativi. In presenza di percorsi alternativi simultanei, vengono
create copie molteplici delle frame (loop). La soluzione: organizzare i bridge mediante uno spanning tree, disabilitando
alcune interfacce.
Hub
Un hub rappresenta un concentratore, ovvero un dispositivo che funge da nodo di smistamento dati di una rete
organizzata sia con topologia a bus che con topologia a stella. Nelle reti Ethernet l’hub inoltra i dati in arrivo da una
qualsiasi delle sue porte su tutte le altre in broadcast. Per questa ragione può essere definito anche come ripetitore di
bit multi porta. La conseguenza dell’utilizzo dell’hub è che la banda totale disponibile in uscita viene frazionata e
ripartita tra i vari segnali portanti inviati a causa del moltiplicarsi dei dati da inviare. Ritrasmette semplicemente segnali
elettrici e non entra nel merito dei dati.
Sono dispositivi semplici e poco costosi. Hub organizzati in una gerarchia multi-livello, con un backbone hub al livello
più alto. Ogni LAN collegata è detta un segmento di LAN. I vantaggi dell’utilizzo di hub : L’organizzazione multi-livello
garantisce una parziale tolleranza ai guasti: porzioni di LAN continuano a funzionare in caso di guasto ad uno o più
hub. Si estende la massima distanza tra i nodi (100m per ogni hub). Gli svantaggi : Gli hub non isolanoi domini di
collisione: le stazioni di un segmento possono subire una collisione per una trasmissione simultanea da parte di una
qualunque stazione presente su un qualunque altro segmento. La creazione di un singolo dominio di collisione non
comporta alcun aumento del throughput massimo: il throughput complessivo in una rete multi-livello è lo stesso di una
rete con un unico segmento. La realizzazione di un’unica LAN impone un limite al numero massimo di stazioni che è
possibile collegare, nonché all’estensione geografica che è possibile raggiungere.
MAC
Gli host e i router collegati in una rete possiedono, oltre che un indirizzo di rete (IP), un indirizzo a livello di collegamento.
In realtà sono i loro adattatori (schede di rete) degli host e dei router ad avere questi indirizzi. Gli indirizzi a livello rete
sono detti indirizzi MAC, indirizzi fisici o anche indirizzi LAN assegnati in modo univoco dal produttore ad ogni scheda di
rete prodotta (modificabile via software). L’indirizzo MAC è lungo 6 byte, il che consente di avere 2^48 possibili indirizzi.
Non esistono due schede con lo stesso indirizzo MAC. La IEEE sovrintende alla univocità degli indirizzi e in vende
blocchi di MAC. L’indirizzo MAC ha una struttura piatta e non gerarchica, cioè, al contrario dell’indirizzo IP, è indipendente
dalla posizione della macchina all’interno della rete. Quando una scheda di rete vuole spedire un frame, vi inserisce
l’indirizzo MAC di destinazione e lo immette nella LAN. Uno switch presente nella rete potrebbe fare broadcast del
pacchetto in ingresso su tutte le sue interfacce. Così ogni scheda collegata alla LAN controlla se l’indirizzo MAC del
24
pacchetto in arrivo corrisponde al suo. In caso affermativo la scheda di rete estrae il datagramma e lo passa al livello di
rete.
E’ possibile che una scheda di rete voglia inviare un frame a tutte le altre schede di rete. in questo caso la schede di rete
inserisce un particolare ‘indirizzo MAC broadcast’ (composto da una stringa di 48 i cui bit ono 1) nel campo dell’indirizzo
destinazione del frame.
La risoluzione degli indirizzi MAC è demandata ai protocolli ARP e RARP.
Gli indirizzi MAC sono di tre tipi:
- Single: di una singola stazione. Quando una scheda di rete riceve un pacchetto con indirizzo di destinazione
un indirizzo single, allora lo passa al livello superiore solo se il DSAP è uguale a quello hardware della scheda
(scritto in una ROM) o a quello caricato da software in un apposito buffer;
- Broadcast: se il pacchetto ha indirizzo di destinazione broadcast (ff:ff:ff:ff:ff:ff), tutte le schede lo passano al
livello superiore
- Multicast: di un gruppo di stazioni. Il pacchetto viene passato al livello superiore solo se è stata abilitata la
ricezione via software per quel determinato indirizzo.
Descrivere il funzionamento del protocollo CSMA/CD (5) /descrivere il protocollo di accesso al mezzo MAC in
ethernet (in Ethernet)
CSMA/CD è un protocollo ad accesso multiplo con rilevamento della portante (CSMA) con aggiunta del rilevamento di
collisioni (CD). Per rilevamento della portante si intende che un nodo ascolta un canale prima di trasmettere e trasmette
su questo canale solo se rileva che è libero per un certo intervallo di tempo, mentre per rilevamento della collisione si
intende che il nodo che sta trasmettendo rimane in ascolto del canale e se rileva che un altro nodo sta trasmettendo un
frame che interferisce con il proprio interrompe la sua trasmissione. Il CSMA può essere persistente, se riprova
immediatamente a ritrasmettere con probabilità p quando il canale si libera, o non persistente se riprova a ritrasmettere
dopo un intervallo casuale.
Oltre a queste caratteristiche, un’altra caratteristica fondamentale di questo protocollo è il ritardo di propagazione,
infatti maggiore sarà questo ritardo, maggiore sarà la possibilità che un nodo non si accorga che su un canale è già
iniziata la trasmissione da parte di un altro nodo. La distanza ed il ritardo di propagazione concorrono a determinare la
probabilità di collisione.
Le operazioni che il protocollo CSMA/CD compie sono le seguenti: dopo che una scheda di rete ottiene un datagramma,
questa prepara un frame a livello di collegamento e lo sistema in un buffer; la scheda si mette in ascolto del canale, se
è libero invia il frame, altrimenti resta in attesa; durante la trasmissione resta in ascolto del canale e se trasmette l’intero
frame senza interferenze ha finito il suo lavoro, altrimenti se ci sono interferenze interrompe la trasmissione del frame,
aspetta un tempo casuale e dopo di che si rimette in ascolto del canale per rilevare quando è libero e ritrasmettere il
pacchetto.
L’intervallo di tempo di attesa casuale, detto tempo di backoff, che bisogna attendere per ritrasmettere un frame è
deciso tramite un algoritmo chiamato binary exponential backoff (attesa binaria esponenziale). Quando si rileva l’n-
esima collisione durante la trasmissione di un frame, questo algoritmo stabilisce casualmente un valore K nell’insieme
{0,1,2….,2n - 1}. Questo permette di avere un intervallo da cui estrarre K tanto grande quanto più è grande il numero di
collisioni. Il tempo di backoff deve essere casuale in quanto se due frame entrano in collisione e aspettano per lo stesso
periodo di tempo, continueranno ad entrare in collisione.
(Siano d_prop il tempo massimo che occorre al segnale per propagarsi fra una coppia di schede di rete e d_trasm il
tempo necessario per trasmettere un frame della maggior dimensione possibile, allora l’efficienza, cioè la frazione di
tempo media durante la quale i frame sono trasferiti sui canali senza collisioni in presenza di un alto numero di nodi attivi,
è uguale a 1/(1+5d_prop/d_trasm).)
L’efficienza di CSMA/CD è la frazione di tempo media durante la quale i frame sono trasferiti sul canale senza collisioni
in presenza di un alto numero di nodi attivi, con un’elevata quantità di frame da inviare. Quando il ritardo di propagazione
è nullo, i nodi in cui si verifica una collisione interromperanno immediatamente la trasmissione senza sprecare la capacità
del canale. Inoltre nel momento in cui un frame si appropria del canale, può trattenerlo per un periodo di tempo
estremamente lungo, di conseguenza il canale svolge lavoro produttivo per la maggior parte del tempo.
In Ethernet : La gestione delle collisioni e dell’occupazione condivisa del canale viene gestita mediante CSMA/CD.
L’adattatore (la scheda di rete) riceve un datagramma di rete dal nodo a cui è collegato e prepara un pacchetto Ethernet.
Se il canale è inattivo, inizia la trasmissione; viceversa resta in attesa fino all’assenza di segnale. Esso verifica anche
durante la trasmissione eventuali segnali provenienti da altre schede di rete; in caso di loro assenza, considera il
pacchetto spedito, altrimenti interrompe la trasmissione del pacchetto ed invia un segnale di disturbo (jam). Jammin
signal: è un segnale di disturbo di 32 bit che avverte le altre stazioni dell’avvenuta collisione bloccandone la
contemporanea trasmissione. Questo passaggio è necessario perché sulle lunghe distanze il segnale potrebbe essere
attenuato a tal punto da non rilevare la collisione. La scheda di rete rimane in attesa e quando riscontra l’n-esima
collisione consecutiva stabilisce casualmente un valore K nell’insieme {0,1,2….,2^n - 1}. (algoritmo di backoff) . Questo
25
permette di avere un intervallo da cui estrarre K tanto grande quanto più è grande il numero di collisioni. La scheda
aspetta un tempo pari a K volte 512bit e torna in ascolto del canale per provare a rinviare il pacchetto.
Descrivi come avviene l’invio di un datagramma a un nodo esterno della sottorete utilizzando arp
Prenendo come esempio una rete costituita da due sottoreti interconnesse da un router.
Quando l’adattatore mittente invia un frame al router, l’adattatore crea un frame contenente il datagram e lo invia nella
LAN 1 . L’adattatore del router sulla LAN riconosce che il frame è indirizzato ad esso e allora lo passo allo strato di rete
del router. Il router ora deve determinare la corretta interfaccia su cui il datagram deve essere inoltrato. Questo
compito è svolto nel router, dal protocollo di instradamento dello strato di rete, il quale consulta la tabella di
instradamento. Questa interfaccia passa quindi il datagram al suo adattatore, che lo incapsula in un nuovo frame.
Prima di inviarlo alla LAN 2 finale, il router ottiene l’indirizzo di destinazione finale mediante ARP.
26
- Preambolo: i pacchetti Ethernet iniziano con un campo di 8 byte: sette byte hanno i bit 10101010 e servono per
“risvegliare” le schede di rete dei riceventi e sincronizzare i loro clock con quello del trasmittente, mentre l’ultimo
byte ha i bit 10101011.
A livello di rete le tecnologie Ethernet forniscono un servizio:
- Senza connessione, cioè quando una scheda di rete vuole inviare un datagramma a un host della rete, lo
incapsula in un frame Ethernet e lo immette nella LAN senza alcun handshake preventivo con il destinatario.
- Non affidabile, cioè la scheda di rete non riceve alcun riscontro ne se il pacchetto supera il controllo CRC, ne
in caso contrario. Non prevede la ritrasmissione del frame scartato né una notifica della sua perdita, ma grazie
a ciò è semplice ed economico. Per questo motivo il flusso dei datagrammi può presentare lacune che poi
potranno essere riscontrate in caso di utilizzo di TCP. In caso contrario (usando UDP) potrebbe accusare
problemi a causa dell’incompletezza dei dati.
Tipicamente la massima distanza tra i nodi che comunicano via Ethernet è dell’ordine delle centinaia di metri (100m per
10BaseT e 100BaseT, 500m per 100Base2). Nelle reti con topologia a bus vengono infatti utilizzati dei repeater (ricevono
un segnale in entrata e lo rigenerano in uscita) per ottenere dei segmenti più lunghi.
Nelle reti locali Ethernet (10BaseT e 10Base2) viene utilizzata la codifica Manchester per evitare il trasferimento nella
rete di eventuali lunghe sequenze di zeri o di uno. In pratica invece di codificare il bit 0 e il bit 1 con livelli di tensione
fissi, si codificano con transizioni di livelli. La codifica specifica le seguenti convenzioni: Per un bit 0 i livelli saranno
Basso-Alto , Per un bit 1 saranno Alto-Basso. Questo tipo di codifica è considerata auto-sincronizzante (non necessita
di un segnale di sincronia esterno).La gestione delle collisioni e dell'occupazione simultanea ovvero condivisa del
canale di trasmissione viene gestita mediante il CSMA/CD, algoritmo di accesso multiplo alla rete.
27