Tabella di routing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Annullata la modifica 110815226 di 37.160.226.56 (discussione)
Etichetta: Annulla
Annullata la modifica 144065482 di 91.187.201.38 (discussione)
Etichetta: Annulla
 
(15 versioni intermedie di 9 utenti non mostrate)
Riga 1:
{{S|teorie dell'informatica|telecomunicazioni}}
[[File:Sample_network.svg|thumb|upright=1.4|Esempio di rete con [[router]], [[hub (informatica)|hub]] e relative tabelle di instradamento]]
Una '''tabella di routing''' (in italiano '''tabella di instradamento'''), in [[informatica]], è un [[database]], memorizzato in un [[router]] o in un [[host]], che elenca le rotte di destinazione di una data [[subnet|rete]] e in molti casi una metrica di tale rotta<ref>{{Cita web|autore = |url = http://www.linfo.org/routing_table.html|titolo = Routing table|accesso = 07.04.2015|editore = The Linux Information Project|data = 09.10.2005}}</ref> (e.g. legata alla distanza). La tabella contiene informazioni sulla [[Topologia di rete|topologia]] della rete immediatamente circostante e la sua costruzione è obiettivo dei [[protocolli di routing]]. [[Instradamento statico|Le rotte statiche]] sono elementi della tabella di routing definiti in maniera non automatica, in genere fissate da un operatore.
Una '''tabella di routing''' (in italiano '''tabella di instradamento'''), chiamata anche '''routing information base (RIB),''' in [[informatica]], è una [[Tabella|tabella di dati]], memorizzata in un [[router]] o in un [[host]], che elenca le rotte di destinazione di una data [[subnet|rete]] e in molti casi la metrica (distanza migliore) di ciascuna rotta presente<ref>{{Cita web|autore = |url = http://www.linfo.org/routing_table.html|titolo = Routing table|accesso = 07.04.2015|editore = The Linux Information Project|data = 09.10.2005}}</ref> (a scopo informativo). La tabella contiene informazioni sulla [[Topologia di rete|topologia]] della rete immediatamente circostante.
 
La costruzione della tabella di routing è un compito affidato alle sorgenti di informazioni di routing, come ad esempio i [[protocolli di routing]], il singolo router che è a conoscenza degli indirizzi IP assegnati alle proprie interfacce (le c.d rotte ''direttamente connesse)'', o l'essere umano che, conoscendo le rotte verso destinazioni specifiche, le inserisce manualmente nella configurazione del router (in questo caso prendono il nome di [[Instradamento statico|''rotte statiche'']]).
 
== Descrizione ==
Una tabella di routing funziona in maniera simile al [[servizio postale]]. Ogni volta che un nodo di una rete deve inviare [[Pacchetto (reti)|pacchetti di dati]] ad un altro nodo, deve prima conoscere '''''dove''''' inviarli. Se il nodo di invio non è connesso direttamente al nodo di destinazione, deve inviare i pacchetti per mezzo di altri nodi che si trovano attraverso il nodo di destinazione finale. Ogni nodo intermedio ha quindi bisogno di tenere traccia delle rotte per poter decidere in quale direzione instradare i pacchetti, e a tale scopo utilizza una tabella di routing. Una tabella di routing è un database che tiene traccia dei percorsi, come una [[carta geografica]].
[[File:Sample_network.svg|thumb|right|Esempio di rete con [[router]], [[hub (informatica)|hub]] e relative tabelle di instradamento]]
Ogni volta che un nodo di una rete deve inviare dati ad un altro nodo, deve prima sapere dove inviarli. Se il nodo di invio non è connesso direttamente al nodo di destinazione, invierà il dato al gateway della rete di appartenenza, che poi stabilisce come indirizzare il "pacchetto" dati alla destinazione corretta. Ogni gateway ha quindi bisogno di tenere traccia delle rotte necessarie all'instradamento dei pacchetti di dati e, per questo motivo, si utilizza una tabella di routing. Una tabella di routing è quindi un database che tiene traccia dei percorsi.
 
La tabella di routing è una struttura dati memorizzata nella [[RAM]], che viene utilizzata per memorizzare informazioni sulle rotte relative alle reti ''direttamente connesse'' e alle reti remote. Essa contiene le associazioni tra l'<u>indirizzo IP che identifica un'intera rete</u> e il <u>next-hop</u>. Queste associazioni dicono ad un router che una particolare destinazione può essere raggiunta in modo ottimale trasmettendo i pacchetti a un router specifico che rappresenta la tappa successiva (appunto ''next-hop'') sulla strada verso la destinazione finale.
Con il routing hop-by-hop, ciascuna tabella di routing elenca, per tutte le destinazioni raggiungibili, l'indirizzo del dispositivo successivo lungo il percorso verso tale destinazione. Supponendo che le tabelle di routing siano coerenti, il semplice algoritmo di inoltro pacchetti per il prossimo hop di destinazione è sufficiente quindi a fornire i dati per raggiungere qualsiasi punto di una rete. Hop-by-hop è la caratteristica fondamentale di IP Internetwork Layer<ref>{{Cita web|autore = |url = https://www.ietf.org/rfc/rfc1812.txt|titolo = RFC_1812 Requirements for IP Version 4 Routers|accesso = 07.04.2015|editore = Network Working Group|data = 01.06.1995}}</ref>.
 
Con il routing hop-by-hop, caratteristica fondamentale di IP Internetwork Layer<ref>{{Cita web|url=https://www.ietf.org/rfc/rfc1812.txt|titolo=RFC_1812 Requirements for IP Version 4 Routers|autore=|editore=Network Working Group|data=01.06.1995|accesso=07.04.2015}}</ref>, una tabella di routing elenca, per ciascuna delle destinazioni raggiungibili, l'indirizzo del dispositivo successivo lungo il percorso verso tale destinazione. Supponendo che le tabelle di routing siano coerenti, la semplice routine di inoltro dei pacchetti attraverso il successivo indirizzo di destinazione è sufficiente a raggiungere qualsiasi punto di una rete.
La funzione principale di un router è di trasmettere un pacchetto verso la sua rete di destinazione(l'indirizzo IP di destinazione del pacchetto). Per fare questo, un router deve cercare le informazioni di instradamento memorizzato nella tabella di routing.
 
Una rete connessa direttamente è una rete che è collegata direttamente ad una delle interfacce del router. Quando vengono assegnati un indirizzo di rete e una lunghezza di prefisso (subnet mask) a un'interfaccia di un router, l'interfaccia stessa diventa un [[host]] collegato su quella rete. L'indirizzo di rete dell'interfaccia (assieme al nome e al numero della stessa) viene inserito nella tabella di routing come una rete connessa direttamente.
Una tabella di routing è un file di dati in [[RAM]], che viene utilizzata per memorizzare informazioni di rotta sulle reti connesse direttamente e sulle reti remote. La tabella di routing contiene le associazioni Network/Next Hop. Queste associazioni dicono ad un router che una particolare destinazione può essere raggiunta in modo ottimale con l'invio del pacchetto a un router specifico che rappresenta il "next hop" sulla strada verso la destinazione finale.
 
Una rete connessa direttamenteremota è una rete che non è collegata direttamente adal unarouter dellee interfaccepertanto, delpuò router.essere Quandoraggiunta unasolamente interfacciainviando delil pacchetto a un altro router. èLe configuratavoci condella l'indirizzotabella di reterouting (indirizzorelative IPalle ereti subnetremote mask),possono essere l'interfacciaaggiunte diventada un hostprotocollo collegatodi su[[Protocollo quelladi rete.routing#Algoritmi L'indirizzoadattivi|routing didinamico]] reteo dell'interfacciaconfigurando èrotte inseritostatiche. nellaI tabellapercorsi didinamici routingsono comele unarotte reteper connessareti direttamente.remote Quandoapprese unautomaticamente dal router, inoltrautilizzando un pacchettoprotocollo adi unrouting host,dinamico. taleLe hostrotte èstatiche sullasono stessale reterotte delconfigurate routermanualmente (reteda connessaun direttamente)amministratore di rete.
 
Una rete remota è una rete che non è collegata direttamente al router. In altre parole, una rete remota è una rete che può essere raggiunto solo inviando il pacchetto a un altro router. Reti remote vengono aggiunte alla tabella di routing utilizzando un protocollo di [[Protocollo di routing#Algoritmi adattivi|routing dinamico]] o configurando rotte statiche. I percorsi dinamici sono le rotte per reti remote apprese automaticamente dal router, utilizzando un protocollo di routing dinamico. Le rotte statiche sono le rotte configurate manualmente da un amministratore di rete.
 
Le tabelle di routing sono inoltre un aspetto chiave per determinate operazioni di sicurezza, come ad esempio uRPF (unicast [[reverse path forwarding]])<ref>{{Cita web|autore = |url = ftp://ftp.rfc-editor.org/in-notes/rfc3704.txt|titolo = RFC 3704 Ingress Filtering for Multihomed Networks|accesso = 07.04.2015|editore = Network Working Group|data = 01.03.2004}}</ref>. In questa tecnica, che ha diverse varianti, il router guarda, nella tabella di routing, l'indirizzo di origine del pacchetto. Se non esiste nessun percorso all'indietro verso l'indirizzo sorgente, il pacchetto si presume essere malformato o proveniente da un attacco [[denial of service]] rete e viene scartato.
La necessità di registrare percorsi da un gran numero di dispositivi e lo spazio di archiviazione limitato rappresentano una sfida importante nella costruzione di tabella di routing. In Internet, la tecnologia di aggregazione indirizzo attualmente dominante è uno schema chiamato [[Supernetting#CIDR|CIDR]] (Classless Inter-Domain Routing).
 
== Difficoltà ==
Le tabelle di routing sono inoltre un aspetto chiave per determinate operazioni di sicurezza, come ad esempio uRPF (unicast reverse path forwarding)<ref>{{Cita web|autore = |url = ftp://ftp.rfc-editor.org/in-notes/rfc3704.txt|titolo = RFC 3704 Ingress Filtering for Multihomed Networks|accesso = 07.04.2015|editore = Network Working Group|data = 01.03.2004}}</ref>. In questa tecnica, che ha diverse varianti, il router guarda, nella tabella di routing, l'indirizzo di origine del pacchetto. Se non esiste nessun percorso all'indietro verso l'indirizzo sorgente, il pacchetto si presume essere malformato o coinvolti in un attacco alla rete ed è rimosso.
La necessità di memorizzare un gran numero di rotte in uno spazio di archiviazione limitato rappresenta una sfida importante nella costruzione della tabella di routing. Per quanto riguarda gli indirizzi [[IPv4]], la tecnologia di suddivisione attualmente dominante è un metodo chiamato [[Supernetting#CIDR|CIDR]] (Classless Inter-Domain Routing). Per risparmiare spazio nella tabella di routing e velocizzare i lookup, i protocolli di routing possono aggregare simbolicamente le reti per le quali non esiste ambiguità di destinazione in una [[Supernetting|supernetwork]], (chiamata talvolta ''rotta aggregata'', o ''summary'') e inserire quella nella tabella di routing al posto delle numerose rotte individuali che essa rappresenta.
 
=== Contenuti ===
La tabella di routing è costituito da almeno tredue campi di informazione:
# l'ID di rete: cioè la sotto-rete di destinazione;
# costo/metrica: cioè il costo o metrica del percorso attraverso cui il pacchetto deve essere inviato (Le metriche possono essere basate su informazioni quali la larghezza di banda, numero di hop, costo del percorso, il ritardo, carico, Maximum Transmission Unit, affidabilità e costi di comunicazione);
# salto successivo: Il salto successivo o gateway, è l'indirizzo della stazione successiva in cui il pacchetto deve essere inviato sulla strada verso la sua destinazione finale.
In base alle applicazioni e all'implementazione, potrebbe anche contenere valori aggiuntivi che aumentano il livello di precisione nella selezione del percorso
 
# informazioni sullo stato della rotta: Per esempio, il flag U indica che una rotta IP è operativa
# costo/metrica: il costo del percorso attraverso cui il pacchetto deve essere inviato (le metriche possono essere basate su informazioni quali la larghezza di banda, numero di hop, costo del percorso, il ritardo, carico, Maximum Transmission Unit, affidabilità e costi di comunicazione)
# criteri di filtraggio: alcune tabelle di routing mostrano se ad una rotta è associata una [[access control list]]
# interfaccia: il nome dell'interfaccia associata alle rotte direttamente connesse, che varia a seconda del produttore
 
Nella tabella seguente è riportato l'esempio di come potrebbe essere la tabella di routing di un [[Home Access Gateway|router domestico]] basato su Linux. Dove è presente un asterisco significa che quella rotta è ''direttamente connessa''
{| class="wikitable"
!Destination
!Gateway
!Genmask
!Flags
!Metric
!Ref
!Interface
|-
|0.0.0.0
|151.7.207.8
|0.0.0.0
|UG
|0
|0
|pppoe-wan
|-
|10.10.10.0
|*
|255.255.255.252
|U
|0
|0
|iptvptm0
|-
|151.7.207.8
|*
|255.255.255.255
|UH
|0
|0
|pppoe-wan
|-
|192.168.0.0
|*
|255.255.255.0
|U
|0
|0
|br-lan
|-
|192.168.168.0
|*
|255.255.255.255
|U
|0
|0
|wl0_1
|-
|192.168.168.128
|*
|255.255.255.255
|U
|0
|0
|wl1_1
|}
Le colonne Destination e Genmask (subnet mask) costituiscono l'indirizzo IP identificativo della rete, di cui si è discusso prima. Per indicare la rete 192.168.0.0 con una subnet mask 255.255.255.0, è anche possibile scrivere 192.168.0.0/24
 
La colonna Gateway contiene l'indirizzo del next-hop, il gateway attraverso il quale la rete remota indicata (in questo caso 0.0.0.0, indirizzo che rappresenta tutte le reti) può essere raggiunta
 
La colonna Interface indica quale delle interfacce disponibili localmente è responsabile per raggiungere il gateway. In questo esempio, il gateway con indirizzo 151.7.207.8 può essere raggiunto attraverso l'interfaccia pppoe-wan (il modem [[VDSL2|VDSL]] integrato nel dispositivo da cui proviene la presente lista).
 
Di seguito invece viene proposto l'estratto delle prime 10 voci di una tabella di routing proveniente da un grande router a servizio di internet presso AT&T, che esegue il sistema operativo JunOS, con accesso pubblico per la consultazione con i seguenti comandi:
{| class="wikitable"
! colspan="8" |rviews@route-server.ip.att.net> show route forwarding-table
Routing table: default.inet
 
Internet:Enabled protocols: Bridging,
|-
!Destination
!Type
!RtRef
!Next hop
!Type
!Index
!NhRef
!Netif
|-
|default
|user
|19
|0:0:5e:0:1:1
|ucst
|578
|42
|em0.0
|-
|default
|perm
|0
|
|rjct
|36
|1
|
|-
|0.0.0.0/32
|perm
|0
|
|dscd
|34
|116
|
|-
|1.93.23.118/32
|user
|0
|
|indr
|34
|116
|
|-
|12.0.0.0/8
|user
|0
|0:0:5e:0:1:1
|indr
ucst
|1048575
|311
|em0.0
|-
|12.0.0.0/9
|user
|0
|0:0:5e:0:1:1
|indr
ucst
|578
|42
|em0.0
|-
|12.0.1.0/24
|intf
|0
|
|recv
|1048575
|1
|em0.0
|-
|12.0.1.0/32
|dest
|0
|12.0.1.0
|rslv
|565
|1
|em0.0
|-
|12.0.1.1/32
|dest
|0
|0:0:5e:0:1:1
|recv
|563
|42
|em0.0
|-
|12.0.1.15/32
|dest
|0
|0:0:5e:0:1:1
|ucst
|578
|1
|em0.0
|-
| colspan="8" |La tabella prosegue con oltre 500 voci non mostrate qui
|}
 
=== Tabelle di routing sui computer ===
Negli scenari di uso comune, pur non avendo attive funzionalità di routing attive di default, anche i sistemi operativi general purpose comunemente eseguiti dai personal computer possiedono una tabella di routing. Un esempio tratto da una distribuzione Linux in esecuzione su di un laptop collegato via Wi-Fi è riportato nella tabella sottostante.
{| class="wikitable"
!Destination
!Gateway
!Genmask
!Flags
!Metric
!Ref
!Iface
|-
|default
|192.168.0.1
|0.0.0.0
|UG
|600
|0
|wlp2s0
|-
|link-local
|0.0.0.0
|255.255.0.0
|U
|1000
|0
|wlp2s0
|-
|192.168.0.0
|0.0.0.0
|255.255.255.0
|U
|600
|0
|wlp2s0
|}
 
== Tabella di forwarding ==
{{Vedi anche|Forwarding information base}}
Le tabelle di routing in genere non sono utilizzate direttamente per l'inoltro dei pacchetti nelle architetture dei router moderni, tutt'al più sono utilizzate per costruire una più semplice [[Forwarding information base|tabella di forwarding]]. Questa tabella contiene solo le rotte che sono state scelte come preferite dagli algoritmi di routing. Si trova spesso in una forma compressa o precompilata che è ottimizzata per la memorizzazione e la ricerca rapida.
 
Questo tipo di architettura differenzia la funzione della tabella di routing, di competenza del [[control plane]], dalla funzione della tabella di forwarding, appartenente al [[forwarding plane]].<ref>{{Cita web|url=http://www.ietf.org/rfc/rfc3746.txt|titolo=Forwarding and Control Element Separation (ForCES) Framework, L. Yang et al., RFC3746,April 2004.}}</ref> Questa separazione dei due piani garantisce il forwarding con alte prestazioni e senza interruzioni.
 
== Note ==
<references />
== Voci correlate ==
*[[Forwarding information base]]
*[[Router]]
*[[Supernetting]]