Metodi di routing

Ogni implementazione IP è guidata da una tabella di routing IP.
La tabella di routing è diversa dalla tabelle di forward.
Come abbiamo visto la tabella di forward si basa sul longest prefix match.
Ma come fa a sapere un router (un tabella di forward) a sapere in quale uscita inoltrare i paccehtti?
Entra in gioco, qui, la tabella di routing, La tabella di routing potrebbe contenere tutte le informazioni relative a tutti i router della rete, così da avere le informazioni adatte per stabile in quale uscita dirigere un pacchetto. Tuttavia una tabella contenenti così tante informazioni sarebbe troppo costosa da mantenere su un dispositivo come un router, oltre che sarebbe costosa da consultare e aggiornare. Allora le tabelle di routing mantengono informazioni solo riguardo il next hop.
Pasted image 20231011111045.png
Come vediamo in figura, se l'host A vuole raggiungere l'host B, allora deve inoltrare il pacchetto al next hop R1. Non c'è scritto che dopo R1 dovrebbe raggiungere R2 e che dopo R2 può raggiungere B. Poi in R1, abbiamo che se la destinazione è B, il next hop deve essere R2.
La tabella di routing è memorizzata in un router o in un host,
La costruzione di tale tabella è affidata ad algoritmi di routing che aggiornano nel corso del tempo le informazioni di tale tabella in base allo stato della rete circostante (percorsi dinamici) che vedremo nel prossimo capitolo, oppure la sua configurazione può essere affidata ad un amministratore di rete (percorsi statici).
Le tabelle di forwarding vengono create a partire dalle tabelle di routing, sono molto più veloci perché sono installate direttamente nell'hardware del router e anch'esse si basano sul next hop.
Le tabelle di inoltro sono quelle che vengono effettivamente consultate quando un router riceve un pacchetto da un interfaccia di input: guarda la tabella di inoltro per scegliere in quale interfaccia di output mandare il pacchetto. Mentre le tabelle di routing sono utilizzate per forgiare le tabelle di inoltro del router.
Ricordiamo ancora una volta, visto che la differenza è molto sottile, che le tabelle di forwarding indirizzano un pacchetto, in base all'indirizzo di destinazione verso una interfaccia. Mentre nelle tabelle di routing parliamo di inoltro verso altri hop, ovvero router.

Host specific routing
...

Pasted image 20231011111119.png
Se un amministratore di sistema vuole che tutti i pacchetti in arrivo all'host B siano consegnati dal ruoter 3, anziché passare per il router 1, si può impostare una regola specifica per l'host B nella tabella di routing dell'host A.
In A la regola esprimerà qualcosa come: se la destinazione è l'host B il next hop è R3.

Ancora sulla differenza tra forwarding e routing. Il forwarding consente al router di inoltrare un pacchetto su una certa porta di output (fisica del router). Mentre il routing è il percorso totale, calcolato da algoritmi di routing che un pacchetto deve seguire per raggiungere la destinazione.

Routing statico e dinamico
...

Tabella di routing statica:

  • Contiene informazioni inserite manualmente
  • Non viene aggiornata in automatico se qualcosa in internet cambia
  • Usata in piccole reti, dove i cambiamenti si verificano raramente

Tabella di routing dinamica:

  • È periodicamente aggiornata utilizzando algoritmi dinamici di routing come: RIP, OSPF, BGP
  • Aggiornato in automatico se qualcosa cambia in internet

Quando il ruoter vuole instradare un pacchetto (non inoltrare):

  1. Prima controlla se è possibile la consegna diretta
  2. Poi la consegna specifica ad un host (host-specific routing)
  3. Poi la consegna specifica ad una rete
  4. Poi default delivery

Una tabella di routing è organizzata in uno schema gerarchico:

  1. Entry per la consegna diretta prima
  2. Entry per la consegna specifica ad un host
  3. Entry per la consegna specifica ad una rete
  4. Consegna di default per ultima
    Pasted image 20231011111503.png
    Mask indica la maschera da applicare all'IP di destinazione per capire a quale sottorete appartiene.
    Next-hop address: indirizzo del next-hop router a cui affidare la consegna verso la destinazione
    Il significato dei flag è specificato in figura.

Ogni datagramma contiene l'IP di destinazione:

  • Se la destinazione è un host nella stessa rete: consegna diretta
  • Se non lo è: inoltra pacchetto ad un router
  • La tabella di inoltro associa il numero di rete all'hop successivo (next hop)
  • Ogni host ha un solo router di default
  • Ogni router ha una tabella di inoltro

Pasted image 20231011111822.png
In una rete di questo tipo ci sono due LAN (network 4 e 2).
Una rete wireless (network 1).
Una rete punto a punto tra i router R2 ed R3 (network 3).
La tabella di inoltro del router R2 è la seguente:
Pasted image 20231011111912.png

Vediamo nello specifico la consegna indiretta (da una sotto-rete ad un'altra)
...

Pasted image 20231011112315.png
A vuole inviare un datagramma a B.
A livello IP viene creato il datagramma con IP sorgente (di A) e IP destinatario (di B).
A livello ethernet (livello di collegamento) viene creato un frame ethernet con MAC dell'host sorgente e MAC destinatario (ATTENZIONE: il destinatario del frame è il router e non l'host B).
Il frame viene ricevuto da R che legge il datagramma estratto dal frame e vede che la destinazione è un IP esterno alla sua rete di appartenenza.
Il router crea un nuovo frame con il suo MAC come indirizzo sorgente e come MAC di destinazione il MAC dell'host B (direttamente connesso ad un interfaccia del router, se ci fosse stato un altro router dopo R, il MAC di destinazione sarebbe stato il MAC di quel router). Notiamo che il datagramma resta invariato. Ovviamente in tutti questi passaggi vengono fatte eventuali richieste ARP del caso.