Tabella di routing: il lookup

Cisco CCNA: tabella di routing e lookup

Possiamo commentare in dettaglio il “flow-chart” presentato qualche articolo fa, e lo facciamo sistematicamente su tutti i “box” del flusso principale, cominciando con un’immagine che rappresenta scherzosamente un problema di… instradamento!

routing table lookup

(da: The Shandy’s blog)

  • Confronta il Pacchetto con le rotte di Livello 1 – questo confronto comincia a vedere se, tra le principali reti conosciute (Major, sommarizzate o di default), c’è quella a cui è diretto il Pacchetto; applicando il principio che la rotta preferita è quella che presenta il “longest match”, se c’è in Tabella la rete Major di destinazione, subnettata o meno, sarà la prescelta
  • una rotta di Livello 1 fa “best match”? – questo test può quindi avere risposta “Si” sia per per rotte ultimative (verso reti Major non subnettate, poi in subordine verso le supernet, infine verso la “default route”), sia per rotte Padre di reti Major subnettate, che sono non ultimative. Nel primo caso le rotte possono quindi essere usate per l’inoltro del Pacchetto e il “lookup” è concluso. Nel secondo caso, andremo invece al test successivo sulle rotte Figlio. In caso negativo, infine, il Pacchetto va scartato, per mancanza di una rotta valida.
  • confronta il Pacchetto con le sue rotte di Livello 2 – qui il “sue” si riferisce alla rotta di Livello 1 Parent, che ci ha portato a questo confronto. Le rotte di tipo subnet possono essere indifferentemente VLSM o FLSM: in ogni caso è nota la Subnet Mask da usare per la ricerca del “best match” (perché potrebbero esserci altre subnet più “ampie” -mai più piccole- di quella vera di destinazione)
  • una rotta di Livello 2 (Child, subnet) fa “best match”? – se tra le subnet ne troviamo una sola buona, o varie che fanno “match” (tra cui scegliamo la più specifica), usciamo dal lato “Si” ed inoltriamo il Pacchetto: le subnet sono sempre rotte ultimative! Se invece non troviamo nemmeno una subnet che faccia “match” col Pacchetto IP, dobbiamo chiederci se…
  • il Router ha comportamento Classful o Classless? – nel primo caso, come abbiamo visto nella Domanda precedente, il Pacchetto viene scartato: il Router “pretende” di conoscere tutte le subnet delle reti di cui ha qualche informazione, e se non succede, è drastico: butta! Se invece il Router, più modernamente e modestamente, è “classless”, passa allo step seguente
  • confronta il Pacchetto con le “supernet” e la “default route” – avviene il “ripescaggio” di cui alla Domanda precedente: si torna a cercare tra le supernet prima, e poi eventualmente ad usare la “default route”. Ma… se erano già lì, perché non hanno funzionato prima? La risposta è già stata data, ma la ripetiamo: perché prima tali rotte sono state messe “in minoranza” da una rotta Padre, che aveva un “longest match” (come si vede subito, ripercorrendo il “flow-chart” percorso fin qui)
  • una supernet fa “best match”, o esiste una “default route”? – siamo alla fine: se la risposta è “Si”, il Pacchetto può essere inoltrato su tale rotta ultimativa; altrimenti lo si scarta.

Come esercizio finale su questo delicato argomento, riproponiamo la Tabella di routing del nostro Router R2 (cui abbiamo aggiunto a mano la supernet 172.16.0.0/13 via Null0, per scopo didattico), e alcuni Pacchetti in transito: per ognuno, spieghiamo se è inoltrato e dove, o se viene scartato, nei due casi (se va verificato) di “classful or classless behavior”. È utile che lo studente prosegua l’esercizio con altri Pacchetti di sua invenzione, finché non ha imparato bene l’algoritmo!

routing table lookup_2

  1. Pacchetto 104.11.1.6: tra le 6 rotte di Livello 1, solo la “default route” fa “match”, e quindi il Pacchetto è inoltrato sulla Lo0
  2. Pacchetto 172.21.4.3: tra le 6 rotte di Livello 1, la supernet fa un “match” più lungo della “default route” (13 bit contro 0), e quindi il Pacchetto è inoltrato su Null0
  3. Pacchetto 192.168.2.98:  tra le 6 rotte di Livello 1, la rotta verso la rete “R 192.168.2.0/24” fa un “match” più lungo della “default route” (24 bit contro 0), e quindi il Pacchetto è inoltrato sulla S0/1; la supernet non fa “match”, perché alcuni bit tra i primi 13 non coincidono
  4. Pacchetto 10.4.99.1: tra le 6 rotte di Livello 1, la rotta Padre “10.0.0.0/24” (che è in realtà una /8) fa un “match” più lungo della “default route” (8 bit contro 0), e quindi occorre esaminarne le subnet. L’unica è la 10.1.1.0/24, che però non fa “match” col Pacchetto sui primi 24 bit. A questo punto, se il Router ha un “classful behavior”, il Pacchetto viene scartato; se invece è “classless”, si ripescano la supernet (che non va bene) e la “default route” (che è OK): il Pacchetto viene quindi inoltrato sulla Lo0
  5. Pacchetto 10.1.1.45: il “lookup” è come il precedente, fino all’analisi delle subnet. L’unica esistente questa volta fa “match” sui 24 bit: il Pacchetto è inoltrato sulla sua Lo0
  6. Pacchetto 172.20.2.253: fa “match” con la rotta Padre “172.20.0.0/24” (che è in realtà una /16), meglio che con la “supernet” (16 bit contro 13) o con la “default route”. Ne esamina quindi le subnet per 24 bit, scoprendo che fa “match” con la seconda: inoltra su S0/0
  7. Pacchetto 172.20.4.44: il “lookup” è come il precedente, fino all’analisi delle subnet. Nessuna delle tre subnet però fa “match” per 24 bit (essendo diverso il 3° byte), per cui si va a vedere il “behavior” del Router. Se è classful, il Pacchetto viene scartato; se è classless, si ripesca per prima la supernet, che questa volta fa “match” (primi 13 bit uguali): il Pacchetto viene quindi inoltrato su Null0.

Questo esaurisce la casistica più frequente: allo studente trovare casi nuovi con cui esercitars i!