Come posso visualizzare PMTU nella cache su Linux (e tutti gli altri sistemi operativi)


13

Quando eseguo il ping di un sito remoto con il set di bit DF e una dimensione del pacchetto troppo grande per il mio router, il primo messaggio ICMP "frammentazione richiesta" viene inviato dal router. Successivamente il messaggio proviene dal mio localhost.

Netstat -rC (su Linux) mi permette di visualizzare la cache della tabella di routing, ma

1) Sembra mostrare gli MTU sotto una colonna chiamata MSS (che mi aspetterei fosse il MSS TCP inferiore del link)

2) Mostra sempre il valore come 1500

Il mio localhost deve memorizzare nella cache PMTU da qualche parte in modo che possa generare il messaggio di frammentazione richiesto. Ma come lo vedo?

Ecco un esempio sulla mia macchina (-n su netstat inibisce le ricerche DNS inverse):

[root@vbcentos ~]# ping -c 4 -M do -s 1431 212.58.244.69
PING 212.58.244.69 (212.58.244.69) 1431(1459) bytes of data.
From 217.155.134.6 icmp_seq=1 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)

--- 212.58.244.69 ping statistics ---
1 packets transmitted, 0 received, +4 errors, 100% packet loss, time 1002ms

[root@vbcentos ~]# netstat -rCn
Kernel IP routing cache
Source          Destination     Gateway         Flags   MSS Window  irtt Iface
217.155.134.3   217.155.134.4   217.155.134.4   il        0 0          0 lo
217.155.134.4   212.58.244.69   217.155.134.6          1500 0          0 eth0
217.155.134.4   217.155.134.4   217.155.134.4   l     16436 0          0 lo
217.155.134.3   217.155.134.255 217.155.134.255 ibl       0 0          0 lo
217.155.134.4   212.58.244.69   217.155.134.6          1500 0          0 eth0
217.155.134.6   217.155.134.4   217.155.134.4   il        0 0          0 lo
212.58.244.69   217.155.134.4   217.155.134.4   l         0 0          0 lo
[root@vbcentos ~]#

MODIFICA: Come da suggerimento:

ip route get to 212.58.244.69

212.58.244.69 via 217.155.134.6 dev eth1  src 217.155.134.4
    cache  mtu 1500 advmss 1460 hoplimit 64

Il che sembra anche sbagliato poiché l'MSS è solo 40 in meno rispetto al mtu, che è l'interfaccia mtu anziché il PMTU


1
Su Fedora 22, netstat -rCnnon restituisce nulla, ma watch ip route get to $HOSTmostra che succede, inclusa la cache TTL. ip route show cachedmostra probabilmente anche l'output di qualcosa ma non lo fa.
David Tonhofer,

Risposte:


7

Può essere

ip route get to 212.58.244.69

Domanda modificata per aggiungere questo.
Neik,

1

In Windows, utilizzare il comando netsh per visualizzare la "cache di destinazione" che contiene queste informazioni. Ad esempio (supponendo IPv4):

netsh interface ipv4 show destinationcache

1

MSS deve essere inferiore di 40 byte rispetto all'MTU (non include le intestazioni di byte IPv4 (20 byte) e tcp (20)). Quindi è corretto.

Il messaggio di frammentazione ICMP necessaria viene inviato dal router, non dal server.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.