La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

FONDAMENTI. Prospettive Utenti della rete: servizi di cui le loro applicazioni hanno bisogno (ad esempio, invio garantito senza errori entro limite di.

Presentazioni simili


Presentazione sul tema: "FONDAMENTI. Prospettive Utenti della rete: servizi di cui le loro applicazioni hanno bisogno (ad esempio, invio garantito senza errori entro limite di."— Transcript della presentazione:

1 FONDAMENTI

2 Prospettive Utenti della rete: servizi di cui le loro applicazioni hanno bisogno (ad esempio, invio garantito senza errori entro limite di tempo) Progettisti della rete: progetto economicamente effettivo (ad esempio, utilizzo efficiente ed equo delle risorse) Fornitori della rete: sistema facile da amministrare e da gestire (ad esempio, facilità di isolare i guasti)

3 accesso multiplo Requisiti: connessione Strumenti base: collegamenti: cavo coassiale, fibra ottica... nodi: computer di uso generale... Collegamenti diretti punto-punto

4 inter-reti Connessione indiretta reti commutate

5 Una rete può essere definita ricorsivamente come due o più nodi connessi da un collegamento fisico oppure come due o più reti connesse da uno o più nodi.

6 Strategie di commutazione commutazione di circuito circuito dedicato per inviare/ricevere un flusso di bit commutazione di pacchetto store-and-forward per inviare/ricevere messaggi (pacchetti) Indirizzi ed instradamento indirizzo parola che identifica un nodo instradamento determinare come inviare i messaggi a destinazione in base al suo indirizzo tipo di indirizzi: unicast: specifico nodo broadcast: tutti i nodi sulla rete multicast: sottoinsieme di nodi sulla rete

7 Requisiti: condivisione risorse Condivisione di risorse (nodi e collegamenti) da parte di più utenti nodo commutatore Strategie comuni di multiplexing: a divisione di tempo (TDM) a divisione di frequenza (FDM) a divisione di tempo ma su richiesta (statistical TDM)

8 Pacchetti Uso di pacchetti per limitare utilizzo Pacchetti da diverse sorgenti si alternano Bufferizzazione di pacchetti in attesa coda di pacchetti gestita come coda (FIFO) congestione: saturazione del buffer di pacchetti

9 Funzionalità Le applicazioni eseguite sui nodi connessi alla rete devono poter comunicare in modo da comprendersi applicazione canale astratto nodo

10 La rete comunemente supporta canali applicazione-applicazione come: Richiesta/Risposta: accesso a file, librerie digitali Flusso di messaggi: applicazioni video video: sequenza di fotogrammi risoluzione: 1/4 immagine TV = 352 x 240 pixel colori a 24-bit: fotogramma = (352 x 240 x 24)/8 = 247.5KB tasso di trasferimento: 30 fps = 7425KBps (circa 60Mbps) video su richiesta vs video-conferenza

11 Problemi Errori a livello di bit (interferenze) Errori a livello di pacchetti (congestione) Mal funzionamento di nodi e collegamenti Messaggi ritardati Messaggi consegnati in ordine sbagliato Ascolto da parte di estranei Problema chiave: mettere d’accordo ciò che l’applicazione si aspetta con ciò che la tecnologia soggiacente fornisce

12 Larghezza di banda (throughput) Quantità di dati che possono essere trasmessi in un’unità di tempo Esempio: 10Mbps Collegamento vs canale astratto Notazione KB = 2 10 byte Mbps = 10 6 bit al secondo Larghezza di banda collegata a “larghezza di un bit” 1Mbps corrisponde a bit di larghezza 1µs 2Mbps corrisponde a bit di larghezza 0.5µs Prestazioni

13 Ritardo di trasmissione Tempo richiesto per inviare un bit da un punto A ad un punto B Esempio: 24 millisecondi (ms) Latenza Latenza = Propagazione + Trasmissione + Coda Propagazione = Distanza / VelocitàLuce Trasmissione = Dimensione / LarghezzaBanda Talvolta conta il tempo andata-ritorno (RTT)

14 Velocità della luce 3.0 x 10 8 metri/secondo nel vuoto 2.3 x 10 8 metri/secondo in un cavo 2.0 x 10 8 metri/secondo in una fibra Osservazioni non ci sono ritardi di coda in collegamenti diretti larghezza di banda non significativa se Dimensione è 1 bit latenza applicazione-applicazione include ritardo dovuto al software che può essere significativo se Distanza è piccola

15 Larghezza di banda vs ritardo di trasmissione messaggi piccoli (ad es., 1 byte): passare da 1ms a 100ms è più significativo che passare da 1Mbps ( Trasmissione = 8µs) a 100Mbps ( Trasmissione = 0.08µs) messaggi grandi (ad es., 25 MB): passare da 1Mbps ( Trasmissione = 209s) a 100Mbps ( Trasmissione = 2s) è più significativo che passare da 1ms a 100ms

16 Prodotto latenza x larghezza di banda ad es., 100ms e 45Mbps = 560KB di dati (circa)

17 diverse astrazioni ad ogni livello Architettura di rete Astrarre per nascondere la complessità astrazione conduce ad una struttura a livelli

18 interfaccia tra entità: definisce come comunica con l’entità corrispondente nell’altro nodo interfaccia di servizio: definisce come usarlo Parola “protocollo” ha due significati specifica dell’interfaccia tra entità modulo che realizza tale specifica Ogni protocollo ha due interfacce Protocolli nodo oggetto di alto livello protocollo nodo oggetto di alto livello protocollo interfaccia tra entità interfaccia di servizio

19 maggior parte della comunicazione tra entità indiretta comunicazione tra entità diretta solo al livello hardware Grafo dei protocolli insieme di protocolli con le loro dipendenze Trasferimento di file Libreria digitale Video RRPMSP HHP verso la rete

20 Incapsulamento Applicazione RRP dati HHP datiRRP everso la ret datiRRPHHP Applicazione dati RRP datiRRP HHP dalla rete datiRRPHHP

21 Architetture Standard Architettura OSI (Open Systems Interconnect) International Standards Organization (ISO) International Telecommunications Union (ITU), precedentemente CCITT serie “X.”: X.25, X.400, X.500 modello di riferimento

22 ApplicazionePresentazioneSessioneTrasporto Rete Collegamento datiFisico nodi dentro la rete

23 Caratteristiche non implica una struttura strettamente a livelli forma a clessidra progetto e sviluppo procedono insieme Architettura Internet Internet Engineering Task Force (IETF) ApplicazioneIPReteTCPUDP TCP FTPHTTPNVTFTP UDP IP retereterete...

24 Memoria finita (quindi buffer limitato) Connessione alla rete via un adattatore di rete Processore veloce, memoria lenta Nodi Assumiamo computer di uso generale (programmabili) come le work-station (talvolta considereremo hardware specializzato).

25 Linee in affitto Cavi Collegamenti

26 Ultimo miglio Senza cavo Teledesic 288 satelliti a 1350 km di altezza Potenzialmente, Mbps

27 Codifiche Segnali che si propagano attraverso mezzo fisico sono digitali/analogici. Dati sia digitali che analogici: ci limitiamo a dati digitali. Problema: codificare i dati binari da inviare in un segnale che si possa propagare fino alla destinazione

28 Bit e segnali nodo adattatore di rete adattatore di rete bit componenti per i segnali segnale Segnali viaggiano tra due componenti per i segnali. Bit viaggiano tra due adattatori.

29 NRZ NRZ (Non-Return to Zero ) Problema: molti 1 oppure 0 consecutivi Segnale basso (0) può essere interpretato come inattività Segnale alto (1) provoca distorsione del livello medio Problema: sincronizzazione difficile bit

30 Risolve il problema degli 1 consecutivi NRZI Non-return to Zero Inverted: esegue una transizione dal segnale attuale per codificare un 1, e rimane al segnale attuale per codificare uno zero bit NRZ NRZI clock

31 Efficiente solo al 50%. Manchester Trasmette lo XOR dei dati codificati con NRZ ed il clock bit NRZ clock Manchester

32 4B/5B Ogni 4 bit di dati sono codificati in 5 bit, in modo che le parole di codice non hanno più di uno 0 in testa e non più di due 0 in coda Non vi sono mai tre 0 consecutivi I 5 bit sono trasmessi con NRZI Raggiunge 80% di efficienza.

33 Impacchettamento (framing) Problema: raggruppare sequenza di bit in pacchetti (frame) Determinare primo ed ultimo bit di un frame Tipicamente realizzato dall’adattatore di rete prende (scarica) frame da (in) memoria del nodo

34 Problema: carattere ETX può apparire nel BODY. Soluzione BISYNC: far precedere ETX e DLE da DLE Protocolli orientati ai byte Point-to-Point Protocol (PPP) FlagAddressControlProtocolPayloadChecksum Flag Approccio della sentinella: BISYNC

35 Problema: campo Count rovinato (errore di impacchettamento) Soluzione: utilizzare il campo di rilevamento dell’errore ed aspettare il prossimo SYN Approccio di conteggio dei byte (DDCMP)

36 Protocolli orientati ai bit HDLC (High-Level Data Link Control) Racchiudere il frame con una sequenza speciale di bit:

37 Riempimento di bit Mittente: ogni volta che deve trasmettere cinque 1 consecutivi, inserisce uno 0. Ricevente: se arrivano cinque 1 consecutivi, guarda i bit successivi: Se il bit successivo è 0: rimuove il bit Se i due bit successivi sono 10: sequenza di fine frame Se i due bit successivi sono 11: errore

38 Rilevamento di errori Rilevare errori non è la stessa cosa che correggerli Due approcci Avvisare dell’errore e far ritrasmettere Usare algoritmo di correzione Idea base dietro ogni metodo di rilevamento degli errori Aggiungere k bit di ridondanza ad un messaggio di n bit da utilizzare per determinare se si sono verificati errori

39 Parità bidimensionale bit di parità dati byte di parità Proprietà: rileva errori di 1, 2, e 3 bit e spesso di 4

40 Algoritmo di checksum Internet Calcolo: Messaggio come sequenza di interi a 16 bit Somma questi interi in aritmetica complemento ad uno Calcola complemento ad uno del risultato Includi quest’ultimo numero nel messaggio finale Verifica: Messaggio come sequenza di interi a 16 bit Somma questi interi in aritmetica complemento ad uno Verifica se risultato è formato da tutti 1

41 Messaggio formato da 8 byte: 00, 01, F2, 03, F4, F5, F6, F Riporti => Checksum = Esempio

42 Cyclic Redundancy Check Aggiunge k bit di ridondanza ad un messaggio di n bit Messaggio di n bit visto come polinomio M(x) in una variabile di grado n-1 ad esempio, corrisponde a x 7 + x 4 + x 3 + x 1. k è il grado di un qualche polinomio divisore C(x) ad esempio, C(x) = x 3 + x

43 Trasmettere polinomio P(x) divisibile per C(x) (vedi esempio), e ricevere polinomio P(x) + E(x) (dove E(x) rappresenta l’errore) E(x) = 0 implica che non ci sono errori Ricevente divide P(x) + E(x) per C(x) Se il resto è zero, allora: E(x) era zero (ovvero non ci sono errori), oppure E(x) è divisibile per C(x) Scegliere C(x) per evitare il secondo caso Schema

44 Come ottenere P(x) Moltiplica M(x) per x k : sia D(x) il risultato Divide D(x) per C(x): sia R(x) il resto Invia P(x) = D(x)- R(x)

45 Esempio M(x) = x 7 + x 4 + x 3 + x 1 (ovvero ) C(x) = x 3 + x (ovvero 1101) Mittente: moltiplica M(x) per x 3 ottenendo x 10 + x 7 + x 6 + x 4 (ovvero ) divide risultato per C(x) (ovvero 1101) ottenendo resto 101 invia = che è divisibile per C(x)

46 Proprietà Errori di un solo bit, se C(x) contiene almeno due termini. Due errori di un singolo bit, se C(x) non è divisibile per x e non divide x k +1 per ogni k minore o uguale alla lunghezza del frame. Ogni numero dispari di errori, se C(x) contiene il fattore (x + 1). Ogni sequenza di errori consecutivi di lunghezza minore di k. molte sequenze di lunghezza maggiore di k possono anche essere rilevate.

47 Alcuni polinomi C(x): CRC CRC-8 CRC-10 CRC-12 CRC-16 CRC-CCITT CRC-32 C(x) x 8 +x 2 +x 1 +1 x 10 +x 9 +x 5 +x 4 +x 1 +1 x 12 +x 11 +x 3 +x 2 +x 1 +1 x 16 +x 15 +x 2 +1 x 16 +x 12 +x 5 +1 x 32 +x 26 +x 23 +x 22 +x 16 +x 12 +x 11 +x 10 +x 8 +x 7 +x 5 +x 4 +x 2 +x+1

48 Trasmissione affidabile Recuperare frame rovinati Codici di Correzione di Errore (ECC) Ricevute (ACK) e scadenze (timeout): Automatic Repeat reQuest (ARQ)

49 Stop-and-Wait Mittente: dopo aver trasmesso un frame, attende la ricevuta dal ricevente prima di trasmettere il successivo frame... frame ACK e mittentericevente t m p o

50 Mittente: se ricevuta non arriva entro una certa scadenza, ritrasmette il frame mittentericevente frame... prossimo frame stesso frame timeout ACK timeout

51 Problema Ricevente: interpreta frame ripetuto come frame successivo mittentericevente frame ACK... prossimo frame timeout stesso frame timeout ricevente pensa sia il frame successivo

52 Soluzione Mittente: invia un numero di sequenza di 1 bit frame 0 frame 1... frame 0 ACK[0]ACK[1] mittentericevente t e m p o

53 Problema: Mantenere il canale pieno. Esempio: collegamento 1.5Mbps x 45ms RTT = 67.5Kb (8KB). Se dimensione del frame è 1KB, stop-and-wait usa circa 1/8 della capacità del collegamento. Vogliamo che il mittente possa trasmettere abbastanza frame da riempire il canale prima di aspettare un ACK.

54 Finestra scorrevole Idea: Imporre un limite superiore sul numero di frame da mantenere in memoria che non hanno ancora ricevuto l’ACK corrispondente. Tale limite è rappresentato da una finestra che scorre lungo i possibili numeri di sequenza dei frame.

55 Quando arriva ACK, pone LAR uguale al numero di sequenza a cui corrisponde l’ACK (se è maggiore di LAR ) e pone LFS = LAR+SWS Quindi, permette di trasmettere almeno un nuovo frame Assegna un numero di sequenza ad ogni frame Mantiene tre variabili: SWS : dimensione della finestra scorrevole (buffer di frame) LAR : ultimo ACK ricevuto LFS : ultimo frame inviato Invariante: LFS - LAR <= SWS sws LARLFS Mittente

56 Mantiene tre variabili: RWS : dimensione della finestra (buffer di frame) LAF : ultimo frame accettabile LFR : ultimo frame ricevuto in sequenza Invariante: LAF - LFR <= RWS Ricevente rws LFRLAF

57 Arriva frame con numero SeqNum : se LFR < SeqNum <= LAF, accetta il frame se SeqNum LAF, ignora il frame Invia ACK cumulativo ACK del frame con numero di sequenza SeqNumToAck più grande tale che tutti quelli precedenti sono stati ricevuti Pone LFR = SeqNumToAck e LAF = LFR + SeqNumToAck Variazioni: Ricevute selettive: ACK dei singoli frame ricevuti Ricevute negative: ACK che un frame non è stato ricevuto Valori tipici di RWS RWS = 1 oppure RWS = SWS

58 Esempio: LFR = 5 RWS = 4 LAF = 9 Arrivano frame 7 e 8: no ACK oppure ACK per 5 Arriva frame 6: ACK per 8 LFR = 8 LAF = 12

59 Spazio dei numeri di sequenza SeqNum può assumere un numero finito di valori numero di possibili valori ( MaxSeqNum ) maggiore di dimensione finestra ( SWS ) SWS <= MaxSeqNum-1 non basta (se SWS = RWS ): supponiamo SeqNum in ( 0..7 ) e SWS=RWS=7 mittente invia frame 0..6 che arrivano correttamente ma i cui ACK si perdono mittente invia di nuovo frame 0..6 ricevente si aspetta 7,0..5, ma riceve i vecchi 0..5 SWS <= MaxSeqNum/2 è la regola corretta (se SWS = RWS ): SeqNum scorre tra due metà dello spazio dei numeri di sequenza

60 Ethernet Storia Sviluppata da Xerox PARC a metà degli anni ‘70 Origine dalla rete radio Aloha: algoritmo distribuito che consente accesso equo a mezzo condiviso Standardizzata da Xerox, DEC, ed Intel nel 1978 Simile allo standard IEEE CSMA/CD CS: carrier sense MA: multiple access CD: collision detection Larghezza di banda: 10Mbps e 100Mbps

61 Proprietà fisiche Ethernet classica (thick-net): 10Base5 Segmento massimo di 500m Connettori ad almeno 2.5m di distanza Più segmenti connessi mediante ripetitori Al più 4 ripetitori tra una coppia di nodi (totale: 2500m) Al più 1024 nodi Tecnologie alternative 10Base2 (thin-net): 200m; configurazione a margherita 10BaseT (twisted-pair): 100m; configurazione a stella

62 Formato dei frame Indirizzi: Unico indirizzo (unicast) a 48 bit assegnato ad ogni adattatore (al mondo) Esempio: 8:0:2b:e4:b1:2 Broadcast: tutti 1 Multicast: primo bit è 1 PreamboloInd. Dest. Tipo BODY CRC Ind. Sorg. 48 Postambolo 8

63 Adattatore riceve tutti i frame e li passa al nodo se: Destinazione è il suo indirizzo Destinazione è indirizzo broadcast Destinazione è uno degli indirizzi multicast che è stato programmato ad accettare Se è in modo promiscuo

64 Algoritmo di trasmissione Se la linea è libera: Invia immediatamente Messaggio di al più 1500 byte ed almeno 46 byte Attende 9.6  s per spedire il prossimo Se la linea è occupata: Attende finché si libera e trasmette immediatamente Detto 1-persistente (caso speciale di p-persistente)

65 Se si rileva una collisione: invia ancora 32 bit interrompe trasmissione aspetta prima volta: sceglie a caso tra 0  s e 51.2  s seconda volta: sceglie a caso tra 0  s, 51.2  s,  s e  s n-esima volta: sceglie a caso tra 0  s, 51.2  s,  s, …, e (2 n -1)51.2  s exponential backoff rinuncia dopo un certo numero di tentativi (generalmente 16, mantenendo però n minore od uguale a 10) Frame minimo ha 64 byte (14 byte di header + 46 byte di dati + 4 byte di CRC) = 512 bit Garantisce il caso peggiore in cui due nodi che vogliono inviare dati si trovano all’estremità opposte della rete In Ethernet a 10Mbps, 512bit corrispondono a 51,2  s che è il ritardo stimato di andata e ritorno da un’estremità all’altra della rete

66 Esperienza con Ethernet In pratica: Utilizzo al di sotto del 30% nodi (non 1024) Lunghezza al più 1500m (RTT vicino a 5  e non 51  ) Controllo del flusso ad alto livello che limita prestazioni dei nodi Vantaggi: Facile da amministrare e mantenere Economica

67 FDDI Reti Token Ring PRONET ring: 10Mbps e 80 Mbps IBM token ring: 4Mbps IEEE token ring: 16Mbps Fiber Distributed Data Interface (FDDI): 100Mbps

68 Idea di base frame viaggiano in una direzione sequenza di bit speciale (token) circola sull’anello catturare token prima di trasmettere rilasciare token dopo trasmissione rilascio immediato rilascio ritardato rimuovere il proprio frame quando ritorna

69 Proprietà fisiche Configurazione a due anelli duali tollera un guasto

70 Stazioni di attacco singole (SAS) e duali (DAS) DAS può ignorare SAS guaste SAS DAS nodo precedente nodo successivo SAS

71 Ogni stazione impone un ritardo (ad esempio, 50ns) Al più 500 stazioni Al più 100km (200km se fibra) Usa codifica 4B/5B Può essere realizzato con cavi di rame (CDDI)

72 Algoritmo Token Temporalizzato Tempo di mantenimento del token (THT): limite superiore sul tempo di possesso Tempo di rotazione del token (TRT): tempo richiesto per far passare il token attraverso l’anello TRT ≤ Nodi Attivi x THT + Latenza TRT concordato (TTRT): limite superiore su TRT deciso in accordo.

73 Algoritmo ogni nodo misura TRT tra due arrivi successivi se TRT misurato > TTRT, allora non invia dati se TRT misurato < TTRT, allora invia dati e tiene token per TTRT - TRT misurato due tipi di traffico sincrono: può essere trasmesso sempre per TTRT tempo totale asincrono: può essere trasmesso solo se token in anticipo caso peggiore: 2xTTRT tra due arrivi del token

74 Esempio Token arriva al nodo e viene preso dal nodo TRT := TTRT (ad es., 100ms) ed inizia a decrementarsi Traffico sincrono inviato per Synchronous Allocation Value Timer (ad es., 10ms) Token rilasciato dal nodo, riappare dopo 50ms e viene preso dal nodo THT := TRT = 40ms, TRT := 100ms ed inizia a decrementarsi Traffico sincrono inviato per SAVT = 10ms, traffico asincrono inviato per THT = 40ms Token rilasciato dal nodo, riappare dopo 70ms e viene preso dal nodo TRT scaduto, DELAY := TRUE e THT := 0 Se non c’è traffico sincrono, nessun dato viene inviato TRT := TTRT, token rilasciato dal nodo riappare dopo 30 ms e viene preso dal nodo TRT = 70ms ma DELAY = TRUE: nodo può trasmettere solo traffico sincrono Traffico sincrono inviato per SAVT = 10ms, DELAY := FALSE Token rilasciato dal nodo, riappare dopo 40ms e viene preso dal nodo THT := TRT = 20ms, TRT := 100ms ed inizia a decrementarsi Traffico sincrono inviato per SAVT = 10ms, traffico asincrono inviato per THT = 20ms

75 Gestione del token Token perso non vi è token quando si avvia l’anello errori possono rovinare il token nodo che ha il token si rompe Generazione del token (e calcolo di TTRT) da eseguire quando arriva nuovo nodo o vi è malfuzionamento ogni nodo invia un frame speciale che include la sua offerta del nodo per TTRT quando riceve il frame speciale, aggiorna l’offerta ed invia in avanti se la propria offerta ha fatto tutto il giro: la propria offerta era la più bassa ognuno conosce TTRT inserisce nuovo token

76 Controllare validità del token ogni nodo dovrebbe vedere trasmissioni valide (frame o token) periodicamente intervallo massimo = latenza + tempo per trasmettere frame ≤ 2.5ms pone contatore a 2.5ms ed invia frame speciale se scade timeout

77 Formato del frame Campo Control Primo bit: traffico asincrono (0) o sincrono (1) Secondo bit: indirizzi a 16-bit (0) o 48-bit (1) Ultimi 6 bit: chiave di demux (include sequenze speciali per token e frame speciale) Campo Status da ricevente indietro a mittente errore nel frame indirizzo riconosciuto frame accettato (controllo del flusso) Ind. dest. BODY CRC 8832 start of frame Control Ind. sorg End frame 24 Status

78 Reti scalabili Interruttore: smista pacchetti da una porta di entrata ad una di uscita, selezionata in base ad indirizzo contenuto in intestazione Consente di costruire reti che coprono aree geografiche estese Consente di costruire reti con un grande numero di nodi Consente di aggiungere nuovi nodi senza influenzare le prestazioni dei nodi già esistenti

79 Datagrammi Nessuna fase di configurazione Ogni pacchetto inviato indipendentemente Ogni interruttore mantiene una tabella di smistamento

80 Esempio

81 Commutazione di circuito virtuale Fase esplicita di configurazione di connessione Ogni pacchetto ha identificatore di VC (VCI) che cambia lungo il circuito Pacchetti successivi seguono lo stesso circuito Ogni interruttore mantiene una tabella del circuito virtuale Riga di tabella: porta input-VCI input-porta output-VCI output

82 Esempio

83 Circuito virtuale vs Datagrammi Circuito virtuale: Generalmente aspetta un intero RTT per configurare la connessione prima di inviare il primo pacchetto dati La richiesta di connessione contiene l’intero indirizzo di destinazione, ma ogni pacchetto dati contiene solo un piccolo identificatore, e quindi un header più piccolo Se un interruttore o un collegamento si rovinano, la connessione viene interrotta e bisogna aprirne una nuova Configurazione di connessione dà opportunità di riservare le risorse

84 Datagrammi: No RTT di attesa per configurazione: dati inviati subito Nodo sorgente non sa se la rete può consegnare un pacchetto o se il nodo destinazione è attivo Poiché i pacchetti sono indipendenti, si possono evitare collegamenti o nodi mal funzionanti Ogni pacchetto deve contenere l’indirizzo completo di destinazione, quindi l’header è più grande.

85 Smistamento da sorgente Indirizzo contiene la sequenza di porte nel cammino dalla sorgente alla destinazione

86 Implementazione Mediante calcolatori di uso generale CPU Memoria principale bus I/O interfaccia 1 interfaccia 2 interfaccia 3

87 Larghezza di banda cumulativa 1/2 della larghezza di banda del bus I/O capacità condivisa tra tutti i nodi collegati all’interruttore esempio: bus 800Mbps può reggere 8 porte T3 Pacchetti al secondo capace di smistare pacchetti piccoli pacchetti al secondo è un valore normale esempio: 64-byte pacchetti implica 51.2Mbps Prestazioni

88 LAN estese Reti locali (LAN) hanno limiti fisici (ad esempio, 1500m per Ethernet) Connettere due o più LAN con un bridge strategia “accetta-e-invia” connessione di secondo livello (non aggiunge intestazione al pacchetto) Insieme di LAN connesse da bridge formano una LAN estesa

89 Principi base Non inviare se non necessario nodi dalla stessa parte del bridge Mantenere tabella di invio imparare elementi tabella con indirizzi nodi sorgente tabella per ottimizzare: non serve sia completa Nodo A B C X Y Z Porta 1 2

90 Albero ricoprente LAN estese talvolta hanno cicli più di un amministratore Bridge eseguono algoritmo distribuito per calcolo di albero ricoprente sottografo che contiene tutti i nodi ma non cicli bridge selezionano le porte attraverso cui inviare i frame sviluppato da Radia Perlman alla DEC incluso nella specifica IEEE 802.1

91 Esempio

92 Algoritmo dell’albero ricoprente Ogni bridge ha un identificatore unico Radice = bridge con identificatore minimo Per ogni LAN, seleziona bridge più vicino alla radice come designato per la LAN (usa identificatore per risolvere parità) Ogni bridge invia frame ad ogni LAN per cui è designato

93 Bridge inviano messaggi di configurazione identificatore bridge mittente identificatore del bridge ritenuto radice dal mittente distanza dal mittente alla radice Ogni bridge ricorda il messaggio di configurazione migliore per ogni porta Inizialmente ogni bridge si ritiene radice

94 Se si accorge di non essere radice, bridge non invia più messaggi di configurazione stato stabile, solo radice genera messaggi di configurazione periodicamente Se non riceve messaggi di configurazione dopo un certo tempo, bridge ricomincia a generare messaggi di configurazione credendosi radice

95 Broadcast and Multicast Invia tutti i frame broadcast/multicast per multicast può imparare quando una porta non conduce a nessun membro di un gruppo ogni membro di gruppo G invia frame multicast a bridge con G nel campo sorgente

96 Limiti dei bridge Non scalano albero ricoprente scala linearmente broadcast non scala (dipartimento≠università) Non consentono eterogeneità Ethernet-Ethernet, FDDI-FDDI, Ethernet-FDDI Trasparenza può essere pericolosa bridge congestionato può perdere frame latenza può aumentare e può essere variabile

97 Inter-reti (IP) Modello di servizi modello di consegna dei pacchetti schema di indirizzamento globale

98 Modello di consegna pacchetti Senza connessione (basato su datagrammi) Consegna al meglio possibile (servizio inaffidabile) pacchetti persi pacchetti consegnati in ordine errato copie duplicate di un pacchetto pacchetti ritardati anche a lungo

99 Formato del pacchetto

100 Version (4): attualmente 4 Hlen (4): numero di parole nell’header TOS (8): tipo di servizio (spesso non usato) Length (16): numeri di byte nel pacchetto Ident (16) e Flags/Offset (16): frammentazione TTL (8): numero di salti rimasti Protocol (8): chiave di demux (TCP=6, UDP=17) Checksum (16): dell’header solo DestinationAddr & SourceAddr (32)

101 Frammentazione-riassemblaggio Ogni rete ha un’unità massima di trasmissione (MTU) Strategia frammentare quando necessario evitare frammentazione in nodo sorgente ri-frammentazione possibile frammenti sono datagrammi auto-contenuti riassemblaggio in nodo destinazione (se possibile)

102 Esempio

103 Indirizzi globali Proprietà: globalmente unico gerarchico: rete + nodo Formato: Notazione “a punto”: , , classe A: da a classe B: da a classe C: da a

104 Invio di datagrammi Strategia ogni datagramma contiene indirizzo destinazione se connesso direttamente alla rete destinazione, allora invia a nodo se non connesso direttamente, allora invia ad altro router tabella di invio associa passo successivo a numero di rete ogni nodo ha un router di default ogni router mantiene tabella di invio

105 Esempio Tabella del router R2 Numero rete Uscita R3 R1 interface 1 interface 0

106 ARP Address Resolution Protocol: trasforma indirizzi IP in indirizzi fisici basato su tabella di associazione tra indirizzi IP ed indirizzi fisici se indirizzo IP non è in tabella, invia richiesta broadcast e nodo destinazione risponde con suo indirizzo fisico elementi della tabella scadono dopo un certo periodo di tempo (tipicamente 15 minuti)

107 Formato frame ARP HT: tipo di rete fisica (ad es., Ethernet) PT: protocollo di livello superiore (ad es., IP) HS: dimensione indirizzo fisico (ad es., 48) PS: dimensione indirizzo protocollo (ad es., 32) OP: tipo di frame (ad es., richiesta) SEA: indirizzo fisico mittente SIPA: indirizzo IP mittente TEA: indirizzo fisico destinatario TIPA: indirizzo IP destinatario

108 Osservazioni Frame ARP permetterebbe di aggiornare le tabelle di tutti i nodi relativamente al mittente se nodo ha già un elemento, allora lo rinfresca se nodo è destinatario e non ha elemento, allora lo inserisce se nodo non è destinatario e non ha elemento, allora non lo inserisce

109 ICMP Internet Control Message Protocol: gestione errori: errore di checksum, errore di riassemblaggio, errore di frammentazione, destinazione irraggiungibile, tempo di vita esaurito ri-direzionamento (da router a nodo sorgente) in caso esista strada migliore

110 Smistamento vs Indirizzamento smistamento: seleziona porta di uscita in base a indirizzo destinazione e tabella di routing indirizzamento: processo di costruzione della tabella Rete come grafo Routing

111 Problema: trovare il cammino di minimo costo tra due nodi Algoritmo di Dijkstra per calcolare i cammini minimi a partire da un nodo specificato Fattori: Approccio statico: topologia Approccio dinamico: carico

112 Costo-direzione Ogni nodo mantiene un insieme di triple: (Destination, Cost, NextHop) Ogni nodo invia (riceve) aggiornamenti ai (dai) nodi vicini periodicamente (alcuni secondi) quando la tabella cambia ogni aggiornamento è una lista di coppie: (Destination, Cost) Aggiorna la tabella se riceve cammino migliore

113 Esempio Tabella di routing in B destinazionedirezione A C D E F G A C C A A A costo

114 Reazione ai guasti Esempio 1 F si accorge che il collegamento a G è rovinato F pone la distanza da G uguale ad infinito ed invia l’aggiornamento ad A A pone la distanza da G uguale ad infinito poiché usa F per raggiungere G A riceve aggiornamenti periodici da C con cammino a G A pone la distanza da G uguale a 3 ed invia aggiornamento ad F F decide che può raggiungere G in 4 passi tramite A

115 Esempio 2 Collegamento da A ad E mal funziona A avverte che la sua distanza da E è infinita B e C danno una distanza 2 da E B decide che può arrivare ad E in 3 passi; avverte A A decide che può raggiungere E in 4 passi; avverte C C decide che può raggiungere E in 5 passi Euristiche per rompere cicli porre 16 uguale ad infinito split-horizon e sue varianti ritardano la convergenza dell’algoritmo

116 Algoritmo di Dijkstra Inizializzazione: Per ogni nodo n diverso da s, d(n) è infinito d(s) = 0 K indica l’insieme dei nodi con distanza minima nota: K = {s}. Ciclo: per ogni nodo n in N-K: d(n) = min(d(n), min[n’ in K](d(n’)+d(n’,n))) sia n in N-K il nodo con distanza minima: aggiungi n a K se N = K, abbiamo finito, altrimenti ripeti il ciclo

117 Dimostrazione d(n) può solo decrescere Se un cammino fino ad n passa per n’, allora alla fine d(n) > d(n’), poichè gli archi hanno peso positivo Se un nodo è inserito in K, la sua distanza è minore od uguale alla distanza di tutti i nodi in N-K Quindi, la distanza di tutti i nodi in K è minore od uguale della distanza di ogni nodo in N-K Quindi, la distanza dei nodi in K non può mai diminuire al di sotto del valore corrente Quindi, la distanza dei nodi in K è la distanza minima

118 Stato dei collegamenti Strategia: inviare a tutti i nodi (non solo ai vicini) l’informazione riguardo ai propri collegamenti diretti (non l’intera tabella) pacchetto di stato dei collegamenti (LSP) identità del nodo che ha creato il LSP costo del collegamento ad ogni vicino numero di sequenza (SEQNO) tempo-da-vivere (TTL) per questo pacchetto diffusione affidabile memorizza LSP più recenti da ogni nodo e li invia a tutti i nodi vicini tranne quello da cui sono stati ricevuti genera nuovi LSP periodicamente; aumenta SEQNO (64 bit) pone SEQNO uguale a 0 quando riavvia diminuisce TTL di ogni LSP memorizzato ed elimina LSP se TTL=0

119 Calcolo del cammino In teoria: algoritmo di Dijkstra In pratica: algoritmo di ricerca in avanti ogni interruttore mantiene due liste: Tentative e Confirmed ogni lista contiene un insieme di triple: (Destination, Cost, NextHop) si stabilizza velocemente, non genera troppo traffico, reagisce velocemente a cambiamenti della rete richiede molta memoria

120 1. Inizializza Confirmed con elemento per me e costo 0 2. Seleziona LSP del nodo Next appena aggiunto a Confirmed 3. Per ogni vicino di Next, calcola il costo a raggiungere questo vicino come la somma del costo da me a Next e da Next al vicino 3.1. Se il vicino non è in Confirmed o Tentative, aggiungilo a Tentative, con NextHop uguale alla direzione per raggiungere Next ed il costo calcolato prima 3.2 Se Neighbor è in Tentative ed il costo calcolato prima è minore del costo attuale, allora sostituisci l’elemento di Tentative 4. Se Tentative è vuoto, stop. Altrimenti, seleziona elemento di Tentative con costo minimo, spostalo in Confirmed, e ritorna al passo 2. Algoritmo di ricerca in avanti

121 ConfirmedTentative (D,0,-) (C,2,C) (B,11,B) (C,2,C) passo (B,11,B) (D,0,-) (C,2,C) (B,5,C) (A,12,C) 5(D,0,-) (C,2,C) (A,12,C) (B,5,C) ConfirmedTentative (A,10,C) 6 7 passo (D,0,-) (C,2,C) (B,5,C) (D,0,-) (C,2,C) (B,5,C) (A,10,C) Esempio A B C D

122 Metriche Metrica originale ARPANET numero di pacchetti in coda su ciascun collegamento non considera latenza nè larghezza di banda Nuova metrica ARPANET etichetta ogni pacchetto con suo tempo di arrivo ( AT ) memorizza tempo di partenza ( DT ) quando arriva ACK, calcola Delay = (DT - AT) + Transmit + Latency se scatta timeout, DT = tempo di ritrasmissione costo collegamento = ritardo medio in un certo periodo

123 Problemi Con molto carico, collegamenti congestionati hanno alto costo: i pacchetti oscillano tra collegamenti congestionati e collegamenti disattivi con poco carico, fattori statici dominano: OK Valori del costo molto grandi: cammino di 126 collegamenti a 56Kbps poco carichi può essere preferito a cammino di un collegamento a 9.6Kbps molto carico con costo 127 volte superiore

124 Metrica ARPANET rivista misura ritardo sotituita con utilizzo collegamento variabilità dinamica compressa collegamento molto carico ha costo non superiore a tre volte il costo quando disattivo costo masimo solo 7 volte il costo minimo costo è funzione di utilizzo solo per carico medio-alto Frequenza di calcolo metrica non istantanea ma valore medio invio aggiornamento solo se il cambio di costo è oltre una certa soglia

125 Problemi di scalabilità Uso inefficiente dello spazio indirizzi rete di classe C con 2 nodi (efficienza: 0.78%) rete di classe B con 256 nodi (0.39%) Troppe reti decine di migliaia di reti tabelle di indirizzamento non scalano protocolli di propagazione del cammino non scalano

126 Struttura Internet: 1990 NSFNET backbone Stanford BARRNET regional Berkeley P ARC NCAR UA UNM Westnet regional UNL KU ISU MidNet regional …

127 Sottoreti Ulteriore livello nella gerarchia indirizzo/cammino: sottorete Maschere di sottorete individuano partizione variabile dei nodi di una rete di classe A o B Sottoreti visibili solo nella stessa rete fisica

128 Num. sottorete Masch. sottorete Uscita interface 0 interface 1 R2 Esempio Tabella di routing di R1 maschera: numero: H R maschera: numero: H R H maschera: numero:

129 Algoritmo di smistamento D = destination IP address for each entry (SubnetNum, SubnetMask, NextHop) D1 = SubnetMask & D if D1 = SubnetNum if NextHop is an interface deliver datagram directly to D else deliver datagram to NextHop

130 Osservazioni Usa un router di default se non trova una corrispondenza Non è necessario che gli 1 nella maschera siano contigui Più sottoreti possono essere messe in una rete fisica Sottoreti non visibili dal resto di Internet

131 Super-reti Assegna blocchi di numeri di rete contigui a reti vicine Detto CIDR: Classless Inter-Domain Routing Blocchi rappresentati da coppie (first_network_address, count) Dimensione dei blocchi vincolata a potenze di 2 Maschera CIDR per identificare la dimensione del blocco Tutti i router devono capire l’indirizzamento CIDR

132 Struttura Internet: Oggi Backbone service provider Peering point Peering point Large corporation Small corporation “ Consumer ” ISP “Consumer” ISP “ Consumer” ISP

133 Propagazione del cammino Imporre una seconda gerarchia sulla rete che limita quali router possono parlare tra di loro La prima gerarchia è quella degli indirizzi che governa il modo in cui i pacchetti sono inviati Sistema autonomo (AS) corrisponde ad un dominio amministrativo esempi: Università, compagnie, dorsali assegnare ad ogni AS un numero a 16 bit Propagazione del cammino a due livelli protocolli interni (ogni AS sceglie il proprio) protocolli esterni (standard mondiali)

134 Protocolli interni ed esterni Interni RIP (Route Information Protocol): sviluppato per XNS, distribuito con Unix, metodo vettore delle distanze, basato sul numero di passi OSPF (Open Shortest Path First): standard Internet recente, metodo stato dei collegamenti, supporta bilanciamento del carico ed autenticazione Esterni EGP (Exterior Gateway Protocol): progettato per Internet con struttura ad albero, tratta la raggiungibilità (non cammini ottimi) BGP (Border Gateway Protocol): complesso

135 Border Gateway Protocol Tipi di AS stub: ha una singola connessione ad un’altro AS Trasporta solo traffico locale multihomed: ha connessioni con più AS diversi Rifiuta di trasportare traffico in transito transit: ha connessioni con più AS diversi Trasporta sia traffico locale che in transito Ogni AS ha: Uno o più router di confine da cui entrano ed escono i pacchetti Un portavoce BGP che comunica con altri portavoce per scambiare informazioni di raggiungibilità tra gli AS

136 Esempio BGP Portavoce di AS2 comunica reti , , e possono essere raggiunte direttamente da AS2 Portavoce di AS1 comunica reti , , e possono essere raggiunte attraverso il cammino (AS1, AS2). Portavoce possono cancellare cammini annunciati in precedenza Backbone network (AS 1) Regional provider A (AS 2) Regional provider B (AS 3) Customer P (AS 4) Customer Q (AS 5) Customer R (AS 6) Customer S (AS 7)

137 IPv6: caratteristiche principali Indirizzi a 128 bit Servizi real-time Autenticazione e sicurezza Auto-configurazione Estensione protocolli

138 Nomi dei nodi Nomi vs indirizzi nomi di lunghezza variabile, facili da ricordare indirizzi di lunghezza fissa, facili da elaborare Spazio dei nomi definisce insieme dei possibili nomi piatto e non gerarchico consiste di un insieme di legami tra nome e valore

139 programma posta utente dsi.unifi.it name server TCP IP Name server (NS)

140 Domain Name System (DNS) Nomi organizzati in gerarchia di domini Gerarchia suddivisa in zone Ogni zona realizzata da due o più NS Ogni NS ha un insieme di record di risorse Strategia ricorsiva

141 ... itcomeduuk... tinunifiuniroma1macity... dsiing... gnimpiluc Gerarchia dei domini

142 Name server (NS) Partizionamento in zone... itcomeduuk... tinunifiuniroma1macity... dsiing... gnimpiluc Due o più NS per zona

143 Record di risorse Ogni NS ha un insieme di record di risorse Name/Value : non sempre nome/indirizzo IP Type A : il campo Value è un numero IP NS : il campo Value è il nome del dominio per un nodo su cui è realizzato un NS che sa come risolvere i nomi del dominio specificato CNAME : il campo Value è il nome canonico di un particolare nodo (usato per definire alias) MX : il campo Value è il nome del dominio per un nodo su cui è realizzato un mail server che accetta messaggi per il dominio specificato TTL : quanto tempo il record è ancora valido

144 Esempio NS radice: NS unifi: NS dsi:

145 Risoluzione del nome HostNS locale piluc.dsi.unifi.it NS radice piluc.dsi.unifi.it ns.unifi.it, NS unifi piluc.dsi.unifi.it ns.dsi.unifi.it, NS dsi piluc.dsi.unifi.it piluc.dsi.unifi.it,

146 Problemi Rete soggiacente perde messaggi permuta messaggi consegna copie duplicate di un dato messaggio limita messaggi a dimensione finita consegna messaggi dopo un ritardo arbitrariamente lungo

147 Obiettivi Garantire la consegna dei messaggi Consegnare i messaggi nel giusto ordine Consegnare al più una copia di un messaggio Permettere messaggi arbitrariamente grandi Consentire sincronizzazione Permettere al ricevente di controllare il flusso del mittente Consentire più applicazioni su ogni nodo

148 UDP Servizio inaffidabile e non ordinato Consente multiplexing Nessuno controllo del flusso Estremi identificati da porte vedere /etc/services su Unix Checksum opzionale pseudo header + udp header + dati

149 Flusso di byte affidabile (TCP) Orientato alla connessione Flusso di byte processo mittente scrive un certo numero di byte TCP spezza in segmenti ed invia ad IP processo ricevente legge un certo numero di byte Full duplex Controllo del flusso evita che il mittente sommerga il ricevente Controllo della congestione: evita che il mittente sommerga la rete

150 Problematiche “end-to-end” Basato su protocollo a finestra scorrevole Connette potenzialmente molti nodi diversi stabilire e terminare connessione esplicitamente RTT potenzialmente diversi meccanismo di timeout adattivo Ritardo della rete potenzialmente lungo pronto a ricevere pacchetti molto vechi Capacità a destinazione potenzialmente diversa permettere diverse quantità di memorizzazione Capacità della rete potenzialmente diversa pronto a gestire congestione

151 Formato del segmento

152 Ogni connessione è identificata da una quadrupla: Finestra scorrevole + controllo flusso Acknowledgment, SequenceNum, AdvertisedWindow Flags: SYN, FIN, RESET, PUSH, URG, ACK Checksum: pseudo-header + TCP header + dati

153 Stabilire una connessione Protocollo “three-way handshake”

154 Diagramma degli stati

155 Finestra scorrevole (rivista) Ogni byte ha un numero di sequenza Gli ACK sono cumulativi

156 Lato mittente LastByteAcked ≤ LastByteSent LastByteSent ≤ LastByteWritten byte tra LastByteAcked e LastByteWritten devono essere memorizzati Lato destinatario LastByteRead < NextByteExpected NextByteExpected ≤ LastByteRcvd + 1 byte tra LastByteRead e LastByteRcvd devono essere memorizzati

157 Controllo del flusso Dim. buffer mittente: MaxSendBuffer Dim. buffer destinatario: MaxRcvBuffer Lato detinatario LastByteRcvd - LastByteRead ≤ MaxRcvBuffer AdvertisedWindow = MaxRcvBuffer - (LastByteRcvd - LastByteRead)

158 Lato mittente LastByteSent - LastByteAcked ≤ AdvertisedWindow EffectiveWindow = AdvertisedWindow - (LastByteSent - LastByteAcked) LastByteWritten - LastByteAcked ≤ MaxSendBuffer blocca applicazione mittente se (LastByteWritten - LastByteAcked) + y > MaxSendBuffer Invia sempre ACK in risposta ad un segmento dati in arrivo Persiste quando AdvertisedWindow=0

159 Ripetizione numeri di sequenza Numeri in ciclo: SequenceNum è di 32 bit Banda e tempo prima di termine ciclo tempo di vita di un pacchetto: 120 secondi Banda T1 (1.5Mbps) Ethernet (10Mbps) T3 (45Mbps) FDDI (100Mbps) STS-3 (155Mbps) STS-12 (622Mbps) STS-24 (1.2Gbps) Tempo 6.4 ore 57 minutti 13 minuti 6 minuti 4 minuti 55 secondi 28 secondi

160 64KB in transito: AdvertisedWindow di 16 bit Banda e ritardo x banda ritardo: 100ms Banda T1 (1.5Mbps) Ethernet (10Mbps) T3 (45Mbps) FDDI (100Mbps) STS-3 (155Mbps) STS-12 (622Mbps) STS-24 (1.2Gbps) Ritardo x Banda 18KB 122KB 549KB 1.2MB 1.8MB 7.4MB 14.8MB Mantenere il canale pieno

161 Ritrasmissione adattiva Algoritmo originale misura SampleRTT per ogni coppia segmento/ACK calcola media pesata di RTT EstimatedRTT =  x EstimatedRTT +  x SampleRTT dove  +  = 1  tra 0.8 e 0.9  tra 0.1 e 0.2 TimeOut = 2 x EstimatedRTT

162 Algoritmo di Karn/Partridge non stima RTT quando ritrasmette duplica timeout dopo ogni ritrasmissione

163 Algoritmo di Jacobson/Karels Nuovo calcolo del valore medio di RTT Diff = SampleRTT - EstimatedRTT EstimatedRTT = EstimatedRTT + (  x Diff) Dev = Dev +  (|Diff|- Dev) dove  è tra 0 e 1 Considera varianza in calcolo timeout TimeOut =  x EstimatedRTT +  x Dev dove  = 1 e  = 4

164 Esperimenti Due workstation DEC 3000/600 (Alpha a 175MHz) 10Mbps Ethernet Test ping-pong (10,000 volte) Ogni test ripetuto cinque volte Dimensione messaggi Latenza: 1-byte, 100-byte, 200-byte, byte Throughput: 1KB, 2KB, 4KB,... 32KB

165 Dim. messaggio UDP TCP Latenza Latenza di livello ETH + cavo: 219µs UDP/IP: 60µs

166 Throughput

167 Introduzione Due facce della stessa medaglia Allocare in anticipo le risorse per evitrare la congestione Controllare la congestone se (e quando) si verifica Reti a commutazione di pacchetti Due punti di realizzazione Nodi all’estremità della rete (protocollo di trasporto) Router dentro la rete (gestioen delle code) Modello di servizio soggiacente Al meglio delle proprie possibilità Diverse qualità di servizio (non lo studieremo) Destination 1.5-Mbps T1 link Router Source Mbps FDDI 10-Mbps Ethernet

168 Contesto Flussi non orientati alla connessione Sequenza di pacchetti scambiati da una coppia sorgente/destinazione Diverso dal canale astratto: visibile dai router Gestione di una stato “soft” nei router Tassonomia Centrato sui router – centrato sui nodi Basato sulla prenotazione – basato sul feedback Basato sulla finestra – basato sul tasso Router Source Router Destination 2 1

169 Criteri di valutazione Potenza della rete Power = Throughput/Delay Carico ottimale Carico Throughput/delay

170 Equità dell’allocazione delle risorse Metrica di Jain Insieme di n flussi con throughput x 1, …, x n Indice di equità somma(x 1, …, x n ) 2 /(n x somma(x 1 2, …, x n 2 )) Tutti i flussi con throughput 1 Indice = n 2 /(n x n) = 1 Un flusso con throughput 1+D e gli altri con throughput 1 Indice = (n 2 +2nD+D 2 )/(n 2 +2nD+D 2 ) < 1per qualunque D k flussi con throughput 1 e gli altri con throughput 0 Indice = k/n

171 Gestione delle code First-In-First-Out (FIFO) Non discrimina tra le diverse sorgenti di traffico Gestione equa della coda (Fair Queuing) Una coda per ogni flusso Code servite mediante un meccanismo di round-robin Variazione: code pesate (Weighted FQ) Flusso 1 Flusso 2 Flusso 3 Flusso 4 Round-robin

172 Algoritmo FQ: singolo flusso Assumiamo che un clock avanza ad ogni bit trasmesso Sia P i : lunghezza del pacchetto i S i : il tempo di inizio trasmissione del pacchetto i F i : il tempo di fine trasmissione del pacchetto i F i = S i + P i Router inizia a trasmettere il pacchetto i Immediatamente dopo l’ultimo bit del pacchetto i - 1 (F i-1 ), se il pacchetto i arriva prima che il router abbia finito di trasmettere il pacchetto i – 1 Appena arriva (A i ), altrimenti Quindi: F i = max(F i - 1, A i ) + P i

173 Algoritmo FQ: flussi multipli Clock avanza ogni n bit spediti, se si hanno n flussi attivi Calcola F i per ogni pacchetto che arriva per ogni flusso Spedisce pacchetto con F i minimo Non interrompe la trasmissione di un pacchetto Flusso 1Flusso 2 (a)(b) Output F = 8 F = 10 F = 5 F = 10 F = 2 Flusso 1 (in arrivo) Flusso 2 (in trasmissione)

174 Controllo congestione in TCP Assume gestione FIFO delle code Funziona anche con FQ Ciascuna sorgente determina la capacità della rete Uso degli ACK per regolare la trasmissione (self- clocking) Problemi Determinare la capacità disponibile Adattarsi ai cambiamenti nella capacità

175 AI/MD Obiettivo: adattarsi ai cambiamenti di capacità disponibile Nuova variabile di stato CongestionWindow che limita la quantità di dati in transito EffectiveWindow diventa MaxWindow - (LastByteSent - LastByteAcked) dove MaxWindow è MIN(CongestionWindow,AdvertisedWindow) Aumentare CongestionWindow quando diminuisce la congestione e diminuirla quando aumenta la congestione AI/MD = Additive Increase/Multiplicative Decrease

176 Domanda: come può la sorgente determinare se la rete è congestionata o meno? Risposta: utilizzo dei timeout Timeout indica che un pacchetto si è perso I pacchetti raramente si perdono per errori di trasmissione Un pacchetto perso è indice di congestione

177 Algoritmo Aumenta CongestionWindow di un pacchetto ogni volta che è stato ricevuto l’ACK di tutti i pacchetti inviati in un RTT (aumento lineare) Dimezza CongestionWindow ad ogni timeout (diminuzione moltiplicativa) In pratica: aumenta un poco per ogni ACK Increment = (MSS * MSS)/CongestionWindow MSS indica la massima dimensione di un segmento CongestionWindow += Increment SorgenteDestinazione …

178 In realtà, l’andamento di crescita non è esattamente lineare KB TTempo (secondi)

179 Partenza lenta Problema: Determinare la capacità disponibile all’inizio AI/MD troppo lento Soluzione: Inizia con CongestionWindow = 1 Aumenta CongestionWindow di 1 per ogni ACK raddoppia ad ogni RTT Crescita esponenziale, ma più lenta che tutti insieme SorgenteDestinazione …

180 Partenza lenta usata Quando inizia la connessione Quando la connessione si ferma in attesa di un timeout Il nuovo valore di CongestionWindow (detto CongestionThreshold ) può essere usato come valore da raggiungere con la partenza lenta Successivamente, si usa l’aumento lineare

181 Ritrasmissione veloce Problema: stima approssimativa del timeout in TCP Periodi di non attività Soluzione: utilizzo di ACK duplicati per stimolare la ritrasmissione Pacchetto 1 Pacchetto 2 Pacchetto 3 Pacchetto 4 Pacchetto 5 Pacchetto 6 Ritrasmette pacchetto 3 ACK 1 ACK 2 ACK 6 ACK 2 MittenteDestinatario

182 Prevenzione della congestione Strategia di TCP Controllare la congestione quando si verifica Aumentare ripetutamente il carico fino a trovare il punto in cui si verifica la congestione, quindi diminuirlo Strategia alternativa: prevenzione della congestione Prevedere quando la congestione sta per verificarsi Ridurre il tasso prima che i pacchetti siano scartati Due possibilità Centrato sul router: DECbit e RED Gateways Centrato sul nodo: TCP Vegas

183 DECbit Aggiunge un bit di congestione all’intestazione dei pacchetti Router pone tale bit ad 1 se la lunghezza media della coda è maggiore di 1 Media su ultimo ciclo attivo-disattivo più il ciclo attivo corrente Tenta di bilanciare il throughput rispetto al ritardo Lunghezza coda Tempo attuale Tempo Ciclo corrente Ciclo precedente Intervallo di media

184 Nodo destinazione trasmette il bit di congestione nell’ACK Nodo mittente memorizza quanti pacchetti hanno il biti di congestione ad 1 Se meno del 50% dell’ultima finestra aveva il bit ad 1, allora aumenta CongestionWindow di 1 Altrimenti, diminuisce CongestionWindow di un fattore 0.875

185 Random Early Detection (RED) Notifica implicita Semplicemente, scarta il pacchetto (TCP andrà in timeout) Scarta (a caso) il pacchetto in anticipo Invece di aspettare che la coda divenga piena, scarta ogni pacchetto che arriva, con una certa probabilità, ogni qualvolta la coda supera un certo livello

186 Dettagli Calcola lunghezza media della coda AvgLen = (1-Weight)*AvgLen+Weight*SampleLen 0 < Weight < 1 (generalmente, 0.002) SampleLen misurata ogni volta che arriva un pacchetto MinThresholdMaxThreshold A vgLen if AvgLen <= MinThreshold then metti in coda il pacchetto if MinThreshold

187 Calcolo effettivo di P TempP = MaxP * (AvgLen - MinThreshold)/ (MaxThreshold - MinThreshold) P = TempP/(1 - count * TempP) dove count indica il numero di pacchetti arrivati che sono stati messi in coda mentre AvgLen era tra le due soglie P 1.0 MaxP MinThresholdMaxThreshold AvgLen

188 Osservazioni Probabilità di scartare i pacchetti di un particolare flusso è (circa) proporzionale alla percentuale di banda assegnata al flusso MaxP è tipicamente uguale a 0.02 Quando la lunghezza media è a metà tra le due soglie, il router scarta circa un pacchetto ogni 50 Impostazione delle due soglie basata su esperienza Impostare MaxThreshold pari al doppio di MinThreshold è ragionevole per il traffico attuale di Internet

189 TCP Vegas Sorgente osserva se ci sono segnali che indicano che la coda del router sta crescendo e che si verificherà la congestione RTT cresce Tasso di invio si appiattisce

190 Algoritmo BaseRTT : minimo RTT misurato (generalmente, RTT del primo pacchetto) Se non si verifica congestione, allora ExpectedRate = CongestionWindow/BaseRTT Calcola tasso di invio reale ( ActualRate ) una volta per RTT Confronta ActualRate con ExpectedRate Diff = ExpectedRate – ActualRate if Diff <  aumenta CongestionWindow linearmente if Diff >  diminuisce CongestionWindow linearmente if  <= Diff <=  lascia CongestionWindow inalterata

191 Esempio


Scaricare ppt "FONDAMENTI. Prospettive Utenti della rete: servizi di cui le loro applicazioni hanno bisogno (ad esempio, invio garantito senza errori entro limite di."

Presentazioni simili


Annunci Google