diff --git a/PROBLEM-AND-SOLUTION.md b/PROBLEM-AND-SOLUTION.md index 927d697..2be9e5e 100644 --- a/PROBLEM-AND-SOLUTION.md +++ b/PROBLEM-AND-SOLUTION.md @@ -86,14 +86,22 @@ kubectl patch svc -n ingress shturval-ingress-controller-controller \ ### Почему 1450 -Физический интерфейс ноды (`eth0`) докладывает MTU **1500** — стандартное значение. Однако эмпирически установлено: +Физический интерфейс ноды (`eth0`) показывает MTU **1500** — стандартное значение, выставленное провайдером. Однако между физическими серверами провайдер добавляет собственную инкапсуляцию (VXLAN/GRE, ~50 байт overhead), поэтому реальный path MTU = **1450**. -- `ping -M do -s 1422` из пода → «Message too large» (pod MTU = 1450, Cilium выставил 1500−50) -- ICMP с DF-флагом между нодами блокируется файрволлом → прямой замер невозможен -- Фикс `mtu: 1450` в cilium-config устранил TCP stall — загрузка файлов идёт без 51-секундной паузы -- Возврат на заводское `mtu: 1500` воспроизводит проблему +``` +Ваша VM Сеть провайдера Другая VM +eth0: 1500 ──── [VXLAN/GRE +50 overhead] ──── eth0: 1500 + реальный path MTU = 1450 +``` -**Вывод:** узкое место — в сетевом пути между нодами (инфраструктура провайдера), а не на интерфейсе ноды. Точное значение underlay MTU определено experimentally через работающий фикс. +| Параметр | Значение | Почему | +|---------|----------|--------| +| `eth0` (видит VM) | 1500 | Провайдер выставил интерфейс | +| Реальный path MTU | **1450** | Провайдер добавляет инкапсуляцию | +| `cilium-config mtu:` | **1450** | Сообщить Cilium реальный path | +| Pod/tunnel MTU | 1400 | Cilium вычитает 50 на Geneve | + +Подтверждено: фикс устранил stall, загрузка файлов идёт без задержки. ### Почему это безопасно