Router di prima generazione
La nascita dei router si ha con i "router di prima generazione", i quali non erano altro se non dei normali PC modificati. L'architettura era, quindi, quella di un PC. Essi erano muniti di una serie di netwotk interface card (per ricevere i pacchetti) e di un BUS che consentiva di inserire i pacchetti in memoria. Era presente una CPU, che elaborava i dati e sceglieva le interfacce di uscita (attraverso interrupt). Anche oggi ci sono router fatti così con BUS PCI, CPU Risk e Interfacce di rete Broadcom. Il vantaggio di questa architettura è un'estrema versatilità.
La capacità di questi router è dell'ordine delle centinaia di megabit/s e, date le velocità limitate sono stati usati fino all'inizio degli anni '90.
I problemi di questa architettura sono:
-bus condiviso, che non permette a più interfacce di lavorare in parallelo. In più i pacchetti devono passare due volte sullo stesso BUS.
-accesso alla memoria, in quanto tutti i pacchetti devono essere archiviati.
-capacità di processing, in quanto la velocità è determinata solo dalla velocità dei processori o dal numero di processori.
Router di seconda generazione
I router di "seconda generazione" hanno cercato di risolvere il problema di processing, spostando il processamento anche sulle schede di rete (dette Linecard). Le linecard sono dei minipc con al loro interno un processore, memorie e routing table. Quando un pacchetto entra nella linecard, non viene inviato alla memoria centrale, ma a quella presente sulla linecard. La CPU presente sulla linecard permette di elaborare i pacchetti e effettuare le operazioni che prima erano svolte dalla CPU centrale. Nel momento in cui la CPU capisce la destinazione, viene mandato il pacchetto su un BUS condiviso, verso la linecard di uscita. I limiti di questa architettura sono:
-bus condiviso, anche se i pacchetti viaggiano una sola volta sul BUS condiviso. Il problema è che con i BUS moderni è difficile gestire più CPU, per problemi di velocità. In più è difficile raggruppare i pacchetti in gruppi di pacchetti per aumentare le prestazioni (cicli di burst).
-accesso a memoria.
E' presente anche una CPU, una memoria centrale e una routing table centrale, che è in grado di gestire e controllare tutte le linecard. Ad esempio essa è utile per gestire i pacchetti OSPF. Non ha quindi solo la funzione di forwarding come nella soluzione precedente.
Nei router di seconda generazione è stato introdotto il concetto di fast/slow path: i pacchetti vengono divisi in fast, nel caso in cui essi debbano passare da una linecard a linecard, oppure slow, nel caso in cui debbano passare dalla CPU centrale (ad esempio i pacchetti di routing). Questa è una prima ottimizzazione che tende a smistare i pacchetti in modo differente a seconda del tipo di pacchetti.
Questo tipo di router riesce ad essere abbastanza versatile, in quanto si possono trattare alcuni pacchetti "speciali" in modo diverso, mandandoli alla CPU centrale. Ad esempio se le linecard lavorano con IPv4, se si aggiorna il software della CPU centrale si possono trattare anche pacchetti IPv6, ovviamente a velocità inferiore.
Router di terza generazione
I router di terza generazione sono, come i precedenti, muniti di linecard, anche se sono collegati tra di loro mediante una Switching Fabric, in grado di gestire trasferimenti multipli. Essi sono stati molto utilizzati a partire dalla fine degli anni '90. Si ha una capacità a partire da 50Gbps. I problemi di questa architettura sono:
-accesso alla memoria, in quanto è l'operazione più onerosa in termini di tempo, in quanto i pacchetti arrivano con una frequenza maggiore, rispetto alla frequenza di archiviazione. Questo è dovuto al fatto che non si hanno a disposizione memorie abbastanza veloci da consentire l'archiviazione dei dati in ingresso in modo istantaneo. L'unico modo per non perdere pacchetti è quello di utilizzare memorie (SRAM) con un parallelismo molto alto, in modo da consentire l'archiviazione dei bit di uno stesso pacchetto in parallelo.
-processing, nel senso che è difficile programmare eccezioni o aggiungere funzionalità. Non è molto flessibile.
Switching fabric
La struttura di una switching fabric è a matrice (a linee orizzontali e verticali). Su ogni punto di intersezione è presente un interruttore che mette in corrispondenza i fili orizzontali e quelli verticali. In questo modo si possono unire n linecard, a meno che esse vogliano parlare nello stesso momento con una stessa linecard. Questa matrice permette un miglioramento delle prestazioni. Per gestire le collisione è necessario avere un arbitro, che pilota i punti di commutazione della switching fabric. Nel caso in cui questa switching fabric non sia abbastanza veloce bisogna munirla degli input/output buffer. La politica di scheduling complica l'hardware dell'arbitro.
Gestione delle code nelle switching fabric
Esistono diverse soluzioni per gestire le code. La prima, in ordine di tempo, è stata "Output queuing", che prevede che i pacchetti vengano accodati all'uscita dalla scheda. Questo implica che la switching fabric deve essere molto più veloce della interfaccia di ingresso. Avendo N ingressi la velocità della switching fabric deve essere N volte più veloce della velocità di ricezione. In più anche i buffer devono avere questa velocità.
Una seconda soluzione adottata è quella della "Input Queing", che presenta un buffer in ingresso e un arbitro, che "ferma" i dati in ingresso alla switching fabric. Questo sistema consente di diminuire la velocità dei buffer e della switching fabric La velocità è limitata alla velocità di un solo canale di ingresso. In questo modo però si ha il problema di rallentare i pacchetti a causa dell'head of line blocking. Si ha questo problema quando si hanno due o più pacchetti in ingresso che devono andare su una stessa uscita. In questo caso, infatti, l'arbitro sceglierà quale dei due pacchetti mandare per prima, bloccando di conseguenza non solo il pacchetto che causava la sovrapposizione, ma tutta la coda a cui esso è associato. Le soluzioni possibili complicherebbero non poco l'hardware.
Un terzo sistema, quello migliore, è quello del "virtual output queing", che risolve il problema dell'head of line blocking. Infatti per ogni input, vengono divise le code in base alle destinazioni. Questo complica notevolmente la dimensione dell'hardware e complica il sistema di controllo dell'arbitro (deve prendere n^2 decisioni).
Un ultimo sistema è quello di mettere i buffer all'interno della switching fabric. In particolare ne viene messo uno per ogni nodo. Questo sistema porta a un costo elevato, in quanto complica notevolmente la gestione dei Qos.
Cisco 12000
E' un apparato a 16 slot, con switching fabric centrale, in modo da diminuire i tempi di propagazione e i rumori. E' un apparato di terza generazione. Hanno cavi da 40Gigabit/Slot, con 1,28Tbps commerciali (640Gbps in ingresso e in uscita). Il consumo totale è di 20KWatt. Un problema centrale è l'areazione, per questo si sta studiando la ventilazione frontale.
Cisco CSR-1 (router 3+)
Sono composti da una serie di router. Questo porta a velocità nettamente maggiori (92Tbps). Sono tanti REC che lavorano in parallelo.
Evoluzione del traffico
Si può verificare è che il traffico raddoppia ogni anno. Secondo la legge di Moore, la velocità di processamento sta crescendo con una velocità di due volte ogni 18 mesi. La velocità di accesso alla memoria è invece il fattore più critico in quanto cresce di 0,1 volte ogni 18 mesi. Ovviamente questi dati non possono essere certi, in quanto si basano su previsioni. Questo mostra comunque, che il miglioramento delle memorie, è molto inferiore a quello della crescita del traffico. Questo porterà a un problema di memoria nel futuro.
Problematiche attuali
I principali problemi sono:
-processori, fare router con CPU migliori, per dare maggiori possibilità di implementazione (NAT, funzionalità di livello 7, possibilità di limitare alcuni servizi (p2p…))
-memoria, a causa di tempi di accesso elevati. Le cache non sono utilizzabili, in quanto il cache miss non è tollerabile (i pacchetti sono sequenziali). Ultimamente si è cercato di introdurre cache non deterministiche, in modo da garantire per la maggior parte dei pacchetti tempi minori e per una piccola parte un tempo maggiore. Un ulteriore problema è data dall'aumento delle velocità di linea, che causano un aumento della capacità di buffering.
-nuove architetture distribuite. Possibilità di suddividere il processamento su più blocchi elementari distribuiti
-consumo e dissipazione termica. In verità siccome non riusciamo più a smaltire il calore facciamo dispositivi più "ecologici".
| < Prec. | Succ. > |
|---|





