Нет сомнений в том, что MTU, настроенный ifconfig, влияет на фрагментацию Tx ip, у меня больше нет комментариев.
Но для направления Rx я нахожу, влияет ли параметр на входящие IP-пакеты, это зависит.Разные производители ведут себя по-разному.Я протестировал все устройства под рукой и обнаружил 3 случая ниже.
Тестовый случай:
Device0 eth0 (192.168.225.1, mtu 2000) <- ETH кабель -> Device1eth0 (192.168.225.34, mtu MTU_SIZE)
On Device0 ping 192.168.225.34 -s ICMP_SIZE, Проверка того, как MTU_SIZE влияет на Rx устройства 1.
, случай 1 :
Device1 = Linux 4.4.0 с Intel I218-LM:
Когда MTU_SIZE = 1500, ping завершается успешно при ICMP_SIZE = 1476, происходит сбой при ICMP_SIZE = 1477 и выше.Кажется, что существует ПРАКТИЧЕСКИЙ MTU = 1504 (20B (заголовок IP) + 8B (заголовок ICMP) + 1476B (данные ICMP)).
Когда MTU_SIZE = 1490, ping успешно выполняется при ICMP_SIZE = 1476, завершается неудачно приICMP_SIZE = 1477 и выше, ведут себя так же, как MTU_SIZE = 1500.
Когда MTU_SIZE = 1501, ping завершается успешно при ICMP_SIZE = 1476, 1478, 1600, 1900. Кажется, что гигантский кадр включается после установки MTU_SIZE> 1500 и больше нет ограничений 1504.
case 2 :
Device1 = Linux 3.18.31 с Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet:
Когда MTU_SIZE = 1500, проверка связи выполняется успешно при ICMP_SIZE = 1476, происходит сбой при ICMP_SIZE = 1477 и выше.
Когда MTU_SIZE = 1490, ping завершается успешно при ICMP_SIZE = 1466, завершается неудачей при ICMP_SIZE = 1467 и выше.
Когда MTU_SIZE = 1501, ping завершается успешно при ICMP_SIZE = 1477, завершается ошибкой при ICMP_SIZE = 1478 и выше.
Когда MTU_SIZE = 500, проверка связи выполняется успешно при ICMP_SIZE = 476, происходит сбой при ICMP_SIZE = 477 и выше.
Когда MTU_SIZE = 1900, ping завершается успешно при ICMP_SIZE = 1876, завершается неудачей при ICMP_SIZE = 1877 и выше.
Этот случай ведет себя точно так, как сказал Эдвард Томсон, за исключением того, что в моем тесте ПРАКТИЧЕСКИЙ MTU = MTU_SIZE + 4.
случай 3 :
Device1= Linux 4.4.50 с Raspberry Pi 2, модуль B ETH:
Когда MTU_SIZE = 1500, ping завершается успешно при ICMP_SIZE = 1472, завершается неудачей при ICMP_SIZE = 1473 и выше.Таким образом, там работает PRACTICAL MTU = 1500 (20B (заголовок IP) + 8B (заголовок ICMP) + 1472B (данные ICMP)).
Когда MTU_SIZE = 1490, ведите себя так же, как MTU_SIZE = 1500.
Когда MTU_SIZE = 1501, вести себя так же, как MTU_SIZE = 1500.
Когда MTU_SIZE = 2000, вести себя так же, как MTU_SIZE = 1500.
Когда MTU_SIZE = 500, вести себя кактоже самое, что MTU_SIZE = 1500.
Этот случай ведет себя точно так, как сказал Рон Мопин в Почему конфигурация MTU не влияет на направление приема? .
Суммируя все этов реальной жизни после установки ifconfig mtu
иногда пакеты Rx IP сбрасываются, когда превышают 1504, независимо от того, какое значение MTU вы установили (за исключением того, что включен Jumbo-кадр).
иногда пакеты Rx IP сбрасываются при превышении MTU + 4, установленного на приемном устройстве.
иногда пакеты Rx IP отбрасываются при превышении1500, независимо от того, какое значение MTU вы установили.
... ...