You are on page 1of 12

ICMP - Internet Control Message Protocol

Le apparecchiature che conne.ono le Re1 vengono chiamate gateway. A volte, un gateway o un


host di des1nazione comunica con un host di origine, ad esempio per segnalare un errore nella
ges1one dei pacche= da1.
Per tali scopi viene u1lizzato il protocollo ICMP (Intenet Control Message Protocol). L'ICMP è un
protocollo di rete u1lizzato principalmente per la ges1one e il controllo delle comunicazioni
all'interno di una rete basata su IP (Internet Protocol) ed è un componente essenziale del sistema
di comunicazione IP.
L'ICMP è un protocollo di supporto di Livello-3 che fa parte della suite di protocolli Internet. Viene
u1lizzato principalmente per la ges1one e il controllo delle comunicazioni all'interno di una rete
basata su IP. I router (o gateway) della rete inviano messaggi ICMP per segnalare malfunzionamen1
o problemi nella rete.
Un pacche.o ICMP u1lizza un header IP standard, come se fosse un protocollo di livello superiore,
ma è in realtà parte integrante del protocollo IP stesso. Pertanto, è supportato da tu= i disposi1vi
di rete di Livello-3, come Router e Switch.
L'obie=vo principale dell'ICMP non è rendere il protocollo IP affidabile, ma fornire informazioni
sullo stato della rete e aiutare a iden1ficare e risolvere i problemi di conne=vità. Ad esempio,
ICMP può segnalare che un host non è raggiungibile, che un datagramma IP ha superato il tempo
massimo consen1to per il suo trasferimento o che esiste un percorso migliore per raggiungere una
des1nazione specifica.
Tu.avia, è importante notare che ICMP non invia messaggi di errore rela1vi a pacche= ICMP non
invia1 corre.amente. In altre parole, se un pacche.o ICMP stesso viene perso o danneggiato
durante il trasferimento, non verrà inviato un ulteriore messaggio ICMP per segnalare l'errore.
ICMP oltre a fornire feedback sullo stato delle connessioni viene u1lizzato per controllare lo stato
della rete:
§ Alcune applicazioni di rete u1lizzano a=vamente messaggi ICMP per verificare la conne=vità
della rete (e.g., echo request e echo reply u1lizza1 dal comando ping)
§ Alcune applicazioni u1lizzano i messaggi ICMP per o.enere informazioni sulla rete in maniera
indire.a (e.g., time exceeded u1lizzato dal comando traceroute)

1
ICMP - Internet Control Message Protocol
Pacchetto ICMP
Un pacche.o ICMP è composto da due par1 principali, Header IP e Payload ICMP:
Header IP Standard
Un pacche.o ICMP u1lizza un header IP standard, in cui il campo protocollo è se.ato ad 1,
indicando che si tra.a di un pacche.o ICMP. Tra i diversi campi che l'Header IP con1ene ci sono:
§ Tempo di vita (TTL, 8 bit): Limita il tempo o il numero di hop che un pacche.o può a.raversare
prima che sia scartato, per evitare che il pacche.o circoli all'infinito all'interno della rete
§ Indirizzo IP di origine (32 bit): L'indirizzo IP del mi.ente
§ Indirizzo IP di des@nazione (32 bit): L'indirizzo IP del des1natario

Payload ICMP
Il payload ICMP con1ene le informazioni specifiche del protocollo ICMP. Può includere informazioni
riguardan1 altri livelli dello stack TCP/IP, non solo IP (ad esempio, il messaggio "Port Unreachable"
si riferisce al livello di trasporto). La stru.ura del Payload ICMP è composta dai seguen1 elemen1:
§ type
Iden1fica il 1po di messaggio ICMP fornito e determina la stru.ura e la logica del resto del pacche.o.
Ad esempio, type 0 indica un messaggio "Echo Reply", mentre type 8 indica un
messaggio "Echo Request".
ICMP Message Types
Type Message
0 Echo Reply
3 Destination Unreachable
4 Source Quench
5 Redirect
8 Echo Request
11 Time Exceeded
12 Parameter Problem
13 Timestamp
14 Timestamp Reply
15 Information Request
16 Information Reply
§ code
Fornisce ulteriori de.agli sul 1po di messaggio ICMP specificato dal campo type.
Ad esempio, nel caso di un messaggio "Destination Unreachable" (type 3), il campo
code indica la ragione specifica per cui la des1nazione non è raggiungibile, come ad esempio
"Network Unreachable" (code 0) o "Host Unreachable" (code 1).
§ checksum
È u1lizzato per controllo degli errori (integrità dei da1) nel messaggio ICMP. Viene calcolato su
tu.a la parte ICMP del pacche.o (escluso l'Header IP) e serve per rilevare eventuali errori di
trasmissione.
§ Da@ aggiun@vi
A seconda del 1po e del codice del messaggio ICMP, il pacche.o può includere ulteriori
informazioni specifiche. Ad esempio, per i messaggi "Echo Request" e "Echo Reply", il
pacche.o ICMP con1ene un iden1ficatore e una sequenza numerica u1lizzata per abbinare le
richieste e le risposte tra loro.

2
ICMP - Internet Control Message Protocol
Messaggio – Echo Request / Echo Reply
I messaggi "Echo Request" e "Echo Reply" sono u1lizza1 dal comando ping per verificare
la connessione tra due disposi1vi di rete e per misurare la latenza della rete.
Il comando ping u1lizza ques1 messaggi come segue, un host di orgine invia un messaggio
"Echo Request" all'host di des1nazione e a.ende un messaggio "Echo Reply" in risposta,
se la risposta viene ricevuta, significa che la connessione tra i due disposi1vi è a=va e funzionante.
Lo schema di un pacche.o ICMP per Echo Request e Echo Reply è il seguente:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header IP (20 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
§ Header IP: Come per tu= i pacche= ICMP, il pacche.o Echo Request e Echo Reply inizia con
un header IP standard di 20 𝑏𝑦𝑡𝑒.
§ Type: Iden1fica il 1po di messaggio ICMP, per Echo Request il valore è 8 per Echo Reply il
valore è 0.
§ Code: Fornisce ulteriori de.agli sul 1po di messaggio ICMP, per entrambi Echo Request ed
Echo Reply, il valore del campo è 0.
§ Checksum: È u1lizzato per verificare l'integrità dei da1 nel payload ICMP, questo viene
calcolato su tu.a la parte ICMP del pacche.o (escluso l'header IP) e serve per rilevare
eventuali errori di trasmissione.
§ Identifier: È un valore assegnato dal disposi1vo che invia il messaggio Echo Request e
viene u1lizzato per abbinare le richieste e le risposte tra loro, l'host di des1nazione copierà
questo valore nel messaggio Echo Reply.
§ Sequence Number: Il "numero di sequenza" è un valore incrementale assegnato dal
disposi1vo che invia il messaggio Echo Request, questo viene u1lizzato per dis1nguere tra
diverse richieste inviate dallo stesso host, l'host di des1nazione copierà questo valore nel
messaggio Echo Reply.
§ Payload: con1ene da1 casuali o un pa.ern di byte che vengono u1lizza1 per misurare la
latenza e il throughput, l'host di des1nazione copia il payload ricevuto dal messaggio Echo
Request nel messaggio Echo Reply.

3
ICMP - Internet Control Message Protocol
Messaggio - Destination Unreachable
Il messaggio "Destination Unreachable" (Des1nazione Irraggiungibile) è un 1po di
messaggio ICMP u1lizzato per informare l'host sorgente che il pacche.o inviato non può essere
consegnato alla des1nazione specificata. Questo può essere dovuto a vari mo1vi, come ad
esempio un host o una rete irraggiungibile, o una porta non raggiungibile per i protocolli basa1 su
connessione, come TCP.
Lo schema di un pacche.o ICMP Des0na0on Unreachable è il seguente:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header IP (20 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP Header + First 8 Bytes of Original Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
§ Header IP: Come per tu= i pacche= ICMP, il pacche.o Des0na0on Unreachable inizia con
un header IP standard di 20 𝑏𝑦𝑡𝑒.
§ Type: Iden1fica il 1po di messaggio ICMP, per Des1na1on Unreachable il valore è 3.
§ Code: Fornisce ulteriori de.agli sul mo1vo per cui la des1nazione non è raggiungibile, alcuni
esempi di valori sono:
0 = Network Unreachable
1 = Host Unreachable
2 = Protocol Unreachable
3 = Port Unreachable
§ Checksum: È u1lizzato per verificare l'integrità dei da1 nel payload ICMP, questo viene
calcolato su tu.a la parte ICMP del pacche.o (escluso l'header IP) e serve per rilevare
eventuali errori di trasmissione.
§ Unused: Questo campo è riservato e deve essere impostato a 0, non viene u1lizzato per
trasme.ere informazioni.
§ IP Header + First 8 Bytes of Original Datagram: Questa parte del pacche.o con1ene l'header
IP e i primi 8 𝑏𝑦𝑡𝑒 del datagramma originale che ha causato il messaggio Des0na0on
Unreachable. Queste informazioni perme.ono all'host sorgente di iden1ficare il pacche.o
problema1co e di prendere le opportune misure per risolvere il problema.

Con1nuazione →

4
ICMP - Internet Control Message Protocol
Messaggio - Destination Unreachable

H1 Terminal (Host Unreachable)


$ ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
From 192.168.0.254 icmp_seq=1 Destination Host Unreachable
From 192.168.0.254 icmp_seq=2 Destination Host Unreachable
From 192.168.0.254 icmp_seq=3 Destination Host Unreachable

H1 Terminal (Network Unreachable)


$ ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
From 192.168.0.254 icmp_seq=1 Destination Net Unreachable
From 192.168.0.254 icmp_seq=2 Destination Net Unreachable
From 192.168.0.254 icmp_seq=3 Destination Net Unreachable

5
ICMP - Internet Control Message Protocol
Messaggio - Time Exceeded
Il messaggio "Time Exceeded" (Tempo Scaduto) è un 1po di messaggio ICMP u1lizzato per
informare l'host sorgente che un pacche.o non è stato consegnato a causa del raggiungimento del
limite di tempo massimo consen1to per la sua trasmissione nella rete. Ci sono due 1pi di
messaggio "Time Exceeded":
§ Time To Live Exceeded in Transit
§ Fragment Reassembly Time Exceeded
Lo schema di un pacche.o ICMP Time Exceeded è il seguente:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header IP (20 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP Header + First 8 Bytes of Original Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
§ Header IP: Come per tu= i pacche= ICMP, il pacche.o Time Exceeded inizia con un header
IP standard di 20 𝑏𝑦𝑡𝑒.
§ Type: Iden1fica il 1po di messaggio ICMP, per Time Exceeded il valore è 11.
§ Code: Fornisce ulteriori de.agli sul mo1vo per cui il tempo è scaduto, possibili valori sono:
0 = Time To Live Exceeded in Transit
1 = Fragment Reassembly Time Exceeded
Ogni volta che un router inoltra un pacche.o IP, decrementa di 1 il campo TTL nell'header IP
del pacche.o, prima di inviare il pacche.o (ovvero, dopo aver decremenetato di uno il TTL), il
sistema controlla il campo del TTL, se 𝑇𝑇𝐿 = 0, il pacche.o non viene inviato, e viene invece
scartato, il router invierà il pacche.o ICMP con type=11 e code=0 per segnalare questa
informazione.
§ Checksum: È u1lizzato per verificare l'integrità dei da1 nel payload ICMP, questo viene
calcolato su tu.a la parte ICMP del pacche.o (escluso l'header IP) e serve per rilevare
eventuali errori di trasmissione.
§ Unused: Questo campo è riservato e deve essere impostato a 0, non viene u1lizzato per
trasme.ere informazioni.
§ IP Header + First 8 Bytes of Original Datagram: Questa parte del pacche.o con1ene l'header
IP e i primi 8 𝑏𝑦𝑡𝑒 del datagramma originale che ha causato il messaggio Time Exceeded.
Queste informazioni perme.ono all'host sorgente di iden1ficare il pacche.o problema1co e di
prendere le opportune misure per risolvere il problema.

Con1nuazione →

6
ICMP - Internet Control Message Protocol
Messaggio - Time Exceeded
Consideriamo una rete configurata male, in cui i gateway si inoltrano i pacche= a vicenda creando
così d fa.o un loop.

H1 Terminal
$ route -n
Kernel IP routing table
Destination Gateway Genmask Iface
0.0.0.0 192.168.0.3 0.0.0.0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 eth0
H2 Terminal
$ route -n
Kernel IP routing table
Destination Gateway Genmask Iface
0.0.0.0 192.168.0.3 0.0.0.0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 eth1
H3 Terminal
$ route -n
Kernel IP routing table
Destination Gateway Genmask Iface
0.0.0.0 192.168.1.2 0.0.0.0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 eth1
Se H1 invia un pacche.o des1nato ad un host che non fa parte delle due so.ore1, H2 e H3 si
inoltrano il pacche.o a vicenda.
H1 Terminal
$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
From 192.168.0.2 icmp_seq=1 Time to live exceeded
From 192.168.0.2 icmp_seq=2 Time to live exceeded
From 192.168.0.2 icmp_seq=3 Time to live exceeded

Dopo un certo numero di "hop", il campo TTL raggiunge il valore 0 e viene scartato scartato dal
router. In questo caso sappiamo che il router che ha rilevato il 𝑇𝑇𝐿 = 0 e ha scartato il pacche.o è
l'host H2 (IP: 192.168.0.2).

7
ICMP - Internet Control Message Protocol
Messaggio - Redirect
Il messaggio "Redirect" è un 1po di messaggio ICMP u1lizzato dai router per informare l'host
sorgente di u1lizzare un percorso migliore per raggiungere la des1nazione. In pra1ca, il router
indica all'host di inviare i pacche= futuri dire.amente a un altro router più appropriato per quella
des1nazione.
Lo schema di un pacche.o ICMP Redirect è il seguente:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header IP (20 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Gateway Internet Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP Header + First 8 Bytes of Original Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
§ Header IP: Come per tu= i pacche= ICMP, il pacche.o Redirect inizia con un header IP
standard di 20 𝑏𝑦𝑡𝑒.
§ Type: Iden1fica il 1po di messaggio ICMP, per Redirect, il valore è 5.
§ Code: Fornisce ulteriori de.agli sul mo1vo per cui viene inviato il messaggio Redirect, i valori
possibili sono:
0 = Redirect Datagram for the Network
Indica che il router sta consigliando all'host sorgente di u1lizzare un gateway migliore per
raggiungere la rete di des1nazione.
1 = Redirect Datagram for the Host
Indica che il router sta consigliando all'host sorgente di u1lizzare un gateway migliore per
raggiungere l'host di des1nazione specifico.
2 = Redirect Datagram for the Type of Service and Network
Indica che il router sta consigliando all'host sorgente di u1lizzare un gateway migliore per
raggiungere la rete di des1nazione per un determinato 1po di servizio.
3 = Redirect Datagram for the Type of Service and Host
Indica che il router sta consigliando all'host sorgente di u1lizzare un gateway migliore per
raggiungere l'host di des1nazione specifico per un determinato 1po di servizio.
§ Checksum: È u1lizzato per verificare l'integrità dei da1 nel payload ICMP, questo viene
calcolato su tu.a la parte ICMP del pacche.o (escluso l'header IP) e serve per rilevare
eventuali errori di trasmissione.
§ Gateway Internet Address: Con1ene l'indirizzo IP del gateway alterna1vo che l'host
sorgente dovrebbe u1lizzare per inviare i pacche= alla des1nazione richiesta.
§ IP Header + First 8 Bytes of Original Datagram: Questa parte del pacche.o con1ene l'header
IP e i primi 8 𝑏𝑦𝑡𝑒 del datagramma originale che ha causato il messaggio Redirect. Queste
informazioni perme.ono all'host sorgente di iden1ficare il pacche.o problema1co e di
prendere le opportune misure per u1lizzare il nuovo percorso.

Con1nuazione →
8
ICMP - Internet Control Message Protocol
Messaggio - Redirect

H1 Terminal
$ route -n
Kernel IP routing table
Destination Gateway Genmask Iface
0.0.0.0 192.168.0.254 0.0.0.0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 eth0
$ ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=63 time=2.70 ms
From 192.168.0.254: icmp_seq=2 Redirect Host(New nexthop: 192.168.0.253)
64 bytes from 192.168.2.1: icmp_seq=2 ttl=63 time=2.91 ms
64 bytes from 192.168.2.1: icmp_seq=3 ttl=63 time=2.49 ms

9
ICMP - Internet Control Message Protocol
Messaggio - Packet Too Big
Il messaggio "Packet too Big" è un 1po di messaggio ICMP u1lizzato per informare l'host
sorgente che il datagramma inviato è troppo grande per essere trasmesso a.raverso uno specifico
segmento della rete senza frammentazione. Questo messaggio comunica all'host sorgente la
dimensione massima del pacche.o consen1ta, chiamata Maximum Transmission Unit (MTU), per
quel segmento di rete. Questo consente all'host sorgente di ada.are la dimensione dei pacche=
invia1 in futuro per evitare ulteriori problemi di frammentazione.
Lo schema di un pacche.o ICMP Packet Too Big è il seguente:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header IP (20 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MTU | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP Header + First 8 Bytes of Original Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
§ Header IP: Come per tu= i pacche= ICMP, il pacche.o Packet Too Big inizia con un header
IP standard di 20 𝑏𝑦𝑡𝑒.
§ Type: Iden1fica il 1po di messaggio ICMP, per Packet Too Big il valore è 3.
§ Code: Deve essere impostato a 0 per il messaggio Packet Too Big.
§ Checksum: È u1lizzato per verificare l'integrità dei da1 nel payload ICMP, questo viene
calcolato su tu.a la parte ICMP del pacche.o (escluso l'header IP) e serve per rilevare
eventuali errori di trasmissione.
§ MTU: Indica la dimensione massima del pacche.o consen1ta (Maximum Transmission Unit) per
quel segmento di rete.
§ Reserved: Questo campo è riservato e deve essere impostato a 0, non viene u1lizzato per
trasme.ere informazioni.
§ IP Header + First 8 Bytes of Original Datagram: Questa parte del pacche.o con1ene l'header
IP e i primi 8 𝑏𝑦𝑡𝑒 del datagramma originale che ha causato il messaggio Packet Too Big.
Queste informazioni perme.ono all'host sorgente di iden1ficare il pacche.o problema1co e di
ada.are la dimensione dei pacche= invia1 in futuro per evitare ulteriori problemi di
frammentazione.

Con1nuazione →
10
ICMP - Internet Control Message Protocol
Messaggio - Packet Too Big

Configurazione
§ H1 Terminal
$ ifconfig eth0 192.168.1.1/24 mtu 1500
$ route add -net 192.168.2.0/24 gw 192.168.1.254

§ R Terminal
$ sysctl -w net.ipv4.ip_forward=1
$ ifconfig eth0 192.168.1.254/24 mtu 1500
$ ifconfig eth1 192.168.2.254/24 mtu 600

§ H3 Terminal
$ ifconfig eth0 192.168.2.1/24 mtu 600
$ route add -net 192.168.1.0/24 gw 192.168.2.254

Test di Connessione
H1 Terminal
$ ping -M do -s 1000 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 1000(1028) bytes of data.
From 192.168.1.254 icmp_seq=1 Frag needed and DF set (mtu = 600)
ping: local error: Message too long, mtu=600
ping: local error: Message too long, mtu=600

$ ip route get 192.168.2.1
192.168.2.1 via 192.168.1.254 dev eth0 cache expires 572sec mtu 600
src 192.168.1.1

NOTA:
Per limi1 di Marionnet non possiamo usare MTU > 1500 (e.g., jumbo frames MTU 9000).

11
ICMP - Internet Control Message Protocol
Percorso dei Pacchetti
Il comando traceroute consente di tracciare il percorso di un pacche.o IP a.raverso una rete,
dall'Host Sorgente all'Host di Des1nazione, mostrando i Router e gli Hop intermedi a.raverso cui il
pacche.o viene instradato.
In pra1ca, il comando traceroute invia una serie di pacche= IP alla des1nazione con un TTL
(Time to Live) iniziale di 1. Il TTL è un campo nel pacche.o IP che viene decrementato da ogni
router o hop che il pacche.o a.raversa. Quando il TTL raggiunge lo 0, il pacche.o viene scartato e
viene inviato un messaggio di errore ICMP al mi.ente.
In questo modo, il comando traceroute invia pacche= IP alla des1nazione con TTL crescen1,
ciascuno dei quali viene instradato a.raverso router e hop intermedi diversi. Ogni volta che un
pacche.o raggiunge un router o un hop intermedio, il router invia un messaggio di errore ICMP
"Time Exceeded" al mi.ente, indicando quale router o hop ha scartato il pacche.o. Se non si
osserva un "Time Exceeded " entro un tempo prestabilito traceroute visualizza un asterisco "*".
$ traceroute <destination_host>
Alcune versioni del comando non u1lizzano i messaggi ICMP se non gli viene chiesto esplicitamente
ma in altri protocolli (ad esempio UDP), è possibile forzarne l'u1lizzo tramite l'opzione -icmp:
$ traceroute --icmp <destination_host>
Il comando traceroute mostra quindi una lista di tu= i router e gli hop intermedi a.raversa1
dai pacche= invia1, insieme ai loro tempi di risposta e agli indirizzi IP. Questo può essere u1le per
diagnos1care problemi di connessione di rete, individuare problemi di conges1one e iden1ficare
eventuali blocchi o ritardi lungo il percorso di rete.

Esempio:

N1 Terminal
$ traceroute 10.7.64.1
traceroute to 10.7.64.1 (10.7.64.1), 30 hops max, 60 byte packets
1 10.7.63.253 (10.7.63.253) 1.808 ms 0.537 ms 0.606 ms
2 10.7.255.254 (10.7.255.254) 2.102 ms 8.110 ms 12.848 ms
3 10.7.64.1 (10.7.64.1) 36.136 ms 36.011 ms 35.886 ms
N3 Terminal
$ traceroute 10.7.0.1
traceroute to 10.7.0.1 (10.7.0.1), 30 hops max, 60 byte packets
1 10.7.127.254 (10.7.127.254) 1.630 ms 0.972 ms 0.637 ms
2 10.7.255.253 (10.7.255.253) 1.977 ms 12.188 ms 41.811 ms
3 10.7.0.1 (10.7.0.1) 42.396 ms 43.352 ms 43.806 ms
12

You might also like