# Protocolli e architetture di instradamento/Cenni sull'architettura degli apparati di rete

Protocolli e architetture di instradamento
Copertina Tutti i moduli · Sviluppo
    CopertinaProtocolli e architetture di instradamento/Copertina
* Algoritmi di instradamento
** Inoltro e instradamentoProtocolli e architetture di instradamento/Inoltro e instradamento
** Algoritmi di instradamentoProtocolli e architetture di instradamento/Algoritmi di instradamento
** L'algoritmo Distance VectorProtocolli e architetture di instradamento/L'algoritmo Distance Vector
** L'algoritmo Link StateProtocolli e architetture di instradamento/L'algoritmo Link State
** Instradamento gerarchicoProtocolli e architetture di instradamento/Instradamento gerarchico
** Instradamento inter-dominioProtocolli e architetture di instradamento/Instradamento inter-dominio
** Instradamento multicastProtocolli e architetture di instradamento/Instradamento multicast
* Protocolli di instradamento
** Routing Information ProtocolProtocolli e architetture di instradamento/Routing Information Protocol
** IGRP e EIGRPProtocolli e architetture di instradamento/IGRP e EIGRP
** Open Shortest Path FirstProtocolli e architetture di instradamento/Open Shortest Path First
** Instradamento inter-dominio: peering e transito in InternetProtocolli e architetture di instradamento/Instradamento inter-dominio: peering e transito in Internet
** Border Gateway ProtocolProtocolli e architetture di instradamento/Border Gateway Protocol
** Instradamento IPv6Protocolli e architetture di instradamento/Instradamento IPv6
** Instradamento multicastProtocolli e architetture di instradamento/Instradamento multicast2
** Content Delivery NetworkProtocolli e architetture di instradamento/Content Delivery Network
* Elaborazione di rete
** Cenni sull'architettura degli apparati di reteProtocolli e architetture di instradamento/Cenni sull'architettura degli apparati di rete
** Filtraggio dei pacchetti basato su softwareProtocolli e architetture di instradamento/Filtraggio dei pacchetti basato su software
** Introduzione alle Software-Defined NetworkProtocolli e architetture di instradamento/Introduzione alle Software-Defined Network
Modifica il sommario
L'architettura dei router si è evoluta nel corso del tempo per aumentarne sempre di più la capacità di elaborazione dei pacchetti:
* prima generazione (fino ad inizio 1990): inferiore a 500 Mbps;
* seconda generazione (inizio 1990): circa 5 Gbps;
* terza generazione (fine 1990): a partire da 50 Gbps;
* multi-chassis (tendenza recente): dell'ordine dei Tbps.

## Prima generazione

I router di prima generazione erano sostanzialmente dei PC modificati:
* interfacce di rete: sono delle normali NIC, in numero maggiore e di molteplici tipologie rispetto a quelle di un normale PC;
* memoria: si preferisce la memoria allo stato solido (ad es. scheda SD) perché meno soggetta a guasti rispetto a un disco fisso meccanico;
* sistema operativo: è ottimizzato specificamente per l'elaborazione del traffico di rete.

### Vantaggio

* economia di scala: usa componenti fabbricati a larga scala anziché componenti dedicati al mondo del networking.

### Svantaggi

* colli di bottiglia:
** bus condiviso:
*** slow path: ogni pacchetto transita due volte sul bus;
*** arbitraggio: una NIC per volta può usare il bus → non possono lavorare più interfacce in parallelo;
** accesso a memoria: la tabella di instradamento è memorizzata in una struttura dati nella memoria generica → gli accessi non sono così localizzati come nei PC tradizionali, e la cache è poco usata;
** capacità di elaborazione: la CPU lancia un interrupt al sistema operativo ogni volta che arriva un pacchetto;
* interfacce di rete: le schede di rete tradizionali tipicamente non hanno molte porte e supportano solo i tipi di interfacce più comuni;
* costi di manutenzione: l'uso di componenti open-source (ad es. client PPP) porta problemi di integrazione e variegate modalità di configurazione.
Attualmente questa architettura è usata per i router di fascia medio-bassa, le cui prestazioni sono adeguate per i piccoli uffici.

## Seconda generazione

I router di seconda generazione cercano di risolvere il problema delle prestazioni spostando il carico di elaborazione dalla CPU centrale alle unità periferiche: le NIC sono rimpiazzate dalle line card, schede di rete "intelligenti" che aggiungono ai componenti fisici/MAC dei moduli per l'inoltro:
* CPU: il packet processor è un processore dedicato all'elaborazione dei pacchetti "semplici";
* memoria: ogni pacchetto in arrivo viene memorizzato in una memoria locale separata da quella (generalmente TCAM) contenente la tabella di instradamento;
* tabella di instradamento: ogni tanto la tabella di instradamento aggiornata viene copiata dall'unità centrale alle line card.
I pacchetti possono seguire due strade:
* fast path: i pacchetti che rientrano nel caso tipico (ad es. IPv4) transitano una volta sola sul bus: vengono elaborati direttamente dal packet processor e vengono inviati subito all'interfaccia di uscita;
* slow path: i pacchetti meno frequenti (ad es. IPv6, OSPF) vengono affidati alla CPU centrale per un'elaborazione più sofisticata, al costo di un throughput decisamente inferiore.
Il lavoro delle line card deve essere coordinato dalla CPU centrale, su cui inoltre girano i protocolli di instradamento (ad es. OSPF), che è montata su una scheda detta supervisor nei sistemi di fascia alta.

### Vantaggi

* CPU centrale: lavora solo per i pacchetti lungo il fast path → può avere una potenza inferiore;
* ottimizzazione del fast path: i primi pacchetti della connessione seguono lo slow path, poi il sistema centrale segna la connessione come idonea al fast path e tutti i pacchetti successivi seguiranno il fast path;
* flessibilità: l'introduzione di un nuovo protocollo (ad es. IPv6) richiede solo l'aggiornamento del software nel sistema centrale.

### Svantaggio

* arbitraggio del bus condiviso: una line card per volta può usare il bus → non possono lavorare più interfacce in parallelo.

## Terza generazione

I router di terza generazione si concentrano sul problema della parallelizzazione del lavoro rimpiazzando il bus condiviso con una switching fabric (o crossbar) in grado di gestire trasferimenti multipli: una line card è collegata a un'altra line card mettendo in cortocircuito l'interruttore all'intersezione dei relativi "fili" della matrice di commutazione.
Due line card non possono essere collegate ad un'altra stessa line card allo stesso tempo → è necessario un arbitro che pilota i punti di commutazione e risolve le situazioni di contesa senza collisioni.
Quando le interfacce di uscita sono lente nell'invio dei pacchetti rispetto alla velocità di commutazione della switching fabric, i pacchetti possono essere accodati in diversi modi:
* output queuing: i buffer sono posizionati sulle interfacce di uscita → caso peggiore: switching fabric N volte più veloce della velocità di ricezione, con N = numero di interfacce di ingresso;
* input queuing: i buffer sono posizionati sulle interfacce di ingresso → la velocità di commutazione della switching fabric non dipende dal numero di interfacce di ingresso, ma soffre il problema dell'head-of-line blocking:
** due pacchetti in due code di ingresso diverse sono destinati alla stessa coda di uscita;
** l'arbitro fa passare uno dei pacchetti bloccando l'altro;
** tutti i pacchetti successivi nella coda di ingresso, anche quelli destinati a code di uscita libere, devono aspettare il "primo della fila";
* virtual output queuing: risolve il problema dell'head-of-line blocking mantenendo ad ogni ingresso una coda per uscita;
* buffered fabric: i buffer sono posizionati all'interno della crossbar in corrispondenza dei nodi di commutazione.

### Svantaggi

* arbitro:
** costituisce un collo di bottiglia, soprattutto in caso di decisioni frequenti dovute a pacchetti piccoli (ad es. ATM);
** le politiche di schedulazione per la qualità del servizio possono complicarne l'hardware;
* buffer per le code: sono memorie costose perché devono essere veloci.

## Router multi-chassis

I router multi-chassis puntano sulla scalabilità: più rack affiancati sono collegati in modo da apparire come un router unico:
* la potenza di elaborazione è moltiplicata per il numero di chassis;
* c'è più spazio fisico per le interfacce di rete → a uno stesso apparato può essere collegato un gran numero di link;
* l'instradamento è concentrato in una singola centrale (come nel mondo telefonico) anziché in tanti piccoli router sparsi per la rete → la centrale dati può servire tutti gli utenti in un'area geografica estesa (ad es. Piemonte).

## Service card

Un'altra tendenza recente punta sulla flessibilità: i router non sono più degli apparati puramente di livello 3, poiché stanno aggiungendosi molte altre funzioni che non appartengono al livello 3, come cache, firewall, monitor di rete, ACL, ecc. L'obiettivo è personalizzare il servizio offerto dagli ISP, facendo ritornare una parte del business attualmente in mano ai content provider.
Una soluzione oggi comune sono le service card, line card arricchite con servizi a valore aggiunto preconfigurati dal costruttore. Le service card non sono però così flessibili: non essendo programmabili, per aggiungere un servizio occorre acquistare una nuova service card.

## Maggiori problematiche attuali

Il throughput ormai non è più una problematica attuale, ma le maggiori problematiche attuali sono:
* costi di acquisto: per ridurre il costo degli apparati di rete si sta passando da componenti dedicati a componenti general-purpose prodotti su larga scala:
** le CPU di massa hanno cicli di vita del prodotto troppo brevi e tempi di ricambio troppo lunghi → Intel ha proposto di recente delle CPU embedded con cicli di vita del prodotto più lunghi e tempi di ricambio più brevi rispetto alle CPU di massa;
** nei sistemi dedicati il programmatore poteva sfruttare la gerarchia di memorie, memorizzando la RIB in una memoria lenta e la FIB in una memoria veloce (ad es. TCAM), mentre i sistemi general-purpose decidono autonomamente che cosa mettere nella cache → occorre rivolgersi alle GPU, dotate di memorie partizionate ma di versatilità di elaborazione limitata;
* costi operativi: il consumo di elettricità e la dissipazione termica possono essere significativi;
* flessibilità: bisogna muoversi verso la separazione delle funzioni di controllo dall'hardware fisico: Protocolli e architetture di instradamento/Introduzione alle Software-Defined NetworkC3. Introduzione alle Software-Defined Network.