From 7ed1f5d650b2e68e54820cca868d867cc72b960e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Mon, 13 Jul 2026 21:21:19 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20Mermaid-=D0=B4=D0=B8=D0=B0=D0=B3=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=BC=D0=B0=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE?= =?UTF-8?q?=20ASCII?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROBLEM-AND-SOLUTION.md | 47 +++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/PROBLEM-AND-SOLUTION.md b/PROBLEM-AND-SOLUTION.md index b09de96..c3aae88 100644 --- a/PROBLEM-AND-SOLUTION.md +++ b/PROBLEM-AND-SOLUTION.md @@ -14,27 +14,38 @@ *Cilium — сетевая подсистема Kubernetes, отвечает за связь между подами на разных нодах. Geneve — протокол туннелирования, который Cilium использует чтобы «обернуть» обычный сетевой пакет для передачи через физическую сеть между серверами.* -``` - ПОД А ПОД Б - ┌──────────┐ ┌──────────┐ - │ packet │ │ packet │ - │ 1450 B │ │ 1450 B │ - └────┬─────┘ └────┬─────┘ - │ │ - ┌────▼─────┐ ┌────▼─────┐ - │ Geneve │ ──── underlay ────► │ Geneve │ - │ +50 B │ реальный 1450 │ +50 B │ - └────┬─────┘ └────┬─────┘ - │ │ - ┌────▼─────┐ ┌────▼─────┐ - │ 1500 B │ ✗ не влазит в 1450 │ 1500 B │ - └──────────┘ └──────────┘ +```mermaid +block-beta + columns 1 - Ожидание Cilium: underlay = 1500 - Реальность: underlay = 1450 ← провайдер дал меньше - Разница в 50 байт → пакет не проходит → TCP stall 51с + block:pods + columns 2 + a["Под А\nпакет 1450 B"] + b["Под Б\nпакет 1450 B"] + end + + space + + block:tunnel + columns 2 + g1["Geneve +50 B\n= 1500 B"] + g2["Geneve +50 B\n= 1500 B"] + end + + a --> g1 + b --> g2 + g1 -- "underlay 1450 ✗" --> g2 + + style a fill:#e8f5e9 + style b fill:#e8f5e9 + style g1 fill:#ffebee + style g2 fill:#ffebee ``` +> Ожидание Cilium: underlay = **1500** +> Реальность: underlay = **1450** ← провайдер дал меньше +> Разница **50 байт** → пакет не влазит → TCP stall **51 секунда** + - Cilium соединяет ноды через **Geneve-туннель** - Geneve добавляет к каждому пакету **+50 байт** заголовков (Ethernet 14 + IP 20 + UDP 8 + Geneve 8) - Cilium ожидает что underlay (физический канал между нодами) = **1500 байт**