Quando eu sigo um site remoto com o conjunto de bits DF e um tamanho de pacote muito grande para o meu roteador, a primeira mensagem de "fragmentação necessária" do ICMP é enviada pelo roteador. Depois disso, a mensagem vem do meu host local.
O Netstat -rC (no Linux) permite visualizar o cache da tabela de roteamento, mas
1) Parece mostrar MTUs sob uma coluna chamada MSS (que eu esperaria ser o menor MSS TCP do link)
2) Mostra sempre o valor como 1500
Meu host local deve estar armazenando em cache o PMTU em algum lugar para que ele possa gerar a mensagem de fragmentação necessária. Mas como eu vejo isso?
Aqui está um exemplo na minha máquina (-n no netstat inibe as pesquisas reversas de DNS):
[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 ~]#
EDIT: Conforme sugestão:
ip route get to 212.58.244.69
dá
212.58.244.69 via 217.155.134.6 dev eth1 src 217.155.134.4
cache mtu 1500 advmss 1460 hoplimit 64
O que também parece errado, pois o MSS é apenas 40 a menos que o mtu, que é a interface mtu e não o PMTU
fonte
netstat -rCn
não retorna nada, maswatch ip route get to $HOST
mostra o que está acontecendo, incluindo o TTL do cache.ip route show cached
shows provavelmente também produzem algo, mas não.Respostas:
Talvez
fonte
No Windows, use o comando netsh para exibir o "cache de destino" que contém essas informações. Por exemplo (assumindo IPv4):
fonte
O MSS deve ter 40 bytes a menos que o seu MTU (não inclui os cabeçalhos IPv4 (20 bytes) e tcp (20) byte). Então isso está correto.
A mensagem de fragmentação ICMP necessária é enviada pelo roteador, não pelo seu servidor.
fonte