Realizzazione di commutatori a pacchetto: cosa c e dentro un router IP? Prof. Ing. Carla Raffaelli Un semplice commutatore a pacchetto Una workstation con schede di rete e software per ricevere pacchetti realizzare le associazioni ingresso-uscita spedire i pacchetti I/O BUS CPU INTERFACCIA 1 INTERFACCIA 2 MEMORIA INTERFACCIA N 1
Trasferimento del pacchetto La workstation usa un meccanismo DMA (Direct Memory Access) per trasferire i dati direttamente dalle interfacce alla memoria Una volta che il pacchetto e in memoria la CPU esamina la sua intestazione per determinare l interfaccia a cui deve essere inviato Tramite DMA il pacchetto viene trasferito sulla interfaccia di uscita Prestazioni Sono limitate dal fatto che tutti i pacchetti devono transitare per un solo punto di contesa rappresentato tipicamente dal bus di I/O che viene attraversato due volte per ciacun trasferimento un processore con un bus di I/O a 1Gbit/s puo supportare fino a 10 link a 45 Mbit/s o 3 link a 155 Mbit/s, ma neanche un solo link a 622 Mbit/s Se i pacchetti sono corti il tempo di elaborazione della intestazione puo diventare il limite principale una workstation che commuta 100000 pacchetti di 64 byte al secondo ha un throughput aggregato di 51.2 Mbit/s Occorrono quindi soluzioni piu veloci tipicamente realizzate con hardware specializzato 2
Sistema single-cpu PCI 1.0 HW Intel Pentium 1.6 GHz bus PCI 32 bit / 33 Mhz (1 Gb/s) Gb Intel PRO1000XT server NICs SW Click 1.3pre1 Linux kernel 2.4.18 RFC1812 router schema a polling Packet on NIC PCI bus PCI bus Memory Memory CLICK PollDevice RFC1812 router ToDevice Troute Tqueue Click Latency Lossless rate (kpacktets/s) 1000 900 800 700 600 500 400 300 200 100 0 Limiti di capacità di elaborazione 350 200 140 64 128 256 512 1024 1280 1518 Packet Length (bytes) 85 53 Theorical Measured 43 37 Lossless bandwidth (Mbit/s) 600 500 400 300 200 100 0 179 Limiti di banda del bus 205 287 348 434 440 449 Theorical Measured 64 128 256 512 1024 1280 1518 Packet Length (bytes) Sistema single-cpu PCI-X 2-NICs HW Singolo processore Intel Xeon 2.8 GHz, bus PCIX 64 bit / 133 Mhz 2 Gb/s Intel PRO1000XT server NICs SW Click 1.3pre1 Linux kernel 2.4.18 RFC1812 router con schema a polling Osservazione: si evidenzia ancora il limite di elaborazione per pacchetti corti mentre non vi è praticamente limitazione dovuta al bus di sistema Aumentando la dimensione dei pacchetti -> NIC in saturazione 2 NICs: 1 d ingresso e 1 d uscita; entrambe connesse al bus a 133MHz Lossless rate (Kpacket/s) Lossless bandwidth (Mbit/s) 2500 2000 1500 1000 500 0 1200 1000 800 600 400 200 0 1953 717 977 717 488 443 244 122 98 83 233 120 96 82 64 128 256 512 1024 1280 1512 Packet length (bytes) Rate TEORICA massima Rate REALE massima 1000 1000 1000 1000 1000 1000 1000 907,264 954,368 983,04 983,04 991,872 734,208 367,104 64 128 256 512 1024 1280 1512 Packet length (bytes) Banda teorica Banda usata 3
Throughput E tipicamente espresso in numero di pacchetti per unita di tempo trasferiti dal commutatore E limitato per ragioni tecnologiche e di traffico contesa per risorse interne e sulle uscite target attuale per router IP ad alte prestazioni: 40 Gbit/s equivalenti a 16 link a 2.5 Gbit/s per pacchetti di 64 byte richiede un capacita di elaborazione di 78 x 1.E-6 pacchetti al secondo Scalabilita L hardware necessario per costruire uno switch e funzione del numero di linee supportate Nella telefonia questo era un problema importante perche commutatori con decine di migliaia di linee di ingresso e di uscita erano abbastanza comuni Con l aumento della velocita delle linee l esigenza di commutatori di grandissime dimensioni e meno sentita 4
Schema del commutatore ingresso uscita ingresso Rete di interconnessione uscita ingresso uscita Compito delle porte di ingresso e di gestire le informazioni di controllo per trasferire il pacchetto sull uscita corretta Se tali informazioni sono trasportate all interno della rete dal pacchetto stesso la rete si dice autoinstradante La rete di interconnessione puo avere topologie a stadio singolo o multistadio Memorizzazione E una funzione fondamentale dei commutatori a pacchetto Puo essere realizzata nelle porte di ingresso o di uscita oppure internamente alla rete Le caratteristiche della memorizzazione hanno molta influenza sulla qualita di servizio resa dal commutatore 5
Alternative di memorizzazione (1) Buffer interni Richiedono la realizzazione di elementi con memoria Maggiore complessita Buffer in uscita La commutazione avviene a monte del buffer Piu pacchetti provenienti da ingressi diversi possono richiedere la medesima coda di uscita contemporaneamente Le memorie devono avere velocita fino a N volte superiore a quella delle linee di ingresso per assicurare il trasferimento di N pacchetti verso la stessa coda di uscita la rete di connessione deve avere una velocita' N volte quella necessaria per trasferire una cella 6
Buffer in ingresso I pacchetti in arrivo su una linea vengono memorizzati nel buffer associato a quella linea Un pacchetto rimane nel buffer fino a che la logica di arbitraggio (scheduler) non decide di servirla secondo una politica tipicamente FIFO presenta il problema head-of-line i pacchetti sono bloccati dal pacchetto di testa anche se diretti a diversa destinazione e necessario un meccanismo che consenta di mantenere i pacchetti nel buffer di ingresso fino a che non sono stati trasferiti con successo Accodamento in ingresso con finestra Viene rilassata l ipotesi di disciplina FIFO Il pacchetto che viene immesso nella rete da un a coda non e necessariamente quello di testa Si definisce una finestra di contesa per l accesso a un ingresso pari a w. W=1 corrisponde alla coda FIFO Le prestazioni aumentano all aumentare della finestra Anche con finestra di dimensione infinita tuttavia non si raggiungono le prestazioni ottimali dell accodamento in uscita Questo perche comunque si puo trasmettere una cella sola per ingresso ed alcune uscite potrebbero non essere raggiunte 7
Accodamento in uscita virtuale Virtual output queueing Risolve il problema del blocco HOL dell accodamento in ingresso Ogni coda di ingresso e logicamente divisa in N code logiche ciascuna contenente i pacchetti diretti ad una uscita Le code logiche condividono la stessa memoria fisica Il collo di bottiglia del sistema e lo scheduler che deve gestire N 2 code contemporaneamente 8