Terminologia
Nell'ambito delle reti telecomunicazione, con i termini router e gateway si fa riferimento a dispositivi con compiti specifici:
i router interconnettono reti omogenee, cioè reti che utilizzando gli stessi protocolli di basso livello
i gateway interconnettono reti eterogenee, cioè reti che utilizzano protocolli differenti; in questi casi è necessaria una conversione tra i protocolli per implementare una diversa modalità di trasporto del payload; il gateway può operare su tutti i livelli della pila OSI.
A titolo di esempio citiamo il CAN gateway, un dispositivo che consente di accedere alla rete CAN di un veicolo (autobus, camion o autovetture), senza dover conoscere la complessa strutturazione della rete sottostante.
Le officine che effettuano manutenzione, si interfacciano al gateway tramite un computer per rilevare lo stato dei singoli dispositivi.
La rete CAN collega numerosi dispositivi "vitali" del veicolo come illustrato sinteticamente dalla seguente immagine:
Quando ci si riferisce ad una rete TCP/IP il significato dei termini router e gateway cambia e la differenza diventa molto più sfumata e legata al contesto.
Genericamente si può dire che con il termine router ci si riferisce ad un oggetto fisico, concepito espressamente per interconnettere reti, mentre con il termine gateway si fa riferimento alla funzione di instradamento che può essere implementata da un router fisico o da un computer dotato di più interfacce di rete.
Va anche detto che spesso i termini sono utilizzati in modo interscambiabile, senza sottintendere alcuna differenza.
La funzione di routing
Con questo termine ci si riferisce alla funzione che consente di instradare un datagram da una interfaccia di rete di origine ad una di destinazione.
Questo instradamento può coinvolgere numerosi nodi appartenenti a reti differenti.
Il trasferimento dei datagram da un’interfaccia ad un’altra avviene per passi successivi, detti hop (salti). Il comportamento varia in funzione dei seguenti due casi:
Le interfacce di origine e destinazione appartengono alla stessa rete: in questo caso l'instradamento del datagram inviato dal mittente avviene banalmente sfruttando i servizi del Network Access. Il datagram (opportunamente frammentato) costituisce il payload del frame: quest'ultimo si propaga sulla LAN ed è indirizzato all'host di destinazione tramite il suo indirizzo MAC.
Le interfacce di origine e destinazione non appartengono alla stessa rete: in questo caso l'instradamento deve necessariamente coinvolgere uno o più router. Il datagram che l'host vuole trasmettere viene "provvisoriamente" indirizzato al router presente sulla LAN. Anche in questo caso il datagram costituisce il payload del frame: quest'ultimo si propaga sulla LAN di origine ed è indirizzato al Gateway di default (il router della LAN) tramite l'indirizzo MAC di quest'ultimo.
Il router che riceve il datagram ha l'onere di consegnare il messaggio ad un’altra interfaccia che può essere quella di destinazione o quella di un altro router. Il procedimento si itera fin quando non è raggiunta la destinazione finale.
Il meccanismo sopra descritto prevede che su ogni nodo (host o router) sia presente una tabella di instradamento o tabella di routing.
Tabelle di routing
La tabella di routing specifica come instradare i datagram a partire dall'indirizzo IP di destinazione. Una tabella ben costituita include una rotta precisa per tutti i possibili IP di destinazione.
In particolare per ogni destinazione al di fuori della rete dell'host, è specificato quale gateway deve essere raggiunto nel successivo hop.
Va precisato che, quando si configura una interfaccia di rete, oltre all'indirizzo IP e alla netmask, va obbligatoriamente specificato un Gateway di default, cioè l'indirizzo IP di un router al quale instradare tutti i datagram che non si saprebbe come instradare diversamente.
Consideriamo, come primo caso, un host (ad esempio un PC) con una sola interfaccia di rete IPv4 per la quale risulti:
Indirizzo IP: 192.168.178.27
Netmask: 255.255.255.0
Gateway di default: 192.168.178.1
La tabella di routing viene creata automaticamente, in base alla precedente configurazione, ed ha un aspetto del tipo:
La tabella mostrata in questo esempio riflette quella di un host Windows. E' possibile visualizzare la tabella di routing del proprio computer Windows aprendo una finestra prompt dei comandi ed eseguendo il comando route print.
Nella tabella ogni rotta di instradamento (route) occupa una riga.
L'algoritmo di instradamento analizza la tabella a partire dall'indirizzo IP di destinazione, alla ricerca della route da utilizzare per quello specifico indirizzo.
Le route vengono analizzate in base al valore della maschera, dalla più estesa alla meno estesa, il che dà luogo ai seguenti criteri di preferenza nella ricerca:
una route che corrisponde all'indirizzo IP di destinazione (route di host);
una route che corrisponde alla NetworkId dell'indirizzo IP di destinazione (route di rete);
la route di default.
Se non viene trovata una route corrispondente, il datagram non viene instradato.
Nella tabella, la presenza della colonna Interfaccia si giustifica con il fatto di dover implementare anche la funzione di inoltro, cioè deve essere stabilito su quale interfaccia di rete deve essere inviato il datagram.
La metrica serve a risolvere situazioni nelle quali siano configurate più route che rispondono allo stesso criterio (route di host, route di rete, route di default) per uno stesso IP: in questo caso è scelta la route con metrica inferiore. In linea di principio la metrica consente di selezionare la route più veloce in un determinato momento.
Nella colonna Gateway è riportato l'indirizzo del router della LAN oppure la dicitura On-link per indicare che il destinatario è presente nella LAN.
Precedenti versioni di Windows, nella colonna Gateway riportavano l'indirizzo dell'interfaccia corrente al posto della dicitura On-link.
In calce è mostrata la tabella di routing, sempre in stile Windows, di un computer che dispone di due interfacce di rete:
Scheda di rete 1:
Indirizzo IP: 192.168.178.48
Subnet mask: 255.255.255.0
Gateway di default: 192.168.178.1
Scheda di rete 2:
Indirizzo IP: 192.168.43.76
Subnet mask: 255.255.255.0
Gateway di default: 192.168.43.1
Tabelle di routing in stile macOS
La tabella di routing del S.O. macOS, precedentemente noto come Mac OS X, assume una forma particolare, derivata direttamente dal sistema UNIX BSD, dal quale il S.O. della Apple ha ereditato molte caratteristiche.
La documentazione ufficiale di freeBSD relativa al routing è disponibile al seguente link: https://docs.freebsd.org/en/books/handbook/advanced-networking/#network-routing.
La tabella di routing si visualizza tramite il comando netstat -r
Un esempio è seguente:
default: la prima riga nella tabella specifica la rotta di default
localhost: specifica la rotta per comunicazione in loopback con l'host
MAC address: nella tabella sono inseriti automaticamente i MAC address degli host appartenenti alla LAN. Queste entry nella tabella hanno una data di scandenza (expire)
subnet: indica l'instradamento alle sottoreti; in questo esempio 10.20.30.255 è l'indirizzo di broadcast alla rete 10.20.30.0. Le sottoreti sono indicate anche in termini di nome di dominio.
host: gli host presenti nella rete locale sono definiti tramite il MAC Address. Convenzionalmente l'interfaccia di uscita può essere quella di loopback.
224: è un riferimento alla sottorete 224.0.0.0, per il multicast.
Un ulteriore esempio
$ netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.1 UGSc 192 0 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 1 248 lo0
169.254 link#5 UCS 1 0 en0 !
192.168.1 link#5 UCS 1 0 en0 !
192.168.1.1/32 link#5 UCS 1 0 en0 !
192.168.1.1 xx:xx:xx:xx:xx:xx UHLWIir 68 1450 en0 1144
192.168.1.101 yy:yy:yy:yy:yy:yy UHLWI 0 0 en0 1073
192.168.1.103/32 link#5 UCS 0 0 en0 !
224.0.0/4 link#5 UmCS 2 0 en0 !
224.0.0.251 z:z:zz:zz:z:zz UHmLWI 0 0 en0
239.255.255.250 1:1:11:11:11:11 UHmLWI 0 540 en0
255.255.255.255/32 link#5 UCS 0 0 en0 !
Notare che normalmente per le sottoreti sono mostrati solo gli ottetti significativi in base alla classe di appartenenza. Ad esempio per gli indirizzi di classe A è mostrato solo un ottetto, per indirizzo di classe B 2 ottetti e per la classe C 3 ottetti.
La notazione CIDR definisce la sottorete nell'ambito della classe o l'indirizzo di uno specifico host (/32).
Sito: 7ecnologie
Sezione: 13. Reti
Capitolo: 03. La suite TCP/IP
Paragrafo: 02. Livello Internet
Approfondimento: 06. Routing
Indice dei capitoli: 00. Risorse - 01. Le telecomunicazioni - 02. Il modello OSI - 03. La suite TCP/IP - 04. Il cablaggio strutturato - 05. LAB - 07. Tutorial - 98. Esercizi
Indice dei paragrafi: 01. Network Access - 02. Livello Internet - 03. Livello Transport - 04. Livello Application
Indice degli approfondimenti: 01. Protocolli - 02. Classificazione degli indirizzi IP - 03. Subnetting - 04. Subnetting: esempi - 05. Ping e traceroute - 06. Routing - 07. NAT - 08. Autonomous System - 09. Carrier-Grade NAT - 10. NAT Traversal