fix: debug=False, force read body, bump 1.0.6→1.0.7
Deploy loadtest / validate (push) Waiting to run
Deploy loadtest / validate (push) Waiting to run
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# 2026-07-10 — Ответ Опуса: MTU/MSS «чёрная дыра»
|
||||
|
||||
## Диагноз
|
||||
**PMTU Discovery сломан на edge LB + ECMP-балансировка.**
|
||||
Не размерный лимит — MTU-дыра на части TCP-путей.
|
||||
|
||||
## Почему не лимит
|
||||
- 50KB ❌, 52KB ✅, 100KB иногда ✅ — случайность, а не порог
|
||||
- Лимит дал бы детерминированный сбой
|
||||
- Случайность = зависимость от пути (ECMP), не от размера
|
||||
|
||||
## Почему keep-alive = 80%
|
||||
Одно соединение «прилипает» к одному backend-пути (ECMP hash по 5-tuple). Попал на хороший путь — всё работает. Новый коннект = новый хэш = рулетка (~50% плохих путей).
|
||||
|
||||
## Почему маленькие тела проходят
|
||||
Не требуют длинной серии full-MSS сегментов — MTU-дыра не успевает сработать.
|
||||
|
||||
## Корень
|
||||
Edge LB раскидывает TCP-коннекты по нескольким путям. На части путей ICMP `frag-needed` (type 3 code 4) режется → PMTU Discovery сломан → full-MSS сегменты молча дропаются → таймаут.
|
||||
|
||||
## Что сработало бы
|
||||
```bash
|
||||
# MSS clamping на ноде — сегменты не превышают безопасный MTU
|
||||
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1360
|
||||
```
|
||||
|
||||
## Ответы на вопросы
|
||||
1. **conntrack + hostPort:** косвенно (INVALID на out-of-window ретрансмиты), но корень — MTU
|
||||
2. **NodePort/LoadBalancer:** не лечит, DNAT-слой остаётся
|
||||
3. **WebSocket:** даёт эффект keep-alive (80%), не 100%
|
||||
4. **Тюнинг:** MSS clamping + `nf_conntrack_tcp_be_liberal=1` + Cilium MTU
|
||||
|
||||
## План подтверждения
|
||||
1. MSS clamp 1360 → тест 100KB×10 снаружи → если 100% = MTU подтверждён
|
||||
2. `ping -M do -s 1472` вниз по размеру — найти где рвётся
|
||||
3. `conntrack -S`, `nstat`, `dmesg`
|
||||
4. Cilium: tunnel mode? pod MTU vs tunnel MTU
|
||||
5. `iptables -t mangle -L` — есть ли уже TCPMSS/DROP INVALID?
|
||||
Reference in New Issue
Block a user