3.4 KiB
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. Что ещё нужно?
- Измерить underlay MTU:
ping -M do -s 1472 <ip_другой_ноды>(уменьшать пока не пройдёт) kubectl rollout restart ds/cilium -n kube-system- Пересоздать поды приложения (ingress, drhider)
- Вернуть
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. Вердикт
Путь правильный. Уточнённый план:
- Измерить path MTU между нодами
- Выставить
mtu= измеренное значение (вероятно < 1500) - Рестарт агентов + подов
- Вернуть
Clusterpolicy
При Cluster проблема реплик исчезает сама (2 хватает).
Моё мнение
Opus прав. План нужно дополнить замером. Без замера 1450 — пальцем в небо. Обновлю MSS-CLAMPING-PLAN.md с учётом:
- Добавить шаг 0: измерение path MTU
- Исправить формулу:
mtu= underlay, туннель =mtu - 50 - Добавить
rollout restart ds/cilium+ рестарт подов - Убрать iptables как основной вариант (ненадёжен с Cilium)