PROGRAMMIAMO
Internet - Routing table
Routing table

Per il suo funzionamento il router si basa su una tabella di instradamento (routing table) che definisce le regole per mezzo delle quali i messaggi (o più propriamente i pacchetti) devono passare da una rete all'altra.

Qui sotto viene mostrato un esempio di semplice tabella di routing di un router domestico, dotato di due interfacce di rete (eth0, interfaccia ethernet connessa alla rete locale, e pp0 connessa all'ISP):

Network Address Netmask Gateway (Next Hop) Interface
192.168.0.0 255.255.255.0 0.0.0.0 eth0
0.0.0.0 0.0.0.0 151.6.133.72 pp0

La routing table viene letta sequenzialmente, partendo dalla prima riga e procedendo verso il basso. Se l'indirizzo di destinazione corrisponde ai campi Network Address + Netmask, viene eseguita la regola indicata da Gateway (cioè il pacchetto viene instradato all'indirizzo indicato in tale campo).

La prima e la seconda colonna (Network Address e Netmask) devono essere lette insieme. Esse stanno ad indicare un indirizzo o un gruppo di indirizzi di destinazione. Per esempio considerando la prima riga della tabella precedente, 192.168.0.0 con Netmask 255.255.255.0 indica tutti gli indirizzi che iniziano con 192.168.0.x, cioè quelli appartenenti alla rete locale. La prima riga della routing table dice dunque che tutti i pacchetti che hanno un indirizzo appartenente alla rete locale non devono essere instradati (questo è il significato di 0.0.0.0 nel campo Gateway). La colonna Inteface dice appunto che questi pacchetti devono essere semplicemente passati alla interfaccia di rete locale (eth0).

L'ultima riga della tabella (0.0.0.0 con Netmask 0.0.0.0) indica qualunque destinazione. In pratica, se nessuna delle regole contenute nelle righe precedenti è stata verificata, allora viene eseguita l'ultima riga (regola di default) che indica che il pacchetto dev'essere instradato verso 151.6.133.72 (verosimilmente l'indirizzo del nostro ISP) attraverso l'interfaccia di rete pp0.

In realtà in un modem router reale la tabella di routing è spesso più complicata da interpretare, come mostra l'esempio seguente tratto da un modem-router della Sitecom:

# Destination Subnet Mask Gateway Address Device
0 151.6.133.72 255.255.255.255 0.0.0.0 pp0
1 192.168.2.0 255.255.255.0 0.0.0.0 br0
2 127.0.0.0 255.255.0.0 0.0.0.0 lo
3 0.0.0.0 0.0.0.0 151.6.133.72 pp0

La prima riga (0) dice che se viene inviato un pacchetto all'indirizzo 151.6.133.72 (la Subnet Mask 255.255.255.255 indica che si tratta di un indirizzo di host, cioè di un indirizzo IP completo di tutti i byte) esso non dev'essere instradato (campo 0.0.0.0 di Gateway) ma inviato all'interfaccia di rete pp0. L'indirizzo 151.6.133.72 corrisponde all'IP (statico) del server ISP con cui il nostro router è connesso direttamente.

La riga due invece si riferisce alla rete interna e br0 indica l'interfaccia di rete connessa con la LAN. Anche in questo caso non è necessario nessun instradamento, in quanto la richiesta può essere passata direttamente all'interfaccia di rete.

L'indirizzo 127.0.0.0 è detto indirizzo di loop back e si riferisce al cosiddetto local host (nel nostro caso il router stesso). In pratica i pacchetti con indirizzi da 127.0.0.1 a 127.0.0.254 sono inviati allo stesso router.

Infine l'ultima riga (4) serve per tutti gli altri casi: cioè se l'indirizzo fornito non corrisponde a nessuna delle regole precedenti, la richiesta viene comunque inviata a 151.6.133.72, cioè al nostro ISP.

 

Backbone router

Nel caso dei router usati per realizzare i nodi della rete Internet (backbone routers), le tabelle di instradamento sono molto più complesse. Il concetto chiave per comprendere le tabelle di instradamento è che i router conoscono gli indirizzi solo delle reti a cui sono direttamente collegati. Per ogni altro indirizzo occorre una regola di instradamento. Consideriamo per esempio la figura seguente:

Il router R2 ha due interfacce di rete eth0 (connessa con la rete 20.0.0.0) e eth1 (connessa con la rete 130.11.0.0): queste due reti sono direttamente raggiungibili dal router. Le altre reti mostrate in figura (11.0.0.0, 213.2.97.0 e 213.2.98.0) non sono invece direttamente collegate al router e dunque devono essere specificate nella tabella di instradamento.

Per comprendere una tabella di instradamento è importante tenere a mente il fatto che ogni riga rappresenta una regola e le righe vengono esaminate in successione dalla prima all'ultima, finché non viene trovata una regola corrispondente all'indirizzo (Network Address) indicato.

Per valutare se un host con indirizzo X appartiene ad una sottorete con indirizzo Y/M (Y è il Network Address e M è la Netmask) si effettua l’operazione di matching, cioè si verifica se:

X and M = Y and M

Se non viene trovata nessuna corrispondenza il messaggio non può essere instradato. Se ci sono più regole che corrispondono all'indirizzo fornito, viene scelta la regola che ha più bit in comune con l'indirizzo fornito (Longest Prefix Matching).

Network Address Netmask Gateway (Next Hop) Interface
20.0.0.0 255.0.0.0 0.0.0.0 eth0
130.11.0.0 255.255.0.0 0.0.0.0 eth1
11.0.0.0 255.0.0.0 20.0.0.5 eth0
213.2.97.0 255.255.255.0 130.11.0.7 eth1
213.2.98.0 255.255.255.0 130.11.0.7 eth1
0.0.0.0 0.0.0.0 20.0.0.5 eth0

Le prime due righe della tabella indicano i messaggi diretti alle due sottoreti a cui il router è direttamene connesso (20.0.0.0 e 130.11.0.0). In questi casi il Gateway 0.0.0.0 indica che il messaggio non deve essere instradato, ma deve semplicemente essere passato alla interfaccia di rete corrispondente.

Le successive tre righe della tabella invece specificano indirizzi appartenenti alle altre reti non direttamente collegate col router. In questi casi viene indicato, per ogni classe di indirizzi, il Gateway o Next Hop (salto successivo) cioè l'host a cui il messaggio deve essere instradato. Si noti che tali indirizzi di Gateway corrispondono ai router R1 e R3.

Molto spesso le tabelle di routing contengono anche un default gateway, cioè un indirizzo a cui inviare i pacchetti i cui indirizzi non corrispondono a nessuna delle precedenti regole. E' questo il caso dell'ultima riga della tabella di routing (l'indirizzo 0.0.0.0 con Netmask 0.0.0.0 indica qualsiasi indirizzo).

Routing statico e dinamico

Se la tabella di routing viene configurata manualmente dall'amministratore di rete, si parla di routing statico. Il routing statico è utile per reti abbastanza piccole e non troppo complesse e nelle quali non si debbano gestire frequentemente guasti o percorsi inaccessibili per diverse ragioni.

Nel routing dinamico invece il router aggiorna continuamente la propria tabella di routing in base alle informazioni ricevute dagli altri router vicini. Con questa tecnica il router è in grado di "imparare" dinamicamente quali sono i percorsi migliori da usare per instradare un messaggio ed è in grado di rispondere  ad eventuali cambiamenti nella topologia di rete (ad esempio nel caso in cui un ramo della rete non possa essere momentaneamente usato e si debba scegliere un percorso alternativo).

La figura seguente mostra graficamente come i pacchetti inviati da DTE(A) a DTE(C) possano seguire strade diverse in base alle decisioni prese dinamicamente dal router 1:

 

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it