chore: всё закоммичено — TMP, gitignore, chrome log
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# Почему Штурвал не рассчитан на underlay 1450
|
||||
|
||||
Ответы Соннета, 2026-07-14.
|
||||
|
||||
---
|
||||
|
||||
## Почему дефолтный MTU 1500, а не 1400
|
||||
|
||||
Штурвал — managed-платформа. Разработчики не знают MTU конкретной площадки.
|
||||
|
||||
- **Стандартный дата-центр:** underlay 1500 или Jumbo Frames 9000. Pod MTU 1500 + Geneve 50 = 1550 — легко влезает.
|
||||
- **Nubes — исключение:** underlay 1450 (физика 1500 + свой VXLAN 50 байт для SDN). Штурвал не тестировался конкретно на этой площадке.
|
||||
- **Снижать MTU глобально «на всякий случай» — плохо:** MTU 1400 снижает пропускную способность на ~7%. Для большинства клиентов это ненужная жертва.
|
||||
|
||||
Проблема флапает (при удачном размещении подов работает), поэтому жалобы могли не дойти до разработчиков.
|
||||
|
||||
**Вывод:** классическое «работает на наших серверах». Не баг в коде, а пробел в документации/онбординге.
|
||||
|
||||
---
|
||||
|
||||
## Почему underlay именно 1450
|
||||
|
||||
Это признак VXLAN:
|
||||
|
||||
```
|
||||
Outer Ethernet: 14 б
|
||||
Outer IP: 20 б
|
||||
UDP: 8 б
|
||||
VXLAN header: 8 б
|
||||
─────────────────────
|
||||
Итого: 50 б
|
||||
```
|
||||
|
||||
Физика у Nubes — стандартные 1500. Поверх — VXLAN для SDN (мультитенантность, изоляция). Арендаторам остаётся 1500 − 50 = 1450.
|
||||
|
||||
**Почему не Jumbo Frames 9000:** Jumbo Frames требуют чтобы все коммутаторы, сетевые карты и топология поддерживали их. Настраивается при строительстве ЦОД. Скорее всего Nubes — арендованные мощности или исторически не включили. 9000 — привилегия крупных облаков (AWS, GCP), владеющих своим железом от и до.
|
||||
|
||||
**Как проверить на ноде:**
|
||||
|
||||
```bash
|
||||
# Пройдёт если MTU ≥1500 (1472 + 28 заголовков = 1500)
|
||||
ping -M do -s 1472 <ip_шлюза>
|
||||
|
||||
# Пройдёт при 1450 (1422 + 28 = 1450), упадёт на 1423
|
||||
ping -M do -s 1422 <ip_шлюза>
|
||||
ping -M do -s 1423 <ip_шлюза> # должен дать "Frag needed"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Почему 1400 а не ниже
|
||||
|
||||
Geneve-туннели **независимы**. Каждый переход — отдельная инкапсуляция:
|
||||
|
||||
```
|
||||
Pod отправляет 1400 байт
|
||||
→ Нода A → Нода B: 1400 + 50 (Geneve) = 1450 ✅
|
||||
→ Нода B → Нода C: снова 1400 + 50 = 1450 ✅
|
||||
```
|
||||
|
||||
Второй туннель берёт **расшифрованный** пакет (снова 1400) и заново оборачивает. Не накапливается. Если бы накапливалось — нужно было бы 1350 (1350+50+50=1450). Но нет — 1400 достаточно для любого количества переходов.
|
||||
|
||||
---
|
||||
|
||||
## Что сказать девопсам
|
||||
|
||||
> Привет! Столкнулся с проблемой при работе managed-сервисов на Штурвале.
|
||||
>
|
||||
> У Nubes underlay MTU = 1450 (стандарт 1500 − 50 байт своего VXLAN). При дефолтном Cilium MTU 1500 любой cross-node трафик через Geneve даёт пакет 1550 — не влазит, HTTP POST зависает на ~51с.
|
||||
>
|
||||
> Решение: `mtu: 1400` в Cilium при создании кластера. 1400 + 50 (Geneve) = 1450 — ровно в канал. Даже два Geneve-перехода — достаточно (туннели независимы).
|
||||
>
|
||||
> Трогать существующие кластеры не предлагаю — там риск. Но можно добавить в шаблон/чеклист для новых кластеров на Nubes.
|
||||
|
||||
Тон — коллегиальный. Не «вы облажались», а «нашёл нюанс, вот решение, давайте зафиксируем».
|
||||
Reference in New Issue
Block a user