Salta al contenuto
Note per Studenti Esercizio - tabella di instradamento del router R1 e inoltro di due pacchetti

Esercizio - tabella di instradamento del router R1 e inoltro di due pacchetti

In questa pagina 5

Testo. La figura mostra una parte immaginaria di Internet. Il router R1R_1 ha tre interfacce: m0m_0 verso la rete 111.0.0.0111.0.0.0 (indirizzo 111.25.19.20111.25.19.20), m1m_1 verso la rete 145.80.0.0145.80.0.0 (indirizzo 145.80.7.11145.80.7.11) e m2m_2 verso la rete 170.14.0.0170.14.0.0 (indirizzo 170.14.5.165170.14.5.165). Sulla rete 111.0.0.0111.0.0.0 ci sono anche il router R2R_2 (111.30.31.18111.30.31.18 lato 111.0.0.0111.0.0.0), che è il default router verso il resto di Internet, e il router R3R_3 (111.15.17.32111.15.17.32 lato 111.0.0.0111.0.0.0), che collega la rete 192.16.7.0192.16.7.0 (suo indirizzo 192.16.7.5192.16.7.5).

  1. Mostrare le tabelle di instradamento di R1R_1.
  2. R1R_1 riceve un pacchetto con destinazione 192.16.7.14192.16.7.14: mostrare come viene inoltrato.
  3. R1R_1 riceve due pacchetti con destinazioni 192.16.7.14192.16.7.14 e 167.24.160.5167.24.160.5: mostrare come vengono inoltrati.

Teoria usata: Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro → (inoltro diretto e indiretto, rotta di default, prefisso più lungo), Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP → (classi, maschera).

Punto 1: le tabelle

Un router ha due strutture: la configurazione delle interfacce (indirizzo e maschera di ciascuna, da cui si ricavano le reti raggiungibili con inoltro diretto) e la tabella di instradamento (reti lontane e prossimo salto, inoltro indiretto).

Le reti sono indirizzate con le classi, quindi la maschera si ricava dal primo byte: 111111 (classe A, /8/8), 145145 e 170170 (classe B, /16/16), 192192 (classe C, /24/24).

Interfacce di R1R_1.

indirizzo maschera interfaccia rete
111.25.19.20111.25.19.20 /8/8 m0m_0 111.0.0.0111.0.0.0
145.80.7.11145.80.7.11 /16/16 m1m_1 145.80.0.0145.80.0.0
170.14.5.165170.14.5.165 /16/16 m2m_2 170.14.0.0170.14.0.0

Tabella di instradamento di R1R_1.

rete maschera prossimo salto
192.16.7.0192.16.7.0 /24/24 111.15.17.32111.15.17.32 (R3R_3)
0.0.0.00.0.0.0 /0/0 111.30.31.18111.30.31.18 (R2R_2, default)

Perché due righe: la rete 192.16.7.0192.16.7.0 è dietro R3R_3, che sta sulla rete 111.0.0.0111.0.0.0 di R1R_1; tutto il resto di Internet è dietro R2R_2. Le altre reti (111111, 145.80145.80, 170.14170.14) non servono nella tabella: sono già nelle interfacce.

Punto 2: pacchetto per 192.16.7.14192.16.7.14

  1. Inoltro diretto? Si confronta la destinazione con la rete di ogni interfaccia (l'AND con la maschera tiene i byte dove la maschera vale 255255 e azzera gli altri: Algebra di Boole e porte logicheVariabili booleane, operatori AND, OR, NOT e derivati (NAND, NOR, XOR, XNOR) con tabelle di verità; assiomi e teoremi dell'algebra di Boole, De Morgan; porte logiche e completezza di NAND e NOR; semplificazione algebrica con esempio.Algebra di Boole e porte logiche →): 192.16.7.14 AND /8=192.0.0.0≠111.0.0.0192.16.7.14\ \text{AND}\ /8=192.0.0.0\ne111.0.0.0; AND /16=192.16.0.0\text{AND}\ /16=192.16.0.0, diverso da 145.80.0.0145.80.0.0 e da 170.14.0.0170.14.0.0. Nessun match: inoltro indiretto.
  2. Tabella, dalla maschera più lunga. La prima riga ha maschera /24/24: 192.16.7.14 AND /24=192.16.7.0192.16.7.14\ \text{AND}\ /24=192.16.7.0, uguale all'indirizzo di rete della riga: match. Si ferma qui (la default avrebbe maschera /0/0 e vale solo se non c'è niente di meglio).
  3. Prossimo salto 111.15.17.32111.15.17.32. Quale interfaccia? Si cerca l'interfaccia la cui rete lo contiene: 111.15.17.32 AND /8=111.0.0.0111.15.17.32\ \text{AND}\ /8=111.0.0.0, la rete di m0m_0. Il pacchetto esce da m0m_0 e (grazie ad ARP, Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP →) è consegnato a R3R_3.

Punto 3: i due pacchetti

  • 192.16.7.14192.16.7.14: come sopra, indiretto via R3R_3, uscita m0m_0.
  • 167.24.160.5167.24.160.5: primo byte 167167, classe B, indirizzo di rete (mascherando i primi 1616 bit) 167.24.0.0167.24.0.0. Interfacce: nessuna rete coincide (111.0.0.0111.0.0.0, 145.80.0.0145.80.0.0, 170.14.0.0170.14.0.0): inoltro indiretto. Tabella: la riga /24/24 darebbe 167.24.160.0≠192.16.7.0167.24.160.0\ne192.16.7.0: no. Resta la rotta di default (maschera /0/0, che combacia con qualsiasi indirizzo). Prossimo salto 111.30.31.18111.30.31.18 (R2R_2), che appartiene alla rete 111.0.0.0111.0.0.0: uscita m0m_0. Il pacchetto parte verso "il resto di Internet", dove la rete non è nota a R1R_1.

Confronto con la soluzione ufficiale

Coincide: tabella con riga 192.16.7.0/24→111.15.17.32192.16.7.0/24\to111.15.17.32 e default →111.30.31.18\to111.30.31.18; pacchetto 192.16.7.14192.16.7.14 via 111.15.17.32111.15.17.32 (m0m_0); pacchetto 167.24.160.5167.24.160.5 via default 111.30.31.18111.30.31.18 (m0m_0). Discrepanza di stampa: nella figura dell'esercizio l'interfaccia verso la rete 145.80.0.0145.80.0.0 ha indirizzo 145.80.7.11145.80.7.11, nelle slide delle soluzioni compare "148.80.7.11148.80.7.11 / rete 148.80.0.0148.80.0.0": è un refuso, che non influisce sui risultati. Verificato con Python.

Errori comuni

  • Provare la default per prima: la default ha sempre la maschera più corta e si applica solo se nessuna riga più specifica combacia.
  • Scrivere l'interfaccia di uscita senza controllare in quale rete cade il prossimo salto (qui il prossimo salto, 111.15.17.32111.15.17.32 o 111.30.31.18111.30.31.18, è nella rete di m0m_0).
  • Inserire in tabella le reti collegate direttamente (vanno nelle interfacce).

Versione ripasso

Dati. R1R_1: m0m_0 111.25.19.20/8111.25.19.20/8, m1m_1 145.80.7.11/16145.80.7.11/16, m2m_2 170.14.5.165/16170.14.5.165/16. Sulla rete 111.0.0.0111.0.0.0: R2R_2 (111.30.31.18111.30.31.18, default router), R3R_3 (111.15.17.32111.15.17.32, verso 192.16.7.0/24192.16.7.0/24).

Tabella (Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →): le reti dirette (111.0.0.0111.0.0.0, 145.80.0.0145.80.0.0, 170.14.0.0170.14.0.0) stanno nelle interfacce.

rete maschera prossimo salto
192.16.7.0192.16.7.0 /24/24 111.15.17.32111.15.17.32 (R3R_3)
0.0.0.00.0.0.0 /0/0 111.30.31.18111.30.31.18 (R2R_2)

Algoritmo: diretto (dest AND maschera interfaccia) →\to tabella dalla maschera più lunga →\to uscita == interfaccia che contiene il prossimo salto.

dest diretto tabella prossimo salto uscita
192.16.7.14192.16.7.14 no AND /24=192.16.7.0\text{AND}\ /24=192.16.7.0: match 111.15.17.32111.15.17.32 m0m_0
167.24.160.5167.24.160.5 no /24/24 darebbe 167.24.160.0≠192.16.7.0167.24.160.0\ne192.16.7.0; default 111.30.31.18111.30.31.18 m0m_0

Il prossimo salto sta in 111.0.0.0111.0.0.0, rete di m0m_0 (Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP → per consegnare). Nelle slide delle soluzioni la rete di m1m_1 è 148.80.0.0148.80.0.0 invece di 145.80.0.0145.80.0.0: refuso senza effetti.

Errori: default per prima; reti dirette in tabella; uscita senza controllare la rete del prossimo salto.

Lezioni in cui compare

Teoria collegata