Problemas MTU

Esta semana he tenido problemas con el tamaño de paquetes que enviaba a Internet, revisando la configuración de las interfaces del router me he encontrado con la siguiente :

> ifconfig ppp0.1
ppp0.1 Link encap:Point-to-Point Protocol
inet addr:88.0.158.39 P-t-P:80.58.67.125 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:16304837 errors:0 dropped:0 overruns:0 frame:0
TX packets:17324805 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:3043457917 (2.8 GiB) TX bytes:1043831128 (995.4 MiB)

De todas las interfaces es la unica que tiene el MTU mas bajo 8 bytes, estos 8 bytes pueden ser un dolor de cabeza, haciendo un ping con un tamaño de 1465

en windows : ping [-f] [-l <packet size>] [host]

en linux : ping [-M do] [-s <packet size>] [host]

ping -c 1  -M do -s 1465 www.google.com
PING www.google.com (216.58.210.132) 1465(1493) bytes of data.
ping: local error: Message too long, mtu=1492

— www.google.com ping statistics —
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

Vemos que nos responde mtu=1492 y evidentemente se pierde ya que nos ha indicado en la linea anterior que el tamaño del fragmento es de 1465 y sumando los 20 bytes de TCP/IP y 8 de ICMP nos da 1493

En este caso he modificado el MTU en el router

> ifconfig ppp0.1 mtu 1500

Comprovamos que se haya modificado

> ifconfig ppp0.1
ppp0.1 Link encap:Point-to-Point Protocol
inet addr:88.0.158.39 P-t-P:80.58.67.125 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:16304849 errors:0 dropped:0 overruns:0 frame:0
TX packets:17324815 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:3044561711 (2.8 GiB) TX bytes:1044729477 (996.3 MiB)

Observamos que si se ha modificado por lo tanto procedemos a guardar los cambios

> save
config saved.

Y salimos

> exit

Bye bye. Have a nice day!!!
Connection closed by foreign host.

Volvemos ha hacer la prueba

ping -c 1 -M do -s 1465 www.google.com
PING www.google.com (216.58.210.132) 1465(1493) bytes of data.
72 bytes from mad06s09-in-f4.1e100.net (216.58.210.132): icmp_seq=1 ttl=55 (truncated)

--- www.google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 46.945/46.945/46.945/0.000 ms

Funciona hemos podido enviar un paquete mas grande, pero ¿cuanto mas grande podemos enviar?

Realizo un for como ya se que mas de 1480 no los va a aceptar pongo ahí el limite.

for i in `seq 1465 1480` ; do ping -c 1 -M do -s $i google.com ; done

bien ejecuto el comando y muestro el paquete mas grande que puedo enviar y el siguiente paquete que ya no es aceptado por el router.

PING google.com (91.213.30.162) 1472(1500) bytes of data.
1480 bytes from 91.213.30.162: icmp_seq=1 ttl=50 time=41.6 ms

--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 41.600/41.600/41.600/0.000 ms
PING google.com (91.213.30.158) 1473(1501) bytes of data.
ping: local error: Message too long, mtu=1500

--- google.com ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

El paquete con el tamaño de 1473 no lo acepta el router.

Ahora bien ¿por que modifico el MTU en el router?,

Si el router me bloque a la salida de un paquete de un tamaño superior al MTU permitido quien me indica que si me envían un paquete con el mismo tamaño yo lo reciba

Para probarlo he solicitado ayuda en el canal de RSecurity de irc.resecurity.net

No podían llegar ya que el MTU que tenían es de 1492, el mismo problema, realizando un ping mas bajo si llegaban

Ahora bien hay que checkear que no tengas problemas para salir a Internet.

Encontré este articulo que esta muy bien :

http://blog.theliel.es/2011/10/redes-%C2%BFmtu-maximo-u-optimo-para-conexiones-xdsl.html