Sistemi e Tecnologie della Comunicazione Lezione 19: network layer: congestione, internetworking 1 Congestione della rete La congestione della rete e’ il fenomeno che si verifica quando le sorgenti immettono nella rete piu’ pacchetti di quanti la rete riesca a trasmettere a destinazione Le cause della congestione possono essere molteplici diversi flussi verso la stessa linea: i pacchetti non possono essere trasmessi al ritmo con cui arrivano ad un router, si forma una coda nel router l’esaurimento dei buffer nel router determina lo scarto dei pacchetti successivi anche la lentezza della CPU del router (nell’analizzare i pacchetti, la tabella di routing, o per attivita’ di logging degli eventi) puo’ provocare lentezza di risposta ed esaurimento della memoria aumentare la memoria non serve: code lunghe amuentano il ritardo di inoltro dei pacchetti; quando il ritardo cresce, i pacchetti scadono, verranno scartati ed andranno ritrasmessi comunque 2 Effetto valanga Tipicamente l’insorgere di congestione in un punto della rete ha un effetto che in mancanza di contromisure peggiora nel tempo: i pacchetti vengono scartati dal router, quindi verranno ritrasmessi provocando un ulteriore aumento del flusso verso la zona congestionata i pacchetti ritrasmessi andranno in generale ad aumentare il carico anche a monte del router congestionato, provocando un sovraccarico conseguente anche in altre zone della sottorete Questo provoca un effetto a valanga che, in prossimita’ di una certa soglia di sovraccarico, rapidamente porta la rete in condizioni di congestione diffusa Senza azioni correttive la rete puo’ collassare 3 Principi generali per il controllo della congestione Le contromisure si classificano in due categorie: soluzioni a ciclo aperto: si opera in sede di progetto della rete, destinando risorse di banda, CPU, memoria, valutando scelte di routing e valutando correttamente il tempo di vita massimo di un pacchetto un lungo tempo di vita fa si che i pacchetti intasino la rete per molto tempo un tempo troppo corto provochera’ la ritrasmissione troppo spesso la progettazione deve considerare anche il comportamento del protocollo di trasporto soluzioni a ciclo chiuso: queste si attivano tenendo in conto lo stato corrente della rete, ed operando retroazioni, quindi definire le metriche ed i meccanismi per rilevare la congestione definire i modi per la trasmissione di queste informazioni in punti dove operare correttivi attivare le azioni correttive 4 Controllo del sistema Le metriche per l’identificazione di una congestione (imminente) sono diverse: percentuale di pacchetti scartati lunghezza media delle code frequenza dei pacchetti scaduti ritardo medio dei pacchetti Alcune di queste metriche sono utilizzabili dalla sorgente per provocare una autolimitazione del traffico immesso nella rete In tutti i casi valori crescenti indicano un peggioramento della situazione 5 Controllo nella rete connection oriented Una soluzione al problema e’ il controllo di ammissione: quando una parte della sottorete risulta congestionata, nessun circuito virtuale puo’ essere definito attraverso quella zona alternativamente si permettono nuove connessioni solo attraverso strade diverse (se possibile) si possono anche attivare meccanismi piu’ stringenti nella allocazione delle risorse per le nuove connessioni tipicamente le reti a circuiti virtuali fanno una sorta di overbooking delle risorse impedire ulteriori overbooking permette di garantire che le nuove connessioni dispongano delle risorse necessarie, e non aggraveranno la situazione 6 Controllo nelle reti connectionless Il router puo’ tenere sotto controllo lo stato delle sue linee e determinare lo stato di allarme Una soluzione (utilizzata nel DECnet) prevede che il router in stato di allarme setti un bit particolare nell’header dei pacchetti lo strato di trasporto della destinazione ricopia il bit di congestione nel pacchetto di acknowledge, quindi la sorgente rileva il problema e riduce la velocita’ di trasmissione poiche’ qualunque router puo’ settare il bit di allarme, la condizione di allarme termina solo qiando tutti i router coinvolti nel tragitto congestionato sono tornati in condizione normale 7 Choke packet Una soluzione diversa consiste nel comunicare direttamente alla sorgente il problema, tramite un pacchetto specifico detto choke packet il pacchetto originale viene marcato in modo da non generare altri chocke packet durante il resto del suo tragitto il choke packet contiene le informazioni di quale destinazione e’ affetta dal problema la sorgente puo’ quindi ridurre di una certa percentuale il rate di trasmissione verso quella destinazione dopo un intervallo di tempo definito di assenza di choke packet, la sorgente riprende ad aumentare il rate di trasmissione 8 Choke packet hop-by-hop Il meccanismo del choke packet difetta di lentezza nella risposta al problema fino a che il choke packet non arriva alla sorgente, questa continua ad inviare troppo rapidamente per la rete Una soluzione migliorativa e’ che il choke packet, durante il tragitto, provoca in ciascun router la diminuzione delle trasmissioni verso la sorgente (choke packet hop by hop) quando il choke packet raggiunge il primo router a monte di quello congestionato, questo rallenta alleviando il router congestionato, ed aggrava la sua situazione perche’ a monte il traffico e’ sempre a rate elevato, ma solo finche’ il choke packet non fa un altro hop via via che il choke packet viaggia all’indietro, ogni router rallenta le trasmissioni verso il successivo il meccanismo sposta verso la sorgente parte del problema, ma per tempi brevi, cioe’ spalma la congestione su diversi router che saranno in crisi per tempi brevi ed in modo meno intenso 9 Scarto dei pacchetti Quando non ce la si fa piu’ i router scartano i pacchetti Questo generalmente provoca ritrasmissioni, che non risolvono il problema Si puo’ pero’ sfruttare il comportamento dello strato di trasporto per scartare oculatamente i pacchetti e ridurre il carico se lo strato di trasporto ha un meccanismo del tipo go-back-n, e’ opportuno scartare i pacchetti piu’ nuovi, in modo da generare meno ritrasmissioni in alcuni protocolli di trasporto (come il TCP) la perdita di pacchetti provoca un rallentamento della velocita’ di trasmissione, cosa funzionale alla soluzione del problema di congestione Normalmente questa tecnica viene utilizzata prima di raggiungere una condizione totalmente congestionata, per evitare di non avere risorse per gestire il problema (Random Early Detection) 10 Internetworking L’evoluzione delle reti si e’ sviluppata indipendentemente nelle diverse realta’ locali (dal punto di vista geografico o amministrativo) Le diverse necessita’ hanno prodotto la definizione e l’implementazione di reti utilizzanti protocolli differenti Si utilizzano protocolli variegati sia a livello di rete locale che geografica quasi tutti i PC utilizzano TCP/IP molti PC utilizzano NETBIOS i mainframe IBM delle grandi aziende utilizzano SNA o DECnet i MacIntosh utilizzano (anche) Appletalk alcune LAN di PC usano IPX (Novell) molte aziende telefoniche usano ATM wireless rappresenta uno standard differente dagli altri Un bel giorno si e’ scoperto opportuno che alcune – o tutte – queste realta’ possano comunicare tra loro 11 Problematiche di internetworking Le differenze tra reti sono di diversa natura esistono differenze a livello di strato fisico o di data link layer a livello di rete, differenze possono derivare da comunicazione tra reti connection oriented e connection less utilizzo di funzionalita’ in una rete non previste dall’altra rete (ad esempio, controllo di flusso, comunicazione multicast o qualita’ di servizio) differenze di indirizzamento, che richiedono tabelle di conversione alcuni protocolli di rete possono richiedere dimensioni massime dei pacchetti di valore differente differenze possono presentarsi anche a livello di trasporto o di applicazione 12 Connessioni tra reti Livelli fisici differenti possono essere connessi da convertitori di segnale (ad esempio, una tratta costituita da una connessione in coassiale che si inserisce in un ponte radio, per finire in una connessione in fibra ottica) A livello di data link layer abbiamo visto l’interconnessione tra protocolli differenti tramite dispositivi detti bridge A livello di rete una possibile soluzione e’ l’utilizzo di router multiprotocollo Le conversioni di protocollo a livello di trasporto o di applicazione vengono eseguite da dispositivi chiamati generalmente gateway (termine talvolta utilizzato anche per indicare i router nel contesto del livello di rete) Nel seguito vedremo il problema relativo allo strato di rete 13 Circuiti virtuali concatenati Quando l’interconnessione e’ relativa a due sottoreti orientate alla connessione, e’ possibile operare nel seguente modo al momento di stabilire la connessione, la sottorete si accorge che la destinazione e’ esterna alla rete viene stabilito un circuito virtuale tra la sorgente ed il router piu’ vicino al bordo della sottorete di partenza il router crea quindi una connessione con il gateway (router) multiprotocollo che interconnette le due reti adiacenti, ed “incolla” la connessione con la sorgente a questa nuova connessione analogamente il router multiprotocollo creera’ una connessione (secondo le specifiche del protocollo della rete successiva, che lui conosce) verso un router vicino situato nella nuova sottorete ed associa i due circuiti virtuali questo processo puo’ iterarsi fino alla destinazione, realizzando una concatenazione di circuiti virtuali da sorgente a destinazione 14 Circuiti virtuali concatenati Questa tecnica funziona bene quando le caratteristiche delle comunicazioni orientate alla connessione sono simili In caso contrario la natura della connessione puo’ essere pregiudicata ad esempio tutte le reti forniscono un flusso affidabile la rete della sorgente e della destinazione possono offrire un servizio affidabile, ma se nel mezzo c’e’ una rete con servizio connection oriented inaffidabile, l’affidabilita’ della connessione viene chiaramente pregiudicata Questa tecnica e’ spesso utilizzata anche a livello di trasporto (dove esiste sempre un protocollo connection oriented affidabile) 15 Collegamento connectionless In questo caso il servizio fornito allo strato di trasporto e’ di tipo datagram (inaffidabile) Come previsto dal protocollo ogni pacchetto e’ instradato indipendentemente, ed i percorsi dei pacchetti potrebbero anche attraversare gateway differenti In questo caso i problemi sono maggiori i router multiprotocollo debbono estrarre dal pacchetto in transito le informazioni essenziali, e tentare di tradurre queste informazioni nel protocollo della rete verso cui il pacchetto viene instradato questo raramente puo’ essere fatto se i protocolli non sono molto simili altro problema grave e’ l’indirizzamento: protocolli diversi utilizzeranno indirizzamenti diversi, e non sempre e’ possibile mantenere una mappatura sul gateway Questo approccio ha il vantaggio di essere utilizzabile anche con reti a circuiti virtuali; tentare di fare il contrario provoca problemi 16 Tunneling Non esiste una soluzione generale per realizzare una interconnessione di reti: ogni situazione va risolta in modo opportuno Un caso particolare ma molto frequente e’ quello di una interconnessione tra reti differenti, dove pero’ la rete di partenza e quella di arrivo sono omogenee ad esempio una LAN connessa in TCP/IP alla rete di partenza, deve attraversare una sottorete ATM per raggiungere una rete TCP/IP a destinazione 17 Tunneling (cont.) In questo caso si puo’ applicare una semplice tecnica nota come tunneling: il pacchetto della rete di partenza arriva al gateway, che dispone di un collegamento verso un router della rete da attraversare (secondo il protocollo della rete in questione) il router inserisce il pacchetto nel campo dati di un pacchetto del protocollo specifico della rete da attraversare, ed indirizza il nuovo pacchetto al gateway che connette la rete intermedia con quella di destinazione il gateway di destinazione riceve il pacchetto, estrae da questo il pacchetto originario e lo instrada secondo il protocollo della rete di destinazione, uguale a quello della rete di partenza in questo caso la rete intermedia si comporta a tutti gli effetti come un tubo, i cui dettagli sono ignoti a mittente e destinatario i due gateway dovranno avere nella tabella di routing l’informazione che le destinazioni connesse al gateway dirimpettaio vanno raggiunte attraverso di lui, tramite il tunnel 18 Tunneling (cont.) Questa tecnica e’ applicata diffusamente in Internet, dove le destinazioni sono generalmente reti locali che utilizzano il TCP/IP, e le dorsali di interconnessione possono attraversare reti di qualunque tipo Il TCP/IP (in particolare IP) supporta questo tipo di trasferimento dei dati 19 Routing in una internet Il routing attraverso una interconnessione di reti si gestisce in modo simile al routing gerarchico Si utilizza un routing a due livelli il routing interno a ciascuna rete sara’ gestito tramite un protocollo di routing interno (Interior Gateway Protocol) quale ad esmpio RIP, OSPF, CLNS, X.25 il traffico interno non si preoccupa di questioni relative all’internetworking; le zone interne vengono chiamate Autonomous System (AS) i gateway (router multiprotocollo) utilizzeranno tra loro un protocollo differente (Exterior Gateway Protocol), che permettera’ ai gateway di decidere attraverso quali reti instradare il pacchetto fatta la scelta, si puo’ utilizzare il tunneling per trasferire i dati a destinazione 20 Frammentazione L’attraversamento di reti differenti puo’ richiedere che un gateway spezzi il pacchetto in frammenti per motivi di protocollo un pacchetto IP puo’ essere lungo 65515 byte se si deve attraversare una Ethernet, deve essere spezzato in frammenti di circa 1500 byte se poi deve attraversare una rete ATM, deve essere ulteriormente frammentato in parti di 48 byte ciascuna Esistono due modi di affrontare il problema evitare il problema a monte: il protocollo puo’ tentare di capire la dimensione minima richiesta dalle reti da attraversare, ed imporre questo limite alla sorgente, o evitare di transitare su reti che non possono supportare la dimensione del pacchetto originato meglio: permettere ai router di frammentare il pacchetto 21 Frammentazione (cont.) In caso di frammentazione, esistono ancora due strategie riassemblare il pacchetto all’uscita della rete che ha importa la frammentazione (ATM fa cosi’) questo rende la frammentazione trasparente alle reti a valle, cioe’ ai gateway successivi, che lo riceveranno intero puo’ pero richiedere di frammentare e riassemblare piu’ volte il pacchetto (lavoro aggiuntivo per i gateway) inoltre i gateway devono sapere quando hanno ricevuto tutti i frammenti, e devono poterli riordinare (quindi tutti i pacchetti devono uscire dalla rete intermedia attraverso lo stesso gateway) non riassemblare il pacchetto frammentato, ma trasmettere i diversi frammenti fino a destinazione, dove il pacchetto verra’ riassemblato (IP usa questa soluzione) questo ha il vantaggio di non dover ripetere piu’ volte la stessa operazione i gateway non si devono preoccupare del riassemblaggio 22 Frammentazione (cont.) Gli aspetti negativi della frammentazione non traspasrente sono tutti gli host devono saper riassemblare il pacchetto l’overhead della frammentazione (una intestazione completa per ogni frammento) si propaga fino a destinazione si deve introdurre una numerazione che permetta di riassemblare il pacchetto e di identificare pezzi mancanti IP utilizza la seguente tecnica ogni frammento deve avere una dimensione fissa (quella richiesta dalla rete di transito), tranne l’ultimo l’intestazione deve contenere il numero del pacchetto, un bit che indica il frammento finale, ed un numero che indica l’offset in byte del primo byte del frammento rispetto al pacchetto originale 23 Frammentazione (cont.) 24