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

78 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. Как проверить?
```bash
# Измерить до:
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)