78 lines
3.4 KiB
Markdown
78 lines
3.4 KiB
Markdown
# 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)
|