configuração de MTU ignorada pelo soquete Java no loopback

3

Eu tenho um problema de mtu. Eu fiz o seguinte:

root@sa-headend:/home/sa# ifconfig lo mtu 1500
root@sa-headend:/home/sa# ifconfig lo
lo        Link encap:Lokale Schleife  
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
          UP LOOPBACK RUNNING  MTU:1500  Metrik:1
          RX packets:143 errors:0 dropped:0 overruns:0 frame:0
          TX packets:143 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:0 
          RX bytes:58028 (58.0 KB)  TX bytes:58028 (58.0 KB)

root@sa-headend:/home/sa# ip route flush cache

Como é possível obter pacotes como este: (Usando o Wireshark para capturar)

15  0.028587    127.0.0.1   127.0.0.1   TCP 10005 > 49152 [ACK]
    Seq=4717 Ack=53 Win=14600 Len=1608

Os pacotes TCP são gerados por um soquete Java - se isso for de alguma relevância.

Por favor, não pergunte por que eu quero mudar o MTU em lo - eu só tenho que fazer isso.

    
por Simon Ottenhaus 19.05.2011 / 20:59

1 resposta

3

Desculpe ser o cara que erroneamente assume que todos os SOs similares ao Unix são parecidos, mas há alguma chance de seu kernel achar que sua interface de loopback suporta TSO (TCP Segmentation Offload)?

No Mac OS X (pense em "BSD"), se você fizer uma captura de pacote na mesma máquina que está enviando os pacotes, poderá ver quadros TCP impossivelmente grandes sendo enviados para a placa, porque a pilha sabe que a placa fará o TSO para dividir em pedaços de 1500 bytes. No Mac OS X, você pode desativá-lo com sudo sysctl -w net.inet.tcp.tso=0 .

No Linux, para uma interface Ethernet, parece que você pode fazer sudo ethtool -K eth0 tso off . Eu não sei se isso funcionaria na interface de loopback (em vez de ethX) embora.

    
por 20.05.2011 / 00:47

Tags