# Router

Un router (lett. "instradatore"), è un dispositivo di rete che si occupa di inoltrare pacchetti di dati attraverso reti informatiche.
I dati trasmessi attraverso una rete, come ad esempio le pagine web o la posta elettronica, viaggiano sotto forma di pacchetti. Il router ha lo scopo di dirigere il traffico di tali pacchetti nel loro tragitto, sia che esso debba attraversare differenti reti locali private, o la rete Internet globale. Un pacchetto viene tipicamente inoltrato da un router a un altro router attraverso le reti che costituiscono un internetwork, come ad esempio Internet, fino a quando non raggiunge il nodo di destinazione.
Un router, per potersi definire tale, deve essere collegato ad almeno due linee dati provenienti da diverse reti IP. Quando un pacchetto dati arriva su una delle linee, il router legge l'Indirizzo IP presente all'interno dell'intestazione del pacchetto per determinare quale sarà la sua destinazione finale. In seguito, confronta questa informazione con il contenuto della propria tabella di routing e inoltra il pacchetto attraverso la successiva rete, tappa del suo viaggio.
I tipi di router più familiari sono i gateway di Internet domestici, che si occupano di inoltrare i pacchetti IP tra i computer collegati alla loro interfaccia LAN (fisicamente costituita dalle porte dello switch Ethernet posto sul retro dell'apparato e dall'interfaccia Wi-Fi, le quali sono amalgamate assieme attraverso un'interfaccia bridge preconfigurata) e l'accesso a Internet, proveniente da una singola interfaccia WAN.
I router più sofisticati, come quelli per il settore Enterprise, connettono grandi aziende o ISP fino ai router di trasporto che inoltrano dati ad alta velocità attraverso le linee in fibra ottica delle dorsali di Internet.
Un router può essere costruito usando le stesse parti generiche con cui di solito si assemblano i personal computer, ma solitamente sono dei computer costruiti per un impiego specifico. I primi modelli di router utilizzavano l'inoltro basato su software, effettuato dalla CPU. In seguito, i costruttori hanno iniziato a utilizzare circuiti integrati per applicazioni specifiche per incrementare le prestazioni o aggiungere funzionalità avanzate, come ad esempio il filtraggio dei pacchetti.

## Funzionamento

Quando diversi router si trovano assieme all'interno di reti interconnesse allo scopo di smistarne il traffico, essi possono scambiarsi le informazioni riguardanti le reti di destinazione utilizzando un protocollo di routing. Ciascun router costruisce una tabella di routing, una tabella contenente in ciascuna riga l'indirizzo IP della rete di destinazione, (pertanto il primo indirizzo di ciascuna subnet calcolabile utilizzando il metodo CIDR, di norma non assegnabile ad alcun host), e il next-hop, che può essere o l'indirizzo IP di un altro router direttamente connesso, o il nome di un'interfaccia fisica presente sul medesimo router che intende instradare il pacchetto. Le voci della tabella di routing così composte costituiscono le c.d. rotte.
Il software che viene eseguito dal router è costituito da due blocchi logici di funzionamento che operano simultaneamente, chiamati plane:
* Control plane: Logica che permette a un router di mantenere una tabella di routing che elenca quale rotta deve essere usata per inoltrare un pacchetto dati e attraverso quale interfaccia. Può farlo attraverso direttive configurate manualmente, chiamate rotte statiche, o imparando le rotte in maniera dinamica attraverso un protocollo di routing. Le rotte statiche e dinamiche vengono memorizzate nella tabella di routing. La logica control plane rimuove le direttive non essenziali dalla tabella e costruisce una Forwarding Information Base (FIB) utilizzabile dal forwarding plane.
* Forwarding plane: Questa unità inoltra i pacchetti dati in entrata e in uscita alle interfacce corrette. Funziona leggendo l'intestazione di ogni pacchetto non appena arriva, e se presente una corrispondenza con le voci della FIB fornite dal control plane, dirige il pacchetto all'interfaccia di uscita in essa specificata.

## Applicazioni

Un router può essere equipaggiato con vari tipi di connessioni di livello fisico, come ad esempio cavi di rame, fibra ottica, o antenne per la trasmissione radio. Può altresì supportare diversi standard di trasmissione appartenenti al livello di rete. Ciascuna interfaccia di rete viene utilizzata per permettere ai pacchetti di essere instradati da un sistema di trasmissione all'altro. I router possono anche essere utilizzati per connettere due o più sottoreti, gruppi logici di dispositivi di rete ciascuno con un differente prefisso di rete.
I router possono fornire connettività indipendente da Internet tra edifici di aziende collocati in diverse aree geografiche, o tra le aziende e Internet, o tra le reti dei fornitori di servizi internet. I router più grandi (come il Cisco CRS-1, Juniper PTX o Huawei NE9000) interconnettono i vari ISP, o possono essere usati nelle reti di grandi aziende. I router più piccoli forniscono connettività alle reti delle case e degli uffici.
All'interno delle aziende è possibile trovare router di tutte le dimensioni. I router più potenti si trovano solitamente presso le sale macchine degli ISP e negli edifici universitari e della ricerca. Anche le grandi aziende hanno bisogno di router potenti per tenere testa alle richieste sempre più crescenti di traffico intranet. Per interconnettere i router nelle grandi reti, viene utilizzato comunemente il seguente modello gerarchico.

### Accesso, distribuzione e trasporto

I router di accesso, inclusi quelli domestici, si trovano solitamente nelle case e nei siti dei clienti come le filiali che non hanno bisogno di routing gerarchico per conto loro. In genere, sono ottimizzati per tenere bassi i prezzi. La maggior parte dei router domestici esegue un sistema operativo basato su Linux, spesso limitato nella funzionalità dal produttore o dal fornitore della connettività, su alcuni di essi è possibile sostituirlo con un firmware libero e aperto come OpenWrt, DD-WRT o Tomato, sempre basati su Linux.
I router di distribuzione aggregano il traffico proveniente da diversi router di accesso. Solitamente sono responsabili di mettere in atto la Quality of Service attraverso una Wide Area Network, pertanto potrebbero essere dotati di un quantitativo considerevole di memoria, interfacce WAN multiple, e complesse routine di elaborazione dati integrate nell'hardware.
Nelle grandi aziende, un router di trasporto potrebbe fungere da dorsale ripiegata interconnettendo i router di distribuzione di diversi edifici, o di differenti campus aziendali, o da altri siti aziendali più vasti.

### Sicurezza

La raggiungibilità dalle reti esterne deve essere considerata con cura come parte della strategia di sicurezza della rete locale. Un router potrebbe includere un firewall, essere in grado di creare o connettersi a una VPN, in caso contrario tali funzioni possono essere svolte da altri dispositivi. La traduzione degli indirizzi di rete è una funzionalità che ha l'effetto secondario di limitare la raggiungibilità delle connessioni dall'esterno, viene pertanto considerata da alcuni, seppur erroneamente, una caratteristica di sicurezza.

### Classificazione dei router in base ai differenti tipi di rete

I router si possono distinguere in base alla rete sulla quale operano. Un router in una Rete Locale (LAN) di una singola organizzazione viene chiamato interior router. Un router che opera su una tratta del provider o su una dorsale di internet viene chiamato exterior router. Quando un router mette in comunicazione una LAN con Internet o con una rete geografica (WAN) viene chiamato border router, o gateway.

### Connettività verso internet e uso interno

Alcuni router usati dagli ISP e dalle aziende più grandi sono soliti scambiarsi le rotte attraverso il protocollo di routing BGP. La RFC 4098 definisce una classificazione dei router BGP in base alle funzioni che svolgono:
* Edge router (chiamato anche provider edge router): Situato al confine della rete di un ISP. Questo router usa Exterior Border Gateway Protocol (EBGP) per scambiare le informazioni di routing con i router situati presso un altro ISPs o l'Autonomous System di una grande azienda.
* Subscriber edge router (chiamato anche customer edge router): Situato al confine della rete dei clienti di grandi dimensioni, anch'esso utilizza EBGP verso l'autonomous system del proprio provider. Viene tipicamente usato nelle grandi organizzazioni.
* Inter-provider border router: Un router BGP che mantiene sessioni BGP con altri router BGP negli gli Autonomous Systems di molti altri ISP contemporaneamente.
* Core router: Risiede all'interno di un Autonomous System come dorsale per trasportare il traffico tra gli edge router.

## Instradamento

Lo scopo principale di un router è quello di interconnettere reti multiple e inoltrare i pacchetti destinati alle reti direttamente connesse o più remote. Un router viene considerato un dispositivo di livello 3 perché la sua decisione primaria è basata sulle informazioni dei pacchetti IP, che sono di livello 3, nello specifico l'indirizzo IP di destinazione. Quando un router riceve un pacchetto, cerca all'interno della propria tabella di routing per trovare la migliore corrispondenza tra l'indirizzo IP di destinazione e uno degli indirizzi nella tabella di routing. Quando viene trovata una corrispondenza, il pacchetto viene incapsulato dentro un frame del livello datalink dello stesso tipo utilizzato dall'interfaccia determinata dalla tabella di routing, sulla quale verrà trasmesso. Un router di solito non guarda dentro il payload di un pacchetto, per effettuare una decisione di routing sono necessari solo gli indirizzi di livello 3 contenuti nell'header, e opzionalmente, altri suggerimenti in esso presenti, come la IP QoS. Nel mero instradamento IP, i router sono progettati per minimizzare le informazioni sullo stato associate ai pacchetti individuali. Una volta che un pacchetto viene inoltrato, il router non memorizza alcuna informazione storica su di esso.
La tabella di routing può contenere informazioni provenienti da un certo numero di fonti, come le rotte statiche o di default configurate manualmente, o le voci dinamiche inserite dai protocolli di routing attraverso i quali il router impara le rotte dagli altri router. Una rotta di default viene usata per instradare tutto il traffico per il quale non è presente una destinazione specifica nella tabella di routing; il suo utilizzo è comune, nonché necessario, nelle piccole reti, come quelle di casa o dei piccoli uffici dove la rotta di default invia tutto il traffico non locale verso i router dell'Internet service provider. La rotta di default può essere configurata manualmente, appresa dagli altri protocolli di routing, o essere ottenuta tramite DHCP.
Un router può eseguire più protocolli di routing allo stesso tempo. Questa cosa è particolarmente vera quando connette assieme parti di una rete che eseguono protocolli di routing differenti: se ciò si verifica, si può usare la ridistribuzione (in genere selettivamente) per condividere le informazioni tra i protocolli di routing che girano sullo stesso router.
Oltre a decidere su quale interfaccia verranno inoltrati i pacchetti, scelta influenzata primariamente attraverso la tabella di routing, un router deve anche gestire la congestione quando i pacchetti arrivano con un tasso maggiore di quello che il router può elaborare. Le tre opzioni disponibili sono, tail drop, random early detection (RED), e weighted random early detection (WRED). Il tail drop è il più semplice dei tre: il router scarta semplicemente tutti i pacchetti che eccedono la dimensione dello spazio nel suo buffer. La RED scarta i datagrammi in maniera probabilistica quando la dimensione della coda eccede una porzione preconfigurata del buffer, fino a raggiungere un massimo predeterminato, raggiunto il quale inizia a scartare tutti i pacchetti in arrivo (come nel tail drop). La WRED può essere configurata per scartare i pacchetti in maniera più reattiva in base al tipo di traffico.
Un'altra funzione che un router può svolgere è quella di classificare il traffico e decidere quali pacchetti elaborare per prima. Questo viene gestito attraverso la Quality of Service, che è critica quando viene implementato il VoIP, per non introdurre una latenza eccessiva.
Ancora un'altra operazione che un router può effettuare viene chiamata policy-based routing, con la quale le decisioni di routing vengono influenzate da delle regole speciali appositamente costruite .
Alcune di queste funzioni possono essere svolte da un ASIC per evitare l'overhead dello scheduling sulla CPU per elaborare i pacchetti, altre devono essere svolte dalla CPU perché alcuni pacchetti richiedono un'attenzione speciale che non può essere fornita da un ASIC.

## Caratteristiche

Caratteristica fondamentale dei router è l'utilizzo di indirizzi di livello 3 (rete) del modello OSI (corrispondente al livello IP dello stack TCP/IP), a differenza dello switch o del bridge che instradano a livello locale sulla base degli indirizzi di livello 2 (collegamento dati) detti indirizzi MAC e dell'hub che ripete i segnali elettrici del livello fisico (livello 1). Gli elementi della tabella di instradamento (o routing table) non corrispondono necessariamente a singoli calcolatori ma intere reti (SubNet_ID), ovvero sottoinsiemi anche molto ampi dello spazio di indirizzamento. Questo è fondamentale per la scalabilità delle reti, in quanto permette di gestire reti anche molto grandi facendo crescere le tabelle di instradamento in modo meno che lineare rispetto al numero di host.
Un router può interconnettere reti di livello 2 eterogenee, come ad esempio reti LAN, con un collegamento geografico in tecnologia X.25, Frame Relay o ATM. Inoltre, rispetto a un bridge, un router è in grado di bloccare il traffico broadcast.
In ogni caso sia che operi un instradamento verso il successivo router (next hop) che un instradamento nella rete locale adiacente, le funzionalità di livello inferiore dedicate al trasporto dati avvengono sempre con il particolare protocollo di trasporto del collegamento geografico realizzato per interconnetere due o più sottoreti (es. X.25, Frame Relay e ATM) oppure direttamente con quello della sottorete attraversata (ad es. Ethernet tramite protocollo ARP).
Dal punto di vista fisico i router non sono altro che sistemi di elaborazione dedicati a un solo scopo (special purpose) cioè indirizzamento/instradamento di pacchetti e quindi possono essere normali computer che fanno girare un software apposito (gateway), o – sempre più spesso – apparati (hardware e software) specializzati a questo solo scopo. I router di fascia più alta basati su architetture hardware specializzate sono progettati per ottenere prestazioni wire speed, letteralmente alla velocità della linea: un router wire speed può infatti inoltrare pacchetti alla massima velocità delle linee cui è collegato. Sono questi ultimi i router interni alla rete di trasporto.
I Router di fascia media e alta hanno normalmente una costruzione modulare, che permette di aggiungere interfacce verso reti di tipo diverso secondo la necessità.
I moderni router sono IP/MPLS cioè possono instradare pacchetti sia a livello IP cioè senza connessione consultando la tabella di routing, sia tramite MPLS cioè con etichettatura per la creazione eventuale di connessioni all'interno della rete di trasporto.

### Configurazione

In generale i router, in quanto sistemi embedded, hanno il loro sistema operativo e necessitano di essere configurati manualmente da parte dell'amministratore di rete (specifica delle interfacce di rete, abilitazione protocolli e servizi, scheduling del traffico per qualità di servizio etc.) non essendo dispositivi plug and play. A seconda della tipologia del router, per essere configurato esso fornisce un'interfaccia basata su web (accessibile digitando l'indirizzo del gateway nel browser) o attraverso un'apposita console a riga di comando su porta seriale (è il caso ad esempio dei router Cisco Systems, con sistema operativo IOS, e dei router Juniper Networks). Tipicamente questi sistemi sono configurabili da remoto tramite terminale. Si può inoltre definire una lista di controllo degli accessi.
Successivamente per garantire la massima affidabilità e lo sfruttamento ottimale dei collegamenti in caso di reti complesse costituite da molte sottoreti diverse e variamente interconnesse, i router possono costruire le loro tabelle di instradamento del tutto autonomamente e in modo dinamico, scambiandosi periodicamente informazioni su come raggiungere le varie reti che collegano l'un l'altro, in funzione dei guasti sui collegamenti, comprese le eventuali nuove sottoreti. Per fare questo sono stati messi a punto dei protocolli di routing appositi, come OSPF, RIP e BGP, attraverso i quali i router si scambiano informazioni sulle reti raggiungibili. In alternativa è pur sempre idealmente possibile, ma non sempre effettivamente realizzabile, una configurazione delle tabelle di routing IP in maniera manuale e statica sempre da parte dell'amministratore di rete se il numero di sottoreti cui è connessa una certa sottorete è basso.

### Funzionamento

Come per lo switch esistono più tipologie di instradamento che possono essere utilizzate da un router:
* cut-through
* store and forward
Nella prima tipologia il router si limita a leggere l'indirizzo IP del destinatario e quindi manda il contenuto del pacchetto IP contemporaneamente alla sua lettura. In questo caso l'inoltro dei datagrammi non attende la ricezione completa dello stesso. Possono essere impiegati solamente nel routing simmetrico ovvero dove trasmettitore e ricevitore operano alla stessa velocità.
Nei router store-and-forward invece il pacchetto IP viene immagazzinato nei buffer e poi trasmesso: questo consente un eventuale adattamento della velocità del flusso di dati entranti alla velocità di trasmissione della linea o collegamento in uscita con un effetto di accodamento dei pacchetti in coda. Questo meccanismo consente di evitare entro certi limiti la perdita di pacchetti in situazioni critiche di congestione e la conseguente gravosa operazione di richiesta di ritrasmissione da parte di TCP con sensibile ritardo aggiuntivo, al prezzo però di un ritardo aggiuntivo di memorizzazione (latenza) che può causare jitter in una comunicazione dati a pacchetto.
Ovviamente i processi di elaborazione per l'indirizzamento e l'instradamento introducono dei ritardi aggiuntivi sulla linea di uscita, tipicamente nell'ordine dei millisecondi.

## Le prestazioni

In quanto sistemi di elaborazione le prestazioni dei router sono riconducibili alle loro capacità di memorizzazione e processamento o elaborazione: da tale velocità dipenderà il ritardo aggiuntivo di elaborazione e anche la velocità di trasmissione sui link di uscita. Se tale capacità è inferiore alla capacità di trasferimento della linea quest'ultima non potrà essere sfruttata a pieno nelle sue risorse trasmissive e quando ciò accade il router si comporta da collo di bottiglia per la trasmissione. Inoltre il router può incorrere in congestione quando il traffico in ingresso è maggiore del traffico da esso smaltibile con effetti di perdita di pacchetti delle varie trasmissioni se il relativo buffer di memoria si satura. In generale si può distinguere tra router di bordo (edge router) e router interni (core router) con differenti capacità di routing/trasmissione.

## Aspetti gestionali
### Costi

Ovviamente i costi di un router sono superiori a quelli di apparati di rete di livello inferiore della pila ISO/OSI quali switch, bridge e hub a causa delle maggiori complessità/funzionalità di elaborazione e memoria richieste. Dato l'utilizzo sempre maggiore di internet nella vita quotidiana, soprattutto tra i giovani, si suppone che anche un incremento sostanziale del costo non abbatterebbe affatto le vendite.

### Manutenzione

Tipicamente un guasto o rottura di un router per sovraccarico di traffico è un evento critico non solo per il tratto di rete immediatamente coinvolto, ma anche per i router delle tratte adiacenti, i quali infatti devono assorbire il traffico proveniente dal router guasto col rischio di vedere aumentata anch'essi la probabilità di guasto con un effetto a catena sugli altri router che aumenta all'aumentare dei router fuori uso. Si ha cioè una situazione tipica di guasti tra loro correlati o dipendenti. I guasti o malfunzionamenti di rete possono essere superati/aggirati con metodiche e tecniche di protezione di rete.
Invece, quando un eccesso di "rumore" nella rete o una prolungata assenza di dati cagionano l'interruzione temporanea di funzionamento, il riavvio del dispositivo corregge quasi sempre l'anomalia.

## La visualizzazione dei router coinvolti

Per visualizzare l'elenco dei router attraversati durante l'invio di un pacchetto in rete i sistemi operativi mettono a disposizione comandi da digitare nella shell di sistema per l'applicazione di traceroute ovvero tracciamento dei router (per sintassi e ulteriori spiegazioni vedere il link apposito).