Files
drhider/History/2026-07-13-opus-response-mss-clamping.md
T

3.4 KiB
Raw Blame History

Opus: валидация MSS Clamping плана

Дата: 2026-07-13


Ключевое исправление

В плане ошибка: mtu: 1450 в cilium-config — это MTU underlay-сети, не туннеля. Cilium сам вычитает 50 байт на Geneve:

mtu: 1450  →  tunnel MTU = 1450  50 = 1400

По умолчанию Cilium автодетектит underlay 1500 → туннель 1450. Если stall всё равно есть — underlay реально < 1500. Число надо измерить, не гадать.


Ответы на вопросы

1. Корректно ли решение?

Да, направление верное. Но:

  • ConfigMap сам не применяется — нужен rollout restart ds/cilium
  • Число 1450 — гипотеза, нужен замер между нодами
  • mtu глобален на весь кластер
  • Существующие TCP-соединения не поменяют MSS — только новые

2. Что ещё нужно?

  1. Измерить underlay MTU: ping -M do -s 1472 <ip_другой_ноды> (уменьшать пока не пройдёт)
  2. kubectl rollout restart ds/cilium -n kube-system
  3. Пересоздать поды приложения (ingress, drhider)
  4. Вернуть externalTrafficPolicy: Cluster

3. Как проверить?

# Измерить до:
ping -M do -s 1472 <ip_другой_ноды>
tracepath <ip_другой_ноды>

# После изменения:
kubectl -n kube-system exec ds/cilium -- cilium-dbg status | grep -i mtu
ip link show | grep -E 'cilium|geneve'
tcpdump -ni any 'tcp[tcpflags] & tcp-syn != 0' -vv | grep mss

# Функционально: файл >5 MB без паузы

4. Риск для других сервисов?

Понижение MTU безопасно (меньше = консервативнее). Небольшой рост числа пакетов, микро-потеря throughput. Функционально ничего не ломает. Рестарт агентов — возможны короткие блипы, лучше в окно.

5. iptables равноценен?

Нет. Cilium с eBPF обходит netfilter FORWARD — правило может не видеть пакеты. Надёжнее cilium-config. Если iptables — то на всех 4 нодах (kube-vip раздаёт VIP на все).

6. Вердикт

Путь правильный. Уточнённый план:

  1. Измерить path MTU между нодами
  2. Выставить mtu = измеренное значение (вероятно < 1500)
  3. Рестарт агентов + подов
  4. Вернуть Cluster policy

При Cluster проблема реплик исчезает сама (2 хватает).


Моё мнение

Opus прав. План нужно дополнить замером. Без замера 1450 — пальцем в небо. Обновлю MSS-CLAMPING-PLAN.md с учётом:

  • Добавить шаг 0: измерение path MTU
  • Исправить формулу: mtu = underlay, туннель = mtu - 50
  • Добавить rollout restart ds/cilium + рестарт подов
  • Убрать iptables как основной вариант (ненадёжен с Cilium)