3

У меня проблема с MTU. Я сделал следующее:

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

Как это возможно, что я получаю пакеты, подобные этому: (Использование Wireshark для захвата)

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

Пакеты TCP генерируются сокетом Java - если это имеет какое-либо значение.

Пожалуйста, не спрашивайте, почему я хочу поменять MTU на lo - я просто должен это сделать.

1 ответ1

3

Извините за тот парень, который ошибочно полагает, что все Unix-подобные ОС одинаковы, но есть ли шанс, что ваше ядро считает, что ваш петлевой интерфейс поддерживает TCP Segmentation Offload (TSO)?

В Mac OS X (например, "BSD"), если вы выполняете захват пакетов на той же машине, которая отправляет пакеты, вы можете увидеть невозможные большие кадры TCP, отправляемые на карту, потому что стек знает, что карта будет выполнять TSO нарезать его на 1500-байтовые куски. В Mac OS X вы можете отключить его с помощью sudo sysctl -w net.inet.tcp.tso=0 .

В Linux для интерфейса Ethernet похоже, что вы можете sudo ethtool -K eth0 tso off . Я не знаю, будет ли это работать на интерфейсе обратной связи (вместо ethX), хотя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .