<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Блог]]></title><description><![CDATA[Интересные статьи про серверы, VPS / VDS, защиту от DDoS-атак и другие решения для бизнеса в блоге King Servers. Полезное для сайта. ★ Читать актуальные публикации на сайте King Servers]]></description><link>https://kingservers.com/blog/</link><image><url>https://kingservers.com/blog/favicon.png</url><title>Блог</title><link>https://kingservers.com/blog/</link></image><generator>Ghost 5.69</generator><lastBuildDate>Fri, 23 Oct 2026 23:32:09 GMT</lastBuildDate><atom:link href="https://kingservers.com/blog/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Таблица соседей Linux в GPU-кластере: ARP, IPv6 ND и состояния NUD]]></title><description><![CDATA[Production-runbook по neighbor table Linux: как читать NUD, диагностировать ARP и IPv6 ND, проверять cache capacity и безопасно проводить canary в GPU/LLM-кластере.]]></description><link>https://kingservers.com/blog/linux-neighbor-table-arp-nd-gpu-cluster/</link><guid isPermaLink="false">6ad47da4aff2afac25354e9b</guid><category><![CDATA[Решения для бизнеса]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 23 Oct 2026 23:21:04 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/linux-neighbor-table-gpu-cluster-hero-443e810c.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#quick-verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x432;&#x435;&#x440;&#x434;&#x438;&#x43A;&#x442;: &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x438;&#x43D;&#x43E;&#x432;&#x430;&#x442;&#x430; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439;</a></li>
<li><a href="#packet-path">&#x41F;&#x443;&#x442;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;: &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; evidence gate &#x432;&#x43C;&#x435;&#x441;&#x442;&#x43E; &#x434;&#x43E;&#x433;&#x430;&#x434;&#x43A;&#x438;</a></li>
<li><a href="#nud-states">&#x421;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; NUD: &#x447;&#x442;&#x43E; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x44E;&#x442; REACHABLE, STALE &#x438; FAILED</a></li>
<li><a href="#baseline">&#x421;&#x43D;&#x44F;&#x442;&#x44C; baseline: &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x44E;&#x442; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x43A;&#x441;&#x442;</a></li>
<li><a href="#capture">Packet capture &#x434;&#x43B;&#x44F; ARP &#x438; IPv6 ND &#x431;&#x435;&#x437; &#x43B;&#x438;&#x448;&#x43D;&#x435;&#x433;&#x43E; &#x448;&#x443;&#x43C;&#x430;</a></li>
<li><a href="#kubernetes-owner">&#x41A;&#x442;&#x43E; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x435;&#x442; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C;&#x44E; &#x432; Kubernetes: host, Pod, CNI &#x438;&#x43B;&#x438; gateway</a></li>
<li><a href="#capacity">&#x401;&#x43C;&#x43A;&#x43E;&#x441;&#x442;&#x44C; neighbor cache: gc_thresh &#x431;&#x435;&#x437; &#x43C;&#x430;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x447;&#x438;&#x441;&#x435;&#x43B;</a></li>
<li><a href="#canary">Canary A/B/A: &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43E;&#x434;&#x438;&#x43D; owner &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;</a></li>
<li><a href="#mistakes">&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;: flush, &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x435; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x438; &#x438; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; owner</a></li>
<li><a href="#decision">Decision matrix: &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C;, &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x43F;&#x443;&#x442;&#x44C; &#x438;&#x43B;&#x438; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x44C;</a></li>
<li><a href="#conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; L2-&#x441;&#x431;&#x43E;&#x439; &#x434;&#x43E; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438; cache</a></li>
</ul></div>

</div>&#x41D;&#x43E;&#x432;&#x44B;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x43A; LLM API &#x437;&#x430;&#x432;&#x438;&#x441;&#x430;&#x44E;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x443;&#x437;&#x43B;&#x435;, &#x445;&#x43E;&#x442;&#x44F; GPU, DNS &#x438; health-check &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x44F;&#x442; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x43C;&#x438;. &#x412; &#x43B;&#x43E;&#x433;&#x430;&#x445; &#x43C;&#x435;&#x43B;&#x44C;&#x43A;&#x430;&#x435;&#x442; No route to host, &#x430; &#x43F;&#x435;&#x440;&#x435;&#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A; Pod &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x43B;&#x438;&#x448;&#x44C; &#x43D;&#x430; &#x432;&#x440;&#x435;&#x43C;&#x44F;. &#x427;&#x430;&#x441;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x438;&#x436;&#x435; Kubernetes Service &#x438; &#x432;&#x44B;&#x448;&#x435; &#x43A;&#x430;&#x431;&#x435;&#x43B;&#x44F;: Linux &#x43D;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x442;&#x44C; IP &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E; hop &#x441; MAC-&#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x43C;. &#x420;&#x430;&#x437;&#x431;&#x435;&#x440;&#x451;&#x43C;, &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x442;&#x430;&#x43A;&#x43E;&#x439; &#x441;&#x431;&#x43E;&#x439; &#x447;&#x435;&#x440;&#x435;&#x437; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;, neighbor state, packet capture &#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;, &#x43D;&#x435; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x44F; &#x441; &#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x433;&#x43E; flush &#x438;&#x43B;&#x438; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E;&#x433;&#x43E; sysctl.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/linux-neighbor-table-gpu-cluster-hero-443e810c.webp" alt="&#x422;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439; Linux &#x432; GPU-&#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;: ARP, IPv6 ND &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; NUD"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="quick-verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x432;&#x435;&#x440;&#x434;&#x438;&#x43A;&#x442;: &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x438;&#x43D;&#x43E;&#x432;&#x430;&#x442;&#x430; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439;</h2>
<p>LLM API &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x435;&#x442;&#x44C; &#xAB;&#x436;&#x438;&#x432;&#x44B;&#x43C;&#xBB;: health-check &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442;, GPU &#x437;&#x430;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;, DNS &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442;, &#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x437;&#x43B;&#x430; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x44E;&#x442; &#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434;&#x44B; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x43D;&#x438;&#x44F; &#x438;&#x43B;&#x438; <code>No route to host</code>. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x439; &#x430;&#x434;&#x440;&#x435;&#x441; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x432; &#x442;&#x43E;&#x43C; &#x436;&#x435; L2-&#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x435; &#x438;&#x43B;&#x438; next hop &#x43D;&#x435; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; MAC, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; neighbor table &#x440;&#x430;&#x43D;&#x44C;&#x448;&#x435;, &#x447;&#x435;&#x43C; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x442;&#x430;&#x439;&#x43C;&#x430;&#x443;&#x442;&#x44B; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;.</p><p>&#x421;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B; &#x2014; &#x441;&#x43E;&#x447;&#x435;&#x442;&#x430;&#x43D;&#x438;&#x435; &#x442;&#x440;&#x451;&#x445; &#x444;&#x430;&#x43A;&#x442;&#x43E;&#x432;: <code>ip route get</code> &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441; &#x438; next hop; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x434;&#x43B;&#x44F; &#x43D;&#x435;&#x433;&#x43E; &#x437;&#x430;&#x441;&#x442;&#x440;&#x435;&#x432;&#x430;&#x435;&#x442; &#x432; <code>INCOMPLETE</code> &#x43B;&#x438;&#x431;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x432; <code>FAILED</code>; packet capture &#x432;&#x438;&#x434;&#x438;&#x442; ARP Request &#x438;&#x43B;&#x438; IPv6 Neighbor Solicitation &#x431;&#x435;&#x437; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;. &#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x44B;&#x439; gate &#x2014; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439;: fresh connection &#x43A; LLM endpoint &#x43B;&#x43E;&#x43C;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441; &#x44D;&#x442;&#x438;&#x43C; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;&#x43C;, &#x430; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x439; peer &#x432; &#x442;&#x43E;&#x43C; &#x436;&#x435; &#x442;&#x435;&#x441;&#x442;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442;.</p><p>&#x41E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43F;&#x438;&#x441;&#x43A;&#x430; <code>FAILED</code> &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E;. &#x412; cache &#x43E;&#x441;&#x442;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430; &#x432;&#x44B;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x43D;&#x44B;&#x445; Pod, &#x441;&#x442;&#x430;&#x440;&#x44B;&#x445; VIP &#x438; &#x443;&#x436;&#x435; &#x443;&#x434;&#x430;&#x43B;&#x451;&#x43D;&#x43D;&#x44B;&#x445; &#x443;&#x437;&#x43B;&#x43E;&#x432;. &#x41D;&#x435; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x438; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; <code>gc_thresh3</code>: &#x435;&#x441;&#x43B;&#x438; &#x43A;&#x43E;&#x43C;&#x43C;&#x443;&#x442;&#x430;&#x442;&#x43E;&#x440; &#x440;&#x435;&#x436;&#x435;&#x442; VLAN, CNI &#x43E;&#x431;&#x44A;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x438;&#x43B;&#x438; anti-spoofing &#x431;&#x43B;&#x43E;&#x43A;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x442;, &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x43B;&#x438;&#x448;&#x44C; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443; &#x434;&#x43E;&#x43B;&#x44C;&#x448;&#x435;.</p><p>&#x42D;&#x442;&#x430; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x44F; &#x2014; runbook &#x434;&#x43B;&#x44F; Linux-&#x443;&#x437;&#x43B;&#x430; &#x43D;&#x430; bare metal, VPS &#x438;&#x43B;&#x438; Kubernetes node. &#x41E;&#x43D; &#x43D;&#x435; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x443; Service dataplane, conntrack &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; inference. &#x414;&#x43B;&#x44F; &#x448;&#x438;&#x440;&#x43E;&#x43A;&#x43E;&#x433;&#x43E; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x43A;&#x441;&#x442;&#x430; &#x430;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x44B; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43E; <a href="https://kingservers.com/blog/private-ai-api-analog-openai-na-svoih-serverah/">Private AI API</a>, &#x430; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x43C;&#x44B; &#x441;&#x43E;&#x437;&#x43D;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x43C;&#x441;&#x44F; &#x43D;&#x430; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x435; IP &#x2192; link layer.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/neighbor-state-diagnosis-gpu-node-94e4cce3.webp" class="kg-image" alt="&#x422;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439; Linux &#x432; GPU-&#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;: ARP, IPv6 ND &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; NUD" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/neighbor-state-diagnosis-gpu-node-94e4cce3.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/neighbor-state-diagnosis-gpu-node-94e4cce3.webp 1000w, https://kingservers.com/blog/content/images/2026/10/neighbor-state-diagnosis-gpu-node-94e4cce3.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="packet-path">&#x41F;&#x443;&#x442;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;: &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; evidence gate &#x432;&#x43C;&#x435;&#x441;&#x442;&#x43E; &#x434;&#x43E;&#x433;&#x430;&#x434;&#x43A;&#x438;</h2>
<p>&#x41D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x438;&#x437; effective network namespace. &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x43D;&#x430; host &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x443;&#x44E; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C;, &#x43F;&#x43E;&#x43A;&#x430; Pod &#x436;&#x438;&#x432;&#x451;&#x442; &#x432; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x43C; namespace, VRF &#x438;&#x43B;&#x438; overlay. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x432;&#x44B;&#x44F;&#x441;&#x43D;&#x438;&#x442;&#x435;, &#x43E;&#x442;&#x43A;&#x443;&#x434;&#x430; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x432;&#x44B;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;: hostNetwork, veth Pod, CNI tunnel, egress gateway &#x43B;&#x438;&#x431;&#x43E; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441; storage/RDMA. &#x412;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;&#x439;: &#x447;&#x435;&#x439; neighbor cache &#x443;&#x447;&#x430;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x432; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43A;&#x435; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;?</p><p>Gate 1 &#x2014; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;. <code>ip route get</code> &#x441; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x43C; destination &#x438;, &#x43F;&#x440;&#x438; &#x43D;&#x435;&#x43E;&#x431;&#x445;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x438;, source &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x435; device, gateway &#x438; table. Gate 2 &#x2014; link-layer resolution: <code>ip neigh get</code> &#x438; <code>ip -s neigh show dev</code> &#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x44E;&#x442; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x438; probes. Gate 3 &#x2014; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; peer: capture &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x435;&#x442; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;, &#x43E;&#x442;&#x432;&#x435;&#x442; &#x438; MAC. Gate 4 &#x2014; application outcome: &#x43D;&#x43E;&#x432;&#x44B;&#x439; TCP-&#x441;&#x435;&#x430;&#x43D;&#x441; &#x438;&#x43B;&#x438; gRPC/SSE-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C;&#x441;&#x44F; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; L2 resolution.</p><p>&#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440;: Pod &#x43E;&#x431;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43A; inference endpoint <code>10.40.8.21</code>, &#x43D;&#x43E; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x432;&#x435;&#x434;&#x451;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; <code>10.40.8.1</code>. &#x418;&#x441;&#x43A;&#x430;&#x442;&#x44C; ARP &#x434;&#x43B;&#x44F; &#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x43E;&#x433;&#x43E; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x43D;&#x43E;: &#x441;&#x43E;&#x441;&#x435;&#x434; &#x2014; gateway. &#x412; overlay &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x43C; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; VTEP, &#x430; Pod IP &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; dataplane CNI. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C; neighbor entry, &#x438; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x432;&#x44B;&#x432;&#x43E;&#x434;.</p><p>&#x422;&#x430;&#x43A;&#x43E;&#x439; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x435;&#x442; &#x43E;&#x442; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x44F;. &#x420;&#x43E;&#x441;&#x442; TTFT &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x438;&#x441;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x44C; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441; <code>STALE</code>, &#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x43E;&#x43A;&#x430;&#x436;&#x435;&#x442;&#x441;&#x44F; &#x432; GPU queue. &#x418; &#x43D;&#x430;&#x43E;&#x431;&#x43E;&#x440;&#x43E;&#x442;, TCP retransmits &#x431;&#x443;&#x434;&#x443;&#x442; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x435;&#x442;&#x44C; &#xAB;&#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x43E;&#x439;&#xBB;, &#x445;&#x43E;&#x442;&#x44F; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x434;&#x430;&#x436;&#x435; &#x43D;&#x435; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; destination MAC.</p><style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-sel-nbr7a2q"><h3>&#x41F;&#x43E;&#x445;&#x43E;&#x436; &#x43B;&#x438; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x43D;&#x430; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443; neighbor table?</h3><label>&#x427;&#x442;&#x43E; &#x432;&#x438;&#x434;&#x438;&#x442; &#x434;&#x435;&#x436;&#x443;&#x440;&#x43D;&#x44B;&#x439;</label><select data-s><option value="one">&#x41D;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43E;&#x434;&#x438;&#x43D; &#x430;&#x434;&#x440;&#x435;&#x441; &#x432; &#x442;&#x43E;&#x43C; &#x436;&#x435; L2-&#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x435;</option><option value="many">&#x41D;&#x430; &#x443;&#x437;&#x43B;&#x435; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x447;&#x438;&#x441;&#x43B;&#x43E; INCOMPLETE &#x438; FAILED</option><option value="service">&#x41D;&#x435; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; Service, Pod IP &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x435;&#x43D;</option><option value="gpu">TTFT &#x432;&#x44B;&#x440;&#x43E;&#x441;, &#x43D;&#x43E; &#x441;&#x435;&#x442;&#x44C; &#x434;&#x43E; gateway &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x430;</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-nbr7a2q');if(!r)return;var m={"one":"Начните с ip route get, ip neigh get и packet capture на нужном интерфейсе. Ищите отсутствие ARP reply или Neighbor Advertisement.","many":"Проверьте масштаб L2-домена, churn адресов, счётчики таблицы и события CNI. Порог сам по себе не доказывает причину.","service":"Сначала отделите Service dataplane от neighbor resolution: сравните ClusterIP и прямой Pod IP на fresh connection.","gpu":"Neighbor tuning, скорее всего, не первый рычаг. Проверьте очередь inference, TTFT и backend capacity."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/arp-nd-evidence-chain-infographic-47563e19.webp" class="kg-image" alt="&#x422;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439; Linux &#x432; GPU-&#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;: ARP, IPv6 ND &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; NUD" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/arp-nd-evidence-chain-infographic-47563e19.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/arp-nd-evidence-chain-infographic-47563e19.webp 1000w, https://kingservers.com/blog/content/images/2026/10/arp-nd-evidence-chain-infographic-47563e19.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="nud-states">&#x421;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; NUD: &#x447;&#x442;&#x43E; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x44E;&#x442; REACHABLE, STALE &#x438; FAILED</h2>
<p><code>ip neigh</code> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43D;&#x435; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x43D;&#x44B;&#x439; ARP-&#x43A;&#x44D;&#x448;, &#x430; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; Neighbor Unreachability Detection. &#x412; Linux &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x430;&#x44F; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442;&#x441;&#x44F; &#x434;&#x43B;&#x44F; IPv4 ARP &#x438; IPv6 ND, &#x445;&#x43E;&#x442;&#x44F; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x44B; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x44F; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x44E;&#x442;&#x441;&#x44F;. <code>REACHABLE</code> &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x435;&#x434;&#x430;&#x432;&#x43D;&#x435;&#x435; &#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x435;. <code>STALE</code> &#x433;&#x43E;&#x432;&#x43E;&#x440;&#x438;&#x442; &#x43B;&#x438;&#x448;&#x44C; &#x43E; &#x442;&#x43E;&#x43C;, &#x447;&#x442;&#x43E; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x443;&#x441;&#x442;&#x430;&#x440;&#x435;&#x43B;&#x43E;; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x438;&#x433;&#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x434;&#x43E; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F;.</p><p>&#x41F;&#x440;&#x438; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43A;&#x435; &#x447;&#x435;&#x440;&#x435;&#x437; <code>STALE</code> &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x432; <code>DELAY</code>, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x440;&#x438; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x438; upper-layer confirmation &#x2014; &#x432; <code>PROBE</code>. &#x42D;&#x442;&#x43E; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x436;&#x438;&#x432;&#x43E;&#x441;&#x442;&#x438;. <code>INCOMPLETE</code> &#x43F;&#x440;&#x438;&#x43D;&#x446;&#x438;&#x43F;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439;: link-layer address &#x435;&#x449;&#x451; &#x43D;&#x435; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x435;&#x43D;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x44F;&#x434;&#x440;&#x43E; &#x443;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x43E;&#x432; &#x43D;&#x430; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x44F;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43D;&#x438;&#x44F; probes Linux &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; <code>FAILED</code>.</p><p>RFC 4861 &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; &#x434;&#x43B;&#x44F; IPv6 &#x43F;&#x44F;&#x442;&#x44C; &#x43E;&#x441;&#x43D;&#x43E;&#x432;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x439; neighbor cache &#x438; &#x43F;&#x43E;&#x434;&#x447;&#x451;&#x440;&#x43A;&#x438;&#x432;&#x430;&#x435;&#x442; &#x440;&#x43E;&#x43B;&#x44C; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x435;&#x441;&#x441;&#x430; &#x43E;&#x442; &#x432;&#x435;&#x440;&#x445;&#x43D;&#x435;&#x433;&#x43E; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x44F;. &#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435; &#x441;&#x43B;&#x435;&#x434;&#x441;&#x442;&#x432;&#x438;&#x435;: &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x435; ACK &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x437;&#x43D;&#x430;&#x43D;&#x438;&#x435; &#x43E; peer, &#x430; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x441;&#x442;&#x430;&#x440;&#x443;&#x44E; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x442;&#x438;&#x445;&#x43E;&#x439;. &#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; <a href="https://man7.org/linux/man-pages/man8/ip-neighbour.8.html?ref=kingservers.com">ip-neighbour(8)</a> &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x447;&#x438;&#x441;&#x43B;&#x44F;&#x435;&#x442; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F;, &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x435; &#x432; iproute2.</p><p>&#x41D;&#x435; &#x430;&#x433;&#x440;&#x435;&#x433;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x432;&#x441;&#x451; &#x432; &#x43E;&#x434;&#x438;&#x43D; alarm &#xAB;&#x43D;&#x435; REACHABLE&#xBB;. &#x414;&#x43B;&#x44F; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x433;&#x43E; LLM gateway &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x435; <code>STALE &#x2192; DELAY &#x2192; REACHABLE</code> &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;. &#x410; &#x441;&#x435;&#x440;&#x438;&#x44F; <code>INCOMPLETE &#x2192; FAILED</code> &#x434;&#x43B;&#x44F; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x435;&#x433;&#x43E; next hop, &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x432;&#x448;&#x430;&#x44F; &#x441; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430;&#x43C;&#x438; fresh connections, &#x443;&#x436;&#x435; &#x434;&#x43E;&#x441;&#x442;&#x43E;&#x439;&#x43D;&#x430; page.</p><div class="ks-widget" id="ks-tab-nud4k9m"><h3>&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; NUD</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="ok">REACHABLE / STALE</button><button type="button" class="tab-btn" data-t="wait">INCOMPLETE</button><button type="button" class="tab-btn" data-t="probe">DELAY / PROBE</button><button type="button" class="tab-btn" data-t="fail">FAILED</button></div><div class="panel on" data-p="ok">STALE &#x43D;&#x435; &#x440;&#x430;&#x432;&#x435;&#x43D; &#x430;&#x432;&#x430;&#x440;&#x438;&#x438;: &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x435;&#x449;&#x451; &#x43F;&#x440;&#x438;&#x433;&#x43E;&#x434;&#x43D;&#x430;, &#x430; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x43D;&#x430;&#x447;&#x43D;&#x451;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x438; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x435;&#x43C; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x438;. &#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x441; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x43E;&#x43C; &#x438; SLO.</div><div class="panel" data-p="wait">&#x42F;&#x434;&#x440;&#x43E; &#x443;&#x436;&#x435; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430;, &#x43D;&#x43E; link-layer &#x430;&#x434;&#x440;&#x435;&#x441; &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x435; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x435;&#x43D;. &#x41D;&#x443;&#x436;&#x435;&#x43D; capture &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432; &#x438; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432;.</div><div class="panel" data-p="probe">&#x42F;&#x434;&#x440;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x440;&#x430;&#x43D;&#x435;&#x435; &#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x430;. &#x41E;&#x434;&#x438;&#x43D; &#x43A;&#x440;&#x430;&#x442;&#x43A;&#x438;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x435;&#x43D;; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x44E;&#x449;&#x438;&#x439;&#x441;&#x44F; &#x446;&#x438;&#x43A;&#x43B; &#x43D;&#x430; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x43C; peer &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F;.</div><div class="panel" data-p="fail">&#x41B;&#x438;&#x43C;&#x438;&#x442; probes &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43D;. &#x414;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435;, &#x447;&#x442;&#x43E; &#x441;&#x431;&#x43E;&#x439; &#x43E;&#x442;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x441;&#x44F; &#x43A; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x43E;&#x43C;&#x443; next hop &#x438; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x43E;&#x43C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x438;.</div><script>(function(){var r=document.getElementById('ks-tab-nud4k9m');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nud-states-linux-neighbor-cache-9da04100.webp" class="kg-image" alt="&#x422;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439; Linux &#x432; GPU-&#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;: ARP, IPv6 ND &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; NUD" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nud-states-linux-neighbor-cache-9da04100.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nud-states-linux-neighbor-cache-9da04100.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nud-states-linux-neighbor-cache-9da04100.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="baseline">&#x421;&#x43D;&#x44F;&#x442;&#x44C; baseline: &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x44E;&#x442; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x43A;&#x441;&#x442;</h2>
<p>&#x41F;&#x435;&#x440;&#x435;&#x434; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x43C;&#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; namespace, &#x432;&#x440;&#x435;&#x43C;&#x44F;, &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;, route decision &#x438; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; &#x432;&#x44B;&#x432;&#x43E;&#x434; neighbor table. &#x421;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430; &#x441;&#x43B;&#x430;&#x431;: &#x432;&#x44B; &#x43D;&#x435; &#x443;&#x432;&#x438;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x43E;&#x432;. &#x41B;&#x443;&#x447;&#x448;&#x435; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x44C; &#x43E;&#x434;&#x43D;&#x443; &#x438; &#x442;&#x443; &#x436;&#x435; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x443;&#x44E; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x442;&#x440;&#x438;&#x436;&#x434;&#x44B; &#x2014; &#x434;&#x43E; &#x43F;&#x440;&#x43E;&#x431;&#x44B;, &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;.</p><p>&#x418;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; &#x430;&#x434;&#x440;&#x435;&#x441; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x433;&#x43E; next hop &#x438;&#x437; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x448;&#x430;&#x433;&#x430;. &#x41A;&#x43B;&#x44E;&#x447; <code>-s</code> &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x441;&#x442;&#x430;&#x442;&#x438;&#x441;&#x442;&#x438;&#x43A;&#x443;, &#x430; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440; &#x43F;&#x43E; <code>dev</code> &#x43D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x435;&#x442; management, storage &#x438; workload networks. &#x412; VRF &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x43A;&#x441;&#x442;. &#x414;&#x43B;&#x44F; Pod namespace &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; <code>nsenter</code> &#x438;&#x43B;&#x438; <code>ip netns exec</code> &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x43D;&#x43E; &#x432;&#x430;&#x448;&#x435;&#x439; runtime-&#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">neighbor-baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>date -Is
ip -br link
ip -br address
ip route get 10.40.8.21
ip neigh get 10.40.8.1 dev eth1
ip -s neigh show dev eth1
ip -6 -s neigh show dev eth1</code></pre>
<div class="ks-canonical-code-block__caption">Baseline route &#x438; neighbor state</div>
</div>
<p>&#x421;&#x447;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43A;&#x430;&#x43A; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x443;, &#x430; &#x43D;&#x435; &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x431;&#x43E;&#x440; &#x441;&#x442;&#x440;&#x43E;&#x43A;. &#x415;&#x441;&#x43B;&#x438; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x43D;&#x435;&#x43E;&#x436;&#x438;&#x434;&#x430;&#x43D;&#x43D;&#x43E; &#x441;&#x43C;&#x435;&#x43D;&#x438;&#x43B; interface, neighbor table &#x434;&#x440;&#x443;&#x433;&#x43E;&#x433;&#x43E; device &#x43D;&#x435; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x44F;&#x435;&#x442; &#x441;&#x431;&#x43E;&#x439;. &#x415;&#x441;&#x43B;&#x438; <code>ip neigh get</code> &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;, &#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x434;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43A; &#x438;&#x43D;&#x43E;&#x43C;&#x443; remote peer &#x447;&#x435;&#x440;&#x435;&#x437; DNS &#x438;&#x43B;&#x438; load balancer, &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x435;&#x441;&#x442; &#x441; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x43C; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x43C; &#x438; fresh connection.</p><p>&#x41E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; negative control: &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x439; &#x443;&#x437;&#x435;&#x43B; &#x438;&#x43B;&#x438; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; peer &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x435;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x430; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x432; <code>FAILED</code>, &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x44B; &#x431;&#x43B;&#x438;&#x436;&#x435; &#x43A; interface, VLAN, switch &#x438;&#x43B;&#x438; CNI. &#x415;&#x441;&#x43B;&#x438; &#x43B;&#x43E;&#x43C;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x438;&#x43D; peer, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x43F;&#x43E;&#x440;&#x442;, &#x430;&#x434;&#x440;&#x435;&#x441; &#x438; &#x43E;&#x431;&#x44A;&#x44F;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;. &#x422;&#x430;&#x43A;&#x43E;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x435;&#x435; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E;&#x433;&#x43E; flush &#x432;&#x441;&#x435;&#x439; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x44B;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/arp-nd-packet-capture-canary-9beab9cd.webp" class="kg-image" alt="&#x422;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439; Linux &#x432; GPU-&#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;: ARP, IPv6 ND &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; NUD" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/arp-nd-packet-capture-canary-9beab9cd.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/arp-nd-packet-capture-canary-9beab9cd.webp 1000w, https://kingservers.com/blog/content/images/2026/10/arp-nd-packet-capture-canary-9beab9cd.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="capture">Packet capture &#x434;&#x43B;&#x44F; ARP &#x438; IPv6 ND &#x431;&#x435;&#x437; &#x43B;&#x438;&#x448;&#x43D;&#x435;&#x433;&#x43E; &#x448;&#x443;&#x43C;&#x430;</h2>
<p>Capture &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x433;&#x43B;&#x430;&#x432;&#x43D;&#x44B;&#x439; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;: &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43D;&#x435; &#x443;&#x448;&#x451;&#x43B;, &#x43E;&#x442;&#x432;&#x435;&#x442; &#x43D;&#x435; &#x43F;&#x440;&#x438;&#x448;&#x451;&#x43B; &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x448;&#x451;&#x43B;, &#x43D;&#x43E; &#x431;&#x44B;&#x43B; &#x43E;&#x442;&#x432;&#x435;&#x440;&#x433;&#x43D;&#x443;&#x442;/&#x43D;&#x435; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x451;&#x43D;. &#x414;&#x43B;&#x44F; IPv4 &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x439;&#x442;&#x435; ARP Request &#x438; Reply. &#x414;&#x43B;&#x44F; IPv6 &#x2014; ICMPv6 Neighbor Solicitation &#x438; Neighbor Advertisement. &#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x430; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x435;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43B; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;; capture &#x43D;&#x430; <code>any</code> &#x443;&#x434;&#x43E;&#x431;&#x435;&#x43D; &#x434;&#x43B;&#x44F; &#x43E;&#x440;&#x438;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x430;, &#x43D;&#x43E; &#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x447;&#x430;&#x441;&#x442;&#x44C; link-layer &#x434;&#x435;&#x442;&#x430;&#x43B;&#x435;&#x439;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">neighbor-capture.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>sudo tcpdump -ni eth1 -e -vvv &apos;arp&apos;
sudo tcpdump -ni eth1 -e -vvv &apos;icmp6 and (ip6[40] == 135 or ip6[40] == 136)&apos;
ip neigh get 10.40.8.1 dev eth1
ping -c 2 -I eth1 10.40.8.1</code></pre>
<div class="ks-canonical-code-block__caption">ARP &#x438; IPv6 Neighbor Discovery</div>
</div>
<p>&#x412; IPv6 &#x432;&#x430;&#x43B;&#x438;&#x434;&#x43D;&#x43E;&#x441;&#x442;&#x44C; ND &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43E;&#x442; &#x43D;&#x430;&#x43B;&#x438;&#x447;&#x438;&#x44F; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;. RFC 4861 &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; Hop Limit 255, &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x443;&#x44E; checksum &#x438; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x435; options. &#x41E;&#x442;&#x432;&#x435;&#x442; &#x441; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x433;&#x43E; VLAN, &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x43C; target &#x438;&#x43B;&#x438; &#x43D;&#x435;&#x43E;&#x436;&#x438;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x43C; link-layer address &#x43D;&#x435; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x435;&#x442; &#x442;&#x440;&#x430;&#x43A;&#x442;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x43E;&#x433;&#x43E; &#x43F;&#x443;&#x442;&#x438;. &#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; source/destination, target address &#x438; MAC &#x441; route decision.</p><p>&#x412; Kubernetes &#x43F;&#x430;&#x440;&#x430;&#x43B;&#x43B;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; host &#x438; namespace workload. &#x41C;&#x43E;&#x434;&#x435;&#x43B;&#x44C; Kubernetes &#x434;&#x430;&#x451;&#x442; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C;&#x443; Pod &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x439; IP &#x438; &#x434;&#x435;&#x43B;&#x435;&#x433;&#x438;&#x440;&#x443;&#x435;&#x442; &#x440;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44E; pod network CNI; &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43C;&#x435;&#x441;&#x442;&#x43E; ARP/ND &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; &#x440;&#x435;&#x436;&#x438;&#x43C;&#x430;. &#x412; routed CNI node &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x437;&#x43D;&#x430;&#x442;&#x44C; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x44B; &#x43A; Pod CIDR &#x438; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x430;&#x442;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x439; node. &#x412; L2/bridge-&#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438; &#x43A;&#x43E;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x442;&#x432;&#x43E; &#x43D;&#x435;&#x43F;&#x43E;&#x441;&#x440;&#x435;&#x434;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x438;&#x434;&#x438;&#x43C;&#x44B;&#x445; peers &#x431;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x43E; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435;.</p><p>&#x41D;&#x435; &#x43E;&#x447;&#x438;&#x449;&#x430;&#x439;&#x442;&#x435; cache &#x43F;&#x435;&#x440;&#x435;&#x434; capture &#x43D;&#x430; &#x432;&#x441;&#x435;&#x445; &#x443;&#x437;&#x43B;&#x430;&#x445;. &#x41C;&#x430;&#x441;&#x441;&#x43E;&#x432;&#x44B;&#x439; flush &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x432;&#x441;&#x43F;&#x43B;&#x435;&#x441;&#x43A; resolution &#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x443;&#x441;&#x438;&#x43B;&#x438;&#x442;&#x44C; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;. &#x414;&#x43B;&#x44F; canary &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x43E; &#x443;&#x434;&#x430;&#x43B;&#x438;&#x442;&#x44C; &#x43E;&#x434;&#x43D;&#x443; &#x434;&#x438;&#x43D;&#x430;&#x43C;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x443;&#x44E; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; next hop, &#x435;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x44B; negative control &#x438; rollback, &#x43D;&#x43E; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x439; &#x432;&#x44B;&#x432;&#x43E;&#x434;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/neighbor-table-troubleshooting-flow-infographic-20ad7fc6.webp" class="kg-image" alt="&#x422;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439; Linux &#x432; GPU-&#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;: ARP, IPv6 ND &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; NUD" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/neighbor-table-troubleshooting-flow-infographic-20ad7fc6.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/neighbor-table-troubleshooting-flow-infographic-20ad7fc6.webp 1000w, https://kingservers.com/blog/content/images/2026/10/neighbor-table-troubleshooting-flow-infographic-20ad7fc6.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="kubernetes-owner">&#x41A;&#x442;&#x43E; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x435;&#x442; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C;&#x44E; &#x432; Kubernetes: host, Pod, CNI &#x438;&#x43B;&#x438; gateway</h2>
<p>Kubernetes &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x436;&#x435;&#x43B;&#x430;&#x435;&#x43C;&#x443;&#x44E; &#x441;&#x432;&#x44F;&#x437;&#x43D;&#x43E;&#x441;&#x442;&#x44C;, &#x43D;&#x43E; &#x43D;&#x435; &#x434;&#x438;&#x43A;&#x442;&#x443;&#x435;&#x442; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; dataplane. Pod network &#x440;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x443;&#x435;&#x442; CNI, Service traffic &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x430;&#x442;&#x44B;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; kube-proxy &#x438;&#x43B;&#x438; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x43C; proxy CNI. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x439; ClusterIP &#x43D;&#x430; &#x434;&#x432;&#x443;&#x445; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x430;&#x445; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; hop&#x2019;&#x44B;: iptables/nftables DNAT, eBPF service map, overlay VTEP, routed Pod CIDR &#x438;&#x43B;&#x438; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; gateway.</p><p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43F;&#x430;&#x440;&#x44B; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;: &#x43F;&#x440;&#x44F;&#x43C;&#x43E;&#x439; Pod IP &#x438; Service IP, &#x43E;&#x431;&#x430; &#x43D;&#x430; fresh connections. &#x415;&#x441;&#x43B;&#x438; Pod IP &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442;, &#x430; Service &#x43D;&#x435;&#x442;, neighbor table &#x440;&#x435;&#x434;&#x43A;&#x43E; &#x431;&#x443;&#x434;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C; owner; &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; Service dataplane &#x438; endpoint selection. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x430; &#x43B;&#x43E;&#x43C;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; node &#x438; route &#x432;&#x435;&#x434;&#x451;&#x442; &#x43A; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; VTEP &#x438;&#x43B;&#x438; next hop, neighbor resolution &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x441;&#x438;&#x43B;&#x44C;&#x43D;&#x435;&#x435; &#x43A;&#x430;&#x43D;&#x434;&#x438;&#x434;&#x430;&#x442;&#x43E;&#x43C;.</p><p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x441;&#x43E;&#x431;&#x44B;&#x442;&#x438;&#x44F; churn. &#x411;&#x44B;&#x441;&#x442;&#x440;&#x43E;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x435; Pod &#x441;&#x430;&#x43C;&#x43E; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x43D;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D;&#x43E; &#x440;&#x430;&#x437;&#x434;&#x443;&#x432;&#x430;&#x442;&#x44C; L2 cache: &#x432;&#x441;&#x451; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; &#x442;&#x43E;&#x433;&#x43E;, &#x44F;&#x432;&#x43B;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x43B;&#x438; Pod IP on-link &#x434;&#x43B;&#x44F; &#x443;&#x437;&#x43B;&#x430;. &#x412; overlay cache &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43E;&#x434;&#x435;&#x440;&#x436;&#x430;&#x442;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; VTEP peers, &#x430; &#x432; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; L2-&#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438; &#x2014; &#x442;&#x44B;&#x441;&#x44F;&#x447;&#x438; &#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x44B;&#x445; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x432;. &#x421;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#xAB;&#x447;&#x438;&#x441;&#x43B;&#x43E; Pod = &#x447;&#x438;&#x441;&#x43B;&#x43E; neighbors&#xBB; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F;.</p><p>&#x414;&#x43B;&#x44F; security boundary &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43E; <a href="https://kingservers.com/blog/kubernetes-networkpolicy-llm-inference-default-deny/">Kubernetes NetworkPolicy &#x434;&#x43B;&#x44F; LLM inference</a>. Policy deny &#x438; neighbor failure &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x435;&#x442;&#x44C; &#x43F;&#x43E;&#x445;&#x43E;&#x436;&#x435; &#x434;&#x43B;&#x44F; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;, &#x43D;&#x43E; evidence &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F;: &#x43F;&#x440;&#x438; policy &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x435;&#x441;&#x442;&#x44C; &#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x43D;&#x44B;&#x439; peer/MAC &#x438; verdict dataplane, &#x430; &#x43F;&#x440;&#x438; <code>INCOMPLETE</code> link-layer binding &#x435;&#x449;&#x451; &#x43D;&#x435; &#x43F;&#x43E;&#x441;&#x442;&#x440;&#x43E;&#x435;&#x43D;.</p><div class="ks-widget" id="ks-chk-cap8r1x"><h3>&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; evidence bundle &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430;</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x430; &#x432; effective namespace &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; workload</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; ip route get</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x44B; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; ip -s neigh &#x434;&#x43E; &#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x440;&#x43E;&#x431;&#x44B;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x415;&#x441;&#x442;&#x44C; capture ARP &#x438;&#x43B;&#x438; ICMPv6 NS/NA</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x415;&#x441;&#x442;&#x44C; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x439; peer &#x43A;&#x430;&#x43A; negative control</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> Application probe &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D; &#x43D;&#x430; fresh connection</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-cap8r1x');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/neighbor-cache-capacity-linux-9e022047.webp" class="kg-image" alt="&#x422;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439; Linux &#x432; GPU-&#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;: ARP, IPv6 ND &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; NUD" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/neighbor-cache-capacity-linux-9e022047.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/neighbor-cache-capacity-linux-9e022047.webp 1000w, https://kingservers.com/blog/content/images/2026/10/neighbor-cache-capacity-linux-9e022047.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="capacity">&#x401;&#x43C;&#x43A;&#x43E;&#x441;&#x442;&#x44C; neighbor cache: gc_thresh &#x431;&#x435;&#x437; &#x43C;&#x430;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x447;&#x438;&#x441;&#x435;&#x43B;</h2>
<p>Linux &#x43F;&#x440;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; <code>gc_thresh1</code>, <code>gc_thresh2</code> &#x438; <code>gc_thresh3</code> &#x434;&#x43B;&#x44F; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; garbage collection neighbor entries. &#x410;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x44F;&#x434;&#x440;&#x430; &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x438;&#x445; &#x43A;&#x430;&#x43A; &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x443;&#x440;&#x43E;&#x432;&#x435;&#x43D;&#x44C; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F;, &#x43F;&#x43E;&#x440;&#x43E;&#x433; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x430;&#x433;&#x440;&#x435;&#x441;&#x441;&#x438;&#x432;&#x43D;&#x43E;&#x439; &#x43E;&#x447;&#x438;&#x441;&#x442;&#x43A;&#x438; &#x438; &#x43C;&#x430;&#x43A;&#x441;&#x438;&#x43C;&#x443;&#x43C; &#x43D;&#x435;&#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x44B;&#x445; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x435;&#x439;. &#x417;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x43E; &#x443;&#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x43D;&#x438;&#x44E; &#x437;&#x430;&#x432;&#x438;&#x441;&#x44F;&#x442; &#x43E;&#x442; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438;/&#x441;&#x431;&#x43E;&#x440;&#x43A;&#x438;; &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x438;&#x437; &#x447;&#x443;&#x436;&#x43E;&#x439; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x438; &#x431;&#x435;&#x437; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x44F; sysctl &#x43D;&#x430; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; kernel.</p><p><code>gc_thresh3</code> &#x441;&#x442;&#x43E;&#x438;&#x442; &#x43F;&#x43E;&#x432;&#x44B;&#x448;&#x430;&#x442;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; capacity pressure: &#x440;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x439; &#x43D;&#x430;&#x431;&#x43E;&#x440; &#x43D;&#x435;&#x43F;&#x43E;&#x441;&#x440;&#x435;&#x434;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x43E;&#x434;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;&#x43D;&#x44B;&#x445; peers &#x43B;&#x435;&#x433;&#x438;&#x442;&#x438;&#x43C;&#x435;&#x43D;, &#x441;&#x43E;&#x431;&#x44B;&#x442;&#x438;&#x44F; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x442; &#x43E;&#x442;&#x43A;&#x430;&#x437; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x435;&#x439;, &#x430; GC &#x43D;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x432;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x438; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; churn. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x43A;&#x43E;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x442;&#x432;&#x43E; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x435;&#x439; &#x43F;&#x43E; family, device &#x438; state, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43E;&#x446;&#x435;&#x43D;&#x438;&#x442;&#x435;, &#x43F;&#x43E;&#x447;&#x435;&#x43C;&#x443; &#x43E;&#x43D;&#x438; &#x432;&#x43E;&#x437;&#x43D;&#x438;&#x43A;&#x430;&#x44E;&#x442;. &#x427;&#x430;&#x441;&#x442;&#x43E; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x2014; &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x438;&#x442;&#x44C; L2 failure domain, &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x44C; on-link routes &#x438;&#x43B;&#x438; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x438;&#x437;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; IP churn.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">neighbor-capacity.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>for family in ipv4 ipv6; do
  echo &quot;== $family ==&quot;
  sysctl &quot;net.$family.neigh.default.gc_thresh1&quot;
  sysctl &quot;net.$family.neigh.default.gc_thresh2&quot;
  sysctl &quot;net.$family.neigh.default.gc_thresh3&quot;
  sysctl &quot;net.$family.neigh.default.unres_qlen_bytes&quot;
done

ip neigh show | awk &apos;{print $NF}&apos; | sort | uniq -c
ip -6 neigh show | awk &apos;{print $NF}&apos; | sort | uniq -c</code></pre>
<div class="ks-canonical-code-block__caption">&#x418;&#x43D;&#x432;&#x435;&#x43D;&#x442;&#x430;&#x440;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; cache &#x438; sysctl &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F;</div>
</div>
<p>&#x41E;&#x431;&#x440;&#x430;&#x442;&#x438;&#x442;&#x435; &#x432;&#x43D;&#x438;&#x43C;&#x430;&#x43D;&#x438;&#x435; &#x43D;&#x430; <code>unres_qlen_bytes</code>: &#x44D;&#x442;&#x43E; &#x43B;&#x438;&#x43C;&#x438;&#x442; &#x431;&#x430;&#x439;&#x442;&#x43E;&#x432; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x43E;&#x432;, &#x43E;&#x436;&#x438;&#x434;&#x430;&#x44E;&#x449;&#x438;&#x445; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430;. &#x421;&#x442;&#x430;&#x440;&#x44B;&#x439; <code>unres_qlen</code> &#x43F;&#x43E;&#x43C;&#x435;&#x447;&#x435;&#x43D; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x435;&#x439; &#x44F;&#x434;&#x440;&#x430; &#x43A;&#x430;&#x43A; deprecated &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x44F; &#x441; Linux 3.3. &#x423;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x439; ARP/NA; &#x43E;&#x43D;&#x43E; &#x43B;&#x438;&#x448;&#x44C; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43E;&#x431;&#x44A;&#x451;&#x43C; &#x443;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x43C;&#x44B;&#x445; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x438; memory envelope.</p><p>&#x414;&#x43B;&#x44F; GPU-&#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x430; &#x446;&#x435;&#x43D;&#x430; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x432;&#x44B;&#x448;&#x435; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x439;: control request &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43C;&#x430;&#x43B;, &#x43D;&#x43E; &#x437;&#x430; &#x43D;&#x438;&#x43C; &#x441;&#x442;&#x43E;&#x438;&#x442; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x430;&#x44F; capacity. &#x422;&#x435;&#x43C; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x435;&#x435; dedicated node &#x438;&#x43B;&#x438; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x439; VPS &#x43D;&#x435; &#x443;&#x441;&#x442;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; VLAN, CNI route &#x438;&#x43B;&#x438; switch policy. &#x418;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x43D;&#x44B;&#x439; &#x430;&#x43F;&#x433;&#x440;&#x435;&#x439;&#x434; &#x43E;&#x431;&#x43E;&#x441;&#x43D;&#x43E;&#x432;&#x430;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x439; &#x43D;&#x430;&#x431;&#x43E;&#x440; peers, &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442;&#x441;&#x44F; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x44B;&#x439; L2/VRF profile &#x438; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x430; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x442;&#x44C; kernel, NIC &#x438; change window.</p><div class="ks-widget" id="ks-sel-tun5v6p"><h3>&#x41D;&#x443;&#x436;&#x43D;&#x43E; &#x43B;&#x438; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; sysctl?</h3><label>&#x427;&#x442;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43E;</label><select data-s><option value="state">&#x415;&#x441;&#x442;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; FAILED &#x443; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x438;&#x445; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x432;</option><option value="full">&#x41B;&#x43E;&#x433;&#x438; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x44E;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x438; &#x43E;&#x442;&#x43A;&#x430;&#x437; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x435;&#x439;</option><option value="churn">&#x422;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x438;&#x437;-&#x437;&#x430; churn Pod IP</option><option value="l2">&#x41E;&#x442;&#x432;&#x435;&#x442;&#x44B; ARP &#x438;&#x43B;&#x438; NA &#x43D;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442;&#x441;&#x44F;</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-tun5v6p');if(!r)return;var m={"state":"Не меняйте пороги. Сначала найдите общий интерфейс, next hop и application impact.","full":"Рассчитайте рабочий набор соседей, проверьте память и меняйте один параметр на canary с A/B/A.","churn":"Сначала исправьте источник churn или модель маршрутизации. Больший cache может лишь отложить повторение.","l2":"Порог cache не вернёт потерянный ответ. Ищите VLAN, switch port, CNI, anti-spoofing или неверный on-link маршрут."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><h2 id="canary">Canary A/B/A: &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43E;&#x434;&#x438;&#x43D; owner &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;</h2>
<p>&#x425;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x439; canary &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x441; baseline A. &#x412;&#x44B;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; node &#x438; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x439; peer, &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; route, neighbor states, capture &#x438; application SLO. &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; stop condition: &#x43D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, &#x440;&#x43E;&#x441;&#x442; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x43A; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432; &#x438;&#x43B;&#x438; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x43E;&#x441;&#x442;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x435; <code>INCOMPLETE</code> &#x43D;&#x430; healthy peer. &#x41E;&#x441;&#x442;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; nodes &#x43E;&#x441;&#x442;&#x430;&#x44E;&#x442;&#x441;&#x44F; control group.</p><p>&#x412; &#x444;&#x430;&#x437;&#x435; B &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; owner. &#x42D;&#x442;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; VLAN &#x43D;&#x430; switch port, route &#x432; CNI, &#x430;&#x434;&#x440;&#x435;&#x441;&#x430; gateway &#x438;&#x43B;&#x438; &#x43E;&#x434;&#x438;&#x43D; sysctl &#x43D;&#x430; canary. &#x41D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; flush cache, &#x43F;&#x435;&#x440;&#x435;&#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A; CNI &#x438; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x440;&#x43E;&#x433;&#x43E;&#x432;: &#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x441;&#x442;&#x430;&#x43D;&#x435;&#x442; &#x43D;&#x435;&#x438;&#x43D;&#x442;&#x435;&#x440;&#x43F;&#x440;&#x435;&#x442;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x44B;&#x43C;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43C;&#x435;&#x448;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x43E;&#x442; &#x436;&#x435; destination, source, namespace &#x438; fresh-connection probe.</p><p>&#x424;&#x430;&#x437;&#x430; A &#x43F;&#x43E;&#x441;&#x43B;&#x435; rollback &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x430;. &#x415;&#x441;&#x43B;&#x438; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x443;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x438;&#x43B;&#x44C;&#x43D;&#x435;&#x435;. &#x415;&#x441;&#x43B;&#x438; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;, &#x432;&#x435;&#x440;&#x43E;&#x44F;&#x442;&#x43D;&#x43E;, &#x432;&#x44B; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E; &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x438;&#x43B;&#x438; cache, connection pool &#x438;&#x43B;&#x438; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x435;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;. &#x41F;&#x43E;&#x434;&#x43E;&#x436;&#x434;&#x438;&#x442;&#x435; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435;, &#x43D;&#x435; &#x43F;&#x43E;&#x434;&#x433;&#x43E;&#x43D;&#x44F;&#x44F; &#x432;&#x44B;&#x432;&#x43E;&#x434; &#x43F;&#x43E;&#x434; &#x436;&#x435;&#x43B;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;.</p><p>Application gate &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x442;&#x43E;, &#x447;&#x442;&#x43E; &#x432;&#x438;&#x434;&#x435;&#x43B; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;: &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43D;&#x43E;&#x432;&#x44B;&#x445; LLM-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432;, &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x431;&#x430;&#x439;&#x442;&#x430;/&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;, stream completion &#x438; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;. &#x421;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; cache &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x442;&#x430;&#x442;&#x44C; REACHABLE, &#x43F;&#x43E;&#x43A;&#x430; gateway &#x432;&#x441;&#x451; &#x435;&#x449;&#x451; &#x436;&#x434;&#x451;&#x442; GPU. &#x41F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x431;&#x435;&#x437; application outcome &#x43D;&#x435; &#x43E;&#x431;&#x44A;&#x44F;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x43F;&#x43E;&#x431;&#x435;&#x434;&#x43E;&#x439;.</p><div class="ks-widget" id="ks-chk-roll2m7c"><h3>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x43F;&#x435;&#x440;&#x435;&#x434; rollout</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x44B; baseline &#x438; stop condition</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x41C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x438;&#x43D; owner &#x438; &#x43E;&#x434;&#x438;&#x43D; &#x443;&#x437;&#x435;&#x43B;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x439; negative control</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x418;&#x437;&#x43C;&#x435;&#x440;&#x44F;&#x44E;&#x442;&#x441;&#x44F; neighbor state &#x438; application SLO</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x41F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x43B;&#x435;&#x43D; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; rollback</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-roll2m7c');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/neighbor-table-rollout-rollback-be0021f8.webp" class="kg-image" alt="&#x422;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439; Linux &#x432; GPU-&#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;: ARP, IPv6 ND &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; NUD" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/neighbor-table-rollout-rollback-be0021f8.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/neighbor-table-rollout-rollback-be0021f8.webp 1000w, https://kingservers.com/blog/content/images/2026/10/neighbor-table-rollout-rollback-be0021f8.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="mistakes">&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;: flush, &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x435; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x438; &#x438; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; owner</h2>
<p>&#x41F;&#x435;&#x440;&#x432;&#x430;&#x44F; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x2014; <code>ip neigh flush all</code> &#x432; &#x440;&#x430;&#x437;&#x433;&#x430;&#x440; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430;. &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x441;&#x442;&#x438;&#x440;&#x430;&#x435;&#x442; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x438; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x435; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x43D;&#x43E;&#x436;&#x435;&#x441;&#x442;&#x432;&#x430; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x432;. &#x415;&#x441;&#x43B;&#x438; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442;, &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x44C;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x43E;&#x434;&#x43D;&#x438;&#x43C; device &#x438; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x43C; &#x43D;&#x430; canary, &#x43F;&#x440;&#x435;&#x434;&#x432;&#x430;&#x440;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x432; state &#x438; capture.</p><p>&#x412;&#x442;&#x43E;&#x440;&#x430;&#x44F; &#x2014; &#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x430;&#x44F; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x43A;&#x430;&#x43A; &#xAB;&#x43B;&#x435;&#x447;&#x435;&#x43D;&#x438;&#x435;&#xBB;. &#x41E;&#x43D;&#x430; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x44C; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; ARP/ND, &#x43D;&#x43E; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x440;&#x438;&#x441;&#x43A; stale MAC &#x43F;&#x43E;&#x441;&#x43B;&#x435; failover, &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x44B; NIC &#x438;&#x43B;&#x438; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x438; VIP. &#x421;&#x442;&#x430;&#x442;&#x438;&#x43A;&#x430; &#x443;&#x43C;&#x435;&#x441;&#x442;&#x43D;&#x430; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43A;&#x430;&#x43A; &#x43E;&#x441;&#x43E;&#x437;&#x43D;&#x430;&#x43D;&#x43D;&#x430;&#x44F; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x433;&#x43E; &#x434;&#x438;&#x437;&#x430;&#x439;&#x43D;&#x430; &#x441; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x435;&#x43C; lifecycle; &#x434;&#x43B;&#x44F; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x438; &#x43E;&#x43D;&#x430; &#x43F;&#x43B;&#x43E;&#x445;&#x430;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443; &#x447;&#x442;&#x43E; &#x432;&#x44B;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x432;&#x44B; &#x43F;&#x44B;&#x442;&#x430;&#x435;&#x442;&#x435;&#x441;&#x44C; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x44C;.</p><p>&#x422;&#x440;&#x435;&#x442;&#x44C;&#x44F; &#x2014; alarm &#x43D;&#x430; &#x434;&#x43E;&#x43B;&#x44E; <code>STALE</code>. STALE &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;&#x43C; &#x43D;&#x435;&#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439;. &#x41F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x435;&#x435; &#x441;&#x43B;&#x435;&#x434;&#x438;&#x442;&#x44C; &#x437;&#x430; &#x441;&#x43A;&#x43E;&#x440;&#x43E;&#x441;&#x442;&#x44C;&#x44E; &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x43E;&#x432; &#x432; INCOMPLETE/FAILED &#x434;&#x43B;&#x44F; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x445; next hops, &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430;&#x43C;&#x438; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x44F; entries, &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435;&#x43C; replies &#x438; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43B;&#x44F;&#x446;&#x438;&#x435;&#x439; &#x441; fresh-connection failures.</p><p>&#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x430;&#x44F; &#x2014; &#x43F;&#x43E;&#x43A;&#x443;&#x43F;&#x43A;&#x430; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43A;&#x440;&#x443;&#x43F;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x430; &#x434;&#x43E; path proof. Dedicated edge &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x44B; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; NIC, &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; L2/VRF, &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x439; kernel profile &#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x439;. &#x41D;&#x43E; &#x43E;&#x43D; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x43D;&#x435;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; on-link prefix, &#x43A;&#x43E;&#x43D;&#x444;&#x43B;&#x438;&#x43A;&#x442; IP, anti-spoofing &#x438;&#x43B;&#x438; &#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x443; switch. Commercial decision &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x441; ownership, &#x430; &#x43D;&#x435; &#x441; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x44F; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x439; latency.</p><p>&#x41F;&#x44F;&#x442;&#x430;&#x44F; &#x2014; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x43D;&#x438;&#x435; CPU network bottleneck &#x441; resolution. &#x415;&#x441;&#x43B;&#x438; ARP/ND &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442;, peer MAC &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x435;&#x43D;, &#x43D;&#x43E; softirq &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;, &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; runbook &#x43F;&#x43E; <a href="https://kingservers.com/blog/rss-rps-irq-affinity-llm-api-gateway/">RSS, RPS &#x438; IRQ affinity</a>. &#x410; &#x434;&#x43B;&#x44F; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x445; &#x441;&#x43F;&#x438;&#x441;&#x43A;&#x43E;&#x432; firewall-&#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x432; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B; <a href="https://kingservers.com/blog/nftables-sets-dinamicheskie-spiski-ip/">nftables sets</a>.</p><h2 id="decision">Decision matrix: &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C;, &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x43F;&#x443;&#x442;&#x44C; &#x438;&#x43B;&#x438; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x44C;</h2>
<p><strong>&#x41D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435;</strong>, &#x435;&#x441;&#x43B;&#x438; STALE/PROBE &#x43A;&#x440;&#x430;&#x442;&#x43A;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;, resolution &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F;, healthy &#x438; problem probes &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;, &#x430; application SLO &#x43D;&#x435; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x442; &#x441; neighbor state. &#x418;&#x449;&#x438;&#x442;&#x435; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; inference, proxy buffering, DNS selection &#x438;&#x43B;&#x438; CPU path.</p><p><strong>&#x418;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;</strong>, &#x435;&#x441;&#x43B;&#x438; request &#x443;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x431;&#x435;&#x437; reply &#x43B;&#x438;&#x431;&#x43E; reply &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x43D;&#x430; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x43E;&#x43C; interface/VLAN; route &#x443;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43D;&#x435;&#x43E;&#x436;&#x438;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x439; next hop; &#x43E;&#x434;&#x438;&#x43D; CNI node &#x43E;&#x431;&#x44A;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43D;&#x435;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; prefix; IP &#x43A;&#x43E;&#x43D;&#x444;&#x43B;&#x438;&#x43A;&#x442;&#x443;&#x435;&#x442;; switch &#x438;&#x43B;&#x438; anti-spoofing &#x43E;&#x442;&#x431;&#x440;&#x430;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x442;. &#x42D;&#x442;&#x43E; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430;, &#x438; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x439; cache &#x435;&#x451; &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442;.</p><p><strong>&#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x442;&#x435; &#x451;&#x43C;&#x43A;&#x43E;&#x441;&#x442;&#x44C;</strong>, &#x435;&#x441;&#x43B;&#x438; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x44B; &#x43B;&#x435;&#x433;&#x438;&#x442;&#x438;&#x43C;&#x43D;&#x44B;&#x439; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; working set, pressure GC &#x438; &#x43E;&#x442;&#x43A;&#x430;&#x437; &#x43D;&#x43E;&#x432;&#x44B;&#x445; entries &#x43F;&#x440;&#x438; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43D;&#x43E;&#x43C; L2. &#x41F;&#x43B;&#x430;&#x43D; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; memory budget, canary, per-family &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F;, &#x43C;&#x43E;&#x43D;&#x438;&#x442;&#x43E;&#x440;&#x438;&#x43D;&#x433; churn &#x438; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; rollback. &#x41F;&#x43E;&#x440;&#x43E;&#x433; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x438;&#x437; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x439; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;, &#x430; &#x43D;&#x435; &#x438;&#x437; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x440;&#x435;&#x446;&#x435;&#x43F;&#x442;&#x430;.</p><p><strong>&#x418;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; failure domain</strong>, &#x435;&#x441;&#x43B;&#x438; &#x431;&#x438;&#x437;&#x43D;&#x435;&#x441;&#x443; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; network profile: &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; NIC/VRF/VLAN, &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x44B;&#x435; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; kernel/CNI, switch telemetry &#x438; &#x43E;&#x43A;&#x43D;&#x43E; &#x43E;&#x431;&#x441;&#x43B;&#x443;&#x436;&#x438;&#x432;&#x430;&#x43D;&#x438;&#x44F;. VPS &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x445;&#x43E;&#x440;&#x43E;&#x448; &#x434;&#x43B;&#x44F; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x433;&#x43E; egress/gateway, dedicated node &#x2014; &#x434;&#x43B;&#x44F; &#x43F;&#x43B;&#x43E;&#x442;&#x43D;&#x43E;&#x433;&#x43E; east-west traffic &#x438; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x44F; NIC. Managed network &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x434;&#x43E;&#x43B;&#x433;&#x430;, &#x43D;&#x43E; &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x430;&#x435;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; low-level evidence. &#x412;&#x44B;&#x431;&#x43E;&#x440; &#x434;&#x435;&#x43B;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; canary.</p><h2 id="conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; L2-&#x441;&#x431;&#x43E;&#x439; &#x434;&#x43E; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438; cache</h2>
<p>&#x422;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439; &#x2014; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439;, &#x43D;&#x43E; &#x43A;&#x440;&#x438;&#x442;&#x438;&#x447;&#x43D;&#x44B;&#x439; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43E;&#x43A; &#x43F;&#x443;&#x442;&#x438; &#x43C;&#x435;&#x436;&#x434;&#x443; IP route &#x438; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x43A;&#x430;&#x434;&#x440;&#x43E;&#x43C; &#x432; &#x441;&#x435;&#x442;&#x438;. &#x420;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x439; runbook &#x434;&#x435;&#x440;&#x436;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x451;&#x445; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430;&#x445;: route/namespace, NUD state, ARP &#x438;&#x43B;&#x438; IPv6 ND &#x43D;&#x430; &#x43F;&#x440;&#x43E;&#x432;&#x43E;&#x434;&#x435; &#x438; application outcome &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x43E;&#x43C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x438;. &#x415;&#x441;&#x43B;&#x438; &#x445;&#x43E;&#x442;&#x44F; &#x431;&#x44B; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x437;&#x432;&#x435;&#x43D;&#x430; &#x43D;&#x435;&#x442;, &#x432;&#x44B;&#x432;&#x43E;&#x434; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x43E;&#x439;.</p><p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; peer &#x438; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x43E;&#x433;&#x43E; negative control. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; baseline, &#x441;&#x434;&#x435;&#x43B;&#x430;&#x439;&#x442;&#x435; capture, &#x43D;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; &#x43C;&#x435;&#x436;&#x434;&#x443; host, CNI, switch &#x438; gateway. &#x41C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; &#x43D;&#x430; canary &#x438; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x439;&#x442;&#x435;&#x441;&#x44C; &#x43A; baseline &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438;. &#x422;&#x430;&#x43A; &#x432;&#x44B; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x438;&#x442;&#x435; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; STALE &#x43E;&#x442; &#x43D;&#x430;&#x441;&#x442;&#x43E;&#x44F;&#x449;&#x435;&#x433;&#x43E; FAILED, capacity pressure &#x43E;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x43E;&#x433;&#x43E; L2-&#x43F;&#x443;&#x442;&#x438;, &#x430; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x43D;&#x443;&#x44E; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x2014; &#x43E;&#x442; &#x43F;&#x43E;&#x43F;&#x44B;&#x442;&#x43A;&#x438; &#x43A;&#x443;&#x43F;&#x438;&#x442;&#x44C; &#x432;&#x44B;&#x445;&#x43E;&#x434; &#x438;&#x437; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x43E;&#x439; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;.</p><p>&#x421;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x43F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x448;&#x430;&#x433; &#x43F;&#x440;&#x43E;&#x441;&#x442;: &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; route + neighbor + capture bundle &#x432; &#x448;&#x430;&#x431;&#x43B;&#x43E;&#x43D; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430; &#x438; &#x43F;&#x440;&#x43E;&#x433;&#x43E;&#x43D;&#x438;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x43D;&#x430; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;&#x43E;&#x43C; &#x443;&#x437;&#x43B;&#x435; &#x434;&#x43E; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E; page. &#x415;&#x441;&#x43B;&#x438; path proof &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x435; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x44B;&#x439; network profile, &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; VPS, dedicated node &#x438; managed edge &#x43F;&#x43E; ownership, observability &#x438; rollback &#x2014; &#x443;&#x436;&#x435; &#x43D;&#x430; &#x43E;&#x441;&#x43D;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[fq_codel для LLM API gateway: как найти и убрать bufferbloat]]></title><description><![CDATA[Production-runbook по fq_codel на Linux LLM API gateway: как доказать bufferbloat, читать backlog, drops и ECN, провести A/B/A canary и выбрать fq или CAKE.]]></description><link>https://kingservers.com/blog/fq-codel-bufferbloat-llm-api-gateway/</link><guid isPermaLink="false">6ad727a9aff2afac25354ea1</guid><category><![CDATA[Сетевые протоколы]]></category><category><![CDATA[Linux]]></category><category><![CDATA[LLM]]></category><category><![CDATA[Инфраструктура]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 23 Oct 2026 23:20:46 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-hero-48a0111a.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#quick-verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x432;&#x435;&#x440;&#x434;&#x438;&#x43A;&#x442;: &#x43A;&#x43E;&#x433;&#x434;&#x430; fq_codel &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442;</a></li>
<li><a href="#where-queue-lives">&#x413;&#x434;&#x435; &#x436;&#x438;&#x432;&#x451;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;: application, qdisc, NIC &#x438;&#x43B;&#x438; &#x441;&#x435;&#x442;&#x44C;</a></li>
<li><a href="#baseline-measurement">Baseline: &#x447;&#x442;&#x43E; &#x441;&#x43D;&#x44F;&#x442;&#x44C; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; tc qdisc replace</a></li>
<li><a href="#evidence-gates">&#x427;&#x435;&#x442;&#x44B;&#x440;&#x435; evidence gate: &#x43E;&#x442; &#x43F;&#x443;&#x442;&#x438; &#x434;&#x43E; LLM outcome</a></li>
<li><a href="#safe-canary">&#x411;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x439; canary: &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x43C; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; owner</a></li>
<li><a href="#read-counters">&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; backlog, drops, ECN &#x438; requeues</a></li>
<li><a href="#ecn-and-drops">ECN &#x438; drops: &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B; congestion, &#x430; &#x43D;&#x435; &#x446;&#x435;&#x43B;&#x44C; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438;</a></li>
<li><a href="#choose-qdisc">fq_codel, fq &#x438;&#x43B;&#x438; CAKE: &#x432;&#x44B;&#x431;&#x43E;&#x440; &#x43F;&#x43E; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x443;</a></li>
<li><a href="#infrastructure-boundary">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x443;&#x436;&#x435; &#x432; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x435; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x44B;</a></li>
<li><a href="#production-rollout">Production rollout: persistence, observability &#x438; rollback</a></li>
<li><a href="#incident-runbook">&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; incident runbook &#x431;&#x435;&#x437; &#x43C;&#x430;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x43E;&#x432;</a></li>
<li><a href="#load-profile">&#x41D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43E;&#x447;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44C;: &#x43A;&#x430;&#x43A; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x438; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441;&#x432;&#x43E;&#x439; bufferbloat</a></li>
<li><a href="#common-mistakes">&#x427;&#x430;&#x441;&#x442;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;, &#x438;&#x437;-&#x437;&#x430; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x445; canary &#x43B;&#x436;&#x451;&#x442;</a></li>
<li><a href="#conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: qdisc &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430;, &#x430; &#x43D;&#x435; &#x43F;&#x43E; &#x43F;&#x440;&#x438;&#x432;&#x44B;&#x447;&#x43A;&#x435;</a></li>
</ul></div>

</div>&#x422;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x440;&#x43E;&#x432;&#x43D;&#x43E;, &#x43F;&#x43E;&#x43A;&#x430; &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x43D;&#x435; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x430;&#x44F; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x430;, &#x430; &#x437;&#x430;&#x442;&#x435;&#x43C; LLM streaming &#x437;&#x430;&#x43C;&#x438;&#x440;&#x430;&#x435;&#x442; &#x440;&#x44B;&#x432;&#x43A;&#x430;&#x43C;&#x438;. CPU gateway &#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x435;&#x43D;, GPU &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;, &#x43D;&#x43E; p99 RTT &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; egress. &#x412; &#x442;&#x430;&#x43A;&#x43E;&#x439; &#x43A;&#x430;&#x440;&#x442;&#x438;&#x43D;&#x435; &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x43E;&#x431;&#x432;&#x438;&#x43D;&#x438;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x44C; &#x438; &#x441;&#x440;&#x430;&#x437;&#x443; &#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; fq_codel. &#x41F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x435;&#x435; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C;, &#x433;&#x434;&#x435; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441;&#x442;&#x43E;&#x438;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;, &#x438; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43C; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; live dataplane.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-hero-48a0111a.webp" alt="fq_codel &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x438; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; bufferbloat"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="quick-verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x432;&#x435;&#x440;&#x434;&#x438;&#x43A;&#x442;: &#x43A;&#x43E;&#x433;&#x434;&#x430; fq_codel &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442;</h2>
<p>LLM API &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x43D;&#x430; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;&#x43E;&#x43C; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x435;, &#x43D;&#x43E; &#x43F;&#x43E;&#x434; &#x43F;&#x430;&#x440;&#x430;&#x43B;&#x43B;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x432;&#x44B;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438; &#x438;&#x43B;&#x438; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x43C; &#x447;&#x438;&#x441;&#x43B;&#x43E;&#x43C; streaming-&#x441;&#x435;&#x441;&#x441;&#x438;&#x439; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x44E;&#x442; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x44C; &#x440;&#x44B;&#x432;&#x43A;&#x430;&#x43C;&#x438;. CPU gateway &#x43D;&#x435; &#x443;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x43F;&#x43E;&#x442;&#x43E;&#x43B;&#x43E;&#x43A;, GPU &#x43D;&#x435; &#x437;&#x430;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;, &#x430; &#x43C;&#x435;&#x434;&#x438;&#x430;&#x43D;&#x430; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x442;&#x435;&#x440;&#x43F;&#x438;&#x43C;&#x43E;. &#x417;&#x430;&#x442;&#x43E; p99 RTT &#x438; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;&#x43C;&#x438; &#x440;&#x430;&#x441;&#x442;&#x443;&#x442; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x43C; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x43E;&#x43C;. &#x42D;&#x442;&#x43E; &#x445;&#x430;&#x440;&#x430;&#x43A;&#x442;&#x435;&#x440;&#x43D;&#x44B;&#x439;, &#x43D;&#x43E; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x438;&#x437;&#x43D;&#x430;&#x43A; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x43D;&#x430; egress.</p><p><strong>&#x420;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x439; default:</strong> &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; qdisc, &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x435; &#x441;&#x432;&#x44F;&#x436;&#x435;&#x442;&#x435; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x444;&#x430;&#x43A;&#x442;&#x430; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x43E;&#x43A;&#x43D;&#x435;: &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x43F;&#x443;&#x442;&#x44C;, backlog/drops &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x439; qdisc, &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x442;&#x440;&#x430;&#x43D;&#x441;&#x43F;&#x43E;&#x440;&#x442;&#x430; &#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; outcome. &#x415;&#x441;&#x43B;&#x438; backlog &#x43D;&#x435; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;, &#x430; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x430; &#x443;&#x436;&#x435; &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x43B;&#x430;&#x441;&#x44C; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x431;&#x430;&#x439;&#x442;&#x430;, &#x438;&#x449;&#x438;&#x442;&#x435; DNS, TLS, proxy queue &#x438;&#x43B;&#x438; GPU scheduler. fq_codel &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442; &#x447;&#x443;&#x436;&#x443;&#x44E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;.</p><p>&#x41A;&#x43E;&#x433;&#x434;&#x430; bottleneck &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x430; Linux egress, fq_codel &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x434;&#x432;&#x443;&#x43C;&#x44F; &#x441;&#x432;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x430;&#x43C;&#x438;: &#x43E;&#x43D; &#x440;&#x430;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442; flows &#x43F;&#x43E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44F;&#x43C; &#x438; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; Controlled Delay &#x43A; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x439; &#x438;&#x437; &#x43D;&#x438;&#x445;. &#x411;&#x43E;&#x43B;&#x44C;&#x448;&#x430;&#x44F; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x430; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x451;&#x442; &#x431;&#x435;&#x437;&#x43E;&#x433;&#x43E;&#x432;&#x43E;&#x440;&#x43E;&#x447;&#x43D;&#x43E; &#x441;&#x442;&#x43E;&#x44F;&#x442;&#x44C; &#x432;&#x43F;&#x435;&#x440;&#x435;&#x434;&#x438; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x43E;&#x433;&#x43E; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430;. &#x42D;&#x442;&#x43E; &#x43D;&#x435; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x435; &#xAB;&#x443;&#x441;&#x43A;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x44C;&#xBB;, &#x430; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x442;&#x44C; &#x441;&#x442;&#x43E;&#x44F;&#x447;&#x443;&#x44E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x442;&#x430;&#x43C;, &#x433;&#x434;&#x435; Linux &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x442; dequeue.</p><p>&#x412; &#x44D;&#x442;&#x43E;&#x439; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x435; &#x43C;&#x44B; &#x441;&#x442;&#x440;&#x43E;&#x438;&#x43C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x44B;&#x439; runbook &#x434;&#x43B;&#x44F; Linux gateway &#x43F;&#x435;&#x440;&#x435;&#x434; LLM inference. &#x41E;&#x43D; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B;&#x44B; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/tcp-buffer-autotuning-llm-streaming/">TCP buffers</a> &#x438; <a href="https://kingservers.com/blog/http2-flow-control-llm-streaming-api-gateway/">HTTP/2 flow control</a>: socket memory &#x438; protocol window &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x44F;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x434;&#x440;&#x443;&#x433;&#x438;&#x445; &#x441;&#x43B;&#x43E;&#x44F;&#x445; &#x438; &#x442;&#x440;&#x435;&#x431;&#x443;&#x44E;&#x442; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x445; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;.</p><h2 id="where-queue-lives">&#x413;&#x434;&#x435; &#x436;&#x438;&#x432;&#x451;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;: application, qdisc, NIC &#x438;&#x43B;&#x438; &#x441;&#x435;&#x442;&#x44C;</h2>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; owner map. &#x418;&#x441;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442; LLM &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; userspace proxy, TCP socket, qdisc, &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;, TX ring &#x438; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; hop. Backlog &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x432;&#x43E;&#x437;&#x43D;&#x438;&#x43A;&#x43D;&#x443;&#x442;&#x44C; &#x432; &#x43B;&#x44E;&#x431;&#x43E;&#x43C; &#x438;&#x437; &#x44D;&#x442;&#x438;&#x445; &#x43C;&#x435;&#x441;&#x442;. &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; <code>tc</code> &#x432;&#x438;&#x434;&#x438;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x43B;&#x43E;&#x439; traffic control; &#x43F;&#x443;&#x441;&#x442;&#x430;&#x44F; qdisc &#x43D;&#x435; &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;, &#x430; &#x437;&#x430;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x43D;&#x430;&#x44F; qdisc &#x435;&#x449;&#x451; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43E;&#x43D;&#x430; &#x43F;&#x43E;&#x440;&#x442;&#x438;&#x442; SLO.</p><p>&#x41D;&#x430; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x43C; multiqueue-&#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x435; root &#x447;&#x430;&#x441;&#x442;&#x43E; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x435;&#x43D; <code>mq</code>, &#x430; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x435; qdisc &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x44F;&#x442;&#x441;&#x44F; &#x43D;&#x430; leaf &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44F;&#x445;. &#x41D;&#x430; veth &#x438; loopback &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x438; defaults &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x44E;&#x442;&#x441;&#x44F;; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x43D;&#x44B;&#x439; <code>net.core.default_qdisc</code> &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x443;&#x436;&#x435; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441; &#x43D;&#x435;&#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; &#x43D;&#x43E;&#x432;&#x44B;&#x439; leaf. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#xAB;&#x43A;&#x430;&#x43A;&#x43E;&#x439; qdisc &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D; &#x43D;&#x430; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x435;&#xBB; &#x441;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x43E;&#x431;&#x449;&#x438;&#x439;. &#x41D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x434;&#x43B;&#x44F; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; egress device &#x438; namespace, &#x447;&#x435;&#x440;&#x435;&#x437; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x448;&#x451;&#x43B; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x439; flow.</p><p>&#x41F;&#x440;&#x435;&#x434;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; gateway &#x441; &#x434;&#x432;&#x443;&#x43C;&#x44F; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430;&#x43C;&#x438;: &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x439; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x432;&#x44B;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; bond, &#x430; health checks &#x2014; &#x447;&#x435;&#x440;&#x435;&#x437; management NIC. &#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x442;&#x44C; qdisc &#x43D;&#x430; management-&#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x435; &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x43E; &#x438; &#x441;&#x43E;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x43D;&#x43E; &#x431;&#x435;&#x441;&#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; route decision &#x438; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; peer, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x43A; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438;. &#x422;&#x43E;&#x442; &#x436;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x446;&#x438;&#x43F; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x43D; &#x432; runbook &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/linux-policy-routing-llm-api-gateway/">policy routing &#x438; rp_filter</a>.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">find-egress-path.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>ip route get 203.0.113.25
ip -details link show dev eth0
tc -s -d qdisc show dev eth0
tc -s class show dev eth0</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; effective route &#x438; qdisc &#x43D;&#x430; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x43E;&#x43C; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x435;</div>
</div>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-sel-q7d2m4a"><h3>&#x413;&#x434;&#x435; &#x438;&#x441;&#x43A;&#x430;&#x442;&#x44C; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x439;</h3><label>&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;</label><select data-s><option value="load">RTT &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x434; egress-&#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439;</option><option value="idle">RTT &#x432;&#x44B;&#x441;&#x43E;&#x43A; &#x438; &#x431;&#x435;&#x437; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;</option><option value="stream">&#x41F;&#x430;&#x443;&#x437;&#x44B; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x443; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; LLM-&#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430;</option><option value="all">&#x412;&#x441;&#x435; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x438; &#x437;&#x430;&#x43C;&#x438;&#x440;&#x430;&#x44E;&#x442; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-q7d2m4a');if(!r)return;var m={"load":"Сначала проверьте root/leaf qdisc, backlog и NIC TX: это похоже на локальную очередь.","idle":"Ищите baseline path, routing, MTU и удалённый bottleneck: qdisc пока не главный подозреваемый.","stream":"Сопоставьте per-flow транспорт, client read progress и backend queue; общая qdisc могла быть ни при чём.","all":"Проверьте общий egress hop, proxy buffering и saturation интерфейса на одном временном окне."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-01-546462ba.webp" class="kg-image" alt="fq_codel &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x438; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; bufferbloat" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/fq-codel-llm-gateway-inline-01-546462ba.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/fq-codel-llm-gateway-inline-01-546462ba.webp 1000w, https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-01-546462ba.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="baseline-measurement">Baseline: &#x447;&#x442;&#x43E; &#x441;&#x43D;&#x44F;&#x442;&#x44C; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; tc qdisc replace</h2>
<p>&#x41D;&#x430;&#x434;&#x451;&#x436;&#x43D;&#x44B;&#x439; baseline &#x2014; &#x44D;&#x442;&#x43E; &#x43D;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x441;&#x43A;&#x440;&#x438;&#x43D;&#x448;&#x43E;&#x442; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A;&#x43E;&#x432; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430;. &#x417;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x434;&#x43E; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;, &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x433;&#x43E; burst &#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43D;&#x435;&#x433;&#x43E;. &#x414;&#x43B;&#x44F; qdisc &#x43D;&#x443;&#x436;&#x43D;&#x44B; &#x43A;&#x430;&#x43A; &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x443;&#x43C; &#x442;&#x438;&#x43F; &#x438; handle, backlog &#x432; &#x431;&#x430;&#x439;&#x442;&#x430;&#x445; &#x438; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;&#x445;, drops, overlimits, requeues &#x438; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43D;&#x43D;&#x44B;&#x435; fq_codel counters. &#x414;&#x43B;&#x44F; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; TX errors/dropped &#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x435; &#x441;&#x442;&#x430;&#x442;&#x438;&#x441;&#x442;&#x438;&#x43A;&#x438;. &#x414;&#x43B;&#x44F; &#x442;&#x440;&#x430;&#x43D;&#x441;&#x43F;&#x43E;&#x440;&#x442;&#x430; &#x2014; RTT, retransmissions &#x438; pacing/cwnd &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439;.</p><p>&#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x434;&#x435;&#x43B;&#x44C;&#x442;&#x44B;, &#x430; &#x43D;&#x435; &#x430;&#x431;&#x441;&#x43E;&#x43B;&#x44E;&#x442;&#x43D;&#x44B;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x441; &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442;&#x430; boot. &#x41C;&#x438;&#x43B;&#x43B;&#x438;&#x43E;&#x43D; drops &#x437;&#x430; &#x43F;&#x43E;&#x43B;&#x433;&#x43E;&#x434;&#x430; &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x433;&#x43E;&#x432;&#x43E;&#x440;&#x438;&#x442; &#x43E; &#x43F;&#x44F;&#x442;&#x438; &#x43C;&#x438;&#x43D;&#x443;&#x442;&#x430;&#x445; &#x434;&#x435;&#x433;&#x440;&#x430;&#x434;&#x430;&#x446;&#x438;&#x438;. &#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442;: &#x434;&#x432;&#x430; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; snapshot &#x441; timestamp &#x438; &#x438;&#x434;&#x435;&#x43D;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442;&#x43E;&#x440;&#x43E;&#x43C; canary-&#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;. &#x415;&#x441;&#x43B;&#x438; counters &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B; &#x432; Prometheus, &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; raw &#x432;&#x44B;&#x432;&#x43E;&#x434;: &#x43E;&#x43D; &#x43F;&#x43E;&#x43C;&#x43E;&#x436;&#x435;&#x442; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x438;&#x442;&#x44C; leaf qdisc, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x443;&#x44E; &#x430;&#x433;&#x440;&#x435;&#x433;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; exporter &#x43F;&#x440;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43B;.</p><p>Application gate &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x436;&#x438;&#x442;&#x44C; &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x441; &#x441;&#x435;&#x442;&#x435;&#x432;&#x44B;&#x43C;. &#x414;&#x43B;&#x44F; streaming LLM &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B; TTFT, &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x430;&#x443;&#x437; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x441;&#x43E;&#x431;&#x44B;&#x442;&#x438;&#x44F;&#x43C;&#x438; SSE/gRPC, &#x434;&#x43E;&#x43B;&#x44F; &#x43E;&#x431;&#x43E;&#x440;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432; &#x43F;&#x43E;&#x441;&#x43B;&#x435; headers &#x438; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x439; throughput. &#x41D;&#x435; &#x441;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x432;&#x441;&#x451; &#x43A; requests per second: &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x447;&#x442;&#x438; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; RPS, &#x43D;&#x43E; &#x441;&#x434;&#x435;&#x43B;&#x430;&#x442;&#x44C; &#x434;&#x438;&#x430;&#x43B;&#x43E;&#x433; &#x43D;&#x435;&#x43F;&#x440;&#x438;&#x44F;&#x442;&#x43D;&#x44B;&#x43C; &#x438;&#x437;-&#x437;&#x430; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x445;&#x432;&#x43E;&#x441;&#x442;&#x430; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x438;.</p><p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x442;&#x430;&#x43A;&#x436;&#x435; <code>ip -s -s link</code> &#x438; <code>ethtool -S</code>. &#x415;&#x441;&#x43B;&#x438; TX ring &#x438;&#x43B;&#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440; &#x442;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B;, &#x441;&#x43C;&#x435;&#x43D;&#x430; AQM &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; &#x43A;&#x430;&#x440;&#x442;&#x438;&#x43D;&#x443;, &#x43D;&#x43E; &#x43D;&#x435; &#x443;&#x441;&#x442;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C; &#x430;&#x43F;&#x43F;&#x430;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x439; &#x438;&#x43B;&#x438; CPU bottleneck. &#x421;&#x432;&#x44F;&#x437;&#x44C; IRQ, queue &#x438; softirq &#x440;&#x430;&#x437;&#x43E;&#x431;&#x440;&#x430;&#x43D;&#x430; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x432; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x435; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/rss-rps-irq-affinity-llm-api-gateway/">RSS, RPS &#x438; IRQ affinity</a>.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">capture-qdisc-baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>date -Is
tc -s -d qdisc show dev eth0
ip -s -s link show dev eth0
ethtool -S eth0 | sed -n &apos;1,120p&apos;
ss -tin dst 203.0.113.25</code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; qdisc, &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430; &#x438; TCP-&#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F;</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-02-263b495d.webp" class="kg-image" alt="fq_codel &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x438; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; bufferbloat" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/fq-codel-llm-gateway-inline-02-263b495d.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/fq-codel-llm-gateway-inline-02-263b495d.webp 1000w, https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-02-263b495d.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="evidence-gates">&#x427;&#x435;&#x442;&#x44B;&#x440;&#x435; evidence gate: &#x43E;&#x442; &#x43F;&#x443;&#x442;&#x438; &#x434;&#x43E; LLM outcome</h2>
<p><strong>Gate 1 &#x2014; effective path.</strong> &#x41F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435; namespace, route, interface &#x438; termination point. &#x415;&#x441;&#x43B;&#x438; TLS &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x43C; load balancer, qdisc backend-&#x443;&#x437;&#x43B;&#x430; &#x43D;&#x435; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x43C; &#x43F;&#x43B;&#x435;&#x447;&#x43E;&#x43C;. &#x415;&#x441;&#x43B;&#x438; gateway &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x432; pod, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; host network, veth, CNI &#x438; node egress: &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x439;&#x442;&#x438; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; qdisc.</p><p><strong>Gate 2 &#x2014; queue state.</strong> &#x41F;&#x43E;&#x434; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439; backlog &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x440;&#x430;&#x441;&#x442;&#x438; &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; leaf/root, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43E;&#x431;&#x441;&#x43B;&#x443;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; flow. &#x414;&#x43B;&#x44F; fq_codel &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43E;&#x431;&#x449;&#x438;&#x439; dropped, &#x43D;&#x43E; &#x438; <code>drop_overlimit</code>, <code>ecn_mark</code>, &#x434;&#x43B;&#x438;&#x43D;&#x44B; new/old flows &#x438; &#x442;&#x435;&#x43A;&#x443;&#x449;&#x443;&#x44E; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443;, &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x43D;&#x430; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x430; &#x432; &#x432;&#x44B;&#x432;&#x43E;&#x434;&#x435; iproute2. &#x421;&#x442;&#x43E;&#x44F;&#x447;&#x430;&#x44F; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x2014; &#x44D;&#x442;&#x43E; &#x443;&#x441;&#x442;&#x43E;&#x439;&#x447;&#x438;&#x432;&#x43E;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;, &#x430; &#x43D;&#x435; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; burst, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x438;&#x441;&#x447;&#x435;&#x437;&#x430;&#x435;&#x442; &#x431;&#x435;&#x437; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; application effect.</p><p><strong>Gate 3 &#x2014; transport.</strong> &#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x441;&#x43E;&#x431;&#x44B;&#x442;&#x438;&#x435; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x441; RTT, retransmissions, pacing &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;&#x43C; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44F;. &#x415;&#x441;&#x43B;&#x438; sender <code>app_limited</code>, &#x43E;&#x43D; &#x43D;&#x435; &#x437;&#x430;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;; &#x442;&#x44E;&#x43D;&#x438;&#x43D;&#x433; qdisc &#x432;&#x440;&#x44F;&#x434; &#x43B;&#x438; &#x434;&#x430;&#x441;&#x442; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442; &#x2014; QUIC/UDP &#x438;&#x43B;&#x438; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x443;&#x436;&#x435; &#x441;&#x444;&#x43E;&#x440;&#x43C;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D; upstream appliance, TCP-only &#x438;&#x43D;&#x442;&#x435;&#x440;&#x43F;&#x440;&#x435;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x442;&#x43E;&#x436;&#x435; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x430;.</p><p><strong>Gate 4 &#x2014; application outcome.</strong> &#x41F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x443;&#x44E; &#x441;&#x43C;&#x435;&#x441;&#x44C; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x445; &#x438; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x445; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432;. &#x423;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435; qdisc counters &#x431;&#x435;&#x437; &#x441;&#x43D;&#x438;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43D;&#x44B;&#x445; &#x43F;&#x430;&#x443;&#x437;, tail latency &#x438;&#x43B;&#x438; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x43A; &#x43D;&#x435; &#x441;&#x447;&#x438;&#x442;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x443;&#x441;&#x43F;&#x435;&#x445;&#x43E;&#x43C;. &#x418; &#x43D;&#x430;&#x43E;&#x431;&#x43E;&#x440;&#x43E;&#x442;: &#x435;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x438;&#x43B;&#x43E;&#x441;&#x44C;, &#x43D;&#x43E; qdisc &#x431;&#x44B;&#x43B;&#x430; &#x43F;&#x443;&#x441;&#x442;&#x43E;&#x439;, &#x43D;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x2014; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;, canary &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x43B;&#x441;&#x44F; CPU placement &#x438;&#x43B;&#x438; connection reuse.</p><p>&#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; gate &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;. &#x41D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, &#x43E;&#x434;&#x438;&#x43D; idle gateway, &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; &#x447;&#x435;&#x440;&#x435;&#x437; &#x434;&#x440;&#x443;&#x433;&#x443;&#x44E; NIC &#x43B;&#x438;&#x431;&#x43E; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x441; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;&#x43D;&#x43E;&#x439; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; &#x444;&#x43E;&#x43D;&#x43E;&#x432;&#x43E;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x435;&#x439;. &#x41A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x432;&#x438;&#x434;&#x438;&#x43C;&#x43E;&#x439; &#x438; &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x435;&#x442; &#x43E;&#x442; &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x43E;&#x439;, &#x43D;&#x43E; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x438;&#x441;&#x442;&#x43E;&#x440;&#x438;&#x438;.</p>
<div class="ks-widget" id="ks-chk-v8p1c6n"><h3>Evidence gate &#x43F;&#x435;&#x440;&#x435;&#x434; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C; qdisc</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D; effective interface &#x438; namespace</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x421;&#x43D;&#x44F;&#x442;&#x44B; tc counters &#x434;&#x43E; &#x438; &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x415;&#x441;&#x442;&#x44C; RTT/retransmission &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; flow</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x418;&#x437;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x44B; TTFT &#x438; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x430;&#x443;&#x437;&#x44B;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x415;&#x441;&#x442;&#x44C; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x439; baseline-&#x443;&#x437;&#x435;&#x43B;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x41E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x44B; stop condition &#x438; rollback</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-v8p1c6n');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-03-e124e142.webp" class="kg-image" alt="fq_codel &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x438; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; bufferbloat" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/fq-codel-llm-gateway-inline-03-e124e142.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/fq-codel-llm-gateway-inline-03-e124e142.webp 1000w, https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-03-e124e142.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="safe-canary">&#x411;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x439; canary: &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x43C; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; owner</h2>
<p>&#x41B;&#x443;&#x447;&#x448;&#x438;&#x439; canary &#x2014; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; gateway-&#x443;&#x437;&#x435;&#x43B; &#x441; &#x442;&#x43E;&#x439; &#x436;&#x435; &#x432;&#x435;&#x440;&#x441;&#x438;&#x435;&#x439; kernel, iproute2, proxy &#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;. &#x41D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43D;&#x430; &#x43D;&#x435;&#x433;&#x43E; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x443;&#x44E; &#x440;&#x435;&#x43F;&#x440;&#x435;&#x437;&#x435;&#x43D;&#x442;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x443;&#x44E; &#x434;&#x43E;&#x43B;&#x44E; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439;, &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x432; baseline-&#x443;&#x437;&#x435;&#x43B; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x43C;. &#x414;&#x43B;&#x44F; long-lived streaming connections &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x431;&#x430;&#x43B;&#x430;&#x43D;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x449;&#x438;&#x43A;&#x430; &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x442; &#x443;&#x436;&#x435; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x44B;&#x435; flows, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43C;&#x430;&#x440;&#x43A;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;&#x44B;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x44B; &#x438;&#x43B;&#x438; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x432;&#x430;&#x439;&#x442;&#x435; fresh connections.</p><p>&#x41F;&#x435;&#x440;&#x435;&#x434; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x43E;&#x439; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; &#x432;&#x44B;&#x432;&#x43E;&#x434; <code>tc -s -d qdisc</code>. &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; <code>replace</code> &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x430;, &#x43D;&#x43E; &#x43E;&#x43D;&#x430; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; live dataplane: &#x437;&#x430;&#x434;&#x430;&#x439;&#x442;&#x435; stop condition &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435;. &#x41D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, rollback &#x43F;&#x440;&#x438; &#x440;&#x43E;&#x441;&#x442;&#x435; application errors, &#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x438; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;&#x433;&#x43E; throughput &#x438;&#x43B;&#x438; &#x43D;&#x435;&#x43E;&#x436;&#x438;&#x434;&#x430;&#x43D;&#x43D;&#x43E;&#x43C; &#x440;&#x43E;&#x441;&#x442;&#x435; drops &#x43D;&#x430; non-ECN &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;&#x445;. &#x41D;&#x435; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x43D;&#x442; &#x2014; &#x43F;&#x43E;&#x440;&#x43E;&#x433; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x438;&#x437; &#x432;&#x430;&#x448;&#x435;&#x433;&#x43E; SLO &#x438; baseline.</p><p>&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x442;&#x435;&#x441;&#x442; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x441; defaults fq_codel. &#x41F;&#x43E; upstream man page defaults &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x44E;&#x442; 1024 flow buckets, target 5 ms, interval 100 ms, packet limit 10240 &#x438; memory limit 32 MB; ECN &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;. &#x42D;&#x442;&#x43E; &#x441;&#x442;&#x430;&#x440;&#x442;&#x43E;&#x432;&#x430;&#x44F; &#x442;&#x43E;&#x447;&#x43A;&#x430;, &#x43D;&#x435; &#x440;&#x435;&#x43A;&#x43E;&#x43C;&#x435;&#x43D;&#x434;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x43B;&#x44E;&#x431;&#x43E;&#x433;&#x43E; RTT &#x438;&#x43B;&#x438; memory envelope. &#x41E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x43E;&#x441;&#x442;&#x43E;&#x440;&#x43E;&#x436;&#x43D;&#x43E; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; <code>interval</code>: &#x43E;&#x43D; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43A;&#x430; &#x445;&#x443;&#x434;&#x448;&#x435;&#x433;&#x43E; RTT &#x447;&#x435;&#x440;&#x435;&#x437; bottleneck, &#x447;&#x442;&#x43E;&#x431;&#x44B; endpoints &#x443;&#x441;&#x43F;&#x435;&#x432;&#x430;&#x43B;&#x438; &#x43E;&#x442;&#x440;&#x435;&#x430;&#x433;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;.</p><p>&#x41F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x44B; &#x438; &#x438;&#x445; &#x442;&#x435;&#x43A;&#x443;&#x449;&#x430;&#x44F; &#x441;&#x435;&#x43C;&#x430;&#x43D;&#x442;&#x438;&#x43A;&#x430; &#x441;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x44B; &#x441; upstream <a href="https://man7.org/linux/man-pages/man8/tc-fq_codel.8.html?ref=kingservers.com">tc-fq_codel(8)</a>; &#x43F;&#x435;&#x440;&#x435;&#x434; rollout &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; man page &#x438;&#x437; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; iproute2, &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43D;&#x430; &#x432;&#x430;&#x448;&#x435;&#x43C; &#x443;&#x437;&#x43B;&#x435;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">fq-codel-canary.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>tc -s -d qdisc show dev eth0 &gt; /var/tmp/qdisc.before

tc qdisc replace dev eth0 root fq_codel
sleep 2
tc -s -d qdisc show dev eth0

# Rollback example: replace with the baseline captured for this host.
tc qdisc replace dev eth0 root fq

tc -s -d qdisc show dev eth0 &gt; /var/tmp/qdisc.after-rollback</code></pre>
<div class="ks-canonical-code-block__caption">&#x423;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43A;&#x430; fq_codel &#x43D;&#x430; canary &#x438; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; rollback</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-04-9c972080.webp" class="kg-image" alt="fq_codel &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x438; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; bufferbloat" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/fq-codel-llm-gateway-inline-04-9c972080.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/fq-codel-llm-gateway-inline-04-9c972080.webp 1000w, https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-04-9c972080.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="read-counters">&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; backlog, drops, ECN &#x438; requeues</h2>
<p>&#x412; fq_codel drop &#x2014; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x430; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x43E;&#x439; &#x441;&#x432;&#x44F;&#x437;&#x438;, &#x430; &#x43D;&#x435; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x440;&#x438;&#x437;&#x43D;&#x430;&#x43A; &#x43F;&#x43E;&#x43B;&#x43E;&#x43C;&#x43A;&#x438;. CoDel &#x43E;&#x442;&#x441;&#x43B;&#x435;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430; &#x432; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x43D;&#x430; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x432;&#x430;&#x43B;&#x435;. &#x41A;&#x43E;&#x433;&#x434;&#x430; &#x441;&#x442;&#x43E;&#x44F;&#x447;&#x430;&#x44F; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x430; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x432;&#x44B;&#x448;&#x435; target, AQM &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B;&#x438;&#x437;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; congestion: ECN-capable packets &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43C;&#x430;&#x440;&#x43A;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;, &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x2014; &#x441;&#x431;&#x440;&#x430;&#x441;&#x44B;&#x432;&#x430;&#x442;&#x44C;. &#x426;&#x435;&#x43B;&#x44C; &#x43D;&#x435; &#x43D;&#x443;&#x43B;&#x435;&#x432;&#x43E;&#x439; drop, &#x430; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x430;&#x44F; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43F;&#x440;&#x438; &#x43F;&#x440;&#x438;&#x435;&#x43C;&#x43B;&#x435;&#x43C;&#x43E;&#x439; &#x443;&#x442;&#x438;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438;.</p><p><code>drop_overlimit</code> &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x438;&#x436;&#x435;&#x43D;&#x438;&#x435; packet &#x438;&#x43B;&#x438; memory hard limit; &#x44D;&#x442;&#x43E; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x442; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x44B;&#x445; AQM drops. &#x423;&#x441;&#x442;&#x43E;&#x439;&#x447;&#x438;&#x432;&#x44B;&#x439; overlimit &#x43F;&#x43E;&#x434; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x435;&#x439; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; capacity &#x438; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x439; envelope. &#x41F;&#x440;&#x43E;&#x441;&#x442;&#x43E;&#x435; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; limit &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43B;&#x438;&#x448;&#x44C; &#x441;&#x43F;&#x440;&#x44F;&#x442;&#x430;&#x442;&#x44C; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; &#x432; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x433;&#x43B;&#x443;&#x431;&#x43E;&#x43A;&#x43E;&#x43C; &#x431;&#x443;&#x444;&#x435;&#x440;&#x435;. &#x421;&#x43D;&#x438;&#x436;&#x435;&#x43D;&#x438;&#x435; limit &#x431;&#x435;&#x437; canary, &#x43D;&#x430;&#x43F;&#x440;&#x43E;&#x442;&#x438;&#x432;, &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x43E; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x442;&#x438;&#x442;&#x44C; burst tolerance &#x432; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438;.</p><p><code>new_flow_count</code>, <code>new_flows_len</code> &#x438; <code>old_flows_len</code> &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x44E;&#x442; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x44C; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x441;&#x442;&#x44C; scheduler, &#x43D;&#x43E; &#x438;&#x445; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x43F;&#x435;&#x440;&#x435;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x44C; &#x43D;&#x430;&#x43F;&#x440;&#x44F;&#x43C;&#x443;&#x44E; &#x432; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x435;&#x439;. FQ &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; stochastic hashing: &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x438; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43F;&#x43E;&#x43F;&#x430;&#x441;&#x442;&#x44C; &#x432; &#x43E;&#x434;&#x438;&#x43D; bucket. &#x41F;&#x440;&#x438; &#x43E;&#x433;&#x440;&#x43E;&#x43C;&#x43D;&#x43E;&#x43C; &#x447;&#x438;&#x441;&#x43B;&#x435; flows collision risk &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;, &#x43E;&#x434;&#x43D;&#x430;&#x43A;&#x43E; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; <code>flows</code> &#x440;&#x430;&#x441;&#x445;&#x43E;&#x434;&#x443;&#x435;&#x442; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; &#x438; &#x437;&#x430;&#x434;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x438; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x438; qdisc.</p><p>Requeues &#x2014; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B;. &#x41E;&#x43D;&#x438; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x442;&#x44C;&#x441;&#x44F; &#x43C;&#x435;&#x436;&#x434;&#x443; qdisc &#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x43E;&#x43C;, &#x43D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x43F;&#x440;&#x438; busy TX path. &#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x438;&#x445; &#x441; BQL, driver counters, CPU softirq &#x438; multiqueue leafs. &#x41D;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x43A;&#x430;&#x436;&#x434;&#x44B;&#x439; requeue &#xAB;packet loss&#xBB; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x43E;: &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43C;&#x43E;&#x433; &#x431;&#x44B;&#x442;&#x44C; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x451;&#x43D; &#x432; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x438; &#x43F;&#x43E;&#x437;&#x436;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;.</p>
<div class="ks-widget" id="ks-tab-h3k9r2x"><h3>&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A;&#x438; fq_codel</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="backlog">Backlog</button><button type="button" class="tab-btn" data-t="drop">Drops</button><button type="button" class="tab-btn" data-t="ecn">ECN</button><button type="button" class="tab-btn" data-t="rq">Requeues</button></div><div class="panel on" data-p="backlog">&#x423;&#x441;&#x442;&#x43E;&#x439;&#x447;&#x438;&#x432;&#x44B;&#x439; backlog &#x43F;&#x43E;&#x434; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439; &#x432;&#x430;&#x436;&#x435;&#x43D; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; &#x440;&#x43E;&#x441;&#x442;&#x43E;&#x43C; RTT &#x438; &#x443;&#x445;&#x443;&#x434;&#x448;&#x435;&#x43D;&#x438;&#x435;&#x43C; application outcome.</div><div class="panel" data-p="drop">Drops &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x43E;&#x439; AQM. &#x422;&#x440;&#x435;&#x432;&#x43E;&#x436;&#x435;&#x43D; &#x43D;&#x435; &#x441;&#x430;&#x43C; &#x43D;&#x435;&#x43D;&#x443;&#x43B;&#x435;&#x432;&#x43E;&#x439; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A;, &#x430; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F; throughput &#x438;&#x43B;&#x438; &#x440;&#x43E;&#x441;&#x442; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x445; &#x43F;&#x430;&#x443;&#x437;.</div><div class="panel" data-p="ecn">ecn_mark &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B;&#x438;&#x437;&#x438;&#x440;&#x443;&#x435;&#x442; ECN-capable &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44F;&#x43C; &#x431;&#x435;&#x437; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; drop; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x440;&#x435;&#x430;&#x43A;&#x446;&#x438;&#x44E; endpoints.</div><div class="panel" data-p="rq">Requeues &#x442;&#x440;&#x435;&#x431;&#x443;&#x44E;&#x442; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;, multiqueue &#x438; TX path; &#x43E;&#x43D;&#x438; &#x43D;&#x435; &#x440;&#x430;&#x432;&#x43D;&#x44B; &#x441;&#x435;&#x442;&#x435;&#x432;&#x44B;&#x43C; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43C;.</div><script>(function(){var r=document.getElementById('ks-tab-h3k9r2x');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><h2 id="ecn-and-drops">ECN &#x438; drops: &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B; congestion, &#x430; &#x43D;&#x435; &#x446;&#x435;&#x43B;&#x44C; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438;</h2>
<p>fq_codel &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; ECN &#x43F;&#x43E; &#x443;&#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x43D;&#x438;&#x44E;, &#x43D;&#x43E; end-to-end &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; endpoints &#x438; middleboxes. &#x41C;&#x430;&#x440;&#x43A;&#x438;&#x440;&#x43E;&#x432;&#x43A;&#x430; CE &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x430;, &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x435;&#x441;&#x43B;&#x438; transport sender &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x438; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x430;&#x442;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x43D;&#x435; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435;&#x441;&#x44C; &#x440;&#x43E;&#x441;&#x442;&#x43E;&#x43C; <code>ecn_mark</code>: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x440;&#x435;&#x430;&#x43A;&#x446;&#x438;&#x44E; congestion control, RTT &#x438; application outcome &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x445;.</p><p>&#x41F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; <code>ce_threshold</code> &#x43F;&#x440;&#x435;&#x434;&#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D; &#x434;&#x43B;&#x44F; &#x43E;&#x447;&#x435;&#x43D;&#x44C; &#x43C;&#x435;&#x43B;&#x43A;&#x438;&#x445; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439; &#x438; DCTCP-&#x43F;&#x43E;&#x434;&#x43E;&#x431;&#x43D;&#x44B;&#x445; &#x430;&#x43B;&#x433;&#x43E;&#x440;&#x438;&#x442;&#x43C;&#x43E;&#x432;. &#x412; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x43D;&#x435;&#x442;-&#x441;&#x445;&#x435;&#x43C;&#x435; &#x43A;&#x43E;&#x43F;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; datacenter threshold &#x440;&#x438;&#x441;&#x43A;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;: &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; RTT, &#x434;&#x440;&#x443;&#x433;&#x430;&#x44F; ECN negotiation &#x438; &#x43D;&#x435;&#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x43D;&#x44B;&#x435; middleboxes &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;. &#x415;&#x441;&#x43B;&#x438; &#x444;&#x443;&#x43D;&#x43A;&#x446;&#x438;&#x44F; &#x43D;&#x443;&#x436;&#x43D;&#x430; &#x43B;&#x438;&#x448;&#x44C; &#x447;&#x430;&#x441;&#x442;&#x438; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430;, upstream &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; selector &#x43F;&#x43E; ECN/Diffserv byte, &#x43D;&#x43E; &#x44D;&#x442;&#x43E; &#x443;&#x436;&#x435; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; rollout &#x441; &#x43A;&#x43B;&#x430;&#x441;&#x441;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x446;&#x438;&#x435;&#x439; &#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F;&#x43C;&#x438;.</p><p>&#x415;&#x441;&#x442;&#x44C; &#x438; &#x43F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x43B;&#x43E;&#x432;&#x443;&#x448;&#x43A;&#x430;: offload &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x432;&#x438;&#x434; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x43E;&#x432; &#x432; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x442;&#x43E;&#x447;&#x43A;&#x430;&#x445; capture. &#x411;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; skb &#x434;&#x43E; segmentation &#x43D;&#x435; &#x440;&#x430;&#x432;&#x435;&#x43D; &#x433;&#x438;&#x433;&#x430;&#x43D;&#x442;&#x441;&#x43A;&#x43E;&#x43C;&#x443; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x443; &#x43D;&#x430; wire. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; qdisc change &#x432;&#x44B; &#x432;&#x438;&#x434;&#x438;&#x442;&#x435; &#x441;&#x442;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x44B; &#x438;&#x43B;&#x438; checksum errors &#x432; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; tcpdump, &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; GRO/GSO/TSO. &#x41D;&#x430;&#x448; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <a href="https://kingservers.com/blog/gro-gso-tso-llm-api-gateway/">runbook &#x43F;&#x43E; Linux network offload</a> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x433;&#x434;&#x435; &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x442;&#x44C; wire-side &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E;.</p><p>&#x414;&#x43B;&#x44F; LLM streaming &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43A;&#x430;&#x43A; &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x443;&#x43C; &#x434;&#x432;&#x430; &#x43A;&#x43B;&#x430;&#x441;&#x441;&#x430;: &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x435; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x44B; &#x438; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x435; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x438; &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x441; bulk transfer. fq_codel &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x442;&#x44C; latency-sensitive flows &#x43E;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438;, &#x43D;&#x43E; &#x43D;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x430;&#x442;&#x44C; GPU compute time. &#x415;&#x441;&#x43B;&#x438; TTFT &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; scheduler &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;, &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; AQM &#x43D;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442; &#x435;&#x433;&#x43E;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-05-1bdc1727.webp" class="kg-image" alt="fq_codel &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x438; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; bufferbloat" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/fq-codel-llm-gateway-inline-05-1bdc1727.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/fq-codel-llm-gateway-inline-05-1bdc1727.webp 1000w, https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-05-1bdc1727.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="choose-qdisc">fq_codel, fq &#x438;&#x43B;&#x438; CAKE: &#x432;&#x44B;&#x431;&#x43E;&#x440; &#x43F;&#x43E; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x443;</h2>
<p><strong>fq_codel</strong> &#x2014; &#x440;&#x430;&#x437;&#x443;&#x43C;&#x43D;&#x44B;&#x439; canary, &#x43A;&#x43E;&#x433;&#x434;&#x430; Linux &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x442; bottleneck queue, flows &#x43A;&#x43E;&#x43D;&#x43A;&#x443;&#x440;&#x438;&#x440;&#x443;&#x44E;&#x442;, &#x430; standing delay &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;. &#x41E;&#x43D; &#x441;&#x43E;&#x447;&#x435;&#x442;&#x430;&#x435;&#x442; flow separation &#x438; AQM. &#x41F;&#x440;&#x438; &#x44D;&#x442;&#x43E;&#x43C; &#x43E;&#x43D; &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x43B;&#x43D;&#x43E;&#x446;&#x435;&#x43D;&#x43D;&#x44B;&#x43C; bandwidth shaper: &#x435;&#x441;&#x43B;&#x438; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x443;&#x437;&#x43A;&#x430;&#x44F; &#x442;&#x43E;&#x447;&#x43A;&#x430; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x434;&#x430;&#x43B;&#x44C;&#x448;&#x435; &#x438; &#x431;&#x443;&#x444;&#x435;&#x440; &#x442;&#x430;&#x43C; &#x433;&#x43B;&#x443;&#x431;&#x43E;&#x43A;&#x438;&#x439;, &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43F;&#x443;&#x441;&#x442;&#x43E;&#x439;.</p><p><strong>fq</strong> &#x43E;&#x440;&#x438;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D; &#x43D;&#x430; fair queueing &#x438; pacing &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x433;&#x435;&#x43D;&#x435;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; traffic. Linux TCP &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x437;&#x430;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; departure time; &#x434;&#x43B;&#x44F; gateway, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x432; &#x43E;&#x441;&#x43D;&#x43E;&#x432;&#x43D;&#x43E;&#x43C; &#x442;&#x435;&#x440;&#x43C;&#x438;&#x43D;&#x438;&#x440;&#x443;&#x435;&#x442; &#x438; &#x437;&#x430;&#x43D;&#x43E;&#x432;&#x43E; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;, &#x44D;&#x442;&#x43E; &#x440;&#x435;&#x43B;&#x435;&#x432;&#x430;&#x43D;&#x442;&#x43D;&#x43E;. &#x414;&#x43B;&#x44F; &#x447;&#x438;&#x441;&#x442;&#x43E; forwarded traffic socket-aware &#x43F;&#x440;&#x435;&#x438;&#x43C;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x430; &#x441;&#x43B;&#x430;&#x431;&#x435;&#x435;, &#x438; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442;&#x441;&#x44F; fallback hash. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x2014; burst &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; sender &#x431;&#x435;&#x437; standing queue, fq &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x442;&#x43E;&#x447;&#x43D;&#x43E;&#x439; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x43E;&#x439;.</p><p><strong>CAKE</strong> &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; integrated shaper, isolation modes, Diffserv &#x438; overhead compensation. &#x41E;&#x43D; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x44B; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x441;&#x444;&#x43E;&#x440;&#x43C;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x441;&#x43A;&#x43E;&#x440;&#x43E;&#x441;&#x442;&#x44C; &#x43D;&#x435;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; &#x43D;&#x438;&#x436;&#x435; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x433;&#x43E; bottleneck, &#x43D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x43A;&#x430;&#x43D;&#x430;&#x43B;&#x430; &#x441; &#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x43D;&#x43E;&#x439; &#x43F;&#x43E;&#x43B;&#x43E;&#x441;&#x43E;&#x439;. &#x41D;&#x43E; &#x44D;&#x442;&#x43E; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x430;&#x44F; operational surface: bandwidth, RTT profile, overhead, NAT awareness &#x438; ingress strategy &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x43F;&#x443;&#x442;&#x438;. <code>autorate-ingress</code> &#x43D;&#x435; &#x443;&#x43C;&#x435;&#x435;&#x442; &#x43E;&#x446;&#x435;&#x43D;&#x438;&#x432;&#x430;&#x442;&#x44C; downstream links &#x437;&#x430; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x442;&#x43E;&#x447;&#x43A;&#x43E;&#x439; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x44F;.</p><p>Default &#x434;&#x43B;&#x44F; production gateway &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x441;&#x43A;&#x443;&#x447;&#x43D;&#x44B;&#x43C; &#x438; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;: &#x43D;&#x435; &#x43C;&#x438;&#x433;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x431;&#x435;&#x437; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x439; &#x431;&#x43E;&#x43B;&#x438;. &#x415;&#x441;&#x43B;&#x438; baseline &#x432;&#x44B;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; SLO, &#x43D;&#x43E;&#x432;&#x44B;&#x439; qdisc &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; ownership, persistence &#x438; on-call debt &#x431;&#x435;&#x437; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x43E;&#x439; &#x432;&#x44B;&#x433;&#x43E;&#x434;&#x44B;. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x44B;, &#x430; &#x43D;&#x435; &#x43D;&#x430;&#x437;&#x432;&#x430;&#x43D;&#x438;&#x44F;.</p><p>&#x414;&#x43B;&#x44F; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x435;&#x439; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B; upstream manuals <a href="https://man7.org/linux/man-pages/man8/tc-fq.8.html?ref=kingservers.com">tc-fq(8)</a> &#x438; <a href="https://man7.org/linux/man-pages/man8/tc-cake.8.html?ref=kingservers.com">tc-cake(8)</a>. &#x41E;&#x43D;&#x438; &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x44E;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x44B;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43E;&#x434;&#x438;&#x43D; &#x434;&#x440;&#x443;&#x433;&#x438;&#x43C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E; &#x43F;&#x43E;&#x43F;&#x443;&#x43B;&#x44F;&#x440;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x43E;.</p>
<div class="ks-widget" id="ks-sel-f6n2t9b"><h3>&#x41A;&#x430;&#x43A;&#x43E;&#x439; qdisc &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x432; canary</h3><label>&#x41F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x44B;&#x439; bottleneck</label><select data-s><option value="aqm">&#x421;&#x442;&#x43E;&#x44F;&#x447;&#x430;&#x44F; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x438; &#x43A;&#x43E;&#x43D;&#x43A;&#x443;&#x440;&#x438;&#x440;&#x443;&#x44E;&#x449;&#x438;&#x435; flows</option><option value="pace">&#x41B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; TCP sender &#x43D;&#x443;&#x436;&#x434;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; pacing</option><option value="shape">&#x41D;&#x443;&#x436;&#x43D;&#x43E; &#x444;&#x43E;&#x440;&#x43C;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x43F;&#x43E;&#x43B;&#x43E;&#x441;&#x443; &#x43D;&#x438;&#x436;&#x435; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x433;&#x43E; bottleneck</option><option value="none">&#x41E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x430;</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-f6n2t9b');if(!r)return;var m={"aqm":"Начните с fq_codel на canary: flow isolation плюс AQM без обязательного shaper.","pace":"Сравните fq: он рассчитан на pacing локально сгенерированного трафика.","shape":"Рассмотрите CAKE с явной bandwidth-моделью и корректным overhead; это отдельный эксперимент.","none":"Оставьте baseline. Сначала локализуйте owner очереди или соседний bottleneck."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-06-edcd00d3.webp" class="kg-image" alt="fq_codel &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x438; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; bufferbloat" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/fq-codel-llm-gateway-inline-06-edcd00d3.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/fq-codel-llm-gateway-inline-06-edcd00d3.webp 1000w, https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-06-edcd00d3.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="infrastructure-boundary">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x443;&#x436;&#x435; &#x432; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x435; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x44B;</h2>
<p>&#x418;&#x43D;&#x43E;&#x433;&#x434;&#x430; canary &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; network control gap. &#x41D;&#x430; shared VM &#x432;&#x44B; &#x43D;&#x435; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x435; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x439; NIC, host qdisc, &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44F;&#x43C;&#x438; &#x433;&#x438;&#x43F;&#x435;&#x440;&#x432;&#x438;&#x437;&#x43E;&#x440;&#x430; &#x438;&#x43B;&#x438; upstream shaping; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; &#x433;&#x43E;&#x441;&#x442;&#x44F; backlog &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x443;&#x441;&#x442;&#x44B;&#x43C;, &#x43F;&#x43E;&#x43A;&#x430; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x43D;&#x438;&#x436;&#x435;. &#x422;&#x43E;&#x433;&#x434;&#x430; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; sysctl &#x438;&#x43B;&#x438; &#x43D;&#x43E;&#x432;&#x44B;&#x439; qdisc &#x432; guest &#x43D;&#x435; &#x434;&#x430;&#x44E;&#x442; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x440;&#x44B;&#x447;&#x430;&#x433;&#x430;.</p><p>&#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442;&#x44B; &#x43F;&#x43E; ownership. VPS &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; gateway &#x438; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; guest baseline, &#x430; bottleneck &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x442;&#x441;&#x44F; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; VM. &#x412;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;, &#x435;&#x441;&#x43B;&#x438; &#x43D;&#x443;&#x436;&#x43D;&#x44B; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; NIC queues, driver/firmware ownership, NUMA placement &#x438; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x44B;&#x439; hardware profile. Managed edge &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x44D;&#x43A;&#x441;&#x43F;&#x43B;&#x443;&#x430;&#x442;&#x430;&#x446;&#x438;&#x438;, &#x43D;&#x43E; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43D;&#x438;&#x437;&#x43A;&#x43E;&#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435;&#x432;&#x443;&#x44E; &#x432;&#x438;&#x434;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x438; &#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x443; &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442;&#x430;.</p><p>&#x41A;&#x43E;&#x43C;&#x43C;&#x435;&#x440;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43A;&#x440;&#x438;&#x442;&#x435;&#x440;&#x438;&#x439; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x43D;&#x435; &#xAB;&#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435;&#xBB;. &#x41F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;: &#x441;&#x43C;&#x43E;&#x436;&#x435;&#x442;&#x435; &#x43B;&#x438; &#x432;&#x44B; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x442;&#x44C; &#x438; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x442;&#x43E;&#x442; &#x441;&#x43B;&#x43E;&#x439;, &#x433;&#x434;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x430; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;, &#x430; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43E;&#x442;&#x43A;&#x430;&#x442;&#x438;&#x442;&#x44C; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x432; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E;? &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x432;&#x44B;&#x437;&#x432;&#x430;&#x43D;&#x430; client read rate, proxy buffering, connection churn &#x438;&#x43B;&#x438; GPU queue, &#x43D;&#x43E;&#x432;&#x430;&#x44F; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x430; &#x435;&#x451; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x443;&#x441;&#x442;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; disqualifier.</p><p>&#x414;&#x43B;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x44B; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; canary &#x43D;&#x430; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435; &#x441; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x43E;&#x439; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x435;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F;. KingServers &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x434;&#x430;&#x442;&#x44C; VPS &#x438;&#x43B;&#x438; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x443;&#x437;&#x435;&#x43B; &#x43A;&#x430;&#x43A; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x44B;&#x439; baseline, &#x43D;&#x43E; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43E; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x438; &#x441;&#x442;&#x43E;&#x438;&#x442; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x442;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; A/B/A evidence bundle, &#x430; &#x43D;&#x435; &#x43F;&#x43E; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; &#x443;&#x434;&#x430;&#x447;&#x43D;&#x43E;&#x43C;&#x443; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x443;.</p><h2 id="production-rollout">Production rollout: persistence, observability &#x438; rollback</h2>
<p>&#x423;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x439; canary &#x435;&#x449;&#x451; &#x43D;&#x435; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; &#x43F;&#x435;&#x440;&#x435;&#x436;&#x438;&#x432;&#x451;&#x442; reboot, &#x441;&#x43C;&#x435;&#x43D;&#x443; interface name &#x438;&#x43B;&#x438; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x435; network namespace. &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; owner &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;: systemd-networkd, NetworkManager, netplan, orchestration script &#x438;&#x43B;&#x438; CNI. &#x41D;&#x435; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x43E;&#x432;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x441;&#x43E;&#x440;&#x435;&#x432;&#x43D;&#x443;&#x44E;&#x442;&#x441;&#x44F; &#x437;&#x430; root qdisc.</p><p>&#x41D;&#x430; multiqueue NIC &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; root <code>mq</code> &#x438; &#x432;&#x441;&#x435; leaf queues &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F;. &#x413;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <code>net.core.default_qdisc</code> &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x434;&#x43B;&#x44F; qdisc, &#x43D;&#x435; &#x442;&#x440;&#x435;&#x431;&#x443;&#x44E;&#x449;&#x438;&#x445; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x43E;&#x432;, &#x43D;&#x43E; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; multiqueue &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; default &#x43D;&#x430; &#x43B;&#x438;&#x441;&#x442;&#x44C;&#x44F;&#x445;, &#x430; virtual devices &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x438;&#x43C;&#x435;&#x442;&#x44C; <code>noqueue</code>. &#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x436;&#x435;&#x43B;&#x430;&#x435;&#x43C;&#x44B;&#x439; sysctl.</p><p>&#x412; &#x43C;&#x43E;&#x43D;&#x438;&#x442;&#x43E;&#x440;&#x438;&#x43D;&#x433; &#x432;&#x44B;&#x43D;&#x435;&#x441;&#x438;&#x442;&#x435; qdisc backlog/drops/ECN, interface drops, transport RTT/retransmissions &#x438; application metrics. Alert &#x43F;&#x43E; &#x43D;&#x435;&#x43D;&#x443;&#x43B;&#x435;&#x432;&#x43E;&#x43C;&#x443; drop &#x441;&#x430;&#x43C; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x441;&#x442; &#x448;&#x443;&#x43C;. &#x41F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x435;&#x435; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43B;&#x44F;&#x446;&#x438;&#x44F;: backlog &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x438;&#x43C; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x432;&#x430;&#x43B;&#x43E;&#x432;, tail latency &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;, &#x430; throughput &#x438;&#x43B;&#x438; completion &#x443;&#x445;&#x443;&#x434;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F;. &#x422;&#x430;&#x43A; on-call &#x432;&#x438;&#x434;&#x438;&#x442; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; &#x438; &#x443;&#x449;&#x435;&#x440;&#x431; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;.</p><p>Rollback &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x43C;: &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; baseline qdisc, &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x442;&#x443; &#x436;&#x435; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x443; &#x43D;&#x430; fresh connections &#x438; &#x441;&#x43D;&#x44F;&#x442;&#x44C; &#x442;&#x435; &#x436;&#x435; counters. &#x415;&#x441;&#x43B;&#x438; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x43D;&#x435; &#x438;&#x441;&#x447;&#x435;&#x437;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43D;&#x435; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x435;&#x43D;&#x430;. &#x422;&#x430;&#x43A;&#x43E;&#x439; A/B/A &#x442;&#x435;&#x441;&#x442; &#x438;&#x43D;&#x43E;&#x433;&#x434;&#x430; &#x43A;&#x430;&#x436;&#x435;&#x442;&#x441;&#x44F; &#x438;&#x437;&#x431;&#x44B;&#x442;&#x43E;&#x447;&#x43D;&#x44B;&#x43C;, &#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43E;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; qdisc &#x43E;&#x442; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x435;&#x432;&#x430; model cache, &#x441;&#x43C;&#x435;&#x43D;&#x44B; route &#x438;&#x43B;&#x438; &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x43D;&#x438;&#x44F; &#x444;&#x43E;&#x43D;&#x43E;&#x432;&#x43E;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x438;.</p><p>&#x41F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; <code>net.core.default_qdisc</code> &#x438; &#x438;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x43B;&#x44F; multiqueue/virtual devices &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x44B; &#x432; <a href="https://www.kernel.org/doc/html/latest/admin-guide/sysctl/net.html?highlight=default_qdisc&amp;ref=kingservers.com">&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; Linux kernel</a>.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">verify-after-reboot.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>sysctl net.core.default_qdisc
ip -br link
tc -s -d qdisc show dev eth0

# For a multiqueue root, inspect every reported leaf and compare handles.
tc -j -s qdisc show dev eth0</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; persistence &#x438; leaf qdisc</div>
</div>
<div class="ks-widget" id="ks-chk-z4m8p2q"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43A; production rollout</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> Canary &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x451;&#x43D; &#x43D;&#x430; &#x440;&#x435;&#x43F;&#x440;&#x435;&#x437;&#x435;&#x43D;&#x442;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x439; &#x441;&#x43C;&#x435;&#x441;&#x438; flows</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> p50/p95/p99 &#x438; throughput &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x44B; ECN-capable &#x438; non-ECN clients</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x44B; root &#x438; leaf qdisc &#x43F;&#x43E;&#x441;&#x43B;&#x435; reboot</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> Rollback &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x435; counters &#x438; SLO</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> On-call &#x43F;&#x43E;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; owner &#x438; stop condition</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-z4m8p2q');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-07-ee953c83.webp" class="kg-image" alt="fq_codel &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x438; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; bufferbloat" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/fq-codel-llm-gateway-inline-07-ee953c83.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/fq-codel-llm-gateway-inline-07-ee953c83.webp 1000w, https://kingservers.com/blog/content/images/2026/10/fq-codel-llm-gateway-inline-07-ee953c83.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="incident-runbook">&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; incident runbook &#x431;&#x435;&#x437; &#x43C;&#x430;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x43E;&#x432;</h2>
<p>&#x412;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x438; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x44C;&#x442;&#x435; &#x43E;&#x431;&#x43B;&#x430;&#x441;&#x442;&#x44C;: &#x43E;&#x434;&#x438;&#x43D; &#x440;&#x435;&#x433;&#x438;&#x43E;&#x43D;, &#x43E;&#x434;&#x438;&#x43D; gateway, &#x43E;&#x434;&#x438;&#x43D; &#x442;&#x438;&#x43F; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x438;&#x43B;&#x438; &#x432;&#x441;&#x435; flows. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x43D;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; effective path &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;. &#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; qdisc/interface/transport counters &#x432; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x43E;&#x43A;&#x43D;&#x435; &#x438; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; &#x441; healthy control. &#x41D;&#x435; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x441; <code>target 1ms</code>, &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x44F; limit &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F; ECN: &#x431;&#x435;&#x437; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x430; &#x44D;&#x442;&#x43E; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x44B;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; live dataplane.</p><p>&#x415;&#x441;&#x43B;&#x438; standing queue &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x430;, &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; canary &#x438; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; defaults fq_codel. &#x41F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x441;&#x43C;&#x435;&#x441;&#x44C; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;. &#x423;&#x441;&#x43F;&#x435;&#x445; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x43E;&#x439; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438;, &#x43F;&#x440;&#x438;&#x435;&#x43C;&#x43B;&#x435;&#x43C;&#x43E;&#x439; &#x443;&#x442;&#x438;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x44F; LLM outcome. &#x415;&#x441;&#x43B;&#x438; tail latency &#x441;&#x43D;&#x438;&#x437;&#x438;&#x43B;&#x430;&#x441;&#x44C; &#x446;&#x435;&#x43D;&#x43E;&#x439; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;&#x433;&#x43E; throughput, &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x448;&#x451;&#x43B;. &#x415;&#x441;&#x43B;&#x438; drops &#x432;&#x44B;&#x440;&#x43E;&#x441;&#x43B;&#x438;, &#x43D;&#x43E; RTT &#x438; application SLO &#x443;&#x43B;&#x443;&#x447;&#x448;&#x438;&#x43B;&#x438;&#x441;&#x44C;, &#x44D;&#x442;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x43E;&#x439; AQM.</p><p>&#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; canary &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435; rollback &#x438; &#x443;&#x431;&#x435;&#x434;&#x438;&#x442;&#x435;&#x441;&#x44C;, &#x447;&#x442;&#x43E; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x442;&#x43E;&#x439; &#x436;&#x435; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x435;. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x43D;&#x43E;&#x432;&#x430; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x438; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x439;&#x442;&#x435; rollout &#x441;&#x442;&#x443;&#x43F;&#x435;&#x43D;&#x44F;&#x43C;&#x438;. &#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x448;&#x430;&#x433;&#x430; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; before/after bundle, &#x432;&#x435;&#x440;&#x441;&#x438;&#x44E; kernel/iproute2, topology &#x438; stop condition. &#x41F;&#x440;&#x438; &#x43B;&#x44E;&#x431;&#x43E;&#x43C; &#x440;&#x430;&#x441;&#x445;&#x43E;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x438; &#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435;&#x441;&#x44C; &#x43A; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x435;&#x43C;&#x443; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x43C;&#x443; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44E;.</p><p>&#x41D;&#x430;&#x43A;&#x43E;&#x43D;&#x435;&#x446;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x435; owners. Queue relief &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x435;&#x441;&#x442;&#x438; bottleneck &#x432; TLS CPU, upstream proxy, egress link &#x438;&#x43B;&#x438; GPU scheduler. &#x41F;&#x43E;&#x431;&#x435;&#x434;&#x430; &#x2014; &#x43D;&#x435; &#x438;&#x441;&#x447;&#x435;&#x437;&#x43D;&#x43E;&#x432;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x440;&#x430;&#x441;&#x43D;&#x43E;&#x433;&#x43E; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430;, &#x430; &#x443;&#x441;&#x442;&#x43E;&#x439;&#x447;&#x438;&#x432;&#x44B;&#x439; application SLO &#x431;&#x435;&#x437; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x43E;&#x433;&#x43E; &#x443;&#x445;&#x443;&#x434;&#x448;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x433;&#x43E; &#x440;&#x435;&#x441;&#x443;&#x440;&#x441;&#x430;.</p><h2 id="load-profile">&#x41D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43E;&#x447;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44C;: &#x43A;&#x430;&#x43A; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x438; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441;&#x432;&#x43E;&#x439; bufferbloat</h2>
<p>&#x421;&#x438;&#x43D;&#x442;&#x435;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x442;&#x435;&#x441;&#x442; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; &#x442;&#x443; &#x436;&#x435; &#x43A;&#x43E;&#x43D;&#x43A;&#x443;&#x440;&#x435;&#x43D;&#x446;&#x438;&#x44E;, &#x447;&#x442;&#x43E; production, &#x430; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x437;&#x430;&#x431;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x43B;&#x438;&#x43D;&#x43A; &#x43E;&#x434;&#x43D;&#x438;&#x43C; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43C;. &#x414;&#x43B;&#x44F; LLM gateway &#x441;&#x43E;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; &#x441;&#x43C;&#x435;&#x441;&#x44C;: &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x44B; &#x441; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; TTFT, &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x435; streaming responses, &#x43F;&#x435;&#x440;&#x438;&#x43E;&#x434;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; bulk transfer &#x430;&#x440;&#x442;&#x435;&#x444;&#x430;&#x43A;&#x442;&#x430; &#x438; health traffic. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x435; prompt lengths, output limits &#x438; connection strategy &#x43C;&#x435;&#x436;&#x434;&#x443; baseline &#x438; canary. &#x418;&#x43D;&#x430;&#x447;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; model workload &#x437;&#x430;&#x43C;&#x430;&#x441;&#x43A;&#x438;&#x440;&#x443;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x434; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;.</p><p>&#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; pre-first-byte &#x438; post-first-byte. &#x41F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x432;&#x430;&#x43B; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; admission, model scheduling, KV-cache &#x438; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43E;&#x43A; &#x442;&#x440;&#x430;&#x43D;&#x441;&#x43F;&#x43E;&#x440;&#x442;&#x430;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x431;&#x44B;&#x442;&#x438;&#x44F; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; gaps &#x43C;&#x435;&#x436;&#x434;&#x443; &#x447;&#x430;&#x43D;&#x43A;&#x430;&#x43C;&#x438;. qdisc &#x43D;&#x430; egress &#x43B;&#x43E;&#x433;&#x438;&#x447;&#x43D;&#x435;&#x435; &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x441; post-first-byte &#x43F;&#x430;&#x443;&#x437;&#x430;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x435;&#x439;; &#x440;&#x43E;&#x441;&#x442; TTFT &#x431;&#x435;&#x437; backlog &#x447;&#x430;&#x449;&#x435; &#x432;&#x435;&#x434;&#x451;&#x442; &#x43A; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x43C;&#x443; owner. &#x42D;&#x442;&#x43E; &#x43D;&#x435; &#x430;&#x431;&#x441;&#x43E;&#x43B;&#x44E;&#x442;&#x43D;&#x43E;&#x435; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x43E;, &#x430; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435; &#x43E;&#x442;&#x441;&#x435;&#x44F;&#x442;&#x44C; &#x441;&#x43B;&#x430;&#x431;&#x443;&#x44E; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x443;.</p><p>&#x41D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E; &#x434;&#x43E;&#x43B;&#x433;&#x43E;, &#x447;&#x442;&#x43E;&#x431;&#x44B; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x438;&#x442;&#x44C; burst &#x43E;&#x442; standing queue, &#x43D;&#x43E; &#x434;&#x43B;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x437;&#x430;&#x434;&#x430;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x442;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x432;&#x430;&#x448;&#x435;&#x433;&#x43E; RTT &#x438; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x435;&#x433;&#x43E; &#x43F;&#x430;&#x442;&#x442;&#x435;&#x440;&#x43D;&#x430;, &#x430; &#x43D;&#x435; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x447;&#x438;&#x441;&#x43B;&#x43E;&#x43C;. &#x421;&#x438;&#x43D;&#x445;&#x440;&#x43E;&#x43D;&#x438;&#x437;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; timestamps gateway, load generator &#x438; observability. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x43E;&#x43C;&#x435;&#x442;&#x44C;&#x442;&#x435; &#x444;&#x430;&#x437;&#x44B; warm-up, steady state, overload &#x438; recovery: &#x443;&#x441;&#x440;&#x435;&#x434;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x441;&#x435;&#x445; &#x444;&#x430;&#x437; &#x432; &#x43E;&#x434;&#x43D;&#x443; &#x43B;&#x438;&#x43D;&#x438;&#x44E; &#x443;&#x43D;&#x438;&#x447;&#x442;&#x43E;&#x436;&#x438;&#x442; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C;.</p><p>&#x41D;&#x435; &#x437;&#x430;&#x431;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43E; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x438;. Egress qdisc gateway &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43A;&#x43E;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x443;, &#x43D;&#x43E; &#x43D;&#x435; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;&#x44E; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x445; requests &#x438; &#x43D;&#x435; downstream buffer &#x437;&#x430; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x43C; shaper. &#x414;&#x43B;&#x44F; ingress shaping &#x43D;&#x443;&#x436;&#x43D;&#x430; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x441;&#x445;&#x435;&#x43C;&#x430;, &#x447;&#x430;&#x441;&#x442;&#x43E; &#x447;&#x435;&#x440;&#x435;&#x437; IFB &#x438;&#x43B;&#x438; edge-&#x443;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x43E;; &#x44D;&#x442;&#x43E; &#x443;&#x436;&#x435; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; &#x440;&#x438;&#x441;&#x43A; &#x438; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; rollback. &#x415;&#x441;&#x43B;&#x438; &#x443;&#x437;&#x43A;&#x430;&#x44F; &#x442;&#x43E;&#x447;&#x43A;&#x430; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x443; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;, &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; fq_codel &#x43B;&#x438;&#x448;&#x44C; &#x443;&#x432;&#x438;&#x434;&#x438;&#x442; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x443;&#x44E; &#x441;&#x432;&#x44F;&#x437;&#x44C; &#x442;&#x440;&#x430;&#x43D;&#x441;&#x43F;&#x43E;&#x440;&#x442;&#x430;.</p><p>&#x425;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x439; &#x442;&#x435;&#x441;&#x442; &#x437;&#x430;&#x43A;&#x430;&#x43D;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; recovery-&#x444;&#x430;&#x437;&#x43E;&#x439;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x441;&#x43D;&#x44F;&#x442;&#x438;&#x44F; bulk traffic backlog &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x443;&#x439;&#x442;&#x438;, RTT &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C;&#x441;&#x44F; &#x43A; baseline, &#x430; streaming gaps &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x438;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43E;&#x43F;&#x443;&#x441;&#x442;&#x435;&#x43B;&#x430;, &#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x441;&#x451; &#x435;&#x449;&#x451; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;, bottleneck &#x43C;&#x438;&#x433;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43B; &#x438;&#x43B;&#x438; &#x442;&#x435;&#x441;&#x442; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x43B; &#x432;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x444;&#x430;&#x43A;&#x442;&#x43E;&#x440;. &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x435;&#x433;&#x43E;, &#x43F;&#x440;&#x435;&#x436;&#x434;&#x435; &#x447;&#x435;&#x43C; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x442;&#x44C; rollout.</p><h2 id="common-mistakes">&#x427;&#x430;&#x441;&#x442;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;, &#x438;&#x437;-&#x437;&#x430; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x445; canary &#x43B;&#x436;&#x451;&#x442;</h2>
<p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 1 &#x2014; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x44C; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; paths.</strong> Baseline &#x438;&#x434;&#x451;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; &#x43E;&#x434;&#x438;&#x43D; load balancer, canary &#x447;&#x435;&#x440;&#x435;&#x437; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439;, &#x43D;&#x43E; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43F;&#x440;&#x438;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x44E;&#x442; qdisc. &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; remote peer, route &#x438; termination point &#x434;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x442;&#x435;&#x441;&#x442;&#x430;. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x443;&#x442;&#x44C; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F;, &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x441;&#x440;&#x430;&#x437;&#x443; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;.</p><p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 2 &#x2014; &#x441;&#x43C;&#x435;&#x448;&#x430;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x435; &#x438; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;.</strong> Long-lived SSE, WebSocket &#x438;&#x43B;&#x438; gRPC stream &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442; &#x43F;&#x440;&#x435;&#x436;&#x43D;&#x438;&#x439; peer &#x438; congestion state. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x439;&#x442;&#x435; fresh connections &#x441; &#x442;&#x435;&#x43C; &#x436;&#x435; request mix. &#x421;&#x442;&#x430;&#x440;&#x44B;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x442;&#x44C; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;: &#x438;&#x445; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x430;&#x436;&#x43D;&#x43E; &#x434;&#x43B;&#x44F; drain, &#x43D;&#x43E; &#x43D;&#x435; &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x434;&#x43B;&#x44F; &#x447;&#x438;&#x441;&#x442;&#x43E;&#x433;&#x43E; A/B.</p><p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 3 &#x2014; &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x435;&#x442;&#x44C; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x435;&#x435;.</strong> Bufferbloat &#x43F;&#x440;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x445;&#x432;&#x43E;&#x441;&#x442;&#x435; &#x438; &#x443; latency-sensitive flows &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x441; bulk transfer. &#x421;&#x440;&#x435;&#x434;&#x43D;&#x438;&#x439; RTT &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x447;&#x442;&#x438; &#x43D;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C;&#x441;&#x44F;. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; p50, p95 &#x438; p99, &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x430;&#x443;&#x437;&#x44B;, completion rate &#x438; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x439; throughput. &#x41E;&#x434;&#x438;&#x43D; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x44B;&#x439; percentile &#x442;&#x43E;&#x436;&#x435; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x435;&#x43D;: &#x441;&#x435;&#x442;&#x44C; &#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x440;&#x430;&#x441;&#x441;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x43E;&#x434;&#x43D;&#x443; &#x438;&#x441;&#x442;&#x43E;&#x440;&#x438;&#x44E;.</p><p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 4 &#x2014; &#x442;&#x44E;&#x43D;&#x438;&#x442;&#x44C; target, interval &#x438; limit &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;.</strong> &#x422;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x435;&#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x44C;, &#x43A;&#x430;&#x43A;&#x43E;&#x439; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; &#x434;&#x430;&#x43B; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;. &#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; defaults, &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; &#x437;&#x430; &#x448;&#x430;&#x433; &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x439;&#x442;&#x435; rollback. <code>interval</code> &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D; &#x441; &#x445;&#x443;&#x434;&#x448;&#x438;&#x43C; RTT bottleneck, <code>limit</code> &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;, &#x430; <code>target</code> &#x437;&#x430;&#x434;&#x430;&#x451;&#x442; &#x43F;&#x440;&#x438;&#x435;&#x43C;&#x43B;&#x435;&#x43C;&#x443;&#x44E; standing delay &#x2014; &#x44D;&#x442;&#x43E; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x440;&#x44B;&#x447;&#x430;&#x433;&#x438;.</p><p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 5 &#x2014; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; capture &#x437;&#x430; wire truth.</strong> GSO/TSO &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x43A;&#x440;&#x443;&#x43F;&#x43D;&#x44B;&#x435; skb &#x434;&#x43E; segmentation, &#x430; checksum offload &#x2014; &#xAB;&#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;&#xBB;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x445; &#x43D;&#x435;&#x442; &#x43D;&#x430; wire. &#x414;&#x43B;&#x44F; &#x441;&#x43F;&#x43E;&#x440;&#x43D;&#x43E;&#x439; &#x43A;&#x430;&#x440;&#x442;&#x438;&#x43D;&#x44B; &#x441;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x43D;&#x430; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x43C; TAP/peer &#x438;&#x43B;&#x438; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441;&#x43F;&#x440;&#x43E;&#x435;&#x43A;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; canary capture &#x441; &#x443;&#x447;&#x451;&#x442;&#x43E;&#x43C; offload. &#x41D;&#x435; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; offload &#x432;&#x43E; &#x432;&#x441;&#x451;&#x43C; fleet &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x440;&#x430;&#x434;&#x438; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x43E;&#x433;&#x43E; tcpdump.</p><p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 6 &#x2014; &#x437;&#x430;&#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x440;&#x43E; memory envelope.</strong> Packet limit &#x438; memory limit &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435;, &#x43F;&#x440;&#x438;&#x447;&#x451;&#x43C; &#x441;&#x440;&#x430;&#x431;&#x430;&#x442;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43D;&#x438;&#x437;&#x43A;&#x438;&#x439; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;. &#x41D;&#x430; gateway &#x441; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x43C; &#x447;&#x438;&#x441;&#x43B;&#x43E;&#x43C; interfaces &#x438; namespaces &#x441;&#x443;&#x43C;&#x43C;&#x430;&#x440;&#x43D;&#x430;&#x44F; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439; &#x432;&#x430;&#x436;&#x43D;&#x435;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; cgroup/RSS, socket buffers &#x438; qdisc memory &#x432; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; capacity budget.</p><h2 id="conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: qdisc &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430;, &#x430; &#x43D;&#x435; &#x43F;&#x43E; &#x43F;&#x440;&#x438;&#x432;&#x44B;&#x447;&#x43A;&#x435;</h2>
<p>fq_codel &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; Linux &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x435;&#x442; &#x443;&#x437;&#x43A;&#x43E;&#x439; egress-&#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;&#x44E;, &#x43A;&#x43E;&#x43D;&#x43A;&#x443;&#x440;&#x438;&#x440;&#x443;&#x44E;&#x449;&#x438;&#x435; flows &#x43C;&#x435;&#x448;&#x430;&#x44E;&#x442; &#x434;&#x440;&#x443;&#x433; &#x434;&#x440;&#x443;&#x433;&#x443;, &#x430; standing delay &#x432;&#x438;&#x434;&#x435;&#x43D; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x432; qdisc, &#x442;&#x440;&#x430;&#x43D;&#x441;&#x43F;&#x43E;&#x440;&#x442;&#x435; &#x438; LLM streaming. &#x41E;&#x43D; &#x43D;&#x435; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; capacity planning, &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; slow consumer &#x438; &#x43D;&#x435; &#x441;&#x43E;&#x43A;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; GPU compute time.</p><p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; owner map &#x438; baseline, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; canary &#x43D;&#x430; defaults, &#x447;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; drops &#x43A;&#x430;&#x43A; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B; AQM, &#x430; &#x43D;&#x435; &#x43A;&#x430;&#x43A; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x443;&#x44E; &#x430;&#x432;&#x430;&#x440;&#x438;&#x44E;. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; fq_codel, fq &#x438; CAKE &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x430;. &#x418; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x438;&#x442;&#x435; A/B/A rollback: &#x435;&#x441;&#x43B;&#x438; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442; baseline &#x43D;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;, &#x438;&#x441;&#x442;&#x43E;&#x440;&#x438;&#x44F; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x437;&#x430;&#x43A;&#x43E;&#x43D;&#x447;&#x435;&#x43D;&#x430;.</p><p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x448;&#x430;&#x433; &#x43F;&#x440;&#x43E;&#x441;&#x442;: &#x432;&#x44B;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x439; gateway, &#x441;&#x43E;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x451;&#x445;&#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435;&#x432;&#x44B;&#x439; evidence bundle &#x438; &#x43F;&#x440;&#x43E;&#x433;&#x43E;&#x43D;&#x438;&#x442;&#x435; &#x440;&#x435;&#x43F;&#x440;&#x435;&#x437;&#x435;&#x43D;&#x442;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x443;&#x44E; &#x441;&#x43C;&#x435;&#x441;&#x44C; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x445; &#x438; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x445; flows. &#x415;&#x441;&#x43B;&#x438; bottleneck &#x43E;&#x43A;&#x430;&#x436;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x441;&#x43B;&#x43E;&#x435;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x43C; &#x442;&#x435;&#x43A;&#x443;&#x449;&#x430;&#x44F; &#x43F;&#x43B;&#x43E;&#x449;&#x430;&#x434;&#x43A;&#x430; &#x43D;&#x435; &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C;, &#x442;&#x43E;&#x433;&#x434;&#x430; &#x443;&#x436;&#x435; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x441;&#x43C;&#x44B;&#x441;&#x43B; &#x43E;&#x431;&#x441;&#x443;&#x436;&#x434;&#x430;&#x442;&#x44C; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; VPS, dedicated edge &#x438;&#x43B;&#x438; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441; termination point &#x2014; &#x441; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x438;&#x43C;&#x44B;&#x43C; SLO &#x438; &#x43F;&#x43B;&#x430;&#x43D;&#x43E;&#x43C; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442;&#x430;.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[NIC ring buffers и RX drops на LLM API gateway: ethtool-runbook]]></title><description><![CDATA[Практический runbook по RX ring buffers: как связать ethtool counters, IRQ/softirq и ошибки LLM API, провести canary и не лечить любой timeout глубиной очереди.]]></description><link>https://kingservers.com/blog/nic-ring-buffer-rx-drops-llm-api-gateway/</link><guid isPermaLink="false">6ad874c4aff2afac25354eb8</guid><category><![CDATA[Сетевые протоколы]]></category><category><![CDATA[Linux]]></category><category><![CDATA[LLM]]></category><category><![CDATA[Инфраструктура]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 23 Oct 2026 23:20:28 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-hero-d07a1d81.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x432;&#x435;&#x440;&#x434;&#x438;&#x43A;&#x442;: &#x43A;&#x43E;&#x433;&#x434;&#x430; RX ring &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x432;&#x438;&#x43D;&#x43E;&#x432;&#x430;&#x442;</a></li>
<li><a href="#receive-path">&#x413;&#x434;&#x435; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; ring buffer &#x432; receive path</a></li>
<li><a href="#baseline">&#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; baseline &#x434;&#x43E; &#x43B;&#x44E;&#x431;&#x43E;&#x439; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438;</a></li>
<li><a href="#counters">&#x41A;&#x430;&#x43A; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x438;&#x442;&#x44C; hardware drop &#x43E;&#x442; softirq &#x438; socket bottleneck</a></li>
<li><a href="#locality">&#x421;&#x432;&#x44F;&#x436;&#x438;&#x442;&#x435; RX queue, IRQ, softirq &#x438; NUMA</a></li>
<li><a href="#tuning">Ring size &#x438; interrupt coalescing: &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43F;&#x43E; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443;</a></li>
<li><a href="#canary">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; A/B/A canary &#x441; application outcome</a></li>
<li><a href="#persistence">&#x421;&#x434;&#x435;&#x43B;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443; &#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x43E;&#x439; &#x438; &#x43D;&#x435; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; rollback</a></li>
<li><a href="#platform">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x44B;</a></li>
<li><a href="#incident-runbook">&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; runbook &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430; &#x441; RX drops</a></li>
<li><a href="#conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: ring buffer &#x43B;&#x435;&#x447;&#x438;&#x442; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; burst, &#x430; &#x43D;&#x435; &#x43B;&#x44E;&#x431;&#x43E;&#x439; timeout</a></li>
</ul></div>

</div>LLM API &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x440;&#x44B;&#x432;&#x43A;&#x430;&#x43C;&#x438;, &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x442;&#x435;&#x440;&#x44F;&#x44E;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B;, &#x430; GPU &#x43F;&#x440;&#x438; &#x44D;&#x442;&#x43E;&#x43C; &#x43D;&#x435; &#x437;&#x430;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D; &#x43F;&#x43E;&#x43B;&#x43D;&#x43E;&#x441;&#x442;&#x44C;&#x44E;. &#x412; &#x442;&#x430;&#x43A;&#x43E;&#x439; &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442; &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x442;&#x44C; &#x432;&#x441;&#x435; &#x441;&#x435;&#x442;&#x435;&#x432;&#x44B;&#x435; &#x431;&#x443;&#x444;&#x435;&#x440;&#x44B; &#x441;&#x440;&#x430;&#x437;&#x443; &#x438; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E; &#x441;&#x43F;&#x440;&#x44F;&#x442;&#x430;&#x442;&#x44C; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x443;. &#x42D;&#x442;&#x43E;&#x442; runbook &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x438;&#x435; RX ring &#x447;&#x435;&#x440;&#x435;&#x437; driver counters, IRQ/softirq &#x438; application outcome, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x441;&#x442;&#x438; A/B/A canary &#x438; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E; &#x43E;&#x442;&#x43A;&#x430;&#x442;&#x438;&#x442;&#x44C;&#x441;&#x44F;. &#x413;&#x43B;&#x430;&#x432;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x438;&#x43D;&#x446;&#x438;&#x43F;: &#x43D;&#x43E;&#x432;&#x44B;&#x439; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x438;&#x43B;&#x438; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; ring &#x43D;&#x443;&#x436;&#x43D;&#x44B; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; bottleneck &#x43D;&#x430; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x439; receive queue.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-hero-d07a1d81.webp" alt="NIC ring buffers &#x438; RX drops &#x43D;&#x430; LLM API gateway: ethtool-runbook"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x432;&#x435;&#x440;&#x434;&#x438;&#x43A;&#x442;: &#x43A;&#x43E;&#x433;&#x434;&#x430; RX ring &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x432;&#x438;&#x43D;&#x43E;&#x432;&#x430;&#x442;</h2>
<p>&#x423;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x442;&#x44C; RX ring &#x438;&#x43C;&#x435;&#x435;&#x442; &#x441;&#x43C;&#x44B;&#x441;&#x43B; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x442;&#x440;&#x451;&#x445; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x432;&#x448;&#x438;&#x445; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B;&#x43E;&#x432;: &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; driver-level &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44C; &#x43D;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x43E;&#x439; receive queue, &#x440;&#x43E;&#x441;&#x442; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x43F;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x438; &#x441; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43E;&#x447;&#x43D;&#x44B;&#x43C; burst, &#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x438;&#x434;&#x438;&#x442; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;, &#x440;&#x435;&#x442;&#x440;&#x430;&#x43D;&#x441;&#x43B;&#x44F;&#x446;&#x438;&#x438; &#x438;&#x43B;&#x438; &#x443;&#x445;&#x443;&#x434;&#x448;&#x435;&#x43D;&#x438;&#x435; TTFT. &#x415;&#x441;&#x43B;&#x438; &#x435;&#x441;&#x442;&#x44C; &#x43B;&#x438;&#x448;&#x44C; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x438;&#x439; &#x43E;&#x431;&#x449;&#x438;&#x439; <code>RX dropped</code>, &#x44D;&#x442;&#x43E; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x437;. &#x421;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A; &#x43C;&#x43E;&#x433; &#x43D;&#x430;&#x43A;&#x430;&#x43F;&#x43B;&#x438;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43D;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x43C;&#x438;, &#x43F;&#x440;&#x438;&#x43D;&#x430;&#x434;&#x43B;&#x435;&#x436;&#x430;&#x442;&#x44C; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C;&#x443; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x443; &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x440;&#x430;&#x436;&#x430;&#x442;&#x44C; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; &#x443;&#x440;&#x43E;&#x432;&#x435;&#x43D;&#x44C; &#x441;&#x442;&#x435;&#x43A;&#x430;.</p><p>&#x414;&#x43B;&#x44F; LLM API gateway &#x442;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x439; false-green &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x442;&#x430;&#x43A;: GPU utilization &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x435;&#x43D;, HTTP health-check &#x437;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x439;, &#x43D;&#x43E; &#x43D;&#x43E;&#x432;&#x44B;&#x435; streaming-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x435;&#x440;&#x438;&#x43E;&#x434;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x44E;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x441; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x43E;&#x439; &#x438;&#x43B;&#x438; &#x43E;&#x431;&#x440;&#x44B;&#x432;&#x430;&#x44E;&#x442;&#x441;&#x44F;. &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; socket buffers, &#x437;&#x430;&#x442;&#x435;&#x43C; <code>net.core.netdev_max_backlog</code>, &#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;. &#x41F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x44C;&#x441;&#x44F; &#x440;&#x430;&#x43D;&#x44C;&#x448;&#x435;: &#x430;&#x43F;&#x43F;&#x430;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x439; RX descriptor ring &#x437;&#x430;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435;, &#x447;&#x435;&#x43C; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440; &#x438; NAPI &#x443;&#x441;&#x43F;&#x435;&#x432;&#x430;&#x44E;&#x442; &#x435;&#x433;&#x43E; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x430;&#x442;&#x44C;.</p><p>&#x41E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x430;&#x44F; &#x441;&#x438;&#x442;&#x443;&#x430;&#x446;&#x438;&#x44F; &#x432;&#x441;&#x442;&#x440;&#x435;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x435; &#x440;&#x435;&#x436;&#x435;. NIC counters &#x441;&#x442;&#x43E;&#x44F;&#x442; &#x43D;&#x430; &#x43C;&#x435;&#x441;&#x442;&#x435;, &#x437;&#x430;&#x442;&#x43E; &#x43E;&#x434;&#x43D;&#x430; CPU &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x430; <code>NET_RX</code>, &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; <code>time_squeeze</code>, proxy &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E; &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x44B; &#x438;&#x43B;&#x438; inference backend &#x434;&#x435;&#x440;&#x436;&#x438;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;. &#x417;&#x434;&#x435;&#x441;&#x44C; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; ring &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x438;&#x442; &#x433;&#x43B;&#x443;&#x431;&#x438;&#x43D;&#x44B; &#x438; &#x441;&#x43A;&#x440;&#x43E;&#x435;&#x442; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x43D;&#x430; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434;. Procurement default &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;&#x439;: &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x443; &#x438; &#x43D;&#x435; &#x437;&#x430;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; &#xAB;NIC &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x43D;&#x435;&#x435;&#xBB;, &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D; bottleneck &#x43D;&#x430; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x43C; hop.</p><p>&#x413;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x442;&#x435;&#x43C;&#x44B; &#x432;&#x430;&#x436;&#x43D;&#x430;. &#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443; RSS/RPS &#x438; IRQ affinity &#x43F;&#x43E;&#x434;&#x440;&#x43E;&#x431;&#x43D;&#x43E; &#x440;&#x430;&#x437;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <a href="https://kingservers.com/blog/rss-rps-irq-affinity-llm-api-gateway/">runbook KingServers &#x43F;&#x43E; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x43C;&#x443; CPU</a>, &#x430; &#x432;&#x43B;&#x438;&#x44F;&#x43D;&#x438;&#x435; GRO/GSO/TSO &#x2014; <a href="https://kingservers.com/blog/gro-gso-tso-llm-api-gateway/">&#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43F;&#x43E; network offload</a>. &#x417;&#x434;&#x435;&#x441;&#x44C; &#x444;&#x43E;&#x43A;&#x443;&#x441; &#x443;&#x436;&#x435;: &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x438;&#x435; RX ring, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x441;&#x442;&#x438; &#x43E;&#x434;&#x438;&#x43D; canary &#x438; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x44C; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; application outcome.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-01-3fff111c.webp" class="kg-image" alt="NIC ring buffers &#x438; RX drops &#x43D;&#x430; LLM API gateway: ethtool-runbook" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nic-ring-buffer-llm-gateway-inline-01-3fff111c.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nic-ring-buffer-llm-gateway-inline-01-3fff111c.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-01-3fff111c.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="receive-path">&#x413;&#x434;&#x435; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; ring buffer &#x432; receive path</h2>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><p>&#x41F;&#x430;&#x43A;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x432; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x443;&#x44E; NIC, &#x43A;&#x430;&#x440;&#x442;&#x430; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x449;&#x430;&#x435;&#x442; descriptor &#x432; RX ring &#x438; &#x447;&#x435;&#x440;&#x435;&#x437; interrupt &#x441;&#x43E;&#x43E;&#x431;&#x449;&#x430;&#x435;&#x442; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x443; &#x43E; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x435;. NAPI poll &#x437;&#x430;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442;, &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; <code>sk_buff</code> &#x438; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x451;&#x442; &#x435;&#x433;&#x43E; &#x432;&#x44B;&#x448;&#x435;: &#x432; softirq, IP/TCP, socket queue, proxy &#x438; &#x43D;&#x430;&#x43A;&#x43E;&#x43D;&#x435;&#x446; &#x432; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441; LLM gateway. &#x41F;&#x43E;&#x442;&#x435;&#x440;&#x44F; &#x43D;&#x430; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x43C; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43A;&#x435; &#x443;&#x436;&#x435; &#x43D;&#x435; &#x432;&#x438;&#x434;&#x43D;&#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44E; &#x43A;&#x430;&#x43A; &#xAB;&#x43F;&#x435;&#x440;&#x435;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x43D;&#x44B;&#x439; ring&#xBB;; &#x447;&#x430;&#x449;&#x435; &#x43E;&#x43D;&#x430; &#x43F;&#x440;&#x43E;&#x44F;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x442;&#x430;&#x439;&#x43C;&#x430;&#x443;&#x442;&#x43E;&#x43C;, TCP retransmission &#x438;&#x43B;&#x438; &#x43D;&#x43E;&#x432;&#x44B;&#x43C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C;.</p><p>&#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; Red Hat &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; RX ring &#x43A;&#x430;&#x43A; &#x43E;&#x431;&#x449;&#x438;&#x439; &#x43A;&#x440;&#x443;&#x433;&#x43E;&#x432;&#x43E;&#x439; &#x431;&#x443;&#x444;&#x435;&#x440; NIC &#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;: &#x43E;&#x43D; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B;, &#x43F;&#x43E;&#x43A;&#x430; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440; &#x43D;&#x435; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x438;&#x445; &#x447;&#x435;&#x440;&#x435;&#x437; SoftIRQ. &#x42D;&#x442;&#x43E; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x430;&#x44F; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C;, &#x43D;&#x43E; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x440;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;, &#x447;&#x438;&#x441;&#x43B;&#x430; queues &#x438; &#x440;&#x435;&#x436;&#x438;&#x43C;&#x430; &#x443;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x430;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x441;&#x43B;&#x43E;&#x432;&#x43E; <em>ring</em> &#x432; &#x432;&#x44B;&#x432;&#x43E;&#x434;&#x435; <code>ethtool -g</code> &#x43D;&#x435; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x435;&#x442; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x441; <code>netdev_max_backlog</code>, receive socket buffer &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;&#x44E; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432; Envoy.</p><p>&#x41F;&#x440;&#x435;&#x434;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x443;&#x442;&#x440;&#x435;&#x43D;&#x43D;&#x438;&#x439; burst &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430; batch-&#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x432;. NIC &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x434;&#x435;&#x441;&#x44F;&#x442;&#x43A;&#x438; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x445; TLS-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;. &#x415;&#x441;&#x43B;&#x438; CPU &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x430;&#x435;&#x442; descriptors &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E;, &#x433;&#x43B;&#x443;&#x431;&#x438;&#x43D;&#x430; ring &#x43F;&#x43E;&#x447;&#x442;&#x438; &#x43D;&#x435; &#x432;&#x430;&#x436;&#x43D;&#x430;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x438;&#x43D; IRQ &#x43F;&#x43E;&#x43F;&#x430;&#x43B; &#x43D;&#x430; &#x437;&#x430;&#x43D;&#x44F;&#x442;&#x44B;&#x439; core, &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x437;&#x430;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x438; NIC &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x431;&#x440;&#x430;&#x441;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x43A;&#x430;&#x434;&#x440;&#x44B; &#x435;&#x449;&#x451; &#x434;&#x43E; TCP. &#x41D;&#x43E; &#x435;&#x441;&#x43B;&#x438; &#x43A;&#x430;&#x434;&#x440;&#x44B; &#x43F;&#x440;&#x43E;&#x448;&#x43B;&#x438; &#x432; kernel &#x438; &#x437;&#x430;&#x441;&#x442;&#x440;&#x44F;&#x43B;&#x438; &#x443; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; consumer, &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; RX descriptors &#x43D;&#x435; &#x440;&#x435;&#x448;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x443;&#x44E; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x443;.</p><p>&#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430; &#x440;&#x438;&#x441;&#x443;&#x439;&#x442;&#x435; owner map: &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x43E;&#x440;&#x442; &#x438; driver, RX queue &#x438; IRQ, CPU/softirq, socket, proxy worker, backend connection &#x438; GPU queue. &#x41F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x434;&#x430;&#x43B;&#x44C;&#x448;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430; &#x43F;&#x440;&#x435;&#x434;&#x44B;&#x434;&#x443;&#x449;&#x435;&#x433;&#x43E; &#x441;&#x43B;&#x43E;&#x44F;. &#x422;&#x430;&#x43A;&#x43E;&#x439; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; &#x43D;&#x435; &#x441;&#x430;&#x43C;&#x44B;&#x439; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;&#x43D;&#x44B;&#x439;, &#x437;&#x430;&#x442;&#x43E; &#x43E;&#x43D; &#x43D;&#x435; &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; &#x440;&#x430;&#x441;&#x442;&#x443;&#x449;&#x435;&#x43C;&#x443; counter &#x441;&#x442;&#x430;&#x442;&#x44C; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C;.</p><div class="ks-widget" id="ks-sel-rx7a21c"><h3>&#x421; &#x43A;&#x430;&#x43A;&#x43E;&#x433;&#x43E; &#x441;&#x43B;&#x43E;&#x44F; &#x43D;&#x430;&#x447;&#x430;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443;?</h3><label>&#x427;&#x442;&#x43E; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430;&#x43C;&#x438; LLM API</label><select data-s><option value="nic">Driver drop &#x438;&#x43B;&#x438; missed counter</option><option value="softirq">softnet_stat drop/time_squeeze</option><option value="socket">Socket memory &#x438;&#x43B;&#x438; proxy queue</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-rx7a21c');if(!r)return;var m={"nic":"Начните с RX ring, очередей NIC, IRQ и NAPI. Увеличение socket buffer здесь не вернёт уже потерянный кадр.","softirq":"Проверьте CPU locality, softirq budget и netdev backlog. Большой hardware ring может лишь отсрочить переполнение.","socket":"Ищите медленное чтение, proxy buffering и backpressure приложения. Настройка NIC без эффекта на эти counters будет ложным лечением."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-02-182e95bc.webp" class="kg-image" alt="NIC ring buffers &#x438; RX drops &#x43D;&#x430; LLM API gateway: ethtool-runbook" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nic-ring-buffer-llm-gateway-inline-02-182e95bc.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nic-ring-buffer-llm-gateway-inline-02-182e95bc.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-02-182e95bc.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="baseline">&#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; baseline &#x434;&#x43E; &#x43B;&#x44E;&#x431;&#x43E;&#x439; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438;</h2>
<p>Baseline &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43D;&#x435; &#x43A;&#x430;&#x43A; &#x430;&#x440;&#x445;&#x438;&#x432; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;, &#x430; &#x43A;&#x430;&#x43A; &#x441;&#x438;&#x43D;&#x445;&#x440;&#x43E;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;. &#x417;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x432; UTC, effective interface, network namespace, driver &#x438; firmware, &#x442;&#x435;&#x43A;&#x443;&#x449;&#x438;&#x435; &#x438; &#x43C;&#x430;&#x43A;&#x441;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; ring parameters, channels, coalescing, offload &#x438; per-queue counters. &#x420;&#x44F;&#x434;&#x43E;&#x43C; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; application metrics: &#x434;&#x43E;&#x43B;&#x44E; 5xx/499, connect errors, retransmissions, TTFT p50/p95/p99 &#x438; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x445; streaming-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439;.</p><p>&#x41D;&#x435; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x441; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x430; &#x43F;&#x43E; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; &#x437;&#x43D;&#x430;&#x43A;&#x43E;&#x43C;&#x43E;&#x43C;&#x443; &#x438;&#x43C;&#x435;&#x43D;&#x438;. &#x412;&#x44B;&#x432;&#x43E;&#x434; <code>ethtool -S</code> driver-specific: &#x443; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x43A;&#x430;&#x440;&#x442; &#x432;&#x441;&#x442;&#x440;&#x435;&#x447;&#x430;&#x44E;&#x442;&#x441;&#x44F; <code>rx_missed_errors</code>, <code>rx_no_buffer_count</code>, <code>rx_queue_N_drops</code>, <code>rx_discards_phy</code> &#x438; &#x434;&#x435;&#x441;&#x44F;&#x442;&#x43A;&#x438; &#x431;&#x43B;&#x438;&#x437;&#x43A;&#x438;&#x445; &#x43F;&#x43E;&#x43B;&#x435;&#x439;. &#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; &#x432;&#x44B;&#x432;&#x43E;&#x434; &#x434;&#x432;&#x430;&#x436;&#x434;&#x44B; &#x447;&#x435;&#x440;&#x435;&#x437; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x44B;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x432;&#x430;&#x43B;, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x447;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; delta. &#x410;&#x431;&#x441;&#x43E;&#x43B;&#x44E;&#x442;&#x43D;&#x43E;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x433;&#x43E;&#x433;&#x43E; uptime &#x43F;&#x43E;&#x447;&#x442;&#x438; &#x431;&#x435;&#x441;&#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;.</p><p>&#x41D;&#x430; &#x445;&#x43E;&#x441;&#x442;&#x435; &#x441; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x439;&#x43D;&#x435;&#x440;&#x430;&#x43C;&#x438; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43D;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; datapath. <code>eth0</code> &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; pod &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; veth, &#x430; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43F;&#x440;&#x438;&#x43D;&#x430;&#x434;&#x43B;&#x435;&#x436;&#x438;&#x442; <code>ens5f0</code> &#x43D;&#x430; node. &#x41D;&#x430; bond &#x438;&#x43B;&#x438; VLAN &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x43D;&#x438;&#x436;&#x435;&#x43B;&#x435;&#x436;&#x430;&#x449;&#x438;&#x435; &#x443;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x430;. &#x41D;&#x430; SR-IOV &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x439;&#x442;&#x435; PF &#x438; VF: &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; ring &#x443; VF &#x438; &#x43D;&#x430;&#x431;&#x43E;&#x440; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x445; counters &#x437;&#x430;&#x432;&#x438;&#x441;&#x44F;&#x442; &#x43E;&#x442; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430; &#x438; &#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x438; &#x445;&#x43E;&#x441;&#x442;&#x430;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">collect-nic-baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>DEV=ens5f0
date -u
ip -details link show dev &quot;$DEV&quot;
ethtool -i &quot;$DEV&quot;
ethtool -g &quot;$DEV&quot;
ethtool -l &quot;$DEV&quot;
ethtool -c &quot;$DEV&quot;
ethtool -k &quot;$DEV&quot;
ethtool -S &quot;$DEV&quot;
cat /proc/interrupts
cat /proc/net/softnet_stat</code></pre>
<div class="ks-canonical-code-block__caption">&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; baseline &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430; &#x43F;&#x435;&#x440;&#x435;&#x434; canary</div>
</div>
<p>&#x41F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x43D;&#x430;&#x431;&#x43E;&#x440; &#x43D;&#x430; healthy-&#x443;&#x437;&#x43B;&#x435; &#x43F;&#x43E;&#x434; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x43C;&#x43E;&#x439; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439;. &#x42D;&#x442;&#x43E; negative control: &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x439; counter &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x438; &#x442;&#x430;&#x43C; &#x431;&#x435;&#x437; &#x443;&#x445;&#x443;&#x434;&#x448;&#x435;&#x43D;&#x438;&#x44F; API, &#x43E;&#x43D; &#x43D;&#x435; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x44F;&#x435;&#x442; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;. &#x415;&#x441;&#x43B;&#x438; &#x436;&#x435; &#x440;&#x43E;&#x441;&#x442; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x435;&#x43D; &#x434;&#x43B;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x439; queue &#x438; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x441; application failure, &#x443; &#x432;&#x430;&#x441; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x430;&#x44F; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x430;.</p><h2 id="counters">&#x41A;&#x430;&#x43A; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x438;&#x442;&#x44C; hardware drop &#x43E;&#x442; softirq &#x438; socket bottleneck</h2>
<p>&#x41F;&#x435;&#x440;&#x432;&#x44B;&#x439; evidence gate &#x2014; driver/NIC. &#x418;&#x449;&#x438;&#x442;&#x435; delta &#x43F;&#x43E; queue-level <code>drop</code>, <code>discard</code>, <code>missed</code> &#x438;&#x43B;&#x438; <code>no_buffer</code> counters &#x438; &#x441;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x441;&#x435;&#x43C;&#x430;&#x43D;&#x442;&#x438;&#x43A;&#x443; &#x441; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x435;&#x439; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;. &#x41D;&#x430; &#x44D;&#x442;&#x43E;&#x43C; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435; &#x432;&#x430;&#x436;&#x43D;&#x430; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43B;&#x44F;&#x446;&#x438;&#x44F; &#x441; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x43C; packet rate &#x438; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x43F;&#x43E; queues. &#x41E;&#x434;&#x43D;&#x430; &#x433;&#x43E;&#x440;&#x44F;&#x447;&#x430;&#x44F; queue &#x43F;&#x440;&#x438; &#x441;&#x43F;&#x43E;&#x43A;&#x43E;&#x439;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x44F;&#x445; &#x447;&#x430;&#x449;&#x435; &#x443;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43D;&#x430; hash entropy, RSS indirection &#x438;&#x43B;&#x438; single-flow hotspot, &#x430; &#x43D;&#x435; &#x43D;&#x430; &#x441;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x43C;&#x430;&#x43B;&#x435;&#x43D;&#x44C;&#x43A;&#x438;&#x439; ring &#x432;&#x441;&#x435;&#x433;&#x43E; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430;.</p><p>&#x412;&#x442;&#x43E;&#x440;&#x43E;&#x439; gate &#x2014; softirq/backlog. <code>/proc/net/softnet_stat</code> &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x43E; CPU; &#x43F;&#x43E;&#x43B;&#x44F; &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x434;&#x435;&#x43A;&#x43E;&#x434;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x441; &#x443;&#x447;&#x451;&#x442;&#x43E;&#x43C; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; &#x44F;&#x434;&#x440;&#x430;, &#x430; &#x43D;&#x435; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x43A;&#x430;&#x43A; &#x43E;&#x434;&#x43D;&#x443; &#x433;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; &#x441;&#x442;&#x440;&#x43E;&#x43A;&#x443;. &#x420;&#x43E;&#x441;&#x442; dropped &#x438;&#x43B;&#x438; time_squeeze &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x43E;&#x439; <code>%soft</code> &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x434;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x443;&#x436;&#x435; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x432; software receive path. &#x422;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; IRQ placement, NAPI budget &#x438; backlog. &#x423;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; hardware ring &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x434;&#x430;&#x442;&#x44C; &#x437;&#x430;&#x43F;&#x430;&#x441;, &#x43D;&#x43E; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x435;&#x446; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x435;&#x442;&#x441;&#x44F; CPU path.</p><p>&#x422;&#x440;&#x435;&#x442;&#x438;&#x439; gate &#x2014; socket/application. &#x415;&#x441;&#x43B;&#x438; NIC &#x438; softirq &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;, &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; <code>ss -tinm</code>, proxy buffering, event-loop delay, worker saturation &#x438; backend queue. &#x41E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x43A;&#x43E;&#x432;&#x430;&#x440;&#x43D;&#x44B; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x435; SSE-&#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x438;: &#x431;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x43F;&#x440;&#x438;&#x451;&#x43C; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430; &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E;&#x435; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x43C;. &#x414;&#x43B;&#x44F; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x441;&#x43B;&#x43E;&#x44F; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <a href="https://kingservers.com/blog/tcp-buffer-autotuning-llm-streaming/">runbook &#x43F;&#x43E; TCP buffers &#x438; backpressure</a>.</p><p>&#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440;: &#x443; gateway &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; p99 TTFT, &#x43D;&#x43E; driver drops &#x440;&#x430;&#x432;&#x43D;&#x44B; &#x43D;&#x443;&#x43B;&#x44E;. <code>softnet_stat</code> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; time_squeeze &#x43D;&#x430; CPU 14, &#x433;&#x434;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441;&#x438;&#x434;&#x438;&#x442; IRQ &#x433;&#x43E;&#x440;&#x44F;&#x447;&#x435;&#x439; RX queue &#x438; TLS worker. Ring &#x43D;&#x435; &#x432;&#x438;&#x43D;&#x43E;&#x432;&#x430;&#x442; &#x43D;&#x430;&#x43F;&#x440;&#x44F;&#x43C;&#x443;&#x44E;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x440;&#x430;&#x437;&#x43D;&#x435;&#x441;&#x438;&#x442;&#x435; ownership &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; fresh-connection probe; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x433;&#x43B;&#x443;&#x431;&#x438;&#x43D;&#x443; descriptors.</p><div class="ks-widget" id="ks-tab-cnt4m8q"><h3>&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x440;&#x43E;&#x441;&#x442; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A;&#x430;</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="driver">Driver</button><button type="button" class="tab-btn" data-t="softirq">Softirq</button><button type="button" class="tab-btn" data-t="app">&#x41F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;</button></div><div class="panel on" data-p="driver">&#x421;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A; &#x441; &#x43D;&#x430;&#x437;&#x432;&#x430;&#x43D;&#x438;&#x435;&#x43C; drop, discard, missed &#x438;&#x43B;&#x438; no_buffer &#x43F;&#x440;&#x438;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43A; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430; &#x438; &#x43A; RX queue. &#x421;&#x430;&#x43C;&#x43E; &#x438;&#x43C;&#x44F; &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x443;&#x44E; &#x441;&#x435;&#x43C;&#x430;&#x43D;&#x442;&#x438;&#x43A;&#x443; &#x43D;&#x430; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; NIC.</div><div class="panel" data-p="softirq">&#x420;&#x43E;&#x441;&#x442; dropped &#x438;&#x43B;&#x438; time_squeeze &#x432; /proc/net/softnet_stat &#x443;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x434;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x44B;&#x448;&#x435; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;. &#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x441; CPU &#x438; IRQ, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441; &#x43E;&#x431;&#x449;&#x438;&#x43C; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x43E;&#x43C;.</div><div class="panel" data-p="app">&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x438; gateway, &#x442;&#x430;&#x439;&#x43C;&#x430;&#x443;&#x442;&#x44B; &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x43B; TTFT &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x44E;&#x442; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;. &#x411;&#x435;&#x437; &#x43D;&#x438;&#x445; counter &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x444;&#x43E;&#x43D;&#x43E;&#x432;&#x44B;&#x43C; &#x448;&#x443;&#x43C;&#x43E;&#x43C;, &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x43E;&#x432;&#x430;&#x432;&#x448;&#x438;&#x43C; &#x434;&#x43E; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430;.</div><script>(function(){var r=document.getElementById('ks-tab-cnt4m8q');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-04-89d3a1a6.webp" class="kg-image" alt="NIC ring buffers &#x438; RX drops &#x43D;&#x430; LLM API gateway: ethtool-runbook" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nic-ring-buffer-llm-gateway-inline-04-89d3a1a6.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nic-ring-buffer-llm-gateway-inline-04-89d3a1a6.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-04-89d3a1a6.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="locality">&#x421;&#x432;&#x44F;&#x436;&#x438;&#x442;&#x435; RX queue, IRQ, softirq &#x438; NUMA</h2>
<p>RX ring &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x43D;&#x435; &#x432; &#x432;&#x430;&#x43A;&#x443;&#x443;&#x43C;&#x435;: &#x43A;&#x430;&#x436;&#x434;&#x430;&#x44F; hardware queue &#x43E;&#x431;&#x441;&#x43B;&#x443;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x43E;&#x43C; &#x438; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; MSI-X interrupt. Linux kernel documentation &#x440;&#x435;&#x43A;&#x43E;&#x43C;&#x435;&#x43D;&#x434;&#x443;&#x435;&#x442; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x442;&#x44C; receive interrupts &#x43C;&#x435;&#x436;&#x434;&#x443; CPU &#x438; &#x443;&#x447;&#x438;&#x442;&#x44B;&#x432;&#x430;&#x442;&#x44C; memory domain. &#x415;&#x441;&#x43B;&#x438; queues &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;, &#x447;&#x435;&#x43C; cores, RPS &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; &#x434;&#x430;&#x43B;&#x44C;&#x43D;&#x435;&#x439;&#x448;&#x443;&#x44E; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x443;; &#x435;&#x441;&#x43B;&#x438; RSS &#x443;&#x436;&#x435; &#x434;&#x430;&#x451;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x44B;&#x439; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x439; CPU, &#x43B;&#x438;&#x448;&#x43D;&#x438;&#x439; RPS &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x438;&#x442;&#x44C; IPI &#x431;&#x435;&#x437; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x44B;.</p><p>&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x43E;&#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; <code>ethtool -l</code>, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43D;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; IRQ &#x43D;&#x443;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430; &#x432; <code>/proc/interrupts</code>. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; configured &#x438; effective affinity. &#x41D;&#x430; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x430;&#x445; &#x441; <code>irqbalance</code> &#x440;&#x443;&#x447;&#x43D;&#x430;&#x44F; mask &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x430; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x441;&#x442;&#x430;&#x440;&#x442;&#x430; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x430; &#x438;&#x43B;&#x438; hotplug. &#x41D;&#x430; bare metal &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; PCI device &#x441; NUMA node &#x438; placement proxy workers. &#x423;&#x434;&#x430;&#x43B;&#x451;&#x43D;&#x43D;&#x44B;&#x439; memory access &#x441;&#x430;&#x43C; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; drop, &#x43D;&#x43E; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; &#x433;&#x43E;&#x440;&#x44F;&#x447;&#x438;&#x43C; core &#x438; queue imbalance &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x443; &#x441;&#x438;&#x43B;&#x44C;&#x43D;&#x435;&#x435;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">map-rx-queues.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>DEV=ens5f0
ethtool -l &quot;$DEV&quot;
ethtool -x &quot;$DEV&quot;
grep -i &quot;$DEV&quot; /proc/interrupts
for q in /sys/class/net/&quot;$DEV&quot;/queues/rx-*; do
  printf &apos;%s rps=%s\n&apos; &quot;$q&quot; &quot;$(cat &quot;$q/rps_cpus&quot;)&quot;
done
devpath=$(readlink -f /sys/class/net/&quot;$DEV&quot;/device)
cat &quot;$devpath/numa_node&quot;
mpstat -P ALL 1</code></pre>
<div class="ks-canonical-code-block__caption">&#x41A;&#x430;&#x440;&#x442;&#x430; queues, IRQ &#x438; CPU &#x434;&#x43B;&#x44F; effective datapath</div>
</div>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x445;. Existing keepalive &#x438; streaming sessions &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x44E;&#x442; &#x43F;&#x440;&#x435;&#x436;&#x43D;&#x438;&#x439; flow-to-queue mapping, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43C;&#x433;&#x43D;&#x43E;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x435; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; RSS &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43B;&#x43E;&#x436;&#x43D;&#x43E; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#xAB;&#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B;&#x43E;&#x441;&#x44C;&#xBB;. &#x41A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x44C; fresh TCP/TLS connection, &#x43F;&#x440;&#x43E;&#x439;&#x442;&#x438; &#x442;&#x435;&#x43C; &#x436;&#x435; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x43E;&#x43C; &#x438; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x441;&#x43E;&#x434;&#x435;&#x440;&#x436;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442; inference, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; HTTP 200 &#x43E;&#x442; health endpoint.</p><p>&#x415;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x44B;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x43D;&#x438;&#x44F; queue/IRQ &#x438;&#x441;&#x447;&#x435;&#x437;&#x43B;&#x438; driver drops, &#x43D;&#x435; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; ring &#xAB;&#x434;&#x43B;&#x44F; &#x43D;&#x430;&#x434;&#x451;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#xBB;. &#x412;&#x44B; &#x443;&#x436;&#x435; &#x43D;&#x430;&#x448;&#x43B;&#x438; owner. &#x418; &#x43D;&#x430;&#x43E;&#x431;&#x43E;&#x440;&#x43E;&#x442;, &#x435;&#x441;&#x43B;&#x438; locality &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x430;, CPU &#x438;&#x43C;&#x435;&#x435;&#x442; &#x437;&#x430;&#x43F;&#x430;&#x441;, &#x43D;&#x43E; bursts &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x44E;&#x442; ring, canary &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435;&#x439; &#x433;&#x43B;&#x443;&#x431;&#x438;&#x43D;&#x44B; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x43E;&#x441;&#x43D;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x43C;.</p><div class="ks-widget" id="ks-chk-loc9p2d"><h3>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; queue-to-CPU locality</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x41E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x451;&#x43D; effective interface &#x438; network namespace</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> RX queues &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x44B; &#x441; IRQ</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x430; effective affinity, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; configured mask</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x41D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430; &#x43D;&#x430; NET_RX &#x441;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x430; &#x43F;&#x43E; CPU</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x423;&#x447;&#x442;&#x451;&#x43D; irqbalance &#x438; NUMA node NIC</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x415;&#x441;&#x442;&#x44C; fresh-connection application probe</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-loc9p2d');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-03-958c9df2.webp" class="kg-image" alt="NIC ring buffers &#x438; RX drops &#x43D;&#x430; LLM API gateway: ethtool-runbook" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nic-ring-buffer-llm-gateway-inline-03-958c9df2.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nic-ring-buffer-llm-gateway-inline-03-958c9df2.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-03-958c9df2.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="tuning">Ring size &#x438; interrupt coalescing: &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43F;&#x43E; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443;</h2>
<p><code>ethtool -g DEV</code> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; current &#x438; pre-set maximums, &#x430; <code>ethtool -G DEV rx N</code> &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x447;&#x438;&#x441;&#x43B;&#x43E; RX ring entries, &#x435;&#x441;&#x43B;&#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x44E;. &#x41C;&#x430;&#x43A;&#x441;&#x438;&#x43C;&#x443;&#x43C; &#x2014; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x443;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x430;, &#x430; &#x43D;&#x435; &#x440;&#x435;&#x43A;&#x43E;&#x43C;&#x435;&#x43D;&#x434;&#x430;&#x446;&#x438;&#x44F;. &#x411;&#x43E;&#x43B;&#x44C;&#x448;&#x435; descriptors &#x434;&#x430;&#x44E;&#x442; &#x437;&#x430;&#x43F;&#x430;&#x441; &#x43D;&#x430; burst, &#x43D;&#x43E; &#x442;&#x440;&#x435;&#x431;&#x443;&#x44E;&#x442; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438; &#x438; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x442;&#x44C; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x43D;&#x438;&#x44F; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430; &#x432; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438;. &#x414;&#x43B;&#x44F; latency-sensitive LLM API &#x432;&#x430;&#x436;&#x435;&#x43D; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; throughput: &#x441;&#x43B;&#x435;&#x434;&#x438;&#x442;&#x435; &#x437;&#x430; TTFT &#x438; tail latency.</p><p>Interrupt coalescing &#x2014; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x439;, &#x43D;&#x43E; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x440;&#x44B;&#x447;&#x430;&#x433;. &#x41E;&#x43D; &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442;, &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x43B;&#x433;&#x43E; &#x438;&#x43B;&#x438; &#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x43E;&#x432; NIC &#x436;&#x434;&#x451;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x434; interrupt. &#x411;&#x43E;&#x43B;&#x435;&#x435; &#x430;&#x433;&#x440;&#x435;&#x441;&#x441;&#x438;&#x432;&#x43D;&#x430;&#x44F; &#x430;&#x433;&#x440;&#x435;&#x433;&#x430;&#x446;&#x438;&#x44F; &#x441;&#x43D;&#x438;&#x436;&#x430;&#x435;&#x442; interrupt rate &#x438; CPU cost, &#x43D;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x442;&#x44C; latency; &#x441;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x447;&#x430;&#x441;&#x442;&#x44B;&#x435; interrupts &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x430;&#x44E;&#x442; CPU. Net DIM &#x443;&#x43C;&#x435;&#x435;&#x442; &#x434;&#x438;&#x43D;&#x430;&#x43C;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; moderation &#x43F;&#x43E; bandwidth, packets &#x438; events, &#x43F;&#x440;&#x438;&#x447;&#x451;&#x43C; &#x430;&#x43B;&#x433;&#x43E;&#x440;&#x438;&#x442;&#x43C; &#x43E;&#x442;&#x434;&#x430;&#x451;&#x442; &#x43F;&#x440;&#x438;&#x43E;&#x440;&#x438;&#x442;&#x435;&#x442; bandwidth. &#x42D;&#x442;&#x43E; &#x437;&#x43D;&#x430;&#x447;&#x438;&#x442;, &#x447;&#x442;&#x43E; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44C; &#x43D;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D; &#x43E;&#x43F;&#x442;&#x438;&#x43C;&#x438;&#x437;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x430;&#x448; p99 TTFT.</p><p>&#x41D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x442;&#x44C; ring, &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; <code>rx-usecs</code>, &#x447;&#x438;&#x441;&#x43B;&#x43E; channels &#x438; IRQ affinity: &#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x441;&#x442;&#x430;&#x43D;&#x435;&#x442; &#x43D;&#x435;&#x440;&#x430;&#x437;&#x431;&#x438;&#x440;&#x430;&#x435;&#x43C;&#x44B;&#x43C;, &#x430; &#x43E;&#x442;&#x43A;&#x430;&#x442; &#x2014; &#x440;&#x438;&#x441;&#x43A;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x43C;. &#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x443;&#x437;&#x43B;&#x435;. &#x415;&#x441;&#x43B;&#x438; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x430; &#x43F;&#x440;&#x43E; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; burst, &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x44C;&#x442;&#x435; RX ring &#x43D;&#x430; &#x43E;&#x434;&#x438;&#x43D; &#x440;&#x430;&#x437;&#x443;&#x43C;&#x43D;&#x44B;&#x439; &#x448;&#x430;&#x433; &#x43C;&#x435;&#x436;&#x434;&#x443; current &#x438; maximum, &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x432; coalescing. &#x415;&#x441;&#x43B;&#x438; bottleneck &#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x44B;&#x439; &#x438; CPU &#x433;&#x43E;&#x440;&#x44F;&#x447;&#x438;&#x439;, &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x447;&#x438;&#x43D;&#x438;&#x442;&#x435; queue distribution.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">ring-canary.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>DEV=ens5f0

# &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; baseline &#x438;&#x437; ethtool -g.
ethtool -g &quot;$DEV&quot;
ethtool -c &quot;$DEV&quot;

# &#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440; canary; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x44E;&#x442; &#x438;&#x437; current/max &#x438; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x435;&#x439; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;.
sudo ethtool -G &quot;$DEV&quot; rx 1024

# &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x442;&#x435;&#x441;&#x442;&#x430; &#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435;, &#x43D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440; 512.
sudo ethtool -G &quot;$DEV&quot; rx 512
ethtool -g &quot;$DEV&quot;</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x43E;&#x433;&#x43E; rollback</div>
</div>
<p>&#x427;&#x438;&#x441;&#x43B;&#x430; &#x432; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;&#x435; &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; tuning profile. &#x41D;&#x430; &#x432;&#x430;&#x448;&#x435;&#x439; NIC current &#x438; maximum &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x442;&#x44C;&#x441;&#x44F;, &#x430; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x43E; &#x43A;&#x440;&#x430;&#x442;&#x43A;&#x43E; &#x43F;&#x440;&#x435;&#x440;&#x432;&#x430;&#x442;&#x44C; &#x441;&#x432;&#x44F;&#x437;&#x44C;. &#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; RHEL guide &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x43F;&#x440;&#x435;&#x434;&#x443;&#x43F;&#x440;&#x435;&#x436;&#x434;&#x430;&#x435;&#x442; &#x43E; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x43C; interruption &#x43F;&#x440;&#x438; &#x441;&#x43C;&#x435;&#x43D;&#x435; ring parameters. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x44E; &#x447;&#x435;&#x440;&#x435;&#x437; out-of-band &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x438;&#x43B;&#x438; &#x43D;&#x430; &#x443;&#x437;&#x43B;&#x435;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x438;&#x437; &#x431;&#x430;&#x43B;&#x430;&#x43D;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x43A;&#x438;.</p><div class="ks-widget" id="ks-sel-tun5k7b"><h3>&#x427;&#x442;&#x43E; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C;?</h3><label>&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x430;&#x44F; &#x43A;&#x430;&#x440;&#x442;&#x438;&#x43D;&#x430;</label><select data-s><option value="burst">&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x435; bursts, RX drops, CPU &#x443;&#x441;&#x43F;&#x435;&#x432;&#x430;&#x435;&#x442; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x43D;&#x438;&#x43C;&#x438;</option><option value="cpu">&#x41E;&#x434;&#x43D;&#x430; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x438; CPU &#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x44B;</option><option value="lat">Drops &#x443;&#x448;&#x43B;&#x438;, &#x43D;&#x43E; tail latency &#x432;&#x44B;&#x440;&#x43E;&#x441;&#x43B;&#x430;</option><option value="none">Counter &#x43D;&#x435; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D; &#x441; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430;&#x43C;&#x438; API</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-tun5k7b');if(!r)return;var m={"burst":"Canary большего RX ring оправдан: он даёт драйверу запас на короткий burst. Сохраните baseline и не прыгайте сразу к максимуму.","cpu":"Сначала исправьте распределение queues/IRQ и CPU locality. Более глубокий ring накопит очередь перед тем же узким CPU.","lat":"Проверьте coalescing и длину очереди. Снижение потерь не компенсирует ухудшение p99 или TTFT.","none":"Не меняйте NIC. Ищите владельца симптома в proxy, socket, backend queue или GPU inference."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><h2 id="canary">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; A/B/A canary &#x441; application outcome</h2>
<p>&#x425;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x439; canary &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x435; &#x43D;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#xAB;&#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x438;&#x43B;&#x441;&#x44F; &#x43B;&#x438; counter&#xBB;, &#x430; &#x43D;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#xAB;&#x438;&#x441;&#x447;&#x435;&#x437; &#x43B;&#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x438;&#x437;-&#x437;&#x430; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#xBB;. &#x412;&#x43E;&#x437;&#x44C;&#x43C;&#x438;&#x442;&#x435; &#x434;&#x432;&#x430; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x445; gateway: A &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; baseline, B &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x43E;&#x432;&#x44B;&#x439; RX ring. &#x41F;&#x43E;&#x434;&#x430;&#x439;&#x442;&#x435; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x43C;&#x44B;&#x439; traffic mix, &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x44F; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B;, &#x43D;&#x43E;&#x432;&#x44B;&#x435; TLS handshakes &#x438; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x435; streaming responses. &#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; deltas counters, CPU/softirq, retransmissions, TTFT &#x438; error rate &#x432; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x43E;&#x43A;&#x43D;&#x435;.</p><p>Stop condition &#x437;&#x430;&#x434;&#x430;&#x44E;&#x442; &#x434;&#x43E; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430;. &#x41D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;: &#x43D;&#x435;&#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; rollback &#x43F;&#x440;&#x438; &#x440;&#x43E;&#x441;&#x442;&#x435; p99 TTFT, &#x441;&#x431;&#x440;&#x43E;&#x441;&#x435; link, driver reset, &#x43D;&#x43E;&#x432;&#x44B;&#x445; errors &#x438;&#x43B;&#x438; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x438; bottleneck &#x432; socket/application queue. &#x41D;&#x435; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x439;&#x442;&#x435; &#x442;&#x435;&#x441;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; driver drops &#x441;&#x442;&#x430;&#x43B;&#x438; &#x43D;&#x438;&#x436;&#x435;: &#x433;&#x43B;&#x443;&#x431;&#x43E;&#x43A;&#x430;&#x44F; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x44C; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; &#x446;&#x435;&#x43D;&#x43E;&#x439; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x438;. &#x414;&#x43B;&#x44F; LLM API &#x44D;&#x442;&#x43E; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x43D;&#x435;&#x43F;&#x440;&#x438;&#x44F;&#x442;&#x43D;&#x43E;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443; &#x447;&#x442;&#x43E; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x43F;&#x430;&#x443;&#x437;&#x443; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430; &#x43A;&#x430;&#x43A; &#x43E;&#x442;&#x43A;&#x430;&#x437;.</p><p>&#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; B &#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; &#x441;&#x442;&#x430;&#x440;&#x43E;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; A &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; &#x443;&#x437;&#x43B;&#x435; &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; workload. &#x415;&#x441;&#x43B;&#x438; drops &#x438; application failure &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442;&#x441;&#x44F;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x430;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x431;&#x435;&#x434;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x435;&#x435;. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x43D;&#x43E;&#x432;&#x430; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x435; B &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C;. &#x42D;&#x442;&#x43E;&#x442; A/B/A &#x446;&#x438;&#x43A;&#x43B; &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x435;&#x442; &#x43E;&#x442; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x441; &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x438;&#x432;&#x448;&#x438;&#x43C;&#x441;&#x44F; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x43E;&#x43C;, &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x435;&#x432;&#x43E;&#x43C; caches &#x438;&#x43B;&#x438; &#x441;&#x43C;&#x435;&#x43D;&#x43E;&#x439; backend pool.</p><p>&#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; evidence bundle: timestamps, kernel &#x438; driver versions, interface/PCI identity, &#x434;&#x43E;/&#x43F;&#x43E;&#x441;&#x43B;&#x435; <code>ethtool -g/-c/-S</code>, IRQ map, softnet deltas &#x438; application graphs. &#x422;&#x430;&#x43A;&#x43E;&#x439; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x435;&#x435; &#x441;&#x43A;&#x440;&#x438;&#x43D;&#x448;&#x43E;&#x442;&#x430; &#xAB;&#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x43F;&#x440;&#x43E;&#x43F;&#x430;&#x43B;&#x438;&#xBB;: &#x43F;&#x43E; &#x43D;&#x435;&#x43C;&#x443; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; &#x438;&#x43D;&#x436;&#x435;&#x43D;&#x435;&#x440; &#x441;&#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442; &#x438;&#x43B;&#x438; &#x43E;&#x441;&#x43F;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x432;&#x44B;&#x432;&#x43E;&#x434;.</p><div class="ks-widget" id="ks-chk-can8v3n"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432; &#x43B;&#x438; canary &#x43A; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x443;?</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x44B; RX/TX current &#x438; maximum</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x421;&#x43D;&#x44F;&#x442;&#x44B; per-queue counters &#x438; softnet_stat</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x415;&#x441;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; gateway &#x441; &#x43F;&#x440;&#x435;&#x436;&#x43D;&#x435;&#x439; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x435;&#x439;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x41C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x443;&#x437;&#x43B;&#x435;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x417;&#x430;&#x434;&#x430;&#x43D;&#x44B; stop condition &#x438; rollback</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x44E;&#x442;&#x441;&#x44F; TTFT, &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x438; tail latency</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-can8v3n');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-05-3aa8b881.webp" class="kg-image" alt="NIC ring buffers &#x438; RX drops &#x43D;&#x430; LLM API gateway: ethtool-runbook" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nic-ring-buffer-llm-gateway-inline-05-3aa8b881.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nic-ring-buffer-llm-gateway-inline-05-3aa8b881.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-05-3aa8b881.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="persistence">&#x421;&#x434;&#x435;&#x43B;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443; &#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x43E;&#x439; &#x438; &#x43D;&#x435; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; rollback</h2>
<p><code>ethtool -G</code> &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; runtime state. &#x41F;&#x43E;&#x441;&#x43B;&#x435; reboot, driver reload, &#x441;&#x43C;&#x435;&#x43D;&#x44B; kernel, &#x43F;&#x435;&#x440;&#x435;&#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x44F; VM &#x438;&#x43B;&#x438; &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; firmware &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C;&#x441;&#x44F; &#x43A; default. &#x421;&#x43F;&#x43E;&#x441;&#x43E;&#x431; persistence &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; &#x434;&#x438;&#x441;&#x442;&#x440;&#x438;&#x431;&#x443;&#x442;&#x438;&#x432;&#x430; &#x438; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; &#x441;&#x435;&#x442;&#x438;. &#x412; NetworkManager &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x438; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x44E;&#x442; ethtool ring properties; &#x432; RHEL &#x43E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; <code>nmcli connection modify PROFILE ethtool.ring-rx N</code>. &#x412; &#x434;&#x440;&#x443;&#x433;&#x438;&#x445; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x430;&#x445; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; systemd unit &#x438;&#x43B;&#x438; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; orchestrator, &#x43D;&#x43E; &#x43E;&#x43D; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x442;&#x44C;&#x441;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430;.</p><p>&#x41D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x43C;&#x438; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44F;&#x43C;&#x438; NIC &#x43A;&#x430;&#x43A; &#xAB;&#x43A;&#x43E;&#x440;&#x43F;&#x43E;&#x440;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x439; &#x441;&#x442;&#x430;&#x43D;&#x434;&#x430;&#x440;&#x442;&#xBB;. &#x423;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x430; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x44E;&#x442;&#x441;&#x44F; maximums, &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x43E;&#x43C; descriptors, &#x43A;&#x43E;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x442;&#x432;&#x43E;&#x43C; queues &#x438; driver behavior. &#x41F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x430; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x437;&#x430;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; &#x443;&#x441;&#x43B;&#x43E;&#x432;&#x438;&#x435; &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443;: &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43A; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x43C; driver/device IDs, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x440;&#x43E;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; state &#x438; &#x43F;&#x43E;&#x434;&#x43D;&#x44F;&#x442;&#x44C; alert &#x43F;&#x440;&#x438; &#x43D;&#x435;&#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x438;.</p><p>&#x412; Kubernetes node &#x2014; &#x442;&#x430;&#x43A;&#x43E;&#x439; &#x436;&#x435; &#x445;&#x43E;&#x441;&#x442;. DaemonSet &#x441; &#x43F;&#x440;&#x438;&#x432;&#x438;&#x43B;&#x435;&#x433;&#x438;&#x44F;&#x43C;&#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x44C; NIC, &#x43D;&#x43E; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; blast radius &#x438; &#x447;&#x430;&#x441;&#x442;&#x43E; &#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; ownership. &#x414;&#x43B;&#x44F; managed cluster &#x447;&#x430;&#x441;&#x442;&#x44C; physical settings &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x430;; &#x43D;&#x430; SR-IOV &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; PF/VF &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43E;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x433;&#x43E;&#x432;&#x43E;&#x440;&#x438;&#x442;&#x435;&#x441;&#x44C;, &#x43A;&#x442;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; host networking, maintenance window &#x438; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442; node &#x432; pool. &#x41D;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; pod lifecycle &#x43A;&#x430;&#x43A; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E;&#x433;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x439; &#x43A;&#x430;&#x440;&#x442;&#x44B;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">persist-with-networkmanager.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>PROFILE=&quot;gateway-uplink&quot;
DEV=ens5f0

nmcli connection modify &quot;$PROFILE&quot; ethtool.ring-rx 1024
nmcli connection up &quot;$PROFILE&quot;

# &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x451;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; state
ethtool -g &quot;$DEV&quot;</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x43E;&#x435; &#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x43E;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x432; NetworkManager</div>
</div>
<p>Rollback &#x442;&#x43E;&#x436;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; persistent. &#x417;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x432; change record &#x438; &#x43F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x44C;&#x442;&#x435; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x443;&#x44E; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x443; &#x434;&#x43B;&#x44F; &#x442;&#x43E;&#x433;&#x43E; &#x436;&#x435; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x430;. &#x415;&#x441;&#x43B;&#x438; canary &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x440;&#x443;&#x447;&#x43D;&#x43E;&#x433;&#x43E; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43F;&#x43E;&#x441;&#x43B;&#x435; link flap, &#x441;&#x447;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; &#x44D;&#x442;&#x43E; &#x447;&#x430;&#x441;&#x442;&#x44C;&#x44E; &#x440;&#x438;&#x441;&#x43A;&#x430; &#x434;&#x43E; rollout, &#x430; &#x43D;&#x435; &#x43D;&#x435;&#x43F;&#x440;&#x438;&#x44F;&#x442;&#x43D;&#x43E;&#x439; &#x434;&#x435;&#x442;&#x430;&#x43B;&#x44C;&#x44E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43D;&#x435;&#x433;&#x43E;.</p><div class="ks-widget" id="ks-tab-own2f6x"><h3>&#x413;&#x434;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x436;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;?</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="vps">VPS</button><button type="button" class="tab-btn" data-t="dedicated">Dedicated</button><button type="button" class="tab-btn" data-t="managed">Managed edge</button></div><div class="panel on" data-p="vps">&#x41F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442;, &#x435;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x439;&#x434;&#x435;&#x440; &#x434;&#x430;&#x451;&#x442; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430; &#x438; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x43D;&#x435; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x439; NIC, firmware &#x438;&#x43B;&#x438; IRQ. &#x41F;&#x440;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; baseline, &#x430; &#x43D;&#x435; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x435; &#xAB;&#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435;&#xBB;.</div><div class="panel" data-p="dedicated">&#x41D;&#x443;&#x436;&#x435;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x430;&#x436;&#x43D;&#x44B; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x430;&#x44F; NIC, &#x447;&#x438;&#x441;&#x43B;&#x43E; queues, NUMA placement, driver/firmware &#x438; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x44B;&#x439; change window. &#x42D;&#x442;&#x43E; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;, &#x43D;&#x43E; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; &#x43D;&#x438;&#x43C; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x437;&#x430; &#x44D;&#x43A;&#x441;&#x43F;&#x43B;&#x443;&#x430;&#x442;&#x430;&#x446;&#x438;&#x44E;.</div><div class="panel" data-p="managed">&#x423;&#x43C;&#x435;&#x441;&#x442;&#x435;&#x43D;, &#x435;&#x441;&#x43B;&#x438; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x445;&#x43E;&#x447;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x442;&#x44C; L4/L7 edge &#x438; DDoS-&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x442;&#x440;, &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x432; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x438; rollback. &#x41E;&#x43D; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; consumer, proxy buffering &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; GPU.</div><script>(function(){var r=document.getElementById('ks-tab-own2f6x');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-06-3cb9bcdd.webp" class="kg-image" alt="NIC ring buffers &#x438; RX drops &#x43D;&#x430; LLM API gateway: ethtool-runbook" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nic-ring-buffer-llm-gateway-inline-06-3cb9bcdd.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nic-ring-buffer-llm-gateway-inline-06-3cb9bcdd.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-06-3cb9bcdd.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="platform">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x44B;</h2>
<p>&#x418;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x43D;&#x44B;&#x439; upgrade &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x44B; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43B;&#x438; control gap: &#x442;&#x435;&#x43A;&#x443;&#x449;&#x430;&#x44F; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x430; &#x43D;&#x435; &#x434;&#x430;&#x451;&#x442; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x445; NIC queues, driver/firmware ownership, NUMA placement, telemetry &#x438;&#x43B;&#x438; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x433;&#x43E; change window. &#x412; &#x442;&#x430;&#x43A;&#x43E;&#x43C; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x435; dedicated server &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x446;&#x435;&#x43D;&#x43D;&#x435;&#x435; &#x43D;&#x435; &#xAB;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435;&#x439; &#x441;&#x43A;&#x43E;&#x440;&#x43E;&#x441;&#x442;&#x44C;&#x44E;&#xBB;, &#x430; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x43C; physical path &#x438; &#x43F;&#x440;&#x430;&#x432;&#x43E;&#x43C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x430;&#x43C;&#x438;. &#x414;&#x43B;&#x44F; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; gateway &#x432;&#x430;&#x436;&#x43D;&#x44B; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x438; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x439;&#x434;&#x435;&#x440;&#x430; &#x43F;&#x43E; vNIC, CPU scheduling &#x438; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x438; host-level drops.</p><p>&#x41E;&#x434;&#x43D;&#x430;&#x43A;&#x43E; &#x43D;&#x43E;&#x432;&#x43E;&#x435; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; poor RSS entropy, single-flow hotspot, &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; IRQ affinity, proxy buffering, retry storm &#x438;&#x43B;&#x438; GPU queue. &#x415;&#x441;&#x43B;&#x438; &#x43D;&#x430; wire &#x438; NIC &#x432;&#x441;&#x451; &#x447;&#x438;&#x441;&#x442;&#x43E;, &#x43A;&#x43E;&#x43C;&#x43C;&#x435;&#x440;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; bridge &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C;: &#x43F;&#x43E;&#x43A;&#x443;&#x43F;&#x43A;&#x430; &#x440;&#x435;&#x441;&#x443;&#x440;&#x441;&#x430; &#x431;&#x435;&#x437; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; owner &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;. &#x41F;&#x43E; &#x442;&#x43E;&#x439; &#x436;&#x435; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x435; &#x43D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x44D;&#x442;&#x443; &#x442;&#x435;&#x43C;&#x443; &#x441; &#x437;&#x430;&#x449;&#x438;&#x442;&#x43E;&#x439; handshake path; &#x434;&#x43B;&#x44F; SYN backlog &#x438; cookies &#x435;&#x441;&#x442;&#x44C; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <a href="https://kingservers.com/blog/syn-cookies-synproxy-llm-api-gateway/">SYN runbook</a>.</p><p>&#x41F;&#x440;&#x438; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x435;&#x43D;&#x438;&#x438; VPS, dedicated &#x438; managed edge &#x437;&#x430;&#x434;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x44F;&#x442;&#x44C; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432;: &#x43A;&#x442;&#x43E; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x435;&#x442; NIC &#x438; firmware, &#x43A;&#x442;&#x43E; &#x432;&#x438;&#x434;&#x438;&#x442; per-queue counters, &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43B;&#x438; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x43B;&#x44F;&#x442;&#x44C; CPU/NUMA, &#x43A;&#x430;&#x43A; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; maintenance, &#x438; &#x43D;&#x430;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; rollback. &#x42D;&#x442;&#x438; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x44B; &#x444;&#x43E;&#x440;&#x43C;&#x438;&#x440;&#x443;&#x44E;&#x442; operational cost. &#xAB;&#x414;&#x43E; 40 &#x413;&#x431;&#x438;&#x442;/&#x441;&#xBB; &#x431;&#x435;&#x437; queue telemetry &#x438; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x433;&#x43E; baseline &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E;&#x43C; &#x43F;&#x440;&#x438;&#x433;&#x43E;&#x434;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x434;&#x43B;&#x44F; &#x432;&#x430;&#x448;&#x435;&#x433;&#x43E; LLM gateway.</p><p>&#x414;&#x43B;&#x44F; KingServers-&#x43F;&#x440;&#x43E;&#x435;&#x43A;&#x442;&#x430; &#x440;&#x430;&#x437;&#x443;&#x43C;&#x43D;&#x44B;&#x439; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x448;&#x430;&#x433; &#x2014; &#x43F;&#x440;&#x438;&#x43D;&#x435;&#x441;&#x442;&#x438; evidence bundle, traffic profile &#x438; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x43C;&#x443;&#x44E; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F;. &#x422;&#x43E;&#x433;&#x434;&#x430; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x441; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439; &#x43F;&#x440;&#x435;&#x434;&#x43C;&#x435;&#x442;&#x43D;&#x43E;: &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; gateway &#x43D;&#x430; VPS, &#x432;&#x44B;&#x43D;&#x435;&#x441;&#x442;&#x438; network edge &#x43D;&#x430; dedicated node &#x438;&#x43B;&#x438; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; proxy &#x438; GPU inference &#x43F;&#x43E; failure domains.</p><h2 id="incident-runbook">&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; runbook &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430; &#x441; RX drops</h2>
<p>&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x438; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E;. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; effective interface &#x438; &#x441;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; deltas driver counters. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x43D;&#x438; &#x43D;&#x435; &#x440;&#x430;&#x441;&#x442;&#x443;&#x442;, &#x43D;&#x435; &#x442;&#x440;&#x43E;&#x433;&#x430;&#x439;&#x442;&#x435; ring: &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x43A; softirq, socket &#x438; application. &#x415;&#x441;&#x43B;&#x438; &#x440;&#x430;&#x441;&#x442;&#x443;&#x442;, &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x443;&#x44E; queue &#x441; IRQ &#x438; CPU, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; RSS distribution &#x438; healthy control.</p><p>&#x41A;&#x43E;&#x433;&#x434;&#x430; queue/CPU path &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;, &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; current &#x438; maximum ring. &#x41F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x44C;&#x442;&#x435; canary &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x432;&#x44B;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x438;&#x437; &#x43E;&#x431;&#x449;&#x435;&#x433;&#x43E; &#x43F;&#x443;&#x43B;&#x430; &#x443;&#x437;&#x43B;&#x435;, &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; RX ring &#x438; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x439;&#x442;&#x435; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x43F;&#x43E;&#x441;&#x442;&#x435;&#x43F;&#x435;&#x43D;&#x43D;&#x43E;. &#x41E;&#x446;&#x435;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; driver drops, <code>softnet_stat</code>, CPU, retransmissions, TTFT &#x438; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; gateway. &#x41F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D; &#x43F;&#x435;&#x440;&#x435;&#x436;&#x438;&#x442;&#x44C; A/B/A.</p><p>&#x415;&#x441;&#x43B;&#x438; improvement &#x435;&#x441;&#x442;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432; counter, &#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;, &#x43E;&#x442;&#x43A;&#x430;&#x442;&#x438;&#x442;&#x435; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443; &#x438; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x43E;&#x438;&#x441;&#x43A;. &#x415;&#x441;&#x43B;&#x438; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x438;&#x43B;&#x438;&#x441;&#x44C; &#x438; low-level state, &#x438; fresh-connection outcome, &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x447;&#x435;&#x440;&#x435;&#x437; host network management, &#x437;&#x430;&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; device/driver boundary &#x438; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; drift check. &#x41D;&#x430;&#x43A;&#x43E;&#x43D;&#x435;&#x446;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435;, &#x43D;&#x435; &#x43C;&#x438;&#x433;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43B; &#x43B;&#x438; bottleneck &#x432; TLS, proxy, backend connection pool &#x438;&#x43B;&#x438; GPU scheduler.</p><p>&#x41D;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; production traffic &#x43A;&#x430;&#x43A; &#x435;&#x434;&#x438;&#x43D;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x442;&#x43E;&#x440; &#x438;&#x441;&#x442;&#x438;&#x43D;&#x44B;. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x44B;&#x439; workload &#x441; &#x442;&#x435;&#x43C; &#x436;&#x435; packet/connection shape. Throughput-only &#x442;&#x435;&#x441;&#x442; &#x43A;&#x440;&#x443;&#x43F;&#x43D;&#x44B;&#x43C;&#x438; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430;&#x43C;&#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43D;&#x435; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x438; burst &#x438;&#x437; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x445; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x438; &#x437;&#x430;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442; RX descriptors.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-07-680f6e24.webp" class="kg-image" alt="NIC ring buffers &#x438; RX drops &#x43D;&#x430; LLM API gateway: ethtool-runbook" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nic-ring-buffer-llm-gateway-inline-07-680f6e24.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nic-ring-buffer-llm-gateway-inline-07-680f6e24.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nic-ring-buffer-llm-gateway-inline-07-680f6e24.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: ring buffer &#x43B;&#x435;&#x447;&#x438;&#x442; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; burst, &#x430; &#x43D;&#x435; &#x43B;&#x44E;&#x431;&#x43E;&#x439; timeout</h2>
<p>RX ring &#x2014; &#x43D;&#x438;&#x436;&#x43D;&#x438;&#x439; &#x438; &#x43E;&#x447;&#x435;&#x43D;&#x44C; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; &#x441;&#x43B;&#x43E;&#x439; receive path. &#x41E;&#x43D; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x432;&#x438;&#x43D;&#x43E;&#x432;&#x43D;&#x438;&#x43A;&#x43E;&#x43C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x442;&#x43E;&#x433;&#x434;&#x430;, &#x43A;&#x43E;&#x433;&#x434;&#x430; per-queue driver counters, queue/IRQ evidence &#x438; application outcome &#x441;&#x43A;&#x43B;&#x430;&#x434;&#x44B;&#x432;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x432; &#x43E;&#x434;&#x43D;&#x443; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x443;. &#x411;&#x435;&#x437; &#x44D;&#x442;&#x43E;&#x439; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x438; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; descriptors &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x44B;&#x439; &#x440;&#x438;&#x442;&#x443;&#x430;&#x43B;: &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x44C;&#x441;&#x44F;, &#x430; latency &#x438; operational debt &#x432;&#x44B;&#x440;&#x430;&#x441;&#x442;&#x443;&#x442;.</p><p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439;: &#x441;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; baseline, &#x43D;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; owner, &#x432;&#x44B;&#x440;&#x43E;&#x432;&#x43D;&#x44F;&#x439;&#x442;&#x435; queue-to-CPU path, &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x443;&#x437;&#x43B;&#x435;, &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435; A/B/A &#x438; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; rollback &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x441; persistence-&#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x435;&#x439;. &#x414;&#x43B;&#x44F; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E; maintenance window &#x43D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x434;&#x435;&#x441;&#x44F;&#x442;&#x438;&#x43C;&#x438;&#x43D;&#x443;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x431;&#x43E;&#x440;&#x430; deltas &#x2014; &#x43E;&#x43D; &#x447;&#x430;&#x441;&#x442;&#x43E; &#x44D;&#x43A;&#x43E;&#x43D;&#x43E;&#x43C;&#x438;&#x442; &#x447;&#x430;&#x441;&#x44B; &#x441;&#x43B;&#x435;&#x43F;&#x43E;&#x433;&#x43E; tuning.</p><p>&#x415;&#x441;&#x43B;&#x438; evidence &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x432;&#x430;&#x43C; &#x43D;&#x435; &#x445;&#x432;&#x430;&#x442;&#x430;&#x435;&#x442; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F; &#x43D;&#x430;&#x434; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x439; NIC, queues &#x438;&#x43B;&#x438; NUMA, &#x43E;&#x431;&#x441;&#x443;&#x436;&#x434;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x443; &#x447;&#x435;&#x440;&#x435;&#x437; &#x44D;&#x442;&#x438; &#x442;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F;. &#x415;&#x441;&#x43B;&#x438; &#x436;&#x435; bottleneck &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x432; proxy &#x438;&#x43B;&#x438; GPU queue, &#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; ring &#x432; &#x43F;&#x43E;&#x43A;&#x43E;&#x435; &#x438; &#x447;&#x438;&#x43D;&#x438;&#x442;&#x435; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430;. &#x422;&#x430;&#x43A; &#x441;&#x435;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x451;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43E;&#x431;&#x449;&#x438;&#x43C; &#x43F;&#x43E;&#x434;&#x43E;&#x437;&#x440;&#x435;&#x432;&#x430;&#x435;&#x43C;&#x44B;&#x43C; &#x438; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x43E;&#x439; &#x447;&#x430;&#x441;&#x442;&#x44C;&#x44E; inference path.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[TCP RACK и TLP для LLM API: как диагностировать retransmission и tail latency]]></title><description><![CDATA[Production-runbook по TCP RACK и Tail Loss Probe: как связать retransmission, SACK, reordering и RTO с паузами LLM API, провести canary и rollback.]]></description><link>https://kingservers.com/blog/tcp-rack-tlp-llm-api-retransmission-runbook/</link><guid isPermaLink="false">6ad9c924aff2afac25354ec1</guid><category><![CDATA[Сетевые протоколы]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 23 Oct 2026 23:20:11 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-hero-f9035587.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#symptom-tail-latency">&#x41F;&#x43E;&#x447;&#x435;&#x43C;&#x443; retransmission &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x439; &#x445;&#x432;&#x43E;&#x441;&#x442; latency</a></li>
<li><a href="#rack-tlp-rto">RACK, TLP &#x438; RTO: &#x442;&#x440;&#x438; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x431;&#x44B;&#x442;&#x438;&#x44F;</a></li>
<li><a href="#evidence-plan">&#x41F;&#x43B;&#x430;&#x43D; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;: socket, ACK, path, application</a></li>
<li><a href="#linux-baseline">&#x421;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x43C; baseline Linux &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x43E;&#x432;</a></li>
<li><a href="#ack-capture">&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; ACK, SACK &#x438; &#x442;&#x430;&#x439;&#x43C;&#x435;&#x440;&#x44B; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435;</a></li>
<li><a href="#loss-vs-reordering">&#x41E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x43C; &#x43D;&#x430;&#x441;&#x442;&#x43E;&#x44F;&#x449;&#x443;&#x44E; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; &#x43E;&#x442; reordering &#x438; delayed ACK</a></li>
<li><a href="#kernel-knobs">&#x427;&#x442;&#x43E; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C;, &#x430; &#x447;&#x442;&#x43E; &#x43B;&#x443;&#x447;&#x448;&#x435; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x432; &#x43F;&#x43E;&#x43A;&#x43E;&#x435;</a></li>
<li><a href="#canary-aba">A/B/A canary: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C; recovery, &#x430; &#x43D;&#x435; &#x43D;&#x430;&#x434;&#x435;&#x436;&#x434;&#x443;</a></li>
<li><a href="#platform-decision">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x443;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;</a></li>
<li><a href="#runbook-conclusion">&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; runbook &#x438; &#x432;&#x44B;&#x432;&#x43E;&#x434;</a></li>
</ul></div>

</div>LLM API &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x43F;&#x43E;&#x447;&#x442;&#x438; &#x432;&#x441;&#x435;&#x433;&#x434;&#x430;, &#x43D;&#x43E; &#x440;&#x435;&#x434;&#x43A;&#x438;&#x435; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x432; &#x445;&#x432;&#x43E;&#x441;&#x442;&#x435; &#x43F;&#x43E;&#x440;&#x442;&#x44F;&#x442; p99 &#x438; &#x443;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x44E;&#x442; GPU-&#x441;&#x43B;&#x43E;&#x442;&#x44B; &#x434;&#x43E;&#x43B;&#x44C;&#x448;&#x435; &#x43D;&#x443;&#x436;&#x43D;&#x43E;&#x433;&#x43E;. &#x41E;&#x431;&#x449;&#x438;&#x439; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A; retransmissions &#x441;&#x43E;&#x431;&#x43B;&#x430;&#x437;&#x43D;&#x44F;&#x435;&#x442; &#x43E;&#x431;&#x432;&#x438;&#x43D;&#x438;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x44C;, &#x445;&#x43E;&#x442;&#x44F; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x434;&#x430;&#x44E;&#x442; delayed ACK, proxy buffering &#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; inference. RACK &#x438; Tail Loss Probe &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x44E;&#x442; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; &#x440;&#x430;&#x43D;&#x44C;&#x448;&#x435; RTO, &#x43D;&#x43E; &#x441;&#x430;&#x43C;&#x438; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x442; &#x438;&#x441;&#x442;&#x43E;&#x447;&#x43D;&#x438;&#x43A; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x44B;. &#x41D;&#x438;&#x436;&#x435; &#x2014; production-runbook, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x441;&#x43E;&#x43A;&#x435;&#x442;, ACK/SACK, &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-hero-f9035587.webp" alt="TCP RACK &#x438; TLP &#x434;&#x43B;&#x44F; LLM API: &#x43A;&#x430;&#x43A; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; retransmission &#x438; tail latency"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="symptom-tail-latency">&#x41F;&#x43E;&#x447;&#x435;&#x43C;&#x443; retransmission &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x439; &#x445;&#x432;&#x43E;&#x441;&#x442; latency</h2>
<p>&#x421;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x43E;&#x431;&#x43C;&#x430;&#x43D;&#x447;&#x438;&#x432;&#x43E;: &#x441;&#x440;&#x435;&#x434;&#x43D;&#x44F;&#x44F; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x430; LLM API &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439;, CPU &#x43D;&#x430; gateway &#x43D;&#x435; &#x443;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x43F;&#x43E;&#x442;&#x43E;&#x43B;&#x43E;&#x43A;, GPU &#x437;&#x430;&#x43D;&#x44F;&#x442; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;&#x439; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x43E;&#x439;, &#x43D;&#x43E; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x44B; &#x432;&#x43D;&#x435;&#x437;&#x430;&#x43F;&#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x44E;&#x442; &#x43F;&#x430;&#x443;&#x437;&#x443; &#x43F;&#x435;&#x440;&#x435;&#x434; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C; &#x438;&#x43B;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x43C; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x43C;. &#x412; &#x43B;&#x43E;&#x433;&#x430;&#x445; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x44D;&#x442;&#x43E; &#x447;&#x430;&#x441;&#x442;&#x43E; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x43A;&#x430;&#x43A; &#xAB;&#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; backend&#xBB;. &#x41D;&#x430; &#x43F;&#x440;&#x43E;&#x432;&#x43E;&#x434;&#x435; &#x436;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x439; TCP-&#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x43C;&#x443; &#x43D;&#x435; &#x445;&#x432;&#x430;&#x442;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x445; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x43E;&#x432; &#x434;&#x43B;&#x44F; &#x43A;&#x43B;&#x430;&#x441;&#x441;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x442;&#x440;&#x451;&#x445; duplicate ACK.</p>
<p>&#x414;&#x43B;&#x44F; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x433;&#x43E; request/response-&#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430; &#x44D;&#x442;&#x43E; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x431;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x435;&#x43D;&#x43D;&#x43E;. &#x41F;&#x43E;&#x442;&#x435;&#x440;&#x44F; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x43B;&#x451;&#x442;&#x430; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435; &#x434;&#x430;&#x451;&#x442; SACK-&#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x443;&#x44E; &#x441;&#x432;&#x44F;&#x437;&#x44C;, &#x430; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F; &#x432; &#x445;&#x432;&#x43E;&#x441;&#x442;&#x435; &#x43C;&#x430;&#x43B;&#x435;&#x43D;&#x44C;&#x43A;&#x43E;&#x433;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x436;&#x434;&#x430;&#x442;&#x44C; &#x442;&#x430;&#x439;&#x43C;&#x435;&#x440;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E; &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x435;&#x442;&#x44C; &#x43D;&#x435; &#x43D;&#x430; &#x43E;&#x431;&#x449;&#x438;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x43D;&#x442; retransmissions, &#x430; &#x43D;&#x430; &#x441;&#x432;&#x44F;&#x437;&#x44C; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; recovery episode &#x441; TTFB, &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43F;&#x430;&#x443;&#x437;&#x43E;&#x439; &#x438; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;. &#x41E;&#x434;&#x438;&#x43D; &#x432;&#x441;&#x43F;&#x43B;&#x435;&#x441;&#x43A; counter &#x431;&#x435;&#x437; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43F;&#x440;&#x438;&#x432;&#x44F;&#x437;&#x43A;&#x438; &#x43D;&#x435; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x44F;&#x435;&#x442; p99.</p>
<p><a href="https://www.rfc-editor.org/rfc/rfc8985.html?ref=kingservers.com">RFC 8985</a> &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; RACK-TLP &#x43A;&#x430;&#x43A; time-based loss detection: RACK &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x438; &#x438; ACK/SACK &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;, &#x430; Tail Loss Probe &#x43F;&#x44B;&#x442;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; ACK &#x434;&#x43E; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x43E;&#x433;&#x43E; RTO. &#x42D;&#x442;&#x43E; &#x43D;&#x435; &#xAB;&#x443;&#x441;&#x43A;&#x43E;&#x440;&#x438;&#x442;&#x435;&#x43B;&#x44C; &#x441;&#x435;&#x442;&#x438;&#xBB; &#x438; &#x43D;&#x435; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x430; congestion control. &#x41C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; &#x43B;&#x438;&#x448;&#x44C; &#x440;&#x430;&#x43D;&#x44C;&#x448;&#x435; &#x441;&#x43E;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; &#x442;&#x430;&#x43C;, &#x433;&#x434;&#x435; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A;&#x430; duplicate ACK &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E;.</p>
<p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;: &#x432;&#x438;&#x434;&#x438;&#x442;&#x435; &#x43B;&#x438; &#x432;&#x44B; &#x43E;&#x434;&#x438;&#x43D; &#x438; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x441;&#x43A;&#x430;&#x447;&#x43E;&#x43A; p99 &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x432; socket state &#x438; &#x432; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x43E;&#x43C; outcome? &#x415;&#x441;&#x43B;&#x438; &#x43D;&#x435;&#x442;, &#x43D;&#x435; &#x442;&#x44E;&#x43D;&#x438;&#x43D;&#x433;&#x443;&#x439;&#x442;&#x435; kernel &#x432;&#x441;&#x43B;&#x435;&#x43F;&#x443;&#x44E;. &#x41F;&#x430;&#x443;&#x437;&#x430; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x436;&#x438;&#x442;&#x44C; &#x432; proxy buffering, HTTP/2 flow control &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; inference. &#x414;&#x43B;&#x44F; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x435;&#x433;&#x43E; &#x441;&#x43B;&#x43E;&#x44F; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x440;&#x430;&#x437;&#x431;&#x43E;&#x440; <a href="https://kingservers.com/blog/http2-flow-control-llm-streaming-api-gateway/">HTTP/2 flow control &#x432; LLM streaming</a>.</p>
<p>&#x41F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x439; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431; &#x43D;&#x435; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x43A;&#x441;&#x442; &#x2014; &#x437;&#x430;&#x432;&#x435;&#x441;&#x442;&#x438; &#x435;&#x434;&#x438;&#x43D;&#x44B;&#x439; incident timeline. &#x41E;&#x442;&#x43C;&#x435;&#x447;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x430;&#x447;&#x430;&#x43B;&#x43E; &#x438; &#x43A;&#x43E;&#x43D;&#x435;&#x446; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430;, &#x438;&#x434;&#x435;&#x43D;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442;&#x43E;&#x440; gateway, peer tuple, &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x431;&#x430;&#x439;&#x442;&#x430;, &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x439; token &#x438; socket cookie. &#x420;&#x44F;&#x434;&#x43E;&#x43C; &#x43A;&#x43B;&#x430;&#x434;&#x438;&#x442;&#x435; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x432;&#x430;&#x43B;&#x44B; capture &#x438; snapshots. &#x422;&#x43E;&#x433;&#x434;&#x430; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x439; &#x43D;&#x435; &#x441;&#x43F;&#x43E;&#x440;&#x438;&#x442; &#x441; &#x441;&#x435;&#x442;&#x44C;&#x44E; &#x43E; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x43C;&#x438;&#x43D;&#x443;&#x442;&#x430;&#x445; &#x438; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x445;. &#x414;&#x43B;&#x44F; LLM streaming &#x44D;&#x442;&#x43E; &#x43A;&#x440;&#x438;&#x442;&#x438;&#x447;&#x43D;&#x43E;: &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x430;&#x44F; &#x43F;&#x430;&#x443;&#x437;&#x430; &#x43F;&#x435;&#x440;&#x435;&#x434; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x43C;, &#x440;&#x430;&#x437;&#x440;&#x44B;&#x432; &#x432; &#x441;&#x435;&#x440;&#x435;&#x434;&#x438;&#x43D;&#x435; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x438; &#x438; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x430; &#x444;&#x438;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; chunk &#x438;&#x43C;&#x435;&#x44E;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x44B;. &#x41F;&#x435;&#x440;&#x432;&#x430;&#x44F; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D;&#x430; &#x441; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;&#x44E; scheduler, &#x432;&#x442;&#x43E;&#x440;&#x430;&#x44F; &#x2014; &#x441; downstream flow control, &#x442;&#x440;&#x435;&#x442;&#x44C;&#x44F; &#x2014; &#x441; tail loss. &#x41E;&#x434;&#x438;&#x43D; &#x430;&#x433;&#x440;&#x435;&#x433;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; p99 &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x435;&#x442; &#x44D;&#x442;&#x438; &#x438;&#x441;&#x442;&#x43E;&#x440;&#x438;&#x438; &#x438; &#x442;&#x43E;&#x43B;&#x43A;&#x430;&#x435;&#x442; &#x43A; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x43E;&#x43C;&#x443; fix.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-01-99ccc53c.webp" class="kg-image" alt="TCP RACK &#x438; TLP &#x434;&#x43B;&#x44F; LLM API: &#x43A;&#x430;&#x43A; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; retransmission &#x438; tail latency" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-01-99ccc53c.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-01-99ccc53c.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-01-99ccc53c.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="rack-tlp-rto">RACK, TLP &#x438; RTO: &#x442;&#x440;&#x438; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x431;&#x44B;&#x442;&#x438;&#x44F;</h2>
<p>RACK &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;: &#x43A;&#x430;&#x43A;&#x43E;&#x439; &#x440;&#x430;&#x43D;&#x435;&#x435; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442; &#x443;&#x436;&#x435; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E; &#x441;&#x442;&#x430;&#x440;, &#x435;&#x441;&#x43B;&#x438; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43D;&#x43E;&#x432;&#x44B;&#x439; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;? &#x41E;&#x43D; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43E;&#x431;&#x43B;&#x430;&#x441;&#x442;&#x438;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x434;&#x43B;&#x44F; application-limited traffic, reordering &#x438; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D;&#x43D;&#x44B;&#x445; retransmission. &#x421;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x44C; SACK, &#x430; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x435;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x438; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x430; &#x438;&#x43B;&#x438; TSO-&#x430;&#x433;&#x440;&#x435;&#x433;&#x430;&#x442;&#x430;.</p>
<p>TLP &#x440;&#x435;&#x448;&#x430;&#x435;&#x442; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x44E;&#x44E; &#x437;&#x430;&#x434;&#x430;&#x447;&#x443;. &#x41A;&#x43E;&#x433;&#x434;&#x430; ACK-&#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x430;&#x44F; &#x441;&#x432;&#x44F;&#x437;&#x44C; &#x438;&#x441;&#x441;&#x44F;&#x43A;&#x43B;&#x430; &#x443; &#x445;&#x432;&#x43E;&#x441;&#x442;&#x430; &#x43F;&#x43E;&#x43B;&#x451;&#x442;&#x430;, &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C; &#x43F;&#x43E;&#x441;&#x44B;&#x43B;&#x430;&#x435;&#x442; &#x43E;&#x434;&#x438;&#x43D; probe: &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;, &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x43D;&#x438; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;, &#x43B;&#x438;&#x431;&#x43E; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x435;&#x433;&#x43E; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x430;. &#x423;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x439; probe &#x432;&#x44B;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; ACK, &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x447;&#x435;&#x433;&#x43E; RACK &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x442;&#x43C;&#x435;&#x442;&#x438;&#x442;&#x44C; &#x440;&#x430;&#x43D;&#x43D;&#x438;&#x435; &#x43D;&#x435;&#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D;&#x43D;&#x44B;&#x43C;&#x438;. &#x415;&#x441;&#x43B;&#x438; probe &#x442;&#x43E;&#x436;&#x435; &#x43F;&#x440;&#x43E;&#x43F;&#x430;&#x43B;, &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; RTO. &#x418;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; TLP &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x442;&#x440;&#x430;&#x43A;&#x442;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x43A;&#x430;&#x43A; &#x431;&#x435;&#x441;&#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x44B;&#x439; retry loop.</p>
<p>RTO &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43A;&#x43E;&#x43D;&#x441;&#x435;&#x440;&#x432;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x43C; fallback. &#x41E;&#x43D; &#x43D;&#x443;&#x436;&#x435;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; ACK clock &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D;. &#x420;&#x43E;&#x441;&#x442; RTO &#x438;&#x43B;&#x438; backoff &#x433;&#x43E;&#x432;&#x43E;&#x440;&#x438;&#x442;, &#x447;&#x442;&#x43E; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x434;&#x43E;&#x448;&#x43B;&#x43E; &#x434;&#x43E; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x43E;&#x433;&#x43E; &#x43F;&#x443;&#x442;&#x438;, &#x43D;&#x43E; &#x43D;&#x435; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x44F;&#x435;&#x442;, &#x433;&#x434;&#x435; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43B;&#x438;&#x441;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x438;&#x43B;&#x438; ACK. &#x41E;&#x434;&#x438;&#x43D; &#x438; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x435;&#x43D; &#x43F;&#x440;&#x438; policer &#x43D;&#x430; forward path, &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; reverse path, &#x437;&#x430;&#x432;&#x438;&#x441;&#x448;&#x435;&#x43C; peer &#x438; firewall state.</p>
<p>&#x41D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; loss detection &#x438; congestion control. RFC &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x440;&#x430;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442; &#x44D;&#x442;&#x438; &#x440;&#x43E;&#x43B;&#x438;: RACK &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E;, &#x430; retransmit &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x435;&#x442; congestion control. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;&#x43D;&#x44B;&#x439; RACK &#x43D;&#x435; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; CUBIC, BBR &#x438;&#x43B;&#x438; PRR &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x44E;&#x442; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; &#x43E;&#x43A;&#x43D;&#x43E;&#x43C;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;, &#x437;&#x430;&#x442;&#x435;&#x43C; outcome. &#x418;&#x43D;&#x430;&#x447;&#x435; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x43E;&#x435; &#x441;&#x43D;&#x438;&#x436;&#x435;&#x43D;&#x438;&#x435; RTO episodes &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x44C; &#x440;&#x43E;&#x441;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x43D;&#x430; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x435;&#x43C; hop.</p>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-tab-r4ckt1p"><h3>&#x427;&#x442;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x430;&#x43B;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x442;?</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="rack">RACK</button><button type="button" class="tab-btn" data-t="tlp">TLP</button><button type="button" class="tab-btn" data-t="rto">RTO</button></div><div class="panel on" data-p="rack">&#x415;&#x441;&#x442;&#x44C; ACK/SACK &#x43D;&#x430; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43F;&#x43E;&#x437;&#x434;&#x43D;&#x438;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; time-based loss inference &#x438; reordering window.</div><div class="panel" data-p="tlp">&#x412; &#x445;&#x432;&#x43E;&#x441;&#x442;&#x435; &#x43F;&#x43E;&#x43B;&#x451;&#x442;&#x430; &#x43C;&#x430;&#x43B;&#x43E; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x438; ACK &#x438;&#x441;&#x447;&#x435;&#x437;&#x43B;&#x438;: probe &#x43F;&#x44B;&#x442;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x443;&#x44E; &#x441;&#x432;&#x44F;&#x437;&#x44C; &#x434;&#x43E; RTO.</div><div class="panel" data-p="rto">ACK clock &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D; &#x438;&#x43B;&#x438; probe &#x43D;&#x435; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;: &#x44D;&#x442;&#x43E; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x43E;&#x439; fallback, &#x43D;&#x43E; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x44B; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44C;.</div><script>(function(){var r=document.getElementById('ks-tab-r4ckt1p');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-02-ec0fb83d.webp" class="kg-image" alt="TCP RACK &#x438; TLP &#x434;&#x43B;&#x44F; LLM API: &#x43A;&#x430;&#x43A; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; retransmission &#x438; tail latency" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-02-ec0fb83d.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-02-ec0fb83d.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-02-ec0fb83d.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="evidence-plan">&#x41F;&#x43B;&#x430;&#x43D; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;: socket, ACK, path, application</h2>
<p>&#x420;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x439; runbook &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x435; &#x441; sysctl, &#x430; &#x441; owner map. &#x41A;&#x442;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x439; TCP: cloud load balancer, dedicated edge, ingress controller &#x438;&#x43B;&#x438; &#x441;&#x430;&#x43C; inference server? &#x413;&#x434;&#x435; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F; TLS? &#x415;&#x441;&#x442;&#x44C; &#x43B;&#x438; &#x432;&#x442;&#x43E;&#x440;&#x43E;&#x439; TCP hop &#x43C;&#x435;&#x436;&#x434;&#x443; proxy &#x438; backend? &#x411;&#x435;&#x437; &#x44D;&#x442;&#x43E;&#x439; &#x43A;&#x430;&#x440;&#x442;&#x44B; &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x435;&#x442;&#x44C; &#x43D;&#x435; &#x442;&#x43E;&#x442; &#x441;&#x43E;&#x43A;&#x435;&#x442; &#x438; &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x443;&#x44E; &#x43F;&#x430;&#x443;&#x437;&#x443; &#x441; backend-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x435; &#x432; &#x44D;&#x442;&#x43E;&#x442; &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x43E;.</p>
<p>&#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x43D;&#x430; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; gate. &#x41F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x2014; per-socket state: RTT, rttvar, RTO, backoff, unacked, retrans &#x438; cwnd. &#x412;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x2014; ACK/SACK evidence &#x432; capture: &#x43A;&#x430;&#x43A;&#x438;&#x435; sequence ranges &#x434;&#x43E;&#x448;&#x43B;&#x438;, &#x435;&#x441;&#x442;&#x44C; &#x43B;&#x438; DSACK, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x43B;&#x441;&#x44F; probe. &#x422;&#x440;&#x435;&#x442;&#x438;&#x439; &#x2014; path: NIC queues, qdisc, policer, ECMP, bonding &#x438; reverse route. &#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x44B;&#x439; &#x2014; application outcome: TTFB, token cadence, &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; &#x438; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x435; backend slot.</p>
<p>&#x41D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C; gate &#x43D;&#x443;&#x436;&#x435;&#x43D; healthy negative control. &#x412;&#x43E;&#x437;&#x44C;&#x43C;&#x438;&#x442;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43A; &#x442;&#x43E;&#x43C;&#x443; &#x436;&#x435; endpoint &#x447;&#x435;&#x440;&#x435;&#x437; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; gateway &#x438;&#x43B;&#x438; &#x442;&#x43E;&#x442; &#x436;&#x435; gateway &#x43A; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C;&#x443; backend. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x434;&#x435;&#x43B;&#x44C;&#x442;&#x44B; &#x437;&#x430; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E;, &#x430; &#x43D;&#x435; &#x430;&#x431;&#x441;&#x43E;&#x43B;&#x44E;&#x442;&#x43D;&#x44B;&#x435; counters &#x441; &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442;&#x430; boot. &#x414;&#x435;&#x441;&#x44F;&#x442;&#x44C; &#x442;&#x44B;&#x441;&#x44F;&#x447; retransmissions &#x43D;&#x430; &#x434;&#x430;&#x432;&#x43D;&#x43E; &#x436;&#x438;&#x432;&#x443;&#x449;&#x435;&#x43C; &#x443;&#x437;&#x43B;&#x435; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x435;&#x435;, &#x447;&#x435;&#x43C; &#x43F;&#x44F;&#x442;&#x44C; &#x43D;&#x43E;&#x432;&#x44B;&#x445; retransmissions &#x437;&#x430; &#x43E;&#x434;&#x43D;&#x443; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434;&#x443;.</p>
<p>&#x421;&#x432;&#x44F;&#x437;&#x43A;&#x430; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x439;: loss evidence &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x43C; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x435;, capture &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x439; gap, &#x430; &#x441;&#x432;&#x435;&#x436;&#x438;&#x439; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x43F;&#x430;&#x443;&#x437;&#x443; &#x432; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442;. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x43B;&#x438;&#x448;&#x44C; &#x43E;&#x434;&#x438;&#x43D; &#x441;&#x43B;&#x43E;&#x439;, &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x437; &#x43F;&#x440;&#x435;&#x436;&#x434;&#x435;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x439;. &#x422;&#x430;&#x43A;&#x430;&#x44F; &#x434;&#x438;&#x441;&#x446;&#x438;&#x43F;&#x43B;&#x438;&#x43D;&#x430; &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x435;&#x442; &#x438; &#x43E;&#x442; &#x431;&#x435;&#x441;&#x441;&#x43C;&#x44B;&#x441;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x441;&#x43C;&#x435;&#x43D;&#x44B; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x430;, &#x438; &#x43E;&#x442; &#x440;&#x438;&#x441;&#x43A;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x433;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; sysctl.</p>
<p>&#x421;&#x440;&#x430;&#x437;&#x443; &#x434;&#x43E;&#x433;&#x43E;&#x432;&#x43E;&#x440;&#x438;&#x442;&#x435;&#x441;&#x44C; &#x438; &#x43E; stop condition &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F;. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x435;&#x43C;&#x44B;&#x439; socket gap &#x43D;&#x435; &#x43D;&#x430;&#x439;&#x434;&#x435;&#x43D; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x438;&#x445; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x445; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432;, &#x43D;&#x435; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x439;&#x442;&#x435; tcpdump &#x431;&#x435;&#x441;&#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x43E;: &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x43A; proxy &#x438; application evidence. &#x415;&#x441;&#x43B;&#x438; capture &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; loss &#x434;&#x43E; ingress, &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; backend. &#x415;&#x441;&#x43B;&#x438; loss &#x432;&#x438;&#x434;&#x435;&#x43D; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; gateway, &#x43D;&#x435; &#x43E;&#x431;&#x432;&#x438;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x439; ISP. &#x422;&#x430;&#x43A;&#x430;&#x44F; &#xAB;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#xBB; &#x44D;&#x43A;&#x43E;&#x43D;&#x43E;&#x43C;&#x438;&#x442; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x438; &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x430;&#x435;&#x442; &#x440;&#x438;&#x441;&#x43A; &#x442;&#x43E;&#x433;&#x43E;, &#x447;&#x442;&#x43E; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x44F;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x441;&#x43B;&#x43E;&#x438;. &#x412; &#x43E;&#x442;&#x447;&#x451;&#x442;&#x435; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x43A;&#x438;, &#x43D;&#x43E; &#x438; negative controls: &#x43E;&#x43D;&#x438; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x442;, &#x43A;&#x430;&#x43A;&#x438;&#x435; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x44B; &#x443;&#x436;&#x435; &#x438;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x44B;, &#x438; &#x43D;&#x435; &#x434;&#x430;&#x44E;&#x442; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x435;&#x439; &#x441;&#x43C;&#x435;&#x43D;&#x435; &#x43D;&#x430;&#x447;&#x430;&#x442;&#x44C; &#x441; &#x43D;&#x443;&#x43B;&#x44F;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-03-1c0a428d.webp" class="kg-image" alt="TCP RACK &#x438; TLP &#x434;&#x43B;&#x44F; LLM API: &#x43A;&#x430;&#x43A; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; retransmission &#x438; tail latency" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-03-1c0a428d.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-03-1c0a428d.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-03-1c0a428d.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="linux-baseline">&#x421;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x43C; baseline Linux &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x43E;&#x432;</h2>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x44F; &#x442;&#x435;&#x43A;&#x443;&#x449;&#x438;&#x445; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x439;. &#x412; &#x430;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; <a href="https://kernel.org/doc/html/latest/networking/ip-sysctl.html?ref=kingservers.com">&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; Linux IP sysctl</a> <code>net.ipv4.tcp_recovery</code> &#x2014; bitmap; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E; &#x443;&#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x43D;&#x438;&#x44E; <code>0x1</code> &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; RACK. &#x422;&#x430;&#x43C; &#x436;&#x435; &#x43E;&#x442;&#x43C;&#x435;&#x447;&#x435;&#x43D;&#x43E;, &#x447;&#x442;&#x43E; &#x441;&#x431;&#x440;&#x43E;&#x441; &#x431;&#x438;&#x442;&#x430; <code>0x1</code> &#x441;&#x435;&#x439;&#x447;&#x430;&#x441; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443; &#x447;&#x442;&#x43E; RACK &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x435;&#x434;&#x438;&#x43D;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x43C; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x43C;&#x44B;&#x43C; loss detection algorithm. &#x411;&#x438;&#x442; <code>0x2</code> &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; reordering window &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x43C;, &#x430; <code>0x4</code> &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; DUPACK threshold heuristic. &#x42D;&#x442;&#x43E; &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x440;&#x44B;&#x447;&#x430;&#x433;&#x438;, &#x430; &#x43D;&#x435; &#x447;&#x435;&#x43A;-&#x43B;&#x438;&#x441;&#x442; &#xAB;&#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; &#x432;&#x441;&#x451;&#xBB;.</p>
<p><code>net.ipv4.tcp_early_retrans</code> &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; TLP: &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; 3 &#x438;&#x43B;&#x438; 4 &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x44E;&#x442; &#x435;&#x433;&#x43E;, &#x438; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43F;&#x43E;&#x434;&#x447;&#x451;&#x440;&#x43A;&#x438;&#x432;&#x430;&#x435;&#x442; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x43E;&#x442; RACK. <code>tcp_sack</code> &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;. <code>tcp_reordering</code> &#x437;&#x430;&#x434;&#x430;&#x451;&#x442; &#x43D;&#x430;&#x447;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x443;&#x440;&#x43E;&#x432;&#x435;&#x43D;&#x44C;, &#x430; <code>tcp_max_reordering</code> &#x2014; &#x432;&#x435;&#x440;&#x445;&#x43D;&#x44E;&#x44E; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443; &#x434;&#x438;&#x43D;&#x430;&#x43C;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x439; &#x430;&#x434;&#x430;&#x43F;&#x442;&#x430;&#x446;&#x438;&#x438;. &#x41D;&#x430; ECMP &#x438;&#x43B;&#x438; bonding rr reordering &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x441;&#x432;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x43E;&#x43C; &#x43F;&#x443;&#x442;&#x438;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435; &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x43A;&#x43D;&#x430; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x43E; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x442;&#x438;&#x442;&#x44C; &#x43F;&#x43E;&#x437;&#x434;&#x43D;&#x438;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B; &#x432; &#x43B;&#x43E;&#x436;&#x43D;&#x44B;&#x435; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438;.</p>
<p>&#x414;&#x43B;&#x44F; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; <code>ss -tinmo</code>: <code>-i</code> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x435;&#x43D;&#x43D;&#x44E;&#x44E; TCP-&#x438;&#x43D;&#x444;&#x43E;&#x440;&#x43C;&#x430;&#x446;&#x438;&#x44E;, <code>-o</code> &#x2014; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x439; timer, <code>-m</code> &#x2014; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C;. &#x41F;&#x43E; <a href="https://man7.org/linux/man-pages/man8/ss.8.html?ref=kingservers.com">man page ss</a>, timer <code>on</code> &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x442;&#x44C; retransmission, early retransmit &#x438;&#x43B;&#x438; TLP; &#x437;&#x43D;&#x430;&#x447;&#x438;&#x442;, &#x43E;&#x434;&#x43D;&#x43E; &#x441;&#x43B;&#x43E;&#x432;&#x43E; &#x43D;&#x435; &#x438;&#x434;&#x435;&#x43D;&#x442;&#x438;&#x444;&#x438;&#x446;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;. &#x427;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x441; RTO, backoff, RTT &#x438; retrans.</p>
<p>&#x41F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; baseline &#x441; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B;&#x43E;&#x43C; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/tcp-buffer-autotuning-llm-streaming/">TCP buffers &#x438; backpressure</a>: &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; send buffer &#x438; retransmission &#x2014; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x444;&#x430;&#x43A;&#x442;&#x44B;. &#x415;&#x441;&#x43B;&#x438; userspace &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x43F;&#x438;&#x441;&#x430;&#x442;&#x44C;, &#x430; peer &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E; &#x447;&#x438;&#x442;&#x430;&#x435;&#x442;, &#x432;&#x44B; &#x43C;&#x43E;&#x436;&#x435;&#x442;&#x435; &#x443;&#x432;&#x438;&#x434;&#x435;&#x442;&#x44C; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; &#x431;&#x435;&#x437; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">tcp-recovery-baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>uname -r
sysctl net.ipv4.tcp_recovery
sysctl net.ipv4.tcp_early_retrans
sysctl net.ipv4.tcp_sack
sysctl net.ipv4.tcp_reordering
sysctl net.ipv4.tcp_max_reordering
ss -tinmo dst 203.0.113.20:443</code></pre>
<div class="ks-canonical-code-block__caption">&#x422;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x435;: snapshot kernel knobs &#x438; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x43E;&#x432;</div>
</div>
<div class="ks-widget" id="ks-chk-ev1denc"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432; &#x43B;&#x438; evidence bundle?</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x421;&#x43E;&#x43A;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x432;&#x44F;&#x437;&#x430;&#x43D; &#x43A; &#x43D;&#x443;&#x436;&#x43D;&#x43E;&#x43C;&#x443; process &#x438; namespace</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x421;&#x43D;&#x44F;&#x442;&#x44B; &#x434;&#x432;&#x430; snapshot ss &#x441; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x432;&#x430;&#x43B;&#x43E;&#x43C;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x415;&#x441;&#x442;&#x44C; capture &#x441; &#x43E;&#x431;&#x435;&#x438;&#x445; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D; owner hop</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x44B; SACK, DSACK, RTT &#x438; RTO</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x415;&#x441;&#x442;&#x44C; healthy negative control</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> Outcome &#x438;&#x437;&#x43C;&#x435;&#x440;&#x435;&#x43D; &#x43D;&#x430; fresh connection</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-ev1denc');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-04-5e8d1c99.webp" class="kg-image" alt="TCP RACK &#x438; TLP &#x434;&#x43B;&#x44F; LLM API: &#x43A;&#x430;&#x43A; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; retransmission &#x438; tail latency" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-04-5e8d1c99.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-04-5e8d1c99.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-04-5e8d1c99.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="ack-capture">&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; ACK, SACK &#x438; &#x442;&#x430;&#x439;&#x43C;&#x435;&#x440;&#x44B; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435;</h2>
<p>&#x41E;&#x434;&#x438;&#x43D; snapshot <code>ss</code> &#x43F;&#x43E;&#x447;&#x442;&#x438; &#x432;&#x441;&#x435;&#x433;&#x434;&#x430; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x435;&#x43D;. &#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; &#x441;&#x435;&#x440;&#x438;&#x44E; &#x441; &#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x43D;&#x44B;&#x43C; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x432;&#x430;&#x43B;&#x43E;&#x43C; &#x438; &#x43F;&#x430;&#x440;&#x430;&#x43B;&#x43B;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x442;&#x435; capture &#x43D;&#x430; owner hop. &#x418;&#x449;&#x438;&#x442;&#x435; &#x43D;&#x435; retransmission &#x432;&#x43E;&#x43E;&#x431;&#x449;&#x435;, &#x430; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C;: &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x439; segment, &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43F;&#x43E;&#x437;&#x434;&#x43D;&#x438;&#x439; SACK &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; ACK, probe, retransmit, &#x437;&#x430;&#x442;&#x435;&#x43C; application progress. &#x412; &#x43F;&#x440;&#x43E;&#x434;&#x435; capture &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x44E;&#x442; host, port &#x438; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x435;&#x43C;; payload &#x434;&#x43B;&#x44F; TLS &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x437;&#x430;&#x448;&#x438;&#x444;&#x440;&#x43E;&#x432;&#x430;&#x43D;, &#x43D;&#x43E; sequence/ACK timing &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x43C;.</p>
<p>RACK &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x432;&#x44B;&#x432;&#x43E;&#x434; &#x43F;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x435;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x438;. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;, &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x43E;&#x437;&#x436;&#x435;, &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;, &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x440;&#x430;&#x43D;&#x43D;&#x438;&#x439; &#x43D;&#x435;&#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x440;&#x438;&#x437;&#x43D;&#x430;&#x43D; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D;&#x43D;&#x44B;&#x43C; &#x43F;&#x43E;&#x441;&#x43B;&#x435; reordering window. &#x42D;&#x442;&#x43E; &#x43B;&#x443;&#x447;&#x448;&#x435; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x441; &#x43C;&#x430;&#x43B;&#x435;&#x43D;&#x44C;&#x43A;&#x438;&#x43C;&#x438; flights, &#x43D;&#x43E; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x43E;&#x441;&#x442;&#x43E;&#x440;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x43F;&#x440;&#x438; reordering. DSACK &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x446;&#x435;&#x43D;&#x435;&#x43D;: &#x43E;&#x43D; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C;, &#x447;&#x442;&#x43E; &#x43E;&#x440;&#x438;&#x433;&#x438;&#x43D;&#x430;&#x43B; &#x438; retransmission &#x43E;&#x431;&#x430; &#x434;&#x43E;&#x441;&#x442;&#x438;&#x433;&#x43B;&#x438; peer, &#x442;&#x43E; &#x435;&#x441;&#x442;&#x44C; &#xAB;&#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#xBB; &#x43C;&#x43E;&#x433;&#x43B;&#x430; &#x431;&#x44B;&#x442;&#x44C; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x438;&#x43B;&#x438; ACK &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x430;&#x43B;&#x441;&#x44F;.</p>
<p>&#x421;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; &#x43D;&#x430; reverse path &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;. &#x41A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;, &#x43D;&#x43E; &#x435;&#x433;&#x43E; ACK &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x430;&#x43B;&#x441;&#x44F; &#x438;&#x437;-&#x437;&#x430; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; uplink; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C; &#x432;&#x438;&#x434;&#x438;&#x442; &#x43D;&#x435;&#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x435;&#x442; recovery. Capture &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; sender &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442; &#x434;&#x432;&#x443;&#x441;&#x43C;&#x44B;&#x441;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C;. &#x414;&#x432;&#x430; capture &#x43F;&#x43E; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x430;&#x43C; &#x43F;&#x43E;&#x434;&#x43E;&#x437;&#x440;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; hop &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442; &#x434;&#x43E;&#x433;&#x430;&#x434;&#x43A;&#x443; &#x432; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E;: &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x432;&#x44B;&#x448;&#x435;&#x43B;, &#x432;&#x43E;&#x448;&#x451;&#x43B; &#x438;&#x43B;&#x438; &#x438;&#x441;&#x447;&#x435;&#x437; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x442;&#x43E;&#x447;&#x43A;&#x430;&#x43C;&#x438;.</p>
<p>&#x41D;&#x435; &#x437;&#x430;&#x431;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x431; offload. GRO/GSO/TSO &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; &#x432;&#x438;&#x434; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x43E;&#x432; &#x43D;&#x430; host capture, &#x43D;&#x43E; &#x43D;&#x435; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; wire behavior. &#x41F;&#x43E;&#x434;&#x440;&#x43E;&#x431;&#x43D;&#x430;&#x44F; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x430; &#x432; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x435; <a href="https://kingservers.com/blog/gro-gso-tso-llm-api-gateway/">&#x43F;&#x440;&#x43E; GRO, GSO &#x438; TSO</a>. &#x421;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; &#x434;&#x43E; NIC &#x438; &#x437;&#x435;&#x440;&#x43A;&#x430;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x43D;&#x430; switch &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x440;&#x430;&#x437;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44E; &#x2014; &#x44D;&#x442;&#x43E; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x43E;, &#x430; &#x43D;&#x435; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x440;&#x438;&#x437;&#x43D;&#x430;&#x43A; corruption.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">collect-rack-evidence.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>peer=203.0.113.20
port=443
for i in 1 2 3 4 5; do
  date --iso-8601=ns
  ss -tinmo dst &quot;$peer:$port&quot;
  sleep 1
done
timeout 30 tcpdump -ni any &quot;host $peer and tcp port $port&quot; -w rack-canary.pcap</code></pre>
<div class="ks-canonical-code-block__caption">&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; evidence bundle &#x43D;&#x430; sender</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-05-69da2641.webp" class="kg-image" alt="TCP RACK &#x438; TLP &#x434;&#x43B;&#x44F; LLM API: &#x43A;&#x430;&#x43A; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; retransmission &#x438; tail latency" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-05-69da2641.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-05-69da2641.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-05-69da2641.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="loss-vs-reordering">&#x41E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x43C; &#x43D;&#x430;&#x441;&#x442;&#x43E;&#x44F;&#x449;&#x443;&#x44E; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; &#x43E;&#x442; reordering &#x438; delayed ACK</h2>
<p>&#x41F;&#x43E;&#x442;&#x435;&#x440;&#x44F; &#x438; reordering &#x434;&#x430;&#x44E;&#x442; &#x43F;&#x43E;&#x445;&#x43E;&#x436;&#x438;&#x439; &#x43F;&#x440;&#x43E;&#x43C;&#x435;&#x436;&#x443;&#x442;&#x43E;&#x447;&#x43D;&#x44B;&#x439; &#x43A;&#x430;&#x434;&#x440;: &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43D;&#x43E;&#x432;&#x44B;&#x439; sequence range &#x443;&#x436;&#x435; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;, &#x440;&#x430;&#x43D;&#x43D;&#x438;&#x439; &#x435;&#x449;&#x451; &#x43D;&#x435;&#x442;. &#x420;&#x430;&#x437;&#x43D;&#x438;&#x446;&#x430; &#x440;&#x430;&#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x437;&#x436;&#x435;. &#x41F;&#x440;&#x438; reordering &#x43E;&#x440;&#x438;&#x433;&#x438;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x439;&#x442;&#x438; &#x431;&#x435;&#x437; retransmit; &#x43F;&#x440;&#x438; spurious retransmission DSACK &#x441;&#x43E;&#x43E;&#x431;&#x449;&#x438;&#x442; &#x43E; &#x434;&#x443;&#x431;&#x43B;&#x438;&#x43A;&#x430;&#x442;&#x435;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; verdict &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x432;&#x44B;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x44C; &#x43F;&#x43E; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; SACK block.</p>
<p>&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; reordering &#x2014; per-packet load balancing &#x438;&#x43B;&#x438; bonding round-robin. ECMP &#x43F;&#x43E; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C;&#x443; flow hash &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; 5-tuple, &#x43D;&#x43E; &#x441;&#x43C;&#x435;&#x43D;&#x430; &#x43F;&#x443;&#x442;&#x438;, &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x44F; &#x438;&#x43B;&#x438; &#x43D;&#x435;&#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; entropy &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43F;&#x440;&#x43E;&#x44F;&#x432;&#x438;&#x442;&#x44C;&#x441;&#x44F;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435;, &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x44E;&#x442; &#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x441; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x43C; next hop, NIC queue &#x438;&#x43B;&#x438; tunnel. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x439; flow &#x441;&#x43E; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x43C; flow &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; &#x443;&#x437;&#x43B;&#x435;.</p>
<p>Delayed ACK &#x442;&#x43E;&#x436;&#x435; &#x443;&#x441;&#x43B;&#x43E;&#x436;&#x43D;&#x44F;&#x435;&#x442; TLP recovery detection. RFC 8985 &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43E;&#x442;&#x43C;&#x435;&#x447;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; sender &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x434;&#x430;&#x442;&#x44C; receiver &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x438; &#x43F;&#x435;&#x440;&#x435;&#x434; probe, &#x430; ACK loss &#x431;&#x435;&#x437; DSACK &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x430;&#x43B;&#x433;&#x43E;&#x440;&#x438;&#x442;&#x43C; &#x43A;&#x43E;&#x43D;&#x441;&#x435;&#x440;&#x432;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x43C;. &#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x44D;&#x442;&#x43E; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442;: &#x43D;&#x435; &#x43D;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; probe &#xAB;&#x43B;&#x438;&#x448;&#x43D;&#x438;&#x43C;&#xBB; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#x43E;&#x431;&#x430; data packet &#x432;&#x438;&#x434;&#x43D;&#x44B; &#x43D;&#x430; receiver. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435;, &#x43A;&#x43E;&#x433;&#x434;&#x430; ACK &#x432;&#x44B;&#x448;&#x435;&#x43B; &#x438; &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x434;&#x43E;&#x448;&#x451;&#x43B;.</p>
<p>&#x414;&#x43B;&#x44F; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x439; &#x43B;&#x430;&#x431;&#x43E;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x438;&#x438; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C; <code>tc netem</code>, &#x43D;&#x43E; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; namespace &#x438;&#x43B;&#x438; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;&#x43E;&#x43C; gateway. &#x41D;&#x435; &#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; loss/reorder &#x43D;&#x430; production root qdisc. &#x421;&#x446;&#x435;&#x43D;&#x430;&#x440;&#x438;&#x439; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x44C; &#x43E;&#x434;&#x438;&#x43D; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;: &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; loss, &#x437;&#x430;&#x442;&#x435;&#x43C; reordering, &#x437;&#x430;&#x442;&#x435;&#x43C; clean control. &#x418;&#x43D;&#x430;&#x447;&#x435; &#x432;&#x44B; &#x43D;&#x435; &#x443;&#x437;&#x43D;&#x430;&#x435;&#x442;&#x435;, &#x43A;&#x430;&#x43A;&#x43E;&#x435; &#x443;&#x441;&#x43B;&#x43E;&#x432;&#x438;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B;&#x43E; outcome.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">netem-lab-only.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code># LAB ONLY: use an isolated test interface
tc qdisc replace dev veth-test root netem loss 0.5%
# run fixed requests and save ss, capture, application timings
tc qdisc replace dev veth-test root netem delay 10ms reorder 10% 50%
# restore clean control
tc qdisc del dev veth-test root</code></pre>
<div class="ks-canonical-code-block__caption">&#x422;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43B;&#x430;&#x431;&#x43E;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x438;&#x44F;: &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x435; loss &#x438; reordering &#x441;&#x446;&#x435;&#x43D;&#x430;&#x440;&#x438;&#x438;</div>
</div>
<div class="ks-widget" id="ks-sel-r30rder"><h3>&#x41F;&#x43E;&#x442;&#x435;&#x440;&#x44F; &#x438;&#x43B;&#x438; reordering?</h3><label>&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x435;</label><select data-s><option value="sack">&#x41F;&#x43E;&#x437;&#x434;&#x43D;&#x438;&#x439; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442; SACKed, &#x440;&#x430;&#x43D;&#x43D;&#x438;&#x439; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442;</option><option value="dsack">DSACK &#x43F;&#x43E;&#x441;&#x43B;&#x435; retransmission</option><option value="rto">RTO &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;, ACK &#x43D;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442;&#x441;&#x44F;</option><option value="app">&#x421;&#x435;&#x442;&#x44C; &#x447;&#x438;&#x441;&#x442;&#x430;&#x44F;, &#x43D;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x438;&#x434;&#x443;&#x442; &#x440;&#x44B;&#x432;&#x43A;&#x430;&#x43C;&#x438;</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-r30rder');if(!r)return;var m={"sack":"Это вход для RACK, но подтвердите capture: сегмент мог опоздать, а не потеряться.","dsack":"Вероятна лишняя retransmission или reordering; ищите смену пути и задержку ACK.","rto":"Проверьте forward и reverse path, policer и состояние сокета; один counter причины не доказывает.","app":"Сместите фокус на proxy buffering, HTTP/2 flow control и GPU queue."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><h2 id="kernel-knobs">&#x427;&#x442;&#x43E; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C;, &#x430; &#x447;&#x442;&#x43E; &#x43B;&#x443;&#x447;&#x448;&#x435; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x432; &#x43F;&#x43E;&#x43A;&#x43E;&#x435;</h2>
<p>&#x411;&#x435;&#x437; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x434;&#x435;&#x444;&#x435;&#x43A;&#x442;&#x430; &#x43B;&#x443;&#x447;&#x448;&#x438;&#x439; default &#x2014; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; <code>tcp_recovery</code>. &#x421;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x439; Linux &#x443;&#x436;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; RACK, &#x430; TLP &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D; &#x441;&#x442;&#x430;&#x43D;&#x434;&#x430;&#x440;&#x442;&#x43D;&#x44B;&#x43C; &#x440;&#x435;&#x436;&#x438;&#x43C;&#x43E;&#x43C; <code>tcp_early_retrans</code>. &#x41F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x435; bitmap &#x43D;&#x430; &#x432;&#x441;&#x451;&#x43C; fleet &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x43D;&#x43E;&#x432;&#x443;&#x44E; &#x43F;&#x435;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; &#x440;&#x435;&#x430;&#x43A;&#x446;&#x438;&#x44E; &#x43D;&#x430; reordering, &#x43D;&#x435; &#x443;&#x441;&#x442;&#x440;&#x430;&#x43D;&#x438;&#x432; policer &#x438;&#x43B;&#x438; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; ACK.</p>
<p>&#x421;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; reordering window &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43B;&#x44F; &#x445;&#x43E;&#x440;&#x43E;&#x448;&#x43E; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x443;&#x442;&#x438;. &#x41D;&#x430; &#x434;&#x438;&#x43D;&#x430;&#x43C;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x43C; WAN &#x438;&#x43B;&#x438; &#x444;&#x430;&#x431;&#x440;&#x438;&#x43A;&#x435; &#x441;&#x43E; &#x441;&#x43C;&#x435;&#x43D;&#x43E;&#x439; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x43E;&#x432; &#x430;&#x434;&#x430;&#x43F;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x435;&#x435;. &#x41E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x435; DUPACK heuristic &#x442;&#x430;&#x43A;&#x436;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x431;&#x44B;&#x442;&#x44C; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x43E;&#x439; canary, &#x430; &#x43D;&#x435; &#xAB;&#x440;&#x435;&#x43A;&#x43E;&#x43C;&#x435;&#x43D;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x43C; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x435;&#x43C;&#xBB;. &#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43D;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x44D;&#x442;&#x438; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x438; experimental; &#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44E; &#x44F;&#x434;&#x440;&#x430;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443; &#x447;&#x442;&#x43E; &#x434;&#x435;&#x442;&#x430;&#x43B;&#x438; &#x440;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; counters &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442;&#x441;&#x44F;.</p>
<p>&#x41D;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; <code>tcp_retries2</code> &#x43A;&#x430;&#x43A; &#x440;&#x435;&#x433;&#x443;&#x43B;&#x44F;&#x442;&#x43E;&#x440; p99. &#x41E;&#x43D; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x434;&#x43E;&#x43B;&#x433;&#x438;&#x43C; abort behavior &#x436;&#x438;&#x432;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x440;&#x438; RTO retransmissions; &#x441;&#x43D;&#x438;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435; &#x440;&#x432;&#x430;&#x442;&#x44C; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x44B;, &#x43D;&#x43E; &#x43D;&#x435; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x44F;&#x435;&#x442; loss detection. &#x414;&#x43B;&#x44F; half-open semantics &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; per-socket <code>TCP_USER_TIMEOUT</code>, &#x438; &#x443; &#x43D;&#x430;&#x441; &#x435;&#x441;&#x442;&#x44C; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <a href="https://kingservers.com/blog/tcp-user-timeout-llm-streaming/">production-runbook &#x43F;&#x43E; TCP_USER_TIMEOUT</a>.</p>
<p>&#x415;&#x449;&#x451; &#x43E;&#x434;&#x43D;&#x430; &#x43B;&#x43E;&#x432;&#x443;&#x448;&#x43A;&#x430; &#x2014; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; qdisc, congestion control, RACK bits &#x438; proxy timeouts. &#x414;&#x430;&#x436;&#x435; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x435;&#x442;. &#x41E;&#x434;&#x438;&#x43D; canary, &#x43E;&#x434;&#x438;&#x43D; owner, &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;. &#x412; change record &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435;, kernel version, socket evidence &#x438; &#x43A;&#x440;&#x438;&#x442;&#x435;&#x440;&#x438;&#x439; rollback. &#x422;&#x430;&#x43A; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x438;&#x43D;&#x436;&#x435;&#x43D;&#x435;&#x440; &#x441;&#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x435;, &#x430; &#x43D;&#x435; &#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; &#x443;&#x441;&#x442;&#x43D;&#x43E;&#x43C;&#x443; &#xAB;&#x441;&#x442;&#x430;&#x43B;&#x43E; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435;&#xBB;.</p>
<p>&#x412;&#x435;&#x440;&#x441;&#x438;&#x43E;&#x43D;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x430; &#x435;&#x449;&#x451; &#x43F;&#x43E; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x435;: sysctl &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x433;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; default, &#x43D;&#x43E; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x435; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x437;&#x430;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; socket options, &#x430; container &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x442;&#x44C; &#x432; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x43C; network namespace. &#x427;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x442;&#x430;&#x43C;, &#x433;&#x434;&#x435; &#x436;&#x438;&#x432;&#x451;&#x442; &#x441;&#x43E;&#x43A;&#x435;&#x442;, &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435;, &#x443;&#x43D;&#x430;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43B; &#x43B;&#x438; listener &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x435; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438; &#x434;&#x43B;&#x44F; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439;. &#x418;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; host namespace &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x434;&#x43B;&#x44F; &#x443;&#x436;&#x435; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x43E;&#x433;&#x43E; connection. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43B;&#x44E;&#x431;&#x43E;&#x439; canary &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x43E;&#x437;&#x434;&#x430;&#x442;&#x44C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x438; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x430;&#x442;&#x44C; kernel release, namespace inode &#x438; PID &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430;. &#x418;&#x43D;&#x430;&#x447;&#x435; &#x432;&#x44B; &#x43C;&#x43E;&#x436;&#x435;&#x442;&#x435; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#xAB;&#x43D;&#x443;&#x43B;&#x435;&#x432;&#x43E;&#x439; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;&#xBB; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#x442;&#x435;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43B;&#x438; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x439; socket, &#x430; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x43D;&#x43E; &#x440;&#x435;&#x448;&#x438;&#x442;&#x44C;, &#x447;&#x442;&#x43E; RACK &#x438;&#x43B;&#x438; TLP &#x43D;&#x435; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442;.</p><h2 id="canary-aba">A/B/A canary: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C; recovery, &#x430; &#x43D;&#x435; &#x43D;&#x430;&#x434;&#x435;&#x436;&#x434;&#x443;</h2>
<p>&#x425;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x439; canary &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x441; A: baseline &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; gateway &#x438; &#x43F;&#x430;&#x440;&#x430;&#x43B;&#x43B;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; healthy control &#x43D;&#x430; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x43C;. &#x418;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; &#x441;&#x432;&#x435;&#x436;&#x438;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;, &#x438;&#x43D;&#x430;&#x447;&#x435; connection pooling &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; &#x43F;&#x440;&#x435;&#x436;&#x43D;&#x438;&#x435; route, congestion window &#x438; socket options. &#x417;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x44F; TTFB, &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43D;&#x44B;&#x445; &#x43F;&#x430;&#x443;&#x437; &#x438; completion rate, &#x430; &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x2014; &#x434;&#x435;&#x43B;&#x44C;&#x442;&#x44B; retrans, DSACK, RTO/backoff &#x438; path counters.</p>
<p>&#x41D;&#x430; &#x444;&#x430;&#x437;&#x435; B &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x440;&#x43E;&#x432;&#x43D;&#x43E; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; owner. &#x41D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x435; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; ECMP path &#x438;&#x43B;&#x438; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x44B;&#x439; kernel knob &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43A; canary-&#x443;&#x437;&#x43B;&#x443;. Stop condition &#x437;&#x430;&#x434;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435;: &#x440;&#x43E;&#x441;&#x442; completion errors, RTO episodes, CPU softirq, backend occupancy &#x438;&#x43B;&#x438; &#x443;&#x445;&#x443;&#x434;&#x448;&#x435;&#x43D;&#x438;&#x435; control. &#x411;&#x435;&#x437; stop condition &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442; &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#xAB;&#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x435;&#x449;&#x451; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;&#xBB;.</p>
<p>&#x424;&#x430;&#x437;&#x430; A &#x43F;&#x43E;&#x441;&#x43B;&#x435; rollback &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x430;. &#x412;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x435; &#x436;&#x435; probes &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x445;. &#x415;&#x441;&#x43B;&#x438; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x438;&#x441;&#x447;&#x435;&#x437; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x438; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x43B;&#x441;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x43D;&#x43E;&#x433;&#x43E; B &#x432; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; &#x43E;&#x43A;&#x43D;&#x435;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x430;&#x44F; &#x441;&#x432;&#x44F;&#x437;&#x44C; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x441;&#x438;&#x43B;&#x44C;&#x43D;&#x435;&#x435;. &#x415;&#x441;&#x43B;&#x438; p99 &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x441;&#x44F; &#x43B;&#x443;&#x447;&#x448;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; rollback, &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;, &#x432;&#x44B; &#x43F;&#x43E;&#x439;&#x43C;&#x430;&#x43B;&#x438; &#x441;&#x43C;&#x435;&#x43D;&#x443; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438; &#x438;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x435;&#x432; cache.</p>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435;, &#x43A;&#x443;&#x434;&#x430; &#x43C;&#x438;&#x433;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43B; bottleneck. &#x411;&#x43E;&#x43B;&#x435;&#x435; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E;&#x435; TCP recovery &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x438;&#x442;&#x44C; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x439; stream, &#x43D;&#x43E; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x442;&#x44C; burst &#x43D;&#x430; proxy, TLS CPU &#x438;&#x43B;&#x438; GPU queue. &#x423;&#x441;&#x43F;&#x435;&#x445; &#x2014; &#x44D;&#x442;&#x43E; application outcome &#x438; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x435; capacity, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x43E; RTO. &#x418;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; rollback &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x435;&#x442; &#x442;&#x435; &#x436;&#x435; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; evidence gate.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">rack-canary-rollback.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>before=$(sysctl -n net.ipv4.tcp_recovery)
printf &apos;%s
&apos; &quot;$before&quot; &gt; /var/tmp/tcp_recovery.before
# apply one reviewed canary value here, then open fresh connections
sysctl -w &quot;net.ipv4.tcp_recovery=$(cat /var/tmp/tcp_recovery.before)&quot;
# repeat the same ss, capture and application probes</code></pre>
<div class="ks-canonical-code-block__caption">&#x424;&#x438;&#x43A;&#x441;&#x430;&#x446;&#x438;&#x44F; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; rollback</div>
</div>
<div class="ks-widget" id="ks-sel-c4nary1"><h3>&#x41A;&#x430;&#x43A;&#x43E;&#x439; canary &#x432;&#x44B;&#x431;&#x440;&#x430;&#x442;&#x44C;?</h3><label>&#x427;&#x442;&#x43E; &#x432;&#x44B; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x435;</label><select data-s><option value="path">&#x421;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x438;&#x43B;&#x438; ECMP</option><option value="kernel">Kernel recovery knob</option><option value="proxy">Proxy timeout &#x438;&#x43B;&#x438; buffering</option><option value="infra">&#x41A;&#x43B;&#x430;&#x441;&#x441; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x44B;</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-c4nary1');if(!r)return;var m={"path":"Закрепите один маршрут, сохраните healthy path как control и сравните capture на fresh connections.","kernel":"Меняйте один bitmap/параметр только на одном gateway; заранее снимите исходное значение и подготовьте rollback.","proxy":"Не смешивайте с kernel change: сравните downstream progress и освобождение backend capacity.","infra":"Сначала докажите NIC, CPU, NUMA или owner gap; иначе новый сервер воспроизведёт тот же дефект."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-06-5fedc7a8.webp" class="kg-image" alt="TCP RACK &#x438; TLP &#x434;&#x43B;&#x44F; LLM API: &#x43A;&#x430;&#x43A; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; retransmission &#x438; tail latency" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-06-5fedc7a8.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-06-5fedc7a8.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-06-5fedc7a8.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="platform-decision">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x443;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;</h2>
<p>&#x421;&#x43C;&#x435;&#x43D;&#x430; VPS &#x438;&#x43B;&#x438; &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434; &#x43D;&#x430; dedicated server &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;&#x44B; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; control gap. &#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440;&#x44B;: &#x432;&#x44B; &#x43D;&#x435; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x435; NIC queues &#x438; driver version, noisy neighbor &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x435;&#x43C;&#x44B;&#x435; jitter/loss &#x43D;&#x430; host boundary, NUMA placement &#x43D;&#x435; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x442;&#x441;&#x44F;, &#x443; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x44B; &#x43D;&#x435;&#x442; &#x43D;&#x443;&#x436;&#x43D;&#x43E;&#x439; path telemetry, &#x430; rollback &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; &#x447;&#x443;&#x436;&#x43E;&#x433;&#x43E; &#x43E;&#x43A;&#x43D;&#x430;. &#x422;&#x43E;&#x433;&#x434;&#x430; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; kernel/NIC baseline &#x438;&#x43C;&#x435;&#x435;&#x442; &#x43A;&#x43E;&#x43C;&#x43C;&#x435;&#x440;&#x447;&#x435;&#x441;&#x43A;&#x443;&#x44E; &#x438; &#x442;&#x435;&#x445;&#x43D;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x443;&#x44E; &#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C;.</p>
<p>&#x41D;&#x43E; &#x43D;&#x43E;&#x432;&#x43E;&#x435; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; poor flow hash, &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; policer, &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; route, proxy buffering &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43D;&#x430; GPU. &#x42D;&#x442;&#x43E; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; disqualifier. &#x41F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441; &#x442;&#x430;&#x43A;&#x43E;&#x433;&#x43E; workload &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x435;&#x434;&#x451;&#x442; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x43D;&#x430; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x43E;&#x439; &#x43C;&#x430;&#x448;&#x438;&#x43D;&#x435;, &#x430; &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x43D;&#x430;&#x447;&#x43D;&#x451;&#x442;&#x441;&#x44F; &#x437;&#x430;&#x43D;&#x43E;&#x432;&#x43E; &#x443;&#x436;&#x435; &#x441; &#x43D;&#x43E;&#x432;&#x44B;&#x43C; &#x43D;&#x430;&#x431;&#x43E;&#x440;&#x43E;&#x43C; &#x43F;&#x435;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x445;.</p>
<p>&#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442;&#x44B; &#x43F;&#x43E; ownership, &#x430; &#x43D;&#x435; &#x43F;&#x43E; &#x430;&#x431;&#x441;&#x442;&#x440;&#x430;&#x43A;&#x442;&#x43D;&#x43E;&#x439; &#xAB;&#x43C;&#x43E;&#x449;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#xBB;. &#x41D;&#x430; VPS &#x43F;&#x440;&#x43E;&#x449;&#x435; &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; edge horizontally &#x438; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; canary, &#x43D;&#x43E; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F; &#x43D;&#x430;&#x434; physical NIC. Dedicated &#x434;&#x430;&#x451;&#x442; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x435; queues, IRQ/NUMA placement &#x438; change window, &#x437;&#x430;&#x442;&#x43E; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x441;&#x432;&#x43E;&#x435;&#x439; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x43E;&#x439; &#x434;&#x438;&#x441;&#x446;&#x438;&#x43F;&#x43B;&#x438;&#x43D;&#x44B;. Managed load balancer &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x447;&#x430;&#x441;&#x442;&#x44C; L4 ownership, &#x43D;&#x43E; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; per-socket &#x438; wire evidence.</p>
<p>&#x414;&#x43B;&#x44F; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x435;&#x433;&#x43E; &#x441;&#x43B;&#x43E;&#x44F; &#x43F;&#x440;&#x438;&#x433;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; runbook <a href="https://kingservers.com/blog/rss-rps-irq-affinity-llm-api-gateway/">&#x43F;&#x43E; RSS, RPS &#x438; IRQ affinity</a>. &#x415;&#x441;&#x43B;&#x438; retransmissions &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43B;&#x438;&#x440;&#x443;&#x44E;&#x442; &#x441; RX drops &#x438; softirq saturation &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438;, &#x44D;&#x442;&#x43E; &#x443;&#x436;&#x435; &#x43D;&#x435; &#x430;&#x431;&#x441;&#x442;&#x440;&#x430;&#x43A;&#x442;&#x43D;&#x430;&#x44F; &#xAB;&#x441;&#x435;&#x442;&#x44C; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x430;&#x44F;&#xBB;, &#x430; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x44B;&#x439; resource/control gap. &#x418;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x442;&#x430;&#x43A;&#x43E;&#x433;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430; &#x441;&#x442;&#x43E;&#x438;&#x442; &#x43E;&#x431;&#x441;&#x443;&#x436;&#x434;&#x430;&#x442;&#x44C; &#x43A;&#x43B;&#x430;&#x441;&#x441; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x44B; King Servers.</p>
<p>&#x414;&#x43E; &#x437;&#x430;&#x43A;&#x443;&#x43F;&#x43A;&#x438; &#x441;&#x444;&#x43E;&#x440;&#x43C;&#x443;&#x43B;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x43E;&#x435; &#x442;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435;. &#x41D;&#x435; &#xAB;&#x43D;&#x443;&#x436;&#x43D;&#x430; &#x441;&#x435;&#x442;&#x44C; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435;&#xBB;, &#x430;, &#x43D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; per-queue NIC counters, &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x44C; IRQ &#x438; workload &#x432; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; NUMA node, &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x430;&#x44F; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44F; driver/firmware, packet mirror &#x43D;&#x430; edge &#x438; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; rollback. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x44D;&#x442;&#x438; &#x442;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x441; VPS, dedicated &#x438;&#x43B;&#x438; managed L4. &#x415;&#x441;&#x43B;&#x438; &#x442;&#x435;&#x43A;&#x443;&#x449;&#x430;&#x44F; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x430; &#x443;&#x436;&#x435; &#x434;&#x430;&#x451;&#x442; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x435; controls, &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C; &#x448;&#x430;&#x433;&#x43E;&#x43C;. &#x415;&#x441;&#x43B;&#x438; &#x43D;&#x435; &#x434;&#x430;&#x451;&#x442;, evidence bundle &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x442;&#x435;&#x445;&#x43D;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x43C; &#x43E;&#x431;&#x43E;&#x441;&#x43D;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435;&#x43C; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x430;, &#x430; &#x43D;&#x435; &#x44D;&#x43C;&#x43E;&#x446;&#x438;&#x43E;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x440;&#x435;&#x430;&#x43A;&#x446;&#x438;&#x435;&#x439; &#x43D;&#x430; p99. &#x42D;&#x442;&#x43E; &#x442;&#x430;&#x43A;&#x436;&#x435; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; King Servers &#x43F;&#x43E;&#x434;&#x43E;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44E; &#x43F;&#x43E; ownership &#x438; failure domain, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E; &#x447;&#x438;&#x441;&#x43B;&#x443; &#x44F;&#x434;&#x435;&#x440;.</p>
<div class="ks-widget" id="ks-chk-r0llbck"><h3>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x43F;&#x435;&#x440;&#x435;&#x434; rollout</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D; owner &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; hop</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x41E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x44B; stop conditions</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x415;&#x441;&#x442;&#x44C; baseline p50/p95/p99</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> Canary &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; fresh connections</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> Rollback &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x435;&#x442; &#x442;&#x435; &#x436;&#x435; probes</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43E; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x435; GPU capacity</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-r0llbck');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-07-6aebe438.webp" class="kg-image" alt="TCP RACK &#x438; TLP &#x434;&#x43B;&#x44F; LLM API: &#x43A;&#x430;&#x43A; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; retransmission &#x438; tail latency" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-07-6aebe438.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-07-6aebe438.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-rack-tlp-llm-api-retransmission-runbook-inline-07-6aebe438.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="runbook-conclusion">&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; runbook &#x438; &#x432;&#x44B;&#x432;&#x43E;&#x434;</h2>
<p>&#x41F;&#x435;&#x440;&#x435;&#x434; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x438;&#x435;&#x43C; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x430;&#x440;&#x442;&#x435;&#x444;&#x430;&#x43A;&#x442;&#x43E;&#x432;: &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; kernel &#x438; iproute2, &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x435; sysctl, &#x434;&#x432;&#x435; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x44B; capture, socket cookie, route/namespace context, application trace &#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; rollback. &#x41D;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; payload; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E; &#x43C;&#x435;&#x442;&#x430;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x44E;&#x442; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x442;&#x44C; sequence timing &#x441; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x43C;. &#x414;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; verdict &#x432; &#x444;&#x43E;&#x440;&#x43C;&#x435; &#xAB;&#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x2192; &#x438;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x44B; &#x2192; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x44B;&#x439; owner &#x2192; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x2192; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430;&#xBB;. &#x422;&#x430;&#x43A;&#x43E;&#x439; &#x444;&#x43E;&#x440;&#x43C;&#x430;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x441;&#x43C;&#x435;&#x43D;&#x443; &#x434;&#x435;&#x436;&#x443;&#x440;&#x43D;&#x43E;&#x439; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B; &#x438; &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x434;&#x43B;&#x44F; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E; &#x43F;&#x43E;&#x445;&#x43E;&#x436;&#x435;&#x433;&#x43E; &#x44D;&#x43F;&#x438;&#x437;&#x43E;&#x434;&#x430;. &#x427;&#x435;&#x440;&#x435;&#x437; &#x43D;&#x435;&#x434;&#x435;&#x43B;&#x44E; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x431;&#x435;&#x437; &#x438;&#x441;&#x43A;&#x443;&#x441;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;: &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x43C;&#x43E;&#x433;&#x43B;&#x430; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C;&#x441;&#x44F;, &#x430; path &#x2014; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C;&#x441;&#x44F;. &#x415;&#x441;&#x43B;&#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43D;&#x435; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F;, &#x43F;&#x43E;&#x43C;&#x435;&#x442;&#x44C;&#x442;&#x435; &#x432;&#x44B;&#x432;&#x43E;&#x434; &#x43A;&#x430;&#x43A; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x43C; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x43E;&#x43C; &#x438; &#x43E;&#x43A;&#x43D;&#x43E;&#x43C;, &#x430; &#x43D;&#x435; &#x43A;&#x430;&#x43A; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; tuning recipe.</p>
<p>&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x43D;&#x430; fresh connection &#x438; &#x43E;&#x442;&#x43C;&#x435;&#x442;&#x44C;&#x442;&#x435; &#x442;&#x43E;&#x447;&#x43D;&#x44B;&#x439; owner TCP hop. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; &#x434;&#x432;&#x430; &#x438; &#x431;&#x43E;&#x43B;&#x435;&#x435; <code>ss -tinmo</code> snapshot, packet capture &#x43F;&#x43E; &#x43E;&#x431;&#x435; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x44B; &#x43F;&#x43E;&#x434;&#x43E;&#x437;&#x440;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43A;&#x430; &#x438; application timings. &#x420;&#x430;&#x437;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; RACK evidence, TLP probe &#x438; RTO fallback; &#x43D;&#x435; &#x43D;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x431;&#x449;&#x438;&#x439; retrans counter &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43E;&#x439;.</p>
<p>&#x421;&#x43B;&#x435;&#x434;&#x43E;&#x43C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x430;&#x43B;&#x44C;&#x442;&#x435;&#x440;&#x43D;&#x430;&#x442;&#x438;&#x432;&#x44B;: reordering, delayed &#x438;&#x43B;&#x438; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D;&#x43D;&#x44B;&#x439; ACK, offload-&#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443;, policer, proxy buffering, HTTP/2 flow control &#x438; GPU queue. &#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x434;&#x43E;&#x437;&#x440;&#x435;&#x43D;&#x438;&#x44F; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; healthy negative control. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x435;&#x442;&#x44C; &#x447;&#x438;&#x441;&#x442;&#x430;&#x44F;, &#x447;&#x435;&#x441;&#x442;&#x43D;&#x44B;&#x439; &#x432;&#x44B;&#x432;&#x43E;&#x434; &#xAB;&#x43D;&#x435; network loss&#xBB; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x435;&#x435; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x43E;&#x433;&#x43E; sysctl.</p>
<p>&#x41C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; evidence gate. &#x41E;&#x434;&#x438;&#x43D; canary owner, &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;, &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435; &#x437;&#x430;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; stop conditions, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; A/B/A rollback. Kernel documentation &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; RACK &#x438; TLP &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x443;&#x436;&#x435; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;; &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x437;&#x430;&#x434;&#x430;&#x447;&#x430; &#x438;&#x43D;&#x436;&#x435;&#x43D;&#x435;&#x440;&#x430; &#x447;&#x430;&#x449;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x438;&#x442; &#x43D;&#x435; &#x432;&#x43E; &#xAB;&#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x438; RACK&#xBB;, &#x430; &#x432; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x435; &#x442;&#x43E;&#x433;&#x43E;, &#x43A;&#x430;&#x43A;&#x43E;&#x439; recovery path &#x441;&#x43B;&#x443;&#x447;&#x438;&#x43B;&#x441;&#x44F; &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x433; &#x43B;&#x438; &#x43E;&#x43D; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44E;.</p>
<p>&#x413;&#x43B;&#x430;&#x432;&#x43D;&#x430;&#x44F; &#x43C;&#x44B;&#x441;&#x43B;&#x44C; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x430;: tail latency &#x2014; &#x44D;&#x442;&#x43E; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x430;, &#x430; &#x43D;&#x435; &#x43E;&#x434;&#x438;&#x43D; counter. &#x421;&#x432;&#x44F;&#x436;&#x438;&#x442;&#x435; &#x441;&#x43E;&#x43A;&#x435;&#x442;, ACK/SACK, &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x441;&#x442;&#x430;&#x43D;&#x435;&#x442; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x43E;, &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43B;&#x438; route fix, proxy change, kernel canary &#x438;&#x43B;&#x438; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x430; &#x441; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x436;&#x451;&#x441;&#x442;&#x43A;&#x438;&#x43C; NIC/NUMA ownership. &#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x43E;&#x433;&#x43E; evidence bundle &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x43E;&#x43C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x438; &#x2014; &#x43E;&#x43D; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430; &#x43E;&#x442; &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x43E;&#x439;, &#x43D;&#x43E; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x43E;&#x439; &#x434;&#x43E;&#x433;&#x430;&#x434;&#x43A;&#x438;.</p>
<p>&#x418; &#x435;&#x449;&#x451; &#x43E;&#x434;&#x43D;&#x43E; &#x43F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x43E;: &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x43B;&#x430;&#x431;&#x43E;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x43D;&#x44B;&#x435; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x43D;&#x442;&#x44B; loss &#x438;&#x43B;&#x438; reordering &#x432; production SLO. &#x41E;&#x43D;&#x438; &#x43D;&#x443;&#x436;&#x43D;&#x44B; &#x434;&#x43B;&#x44F; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x438; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x430;, &#x430; &#x43D;&#x435; &#x434;&#x43B;&#x44F; &#x43F;&#x440;&#x43E;&#x433;&#x43D;&#x43E;&#x437;&#x430; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x441;&#x435;&#x442;&#x438;. Production verdict &#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x441;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x434;&#x435;&#x43B;&#x44C;&#x442;&#x430;&#x445; &#x432;&#x430;&#x448;&#x435;&#x433;&#x43E; &#x43F;&#x443;&#x442;&#x438;, &#x432;&#x430;&#x448;&#x435;&#x433;&#x43E; kernel &#x438; &#x432;&#x430;&#x448;&#x435;&#x433;&#x43E; LLM workload.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[nftables flowtable для LLM API gateway: fast path без ложного ускорения]]></title><description><![CDATA[Практический runbook по nftables flowtable: проверяем routed path, OFFLOAD, NAT и исключения, проводим A/B/A canary и отделяем сетевой эффект от очереди LLM.]]></description><link>https://kingservers.com/blog/nftables-flowtable-llm-api-gateway-runbook/</link><guid isPermaLink="false">6adb1c05aff2afac25354ec9</guid><category><![CDATA[Linux]]></category><category><![CDATA[Сетевые протоколы]]></category><category><![CDATA[AI]]></category><category><![CDATA[LLM]]></category><category><![CDATA[Инфраструктура]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 23 Oct 2026 23:19:38 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-hero-b660995d.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; verdict: flowtable &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43D;&#x435; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C;&#x443; gateway</a></li>
<li><a href="#mechanics">&#x41A;&#x430;&#x43A; flowtable &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43F;&#x443;&#x442;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;</a></li>
<li><a href="#baseline">&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; effective path &#x438; baseline</a></li>
<li><a href="#configuration">&#x411;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x430;&#x44F; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F; software flowtable</a></li>
<li><a href="#evidence">&#x41A;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C;, &#x447;&#x442;&#x43E; offload &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x438; &#x43F;&#x440;&#x438;&#x43D;&#x43E;&#x441;&#x438;&#x442; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;</a></li>
<li><a href="#exceptions">&#x418;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F; fast path: NAT, MTU, fragments &#x438; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x438;&#x435; TCP</a></li>
<li><a href="#rollout">A/B/A rollout &#x431;&#x435;&#x437; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x438;</a></li>
<li><a href="#software-hardware">Software &#x438; hardware offload: &#x433;&#x434;&#x435; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x44B;</a></li>
<li><a href="#failure-modes">&#x427;&#x430;&#x441;&#x442;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x438;</a></li>
<li><a href="#production-checklist">Production-&#x447;&#x435;&#x43A;&#x43B;&#x438;&#x441;&#x442; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; gateway</a></li>
<li><a href="#conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; hop, &#x430; &#x43D;&#x435; &#x430;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x443; &#x43D;&#x430; &#x433;&#x43B;&#x430;&#x437;</a></li>
</ul></div>

</div>&#x423; LLM API gateway &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; softirq, &#x43E;&#x434;&#x43D;&#x43E; &#x44F;&#x434;&#x440;&#x43E; &#x443;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x43F;&#x43E;&#x442;&#x43E;&#x43B;&#x43E;&#x43A;, &#x430; streaming &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442; &#x434;&#x451;&#x440;&#x433;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43F;&#x43E;&#x434; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439;. &#x421;&#x43E;&#x431;&#x43B;&#x430;&#x437;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; nftables flowtable &#x438; &#x43E;&#x431;&#x44A;&#x44F;&#x432;&#x438;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443; &#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x43E;&#x439;, &#x43A;&#x430;&#x43A; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432; conntrack &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x442;&#x441;&#x44F; OFFLOAD. &#x41D;&#x43E; fast path &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x44F;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x44B;&#x439; L3/L4 hop: &#x43E;&#x43D; &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442; TLS, proxy buffering &#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; GPU. &#x41D;&#x438;&#x436;&#x435; &#x2014; runbook, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443; bottleneck, &#x430; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x43C; A/B/A rollback.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-hero-b660995d.webp" alt="nftables flowtable &#x434;&#x43B;&#x44F; LLM API gateway: fast path &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x44F;"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; verdict: flowtable &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43D;&#x435; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C;&#x443; gateway</h2>
<p><strong>&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442;:</strong> &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; nftables flowtable &#x438;&#x43C;&#x435;&#x435;&#x442; &#x441;&#x43C;&#x44B;&#x441;&#x43B; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; Linux-&#x445;&#x43E;&#x441;&#x442;&#x435;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x438;&#x440;&#x443;&#x435;&#x442; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x44B;&#x439; &#x43E;&#x431;&#x44A;&#x451;&#x43C; TCP &#x438;&#x43B;&#x438; UDP &#x43C;&#x435;&#x436;&#x434;&#x443; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430;&#x43C;&#x438; &#x438; &#x442;&#x440;&#x430;&#x442;&#x438;&#x442; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x438;&#x43C;&#x44B;&#x439; CPU &#x43D;&#x430; classic forwarding path. &#x415;&#x441;&#x43B;&#x438; TLS &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x44D;&#x442;&#x43E;&#x43C; &#x436;&#x435; &#x445;&#x43E;&#x441;&#x442;&#x435;, &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43F;&#x43E;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x432; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; Envoy &#x438;&#x43B;&#x438; Nginx, &#x430; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x443;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x43A; GPU &#x447;&#x435;&#x440;&#x435;&#x437; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; &#x441;&#x43E;&#x43A;&#x435;&#x442;, offload &#x43D;&#x435; &#x43E;&#x431;&#x43E;&#x439;&#x434;&#x451;&#x442; userspace &#x438; &#x43D;&#x435; &#x441;&#x43E;&#x43A;&#x440;&#x430;&#x442;&#x438;&#x442; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x438; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;. &#x41E;&#x43D; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x44F;&#x435;&#x442; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; L3/L4 hop, &#x430; &#x43D;&#x435; &#x432;&#x435;&#x441;&#x44C; LLM request.</p>
<p>&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x439; false green &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x443;&#x431;&#x435;&#x434;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;: &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x437;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x44F;&#x434;&#x440;&#x430; &#x43F;&#x430;&#x434;&#x430;&#x435;&#x442;, &#x430; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; <code>conntrack -L</code> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; <code>[OFFLOAD]</code>. &#x41D;&#x43E; p95 time-to-first-token &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x435;&#x436;&#x43D;&#x438;&#x43C;, streaming &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x437;&#x430;&#x43C;&#x438;&#x440;&#x430;&#x442;&#x44C;, &#x430; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; inference &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;. &#x412; &#x442;&#x430;&#x43A;&#x43E;&#x43C; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x435; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; fast path &#x441;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x43B; &#x442;&#x435;&#x445;&#x43D;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;, &#x43E;&#x434;&#x43D;&#x430;&#x43A;&#x43E; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x436;&#x438;&#x43B;&#x430; &#x432; TLS, buffering, retry storm &#x438;&#x43B;&#x438; GPU scheduler. &#x414;&#x43B;&#x44F; production &#x44D;&#x442;&#x43E; &#x43D;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x445;, &#x430; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441; &#x432;&#x43D;&#x438;&#x43C;&#x430;&#x43D;&#x438;&#x44F;.</p>
<p>&#x41D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x441; procurement default: <strong>&#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x443; &#x438; &#x43D;&#x435; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; hardware offload, &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D; bottleneck &#x43D;&#x430; routed path</strong>. Shared VM, VPS &#x438; dedicated gateway &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x435;&#x43C; NIC, kernel, driver &#x438; change window, &#x43D;&#x43E; &#x43D;&#x438; &#x43E;&#x434;&#x438;&#x43D; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; route, MTU black hole &#x438;&#x43B;&#x438; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;. &#x415;&#x441;&#x43B;&#x438; &#x432;&#x44B; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;&#x437;&#x43E;&#x432;&#x430;&#x43B;&#x438; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; CPU, &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x435;&#x435; &#x43F;&#x440;&#x43E;&#x439;&#x442;&#x438; runbook &#x43F;&#x43E; <a href="https://kingservers.com/blog/rss-rps-irq-affinity-llm-api-gateway/">RSS, RPS &#x438; IRQ affinity</a>.</p><h2 id="mechanics">&#x41A;&#x430;&#x43A; flowtable &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43F;&#x443;&#x442;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;</h2>
<p>&#x41F;&#x43E; <a href="https://docs.kernel.org/networking/nf_flowtable.html?ref=kingservers.com">&#x43E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; Linux kernel</a> &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x439; IP forwarding path. &#x41F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x43E; <code>flow add</code> &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x434;&#x432;&#x443;&#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; &#x432; flowtable, &#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x435; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x432;&#x448;&#x438;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B; &#x443;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x438;&#x437; ingress &#x441;&#x440;&#x430;&#x437;&#x443; &#x43A; &#x432;&#x44B;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; netdevice &#x447;&#x435;&#x440;&#x435;&#x437; <code>neigh_xmit()</code>. &#x41E;&#x43D;&#x438; &#x43E;&#x431;&#x445;&#x43E;&#x434;&#x44F;&#x442; prerouting, routing decision, forward &#x438; postrouting hooks, &#x440;&#x430;&#x441;&#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; ingress. &#x418;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A;&#x438; &#x432; &#x43F;&#x43E;&#x437;&#x434;&#x43D;&#x438;&#x445; nftables chains &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x44E;&#x442; &#x440;&#x430;&#x441;&#x442;&#x438;: &#x44D;&#x442;&#x43E; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; fast path, &#x430; &#x43D;&#x435; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430;.</p>
<p>Lookup &#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430;&#x43C; &#x438; &#x43F;&#x43E;&#x440;&#x442;&#x430;&#x43C;. &#x412; tuple &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x442; L2 encapsulation, L3 source/destination, L4 source/destination ports, protocol &#x438; input interface. &#x41F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x439; &#x44D;&#x43B;&#x435;&#x43C;&#x435;&#x43D;&#x442; &#x432;&#x430;&#x436;&#x435;&#x43D; &#x43F;&#x440;&#x438; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x438;&#x445; conntrack zones: &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x439; 5-tuple, &#x43F;&#x440;&#x438;&#x448;&#x435;&#x434;&#x448;&#x438;&#x439; &#x441; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x433;&#x43E; &#x432;&#x445;&#x43E;&#x434;&#x430;, &#x43D;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x44F;&#x442;&#x44C; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C;. Flowtable &#x442;&#x430;&#x43A;&#x436;&#x435; &#x43A;&#x44D;&#x448;&#x438;&#x440;&#x443;&#x435;&#x442; &#x432;&#x44B;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441; &#x438; gateway address, &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x430;&#x435;&#x442; TTL/hop limit &#x438; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x451;&#x43D;&#x43D;&#x443;&#x44E; NAT-&#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44E;.</p>
<p>&#x417;&#x434;&#x435;&#x441;&#x44C; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x430; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x430;&#x44F; &#x430;&#x43D;&#x430;&#x43B;&#x43E;&#x433;&#x438;&#x44F;: classic path &#x43F;&#x43E;&#x445;&#x43E;&#x436; &#x43D;&#x430; &#x43F;&#x430;&#x441;&#x43F;&#x43E;&#x440;&#x442;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x434;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x430;, &#x430; flowtable &#x2014; &#x43D;&#x430; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x43F;&#x443;&#x441;&#x43A;, &#x432;&#x44B;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x439; &#x43F;&#x43E;&#x43B;&#x43D;&#x43E;&#x439; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438;. &#x41F;&#x440;&#x43E;&#x43F;&#x443;&#x441;&#x43A; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43B;&#x44F; &#x443;&#x436;&#x435; &#x43A;&#x432;&#x430;&#x43B;&#x438;&#x444;&#x438;&#x446;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430;. &#x41D;&#x43E;&#x432;&#x44B;&#x439; SYN, flowtable miss, &#x438;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x430; &#x438;&#x43B;&#x438; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x432;&#x448;&#x430;&#x44F;&#x441;&#x44F; &#x442;&#x43E;&#x43F;&#x43E;&#x43B;&#x43E;&#x433;&#x438;&#x44F; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43A; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x434;&#x443;&#x440;&#x435;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x43B;&#x438; &#x43B;&#x438; &#x432;&#x44B;, &#x447;&#x442;&#x43E; &#x432;&#x430;&#x448; &#xAB;gateway&#xBB; &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x441;&#x430;&#x43C;&#x43E;&#x43C; &#x434;&#x435;&#x43B;&#x435; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; reverse proxy? &#x42D;&#x442;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x430;&#x44F; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x438;.</p>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-tab-f7a3c91"><h3>&#x413;&#x434;&#x435; &#x438;&#x441;&#x43A;&#x430;&#x442;&#x44C; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; flowtable</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="forward">Forwarded</button><button type="button" class="tab-btn" data-t="local">Local</button><button type="button" class="tab-btn" data-t="app">&#x41F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;</button></div>
<div class="panel on" data-p="forward">&#x428;&#x43B;&#x44E;&#x437; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430;&#x43C;&#x438;: &#x44D;&#x442;&#x43E; &#x43A;&#x430;&#x43D;&#x434;&#x438;&#x434;&#x430;&#x442; &#x434;&#x43B;&#x44F; flowtable &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; policy, conntrack &#x438; &#x438;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x439;.</div><div class="panel" data-p="local">&#x421;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x441;&#x430;&#x43C;&#x43E;&#x43C; &#x445;&#x43E;&#x441;&#x442;&#x435;: flowtable forwarding &#x43D;&#x435; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x44F;&#x435;&#x442; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; input/output path.</div><div class="panel" data-p="app">TTFT &#x438; inter-token latency &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43D;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C;&#x441;&#x44F;, &#x435;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x432; TLS, proxy buffering &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; inference.</div>
<script>(function(){var r=document.getElementById('ks-tab-f7a3c91');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-01-e15bae4f.webp" class="kg-image" alt="nftables flowtable &#x434;&#x43B;&#x44F; LLM API gateway: fast path &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-01-e15bae4f.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-01-e15bae4f.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-01-e15bae4f.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="baseline">&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; effective path &#x438; baseline</h2>
<p>&#x414;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x443; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x438;&#x437; &#x442;&#x43E;&#x433;&#x43E; network namespace, &#x433;&#x434;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x432;&#x445;&#x43E;&#x434;&#x438;&#x442;. &#x41D;&#x430; bare metal &#x44D;&#x442;&#x43E; &#x447;&#x430;&#x441;&#x442;&#x43E; root namespace, &#x432; Kubernetes &#x438;&#x43B;&#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x439;&#x43D;&#x435;&#x440;&#x43D;&#x43E;&#x43C; gateway &#x2014; &#x443;&#x436;&#x435; &#x43D;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;. &#x417;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; ingress/egress interfaces, route &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; source, policy rules, &#x441;&#x43E;&#x441;&#x435;&#x434;&#x435;&#x439; &#x438; &#x43C;&#x435;&#x441;&#x442;&#x43E; NAT. &#x41D;&#x435; &#x43F;&#x43E;&#x434;&#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x441;&#x445;&#x435;&#x43C;&#x43E;&#x439; &#x438;&#x437; CMDB: &#x43F;&#x43E;&#x441;&#x43B;&#x435; CNI, VRF, tunnel &#x438;&#x43B;&#x438; policy routing &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; path &#x447;&#x430;&#x441;&#x442;&#x43E; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x442; &#x43D;&#x430;&#x440;&#x438;&#x441;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E;.</p>
<p>Baseline &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x44F;. &#x41F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x2014; path: <code>ip route get</code>, <code>ip rule</code>, namespace &#x438; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x44B;. &#x412;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x2014; state: conntrack entry, NAT &#x438; &#x431;&#x443;&#x434;&#x443;&#x449;&#x438;&#x439; OFFLOAD tag. &#x422;&#x440;&#x435;&#x442;&#x438;&#x439; &#x2014; resource: per-CPU softirq, throughput, drops &#x438; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430; gateway process. &#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x44B;&#x439; &#x2014; application outcome: time-to-first-token, inter-token gaps, &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x438; &#x434;&#x43E;&#x43B;&#x44F; &#x43E;&#x431;&#x43E;&#x440;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x445; stream &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x445;. &#x410;&#x431;&#x441;&#x43E;&#x43B;&#x44E;&#x442;&#x43D;&#x44B;&#x439; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A; &#x431;&#x435;&#x437; delta &#x438; healthy control &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;.</p>
<p>&#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; &#x434;&#x432;&#x430; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44F;: &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x439; LLM streaming request &#x438; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x437;&#x430;&#x432;&#x435;&#x434;&#x43E;&#x43C;&#x43E; &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43F;&#x43E;&#x43F;&#x430;&#x441;&#x442;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x439; fast path, &#x43D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x44E;&#x449;&#x435;&#x435;&#x441;&#x44F; health-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x435; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x43E;, &#x432;&#x435;&#x440;&#x43E;&#x44F;&#x442;&#x435;&#x43D; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x439; &#x444;&#x430;&#x43A;&#x442;&#x43E;&#x440;: warm cache, batching, &#x441;&#x43C;&#x435;&#x43D;&#x430; backend &#x438;&#x43B;&#x438; &#x444;&#x43E;&#x43D;&#x43E;&#x432;&#x43E;&#x439; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;. &#x414;&#x43B;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; offload &#x43D;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x435;&#x43C; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435; &#x43F;&#x440;&#x438;&#x433;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/gro-gso-tso-llm-api-gateway/">GRO, GSO &#x438; TSO</a>: &#x43D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; segmentation offload &#x441; Netfilter flowtable.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>ip -br link
ip rule show
ip route get 203.0.113.20 from 10.20.0.15
nft -a list ruleset
conntrack -S
cat /proc/softirqs
ss -tin state established</code></pre>
<div class="ks-canonical-code-block__caption">&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x441;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; &#x43F;&#x443;&#x442;&#x438; &#x438; &#x440;&#x435;&#x441;&#x443;&#x440;&#x441;&#x43E;&#x432; &#x434;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F;</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-03-3b58d800.webp" class="kg-image" alt="nftables flowtable &#x434;&#x43B;&#x44F; LLM API gateway: fast path &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-03-3b58d800.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-03-3b58d800.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-03-3b58d800.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="configuration">&#x411;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x430;&#x44F; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F; software flowtable</h2>
<p>&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; ruleset &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x438;&#x442; &#x438;&#x437; flowtable &#x43D;&#x430; ingress hook &#x438; &#x441;&#x442;&#x440;&#x43E;&#x433;&#x43E; &#x43A;&#x432;&#x430;&#x43B;&#x438;&#x444;&#x438;&#x446;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; <code>flow add</code> &#x432; forward chain. &#x41D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x432; fast path &#x432;&#x435;&#x441;&#x44C; TCP &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x432; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439;. &#x41E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x44C;&#x442;&#x435; canary &#x430;&#x434;&#x440;&#x435;&#x441;&#x430;&#x43C;&#x438; gateway, backend subnet, &#x43F;&#x43E;&#x440;&#x442;&#x43E;&#x43C; &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;&#x43C; conntrack. &#x422;&#x430;&#x43A; &#x432;&#x44B; &#x441;&#x43C;&#x43E;&#x436;&#x435;&#x442;&#x435; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x442;&#x44C; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x441;&#x43E; &#x441;&#x432;&#x43E;&#x438;&#x43C; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x435;&#x43C; &#x438; &#x43D;&#x435; &#x441;&#x43F;&#x440;&#x44F;&#x447;&#x435;&#x442;&#x435; &#x43E;&#x442; &#x43F;&#x43E;&#x437;&#x434;&#x43D;&#x438;&#x445; hooks &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43B;&#x43E;&#x433;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;, &#x43C;&#x430;&#x440;&#x43A;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x438;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x44C; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; policy.</p>
<p>&#x41F;&#x440;&#x438;&#x43E;&#x440;&#x438;&#x442;&#x435;&#x442; ingress hook &#x437;&#x430;&#x434;&#x430;&#x451;&#x442; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; &#x441; &#x434;&#x440;&#x443;&#x433;&#x438;&#x43C;&#x438; ingress chains. &#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x44F;&#x434;&#x440;&#x430; &#x440;&#x435;&#x43A;&#x43E;&#x43C;&#x435;&#x43D;&#x434;&#x443;&#x435;&#x442; &#x440;&#x430;&#x441;&#x43F;&#x43E;&#x43B;&#x430;&#x433;&#x430;&#x442;&#x44C; flowtable &#x440;&#x430;&#x43D;&#x44C;&#x448;&#x435; nftables ingress chain, &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x430; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x442;. &#x41D;&#x43E; &#x44D;&#x442;&#x43E; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x442;&#x44C; &#x432;&#x441;&#x43B;&#x435;&#x43F;&#x443;&#x44E;: &#x435;&#x441;&#x43B;&#x438; ingress policy &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x43E;&#x442;&#x431;&#x440;&#x43E;&#x441;&#x438;&#x442;&#x44C; spoofed source &#x434;&#x43E; &#x43B;&#x44E;&#x431;&#x43E;&#x433;&#x43E; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x44F;, &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x447;&#x430;&#x441;&#x442;&#x44C;&#x44E; security design. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x437;&#x430;&#x433;&#x440;&#x443;&#x436;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x444;&#x430;&#x439;&#x43B; &#x447;&#x435;&#x440;&#x435;&#x437; <code>nft --check -f</code>, &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x442;&#x435;&#x43A;&#x443;&#x449;&#x438;&#x439; ruleset &#x438; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x430;&#x442;&#x43E;&#x43C;&#x430;&#x440;&#x43D;&#x43E;.</p>
<p>&#x41D;&#x438;&#x436;&#x435; &#x2014; &#x443;&#x447;&#x435;&#x431;&#x43D;&#x44B;&#x439; &#x43A;&#x430;&#x440;&#x43A;&#x430;&#x441;, &#x430; &#x43D;&#x435; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x430;&#x44F; policy &#x434;&#x43B;&#x44F; &#x43A;&#x43E;&#x43F;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F;. &#x418;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x44B;, &#x441;&#x435;&#x442;&#x438; &#x438; ownership NAT &#x443; &#x432;&#x430;&#x441; &#x431;&#x443;&#x434;&#x443;&#x442; &#x434;&#x440;&#x443;&#x433;&#x438;&#x43C;&#x438;. &#x414;&#x43B;&#x44F; dual-stack &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; family <code>inet</code>, &#x43D;&#x43E; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435; IPv4 &#x438; IPv6 outcome. &#x412;&#x435;&#x440;&#x441;&#x438;&#x44F; nftables &#x43D;&#x430; &#x434;&#x430;&#x442;&#x443; &#x43F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x43A;&#x438; &#x2014; 1.1.7 &#x43F;&#x43E; <a href="https://www.netfilter.org/news.html?ref=kingservers.com">&#x43E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; release notes Netfilter</a>; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x438;&#x43D;&#x442;&#x430;&#x43A;&#x441;&#x438;&#x441;&#x430; &#x438; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x43F;&#x43E; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; userspace &#x438; kernel &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x445;&#x43E;&#x441;&#x442;&#x430;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">flowtable.nft</span></div>
<pre class="ks-canonical-code-block__pre"><code>table inet llm_fastpath {
  flowtable ft_llm {
    hook ingress priority 0;
    devices = { eno1, eno2 };
    counter
  }

  chain forward {
    type filter hook forward priority filter; policy drop;

    ct state established,related
      ip saddr 10.20.0.0/24 ip daddr 10.30.0.0/24
      tcp dport 443 flow add @ft_llm

    ct state established,related accept
  }
}</code></pre>
<div class="ks-canonical-code-block__caption">&#x41E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x43D;&#x44B;&#x439; canary &#x434;&#x43B;&#x44F; routed LLM traffic</div>
</div>
<div class="ks-widget" id="ks-sel-b82d4e1"><h3>&#x421;&#x442;&#x43E;&#x438;&#x442; &#x43B;&#x438; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; offload</h3>
<label>&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;</label><select data-s><option value="forwardcpu">&#x412;&#x44B;&#x441;&#x43E;&#x43A;&#x438;&#x439; CPU &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43D;&#x430; forwarding path</option><option value="gpu">&#x420;&#x430;&#x441;&#x442;&#x451;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; GPU</option><option value="buffer">&#x41C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; streaming &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;</option><option value="unknown">&#x41F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;&#x437;&#x43E;&#x432;&#x430;&#x43D;&#x430;</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-b82d4e1');if(!r)return;var m={"forwardcpu":"Кандидат на canary: сначала докажите forwarded flow, OFFLOAD tag и возврат метрики при rollback.","gpu":"Flowtable не лечит inference queue: сначала проверьте scheduler, batching и GPU saturation.","buffer":"Проверьте client read rate, proxy buffering, qdisc и transport path; fast path может быть ни при чём.","unknown":"Оставьте baseline. Сначала соберите path → conntrack → CPU/queue → application evidence."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-02-041db08a.webp" class="kg-image" alt="nftables flowtable &#x434;&#x43B;&#x44F; LLM API gateway: fast path &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-02-041db08a.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-02-041db08a.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-02-041db08a.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="evidence">&#x41A;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C;, &#x447;&#x442;&#x43E; offload &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x438; &#x43F;&#x440;&#x438;&#x43D;&#x43E;&#x441;&#x438;&#x442; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;</h2>
<p>&#x41F;&#x435;&#x440;&#x432;&#x43E;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x2014; &#x43D;&#x435; &#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x435; CPU, &#x430; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430; &#x441; policy. &#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x43E;&#x432;&#x43E;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; ruleset, &#x43D;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; &#x43E;&#x431;&#x435; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x44B; tuple &#x432; conntrack &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; tag <code>[OFFLOAD]</code>. &#x414;&#x43B;&#x44F; hardware path &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <code>[HW_OFFLOAD]</code>; &#x44D;&#x442;&#x438; &#x441;&#x442;&#x430;&#x442;&#x443;&#x441;&#x44B; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x442;&#x44C;. Hardware programming &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x430;&#x441;&#x438;&#x43D;&#x445;&#x440;&#x43E;&#x43D;&#x43D;&#x43E;&#x439; workqueue, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43D;&#x435;&#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x438;&#x434;&#x442;&#x438; software path.</p>
<p>&#x412;&#x442;&#x43E;&#x440;&#x43E;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x2014; &#x445;&#x430;&#x440;&#x430;&#x43A;&#x442;&#x435;&#x440; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A;&#x43E;&#x432;. &#x41F;&#x430;&#x43A;&#x435;&#x442;&#x44B;, &#x43F;&#x43E;&#x43F;&#x430;&#x432;&#x448;&#x438;&#x435; &#x432; fast path, &#x43D;&#x435; &#x434;&#x43E;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x434;&#x43E; &#x43F;&#x43E;&#x437;&#x434;&#x43D;&#x435;&#x433;&#x43E; counter &#x432; forward chain, &#x43E;&#x434;&#x43D;&#x430;&#x43A;&#x43E; flowtable counter &#x43F;&#x440;&#x438; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x43C;&#x43E;&#x43C; kernel &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x438;&#x43D;&#x445;&#x440;&#x43E;&#x43D;&#x438;&#x437;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; packets/bytes &#x441; conntrack entry. &#x415;&#x441;&#x43B;&#x438; &#x432;&#x44B; &#x432;&#x438;&#x434;&#x438;&#x442;&#x435; &#x440;&#x43E;&#x441;&#x442; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x433;&#x43E; forward counter &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x435;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;, interfaces, state &#x438; &#x438;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F;. &#x415;&#x441;&#x43B;&#x438; counter &#x432;&#x43D;&#x435;&#x437;&#x430;&#x43F;&#x43D;&#x43E; &#x437;&#x430;&#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x43B; &#x431;&#x435;&#x437; OFFLOAD tag, &#x438;&#x449;&#x438;&#x442;&#x435; &#x434;&#x440;&#x443;&#x433;&#x443;&#x44E; chain, drop &#x438;&#x43B;&#x438; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x443; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x44F;.</p>
<p>&#x422;&#x440;&#x435;&#x442;&#x44C;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x2014; resource delta &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x435;: &#x441;&#x43D;&#x438;&#x436;&#x435;&#x43D;&#x438;&#x435; softirq/forwarding CPU &#x438;&#x43B;&#x438; &#x440;&#x43E;&#x441;&#x442; headroom &#x431;&#x435;&#x437; &#x43D;&#x43E;&#x432;&#x44B;&#x445; drops. &#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x43E;&#x435; &#x2014; application outcome &#x43D;&#x430; fresh connections. &#x414;&#x43B;&#x44F; LLM API &#x43D;&#x430;&#x441; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x435;&#x441;&#x443;&#x435;&#x442; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; request rate, &#x43D;&#x43E; &#x438; TTFT, gaps &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; SSE-stream, reset rate &#x438; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x435; CPU &#x434;&#x43B;&#x44F; TLS/proxy. &#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x441;&#x447;&#x438;&#x442;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x44B;&#x43C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442;&#x430; &#x43A; baseline: &#x443;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; <code>flow add</code>, &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x43E;&#x442; &#x436;&#x435; probe &#x438; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x443;&#x439;&#x442;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442;&#x430; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438;. &#x42D;&#x442;&#x43E; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; A/B/A gate.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">verify-offload.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>nft list flowtables
nft list flowtable inet llm_fastpath ft_llm
conntrack -L -p tcp | grep -E &apos;\[OFFLOAD\]|\[HW_OFFLOAD\]&apos;
nstat -az
mpstat -P ALL 1
curl --no-keepalive -sS -N https://api.example.net/v1/stream &gt;/dev/null</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; flowtable, conntrack &#x438; deltas</div>
</div>
<div class="ks-widget" id="ks-chk-c6e10a4"><h3>Evidence gate &#x43F;&#x435;&#x440;&#x435;&#x434; canary</h3>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D; effective namespace &#x438; &#x43E;&#x431;&#x430; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x41F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x435;&#x43D;&#x43E;, &#x447;&#x442;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; routed, &#x430; &#x43D;&#x435; local</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x421;&#x43D;&#x44F;&#x442;&#x44B; baseline CPU, softirq &#x438; application latency</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x415;&#x441;&#x442;&#x44C; healthy negative control</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x41F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x43B;&#x435;&#x43D; &#x430;&#x442;&#x43E;&#x43C;&#x430;&#x440;&#x43D;&#x44B;&#x439; rollback ruleset</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x41C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x430; &#x443;&#x441;&#x43F;&#x435;&#x445;&#x430; &#x437;&#x430;&#x434;&#x430;&#x43D;&#x430; &#x43D;&#x430; fresh connections</label><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-c6e10a4');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-04-a45e1bc6.webp" class="kg-image" alt="nftables flowtable &#x434;&#x43B;&#x44F; LLM API gateway: fast path &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-04-a45e1bc6.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-04-a45e1bc6.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-04-a45e1bc6.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="exceptions">&#x418;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F; fast path: NAT, MTU, fragments &#x438; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x438;&#x435; TCP</h2>
<p>Flowtable &#x43D;&#x435; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; NAT &#x438;&#x441;&#x447;&#x435;&#x437;&#x430;&#x435;&#x442;. &#x417;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442; NAT-&#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44E;, &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x451;&#x43D;&#x43D;&#x443;&#x44E; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x43E;&#x43C; &#x447;&#x435;&#x440;&#x435;&#x437; classic path, &#x438; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x435;&#x451; &#x43A; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x43C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;&#x43C;. &#x42D;&#x442;&#x43E; &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x43E;, &#x43D;&#x43E; &#x443;&#x441;&#x438;&#x43B;&#x438;&#x432;&#x430;&#x435;&#x442; &#x442;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x43A; ownership: &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; DNAT/SNAT policy &#x432; &#x441;&#x435;&#x440;&#x435;&#x434;&#x438;&#x43D;&#x435; &#x436;&#x438;&#x437;&#x43D;&#x438; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430; &#x43D;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D;&#x43E; &#x43D;&#x435;&#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x438;&#x441;&#x430;&#x442;&#x44C; &#x443;&#x436;&#x435; &#x43A;&#x44D;&#x448;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x435; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435;. &#x414;&#x43B;&#x44F; canary &#x441;&#x43E;&#x437;&#x434;&#x430;&#x432;&#x430;&#x439;&#x442;&#x435; fresh connections &#x438; &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435; &#x440;&#x435;&#x448;&#x438;&#x442;&#x435;, &#x43A;&#x430;&#x43A; &#x432;&#x44B; &#x431;&#x443;&#x434;&#x435;&#x442;&#x435; &#x434;&#x440;&#x435;&#x43D;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x435;.</p>
<p>&#x424;&#x440;&#x430;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x439; forwarding path, &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443; &#x447;&#x442;&#x43E; &#x431;&#x435;&#x437; transport header lookup &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43D;&#x435;&#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x435;&#x43D;. &#x41F;&#x430;&#x43A;&#x435;&#x442;, &#x43F;&#x440;&#x435;&#x432;&#x44B;&#x448;&#x430;&#x44E;&#x449;&#x438;&#x439; MTU, &#x442;&#x43E;&#x436;&#x435; &#x438;&#x434;&#x451;&#x442; classic path, &#x447;&#x442;&#x43E;&#x431;&#x44B; &#x44F;&#x434;&#x440;&#x43E; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x43E; ICMP Packet Too Big. TCP FIN &#x438; RST &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x434;&#x43B;&#x44F; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x44F; flow. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x441;&#x43C;&#x435;&#x448;&#x430;&#x43D;&#x43D;&#x44B;&#x439; trace &#x2014; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x44B;. &#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x442;&#x43E;&#x433;&#x434;&#x430;, &#x43A;&#x43E;&#x433;&#x434;&#x430; fallback &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x441; &#x434;&#x435;&#x433;&#x440;&#x430;&#x434;&#x430;&#x446;&#x438;&#x435;&#x439; &#x438; &#x432;&#x44B; &#x43D;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442;&#x435; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x438;&#x442;&#x44C; &#x435;&#x433;&#x43E; &#x434;&#x43E;&#x43B;&#x44E;.</p>
<p>&#x41E;&#x441;&#x43E;&#x431;&#x43E;&#x435; &#x432;&#x43D;&#x438;&#x43C;&#x430;&#x43D;&#x438;&#x435; &#x443;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; tunnels &#x438; PMTUD. &#x415;&#x441;&#x43B;&#x438; streaming &#xAB;&#x43F;&#x43E;&#x434;&#x432;&#x438;&#x441;&#x430;&#x435;&#x442;&#xBB; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x451;&#x43D;&#x43D;&#x43E;&#x43C; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;, &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442;&#x435; &#x44D;&#x442;&#x43E; flowtable. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; effective MTU, ICMP delivery &#x438; retransmission. &#x422;&#x430; &#x436;&#x435; &#x434;&#x438;&#x441;&#x446;&#x438;&#x43F;&#x43B;&#x438;&#x43D;&#x430; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x438;&#x43C;&#x430; &#x43A; &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x438;: reply &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43F;&#x43E;&#x43F;&#x430;&#x434;&#x430;&#x442;&#x44C; &#x432; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; conntrack/path. &#x41C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/linux-policy-routing-llm-api-gateway/">ip rule, rp_filter &#x438; fwmark</a> &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; routing control gap &#x43E;&#x442; offload.</p>
<div class="ks-widget" id="ks-tab-d93f2b7"><h3>&#x41F;&#x43E;&#x447;&#x435;&#x43C;&#x443; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x43B;&#x441;&#x44F; &#x432; classic path</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="frag">Fragment</button><button type="button" class="tab-btn" data-t="mtu">MTU</button><button type="button" class="tab-btn" data-t="close">FIN/RST</button><button type="button" class="tab-btn" data-t="miss">Miss</button></div>
<div class="panel on" data-p="frag">&#x423; &#x444;&#x440;&#x430;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x430; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43D;&#x435; &#x431;&#x44B;&#x442;&#x44C; transport header &#x434;&#x43B;&#x44F; lookup, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x44F;&#x434;&#x440;&#x43E; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x430;&#x442;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x435;&#x433;&#x43E; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x43C; &#x43F;&#x443;&#x442;&#x451;&#x43C;.</div><div class="panel" data-p="mtu">&#x41F;&#x430;&#x43A;&#x435;&#x442; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; MTU &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; classic path, &#x447;&#x442;&#x43E;&#x431;&#x44B; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x44B;&#x439; ICMP Packet Too Big.</div><div class="panel" data-p="close">FIN &#x438; RST &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x44F;&#x442; classic path, &#x447;&#x442;&#x43E;&#x431;&#x44B; conntrack &#x438; flow entry &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x438;&#x43B;&#x438;&#x441;&#x44C; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;.</div><div class="panel" data-p="miss">Flowtable miss &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x443;&#x44E; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44E;; &#x44D;&#x442;&#x43E; &#x43D;&#x435; &#x441;&#x430;&#x43C;&#x43E; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430; offload.</div>
<script>(function(){var r=document.getElementById('ks-tab-d93f2b7');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-05-14ee9f8f.webp" class="kg-image" alt="nftables flowtable &#x434;&#x43B;&#x44F; LLM API gateway: fast path &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-05-14ee9f8f.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-05-14ee9f8f.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-05-14ee9f8f.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="rollout">A/B/A rollout &#x431;&#x435;&#x437; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x438;</h2>
<p>Canary &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; owner. &#x412;&#x44B;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; gateway, &#x43E;&#x434;&#x43D;&#x443; &#x43F;&#x430;&#x440;&#x443; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x43E;&#x432; &#x438; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x43D;&#x430;&#x431;&#x43E;&#x440; backend addresses. &#x414;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; ruleset, &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x438; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; pcap &#x441; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x439; &#x442;&#x43E;&#x447;&#x43A;&#x438;. Host-side capture &#x43F;&#x43E;&#x441;&#x43B;&#x435; ingress &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x43C; wire evidence: flowtable hit &#x43E;&#x431;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x435; hooks, &#x430; segmentation offload &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x432;&#x438;&#x434; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430; &#x43D;&#x430; &#x441;&#x430;&#x43C;&#x43E;&#x43C; &#x445;&#x43E;&#x441;&#x442;&#x435;. SPAN-&#x43F;&#x43E;&#x440;&#x442; &#x438;&#x43B;&#x438; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x439; sensor &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x443;&#x432;&#x438;&#x434;&#x435;&#x442;&#x44C; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; wire.</p>
<p>&#x424;&#x430;&#x437;&#x430; A &#x2014; baseline &#x431;&#x435;&#x437; <code>flow add</code>. &#x424;&#x430;&#x437;&#x430; B &#x2014; &#x442;&#x43E;&#x442; &#x436;&#x435; workload &#x441; software flowtable. &#x424;&#x430;&#x437;&#x430; A2 &#x2014; &#x443;&#x434;&#x430;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; canary rule &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440; &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x445;. &#x41F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x438;: OFFLOAD &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x432; B, resource/application metric &#x443;&#x43B;&#x443;&#x447;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; B &#x438; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;&#x43D;&#x43E; &#x43A; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x44E; &#x432; A2. &#x41D;&#x435; &#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x43D;&#x442;: &#x43E;&#x43D; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; packet rate, CPU, NIC, ruleset &#x438; &#x434;&#x43E;&#x43B;&#x438; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x435;&#x43C;&#x43E;&#x433;&#x43E; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430;.</p>
<p>Rollback &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; &#x441;&#x43A;&#x443;&#x447;&#x43D;&#x44B;&#x43C;. &#x417;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435; &#x43F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x44C;&#x442;&#x435; &#x444;&#x430;&#x439;&#x43B;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x430;&#x442;&#x43E;&#x43C;&#x430;&#x440;&#x43D;&#x43E; &#x443;&#x434;&#x430;&#x43B;&#x44F;&#x435;&#x442; canary rule &#x438;&#x43B;&#x438; flowtable, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x447;&#x435;&#x440;&#x435;&#x437; <code>nft --check</code> &#x438; &#x43D;&#x430;&#x437;&#x43E;&#x432;&#x438;&#x442;&#x435; stop conditions: &#x440;&#x43E;&#x441;&#x442; resets, &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x441;&#x435;&#x442;&#x438;, &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F; telemetry, &#x440;&#x430;&#x441;&#x445;&#x43E;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x435; NAT &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; application gain. &#x41F;&#x43E;&#x441;&#x43B;&#x435; rollback &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; path, conntrack, counter &#x438; LLM probes. &#x418;&#x43D;&#x430;&#x447;&#x435; &#xAB;&#x43C;&#x44B; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x43B;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#xBB; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x435;&#x434;&#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;&#x43C;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">rollback.nft</span></div>
<pre class="ks-canonical-code-block__pre"><code>delete table inet llm_fastpath</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x430;&#x442;&#x43E;&#x43C;&#x430;&#x440;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x434;&#x430;&#x43B;&#x435;&#x43D;&#x438;&#x44F; canary-&#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x44B;</div>
</div>
<div class="ks-widget" id="ks-chk-e41a8d2"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43A; A/B/A rollout</h3>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> Canary &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D; &#x43E;&#x434;&#x43D;&#x438;&#x43C; ingress/egress path</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> Ruleset &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D; &#x447;&#x435;&#x440;&#x435;&#x437; nft --check</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x418;&#x437;&#x432;&#x435;&#x441;&#x442;&#x435;&#x43D; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x435;&#x446; firewall &#x438; NAT policy</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x44E;&#x442;&#x441;&#x44F; fresh, &#x430; &#x43D;&#x435; reused connections</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x41F;&#x43E;&#x441;&#x43B;&#x435; rollback &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x442;&#x435; &#x436;&#x435; probes</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x430; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44F; bottleneck &#x432; TLS/proxy/GPU</label><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-e41a8d2');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-06-6ce7b78f.webp" class="kg-image" alt="nftables flowtable &#x434;&#x43B;&#x44F; LLM API gateway: fast path &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-06-6ce7b78f.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-06-6ce7b78f.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-06-6ce7b78f.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="software-hardware">Software &#x438; hardware offload: &#x433;&#x434;&#x435; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x44B;</h2>
<p>Software flowtable &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; forwarding &#x432; &#x44F;&#x434;&#x440;&#x435; &#x438; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C; &#x440;&#x430;&#x437;&#x443;&#x43C;&#x43D;&#x44B;&#x43C; canary: &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x435;&#x439; &#x43E;&#x442; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x439; NIC, driver &#x438; firmware, &#x43F;&#x440;&#x43E;&#x449;&#x435; rollback. Hardware offload &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; <code>flags offload</code> &#x438; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x43C;&#x44B;&#x435; flows &#x432; &#x443;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x43E;. &#x41F;&#x43E; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; &#x44F;&#x434;&#x440;&#x430; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x445; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x43E;&#x432; &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43F;&#x440;&#x43E;&#x439;&#x442;&#x438; software path, &#x43F;&#x43E;&#x43A;&#x430; workqueue &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x438;&#x440;&#x443;&#x435;&#x442; hardware. &#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x430; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; &#x443;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x430; &#x438; driver; &#x43D;&#x430;&#x43B;&#x438;&#x447;&#x438;&#x435; &#x441;&#x438;&#x43D;&#x442;&#x430;&#x43A;&#x441;&#x438;&#x441;&#x430; &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; HW datapath.</p>
<p>&#x415;&#x441;&#x442;&#x44C; &#x438; cache risk. Flowtable &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; destination MAC &#x438; egress netdevice; &#x43F;&#x440;&#x438; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x438; topology &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x443;&#x441;&#x442;&#x430;&#x440;&#x435;&#x442;&#x44C;. &#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43E;&#x442;&#x43C;&#x435;&#x447;&#x430;&#x435;&#x442; &#x440;&#x438;&#x441;&#x43A; &#x434;&#x43B;&#x44F; software &#x440;&#x435;&#x436;&#x438;&#x43C;&#x430; &#x43F;&#x440;&#x438; &#x441;&#x43E;&#x447;&#x435;&#x442;&#x430;&#x43D;&#x438;&#x438; bridge &#x438; IP forwarding, &#x430; &#x442;&#x430;&#x43A;&#x436;&#x435; &#x434;&#x43B;&#x44F; hardware offload. &#x412; HA-&#x441;&#x445;&#x435;&#x43C;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; failover neighbor, bond/team, bridge ports &#x438; &#x441;&#x43C;&#x435;&#x43D;&#x443; next hop. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; failover &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x438;&#x434;&#x442;&#x438; &#x43A; &#x441;&#x442;&#x430;&#x440;&#x43E;&#x43C;&#x443; MAC, &#x441;&#x43A;&#x43E;&#x440;&#x43E;&#x441;&#x442;&#x44C; &#x443;&#x436;&#x435; &#x43D;&#x435; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F;.</p>
<p>&#x41A;&#x43E;&#x43C;&#x43C;&#x435;&#x440;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; control gap. VPS &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; kernel baseline &#x438; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x44B;&#x439; ruleset &#x431;&#x435;&#x437; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x44F; NIC firmware. Dedicated gateway &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;, &#x435;&#x441;&#x43B;&#x438; &#x43D;&#x443;&#x436;&#x43D;&#x44B; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; queues, NUMA locality, driver/firmware ownership, &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; capture &#x438; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x43E;&#x435; change window. SmartNIC/DPU &#x438;&#x43C;&#x435;&#x435;&#x442; &#x441;&#x43C;&#x44B;&#x441;&#x43B; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x440;&#x438; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x43E;&#x43C; packet-processing hotspot &#x438; &#x43A;&#x43E;&#x43C;&#x43F;&#x435;&#x442;&#x435;&#x43D;&#x446;&#x438;&#x438; &#x441;&#x43E;&#x43F;&#x440;&#x43E;&#x432;&#x43E;&#x436;&#x434;&#x430;&#x442;&#x44C; offload. &#x41D;&#x43E;&#x432;&#x43E;&#x435; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; selector, ECMP reordering, proxy buffering &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; GPU.</p>
<p>&#x41F;&#x440;&#x438; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x44B; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x435; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x435; &#xAB;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; latency&#xBB;, &#x430; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x432;&#x435;&#x449;&#x438;: &#x43A;&#x442;&#x43E; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x435;&#x442; kernel/NIC &#x432;&#x435;&#x440;&#x441;&#x438;&#x44F;&#x43C;&#x438;, &#x43A;&#x430;&#x43A;&#x438;&#x435; counters &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;, &#x43A;&#x430;&#x43A;&#x43E;&#x432; failure domain &#x438; &#x43D;&#x430;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; rollback. &#x414;&#x43B;&#x44F; &#x441;&#x43C;&#x435;&#x436;&#x43D;&#x43E;&#x439; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x441;&#x435;&#x442;&#x435;&#x432;&#x44B;&#x445; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; <a href="https://kingservers.com/blog/nic-ring-buffer-rx-drops-llm-api-gateway/">ethtool-runbook &#x43F;&#x43E; NIC ring buffers &#x438; RX drops</a>; flowtable &#x43D;&#x435; &#x43A;&#x43E;&#x43C;&#x43F;&#x435;&#x43D;&#x441;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x43D;&#x44B;&#x439; RX ring.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-07-fa17918a.webp" class="kg-image" alt="nftables flowtable &#x434;&#x43B;&#x44F; LLM API gateway: fast path &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-07-fa17918a.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-07-fa17918a.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nftables-flowtable-llm-api-gateway-runbook-inline-07-fa17918a.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="failure-modes">&#x427;&#x430;&#x441;&#x442;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x438;</h2>
<p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 1: &#x441;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; OFFLOAD &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E;&#x43C; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x43E;&#x433;&#x43E; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;&#x430;.</strong> Tag &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; datapath state, &#x43D;&#x43E; &#x43D;&#x435; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435; TTFT &#x438;&#x43B;&#x438; streaming. &#x412;&#x441;&#x435;&#x433;&#x434;&#x430; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x441; resource delta &#x438; LLM outcome. <strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 2: &#x442;&#x435;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; reused connection.</strong> &#x421;&#x442;&#x430;&#x440;&#x44B;&#x439; keepalive &#x43C;&#x43E;&#x433; &#x431;&#x44B;&#x442;&#x44C; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D; &#x434;&#x43E; policy change; &#x434;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x44D;&#x442;&#x430;&#x43F;&#x430; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; fresh connection.</p>
<p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 3: &#x43F;&#x443;&#x442;&#x430;&#x442;&#x44C; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; proxy &#x441; forwarded gateway.</strong> &#x415;&#x441;&#x43B;&#x438; socket &#x43F;&#x440;&#x438;&#x43D;&#x430;&#x434;&#x43B;&#x435;&#x436;&#x438;&#x442; Envoy/Nginx &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; &#x445;&#x43E;&#x441;&#x442;&#x435;, &#x44D;&#x442;&#x43E;&#x442; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; input/userspace/output, &#x430; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;&#x439; forward bypass. <strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 4: &#x436;&#x434;&#x430;&#x442;&#x44C; &#x440;&#x43E;&#x441;&#x442;&#x430; &#x43F;&#x43E;&#x437;&#x434;&#x43D;&#x438;&#x445; nft counters.</strong> &#x41F;&#x440;&#x438; flowtable hit &#x438;&#x445; &#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x43D;&#x438;&#x435; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x43E;. &#x41F;&#x435;&#x440;&#x435;&#x43D;&#x435;&#x441;&#x438;&#x442;&#x435; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x43A; ingress, conntrack/flowtable counters &#x438; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x43C;&#x443; capture.</p>
<p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 5: &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; &#x432;&#x441;&#x451; &#x441;&#x440;&#x430;&#x437;&#x443;.</strong> &#x41E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x430;&#x44F; &#x441;&#x43C;&#x435;&#x43D;&#x430; flowtable, IRQ affinity, GRO, qdisc &#x438; proxy timeout &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43D;&#x435;&#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x438;&#x43C;&#x44B;&#x43C;. &#x41C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; owner. <strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 6: &#x438;&#x433;&#x43D;&#x43E;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; exceptions.</strong> Fragments, MTU, FIN/RST &#x438; misses &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x432; classic path; mixed trace &#x43D;&#x435; &#x440;&#x430;&#x432;&#x435;&#x43D; &#x43F;&#x43E;&#x43B;&#x43E;&#x43C;&#x43A;&#x435;.</p>
<p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 7: &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x44C; &#x43A; hardware &#x434;&#x43E; software proof.</strong> &#x422;&#x430;&#x43A; &#x432;&#x44B; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x435; driver, firmware &#x438; asynchronous programming &#x43A; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x439; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x435;. <strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 8: &#x43F;&#x43E;&#x43A;&#x443;&#x43F;&#x430;&#x442;&#x44C; dedicated gateway &#x440;&#x430;&#x43D;&#x44C;&#x448;&#x435; evidence.</strong> &#x412;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x430;&#x44F; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x430; &#x434;&#x430;&#x451;&#x442; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;, &#x43D;&#x43E; &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x43D;&#x435;&#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439; workload &#x432; &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439;. &#x415;&#x441;&#x43B;&#x438; bottleneck &#x436;&#x438;&#x432;&#x451;&#x442; &#x432; TLS storm, &#x43D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; <a href="https://kingservers.com/blog/tls-handshake-storm-llm-api-gateway/">runbook &#x43F;&#x43E; handshake, resumption &#x438; keepalive</a>.</p><h2 id="production-checklist">Production-&#x447;&#x435;&#x43A;&#x43B;&#x438;&#x441;&#x442; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; gateway</h2>
<p>&#x41F;&#x435;&#x440;&#x435;&#x434; change window &#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x44C;&#x442;&#x435; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x435;&#x432;: network path, nftables policy, NAT, observability &#x438; LLM application metric. &#x41E;&#x434;&#x438;&#x43D; &#x447;&#x435;&#x43B;&#x43E;&#x432;&#x435;&#x43A; &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43C;&#x43E;&#x43B;&#x447;&#x430; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x442;&#x44C; &#x432;&#x441;&#x435;&#x43C;&#x438; &#x434;&#x43E;&#x43F;&#x443;&#x449;&#x435;&#x43D;&#x438;&#x44F;&#x43C;&#x438;. &#x421;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x443;&#x439;&#x442;&#x435; &#x442;&#x43E;&#x447;&#x43D;&#x44B;&#x439; canary scope, fresh-connection generator, healthy negative control &#x438; stop conditions. &#x417;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; kernel, nftables, NIC driver &#x438; firmware versions, &#x43D;&#x43E; &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x439;&#x442;&#x435; &#x441;&#x43F;&#x438;&#x441;&#x43E;&#x43A; &#x432;&#x435;&#x440;&#x441;&#x438;&#x439; &#x432; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x438; &#x2014; &#x435;&#x451; &#x434;&#x430;&#x451;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432;&#x430;&#x448; canary.</p>
<ul><li>Path &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D; &#x438;&#x437; effective namespace &#x434;&#x43B;&#x44F; &#x43E;&#x431;&#x43E;&#x438;&#x445; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x439;.</li><li>Flowtable devices &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x44E;&#x442; &#x441; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;&#x438; ingress/egress netdevices.</li><li>Canary policy &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x430; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430;&#x43C;&#x438;, &#x43F;&#x43E;&#x440;&#x442;&#x43E;&#x43C; &#x438; conntrack state.</li><li>Baseline &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; CPU/softirq, drops, conntrack &#x438; application outcome.</li><li>OFFLOAD &#x438; &#x43F;&#x440;&#x438; &#x43D;&#x435;&#x43E;&#x431;&#x445;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x438; HW_OFFLOAD &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;.</li><li>Fragments, MTU, FIN/RST &#x438; failover topology &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x432; negative tests.</li><li>Rollback &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D; &#x441;&#x438;&#x43D;&#x442;&#x430;&#x43A;&#x441;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x438; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x43E;.</li><li>&#x41F;&#x43E;&#x441;&#x43B;&#x435; B &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; A2 &#x441; &#x442;&#x435;&#x43C;&#x438; &#x436;&#x435; probes.</li></ul>
<p>&#x417;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x43F;&#x440;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x43D;&#x435;&#x43F;&#x440;&#x438;&#x44F;&#x442;&#x43D;&#x43E;&#x435;, &#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;&#x435;: &#x447;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x438;&#x437;&#x43E;&#x439;&#x434;&#x451;&#x442;, &#x435;&#x441;&#x43B;&#x438; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x438;&#x442; CPU gateway, &#x430; &#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B; &#x43C;&#x438;&#x433;&#x440;&#x438;&#x440;&#x443;&#x435;&#x442; &#x432; TLS, proxy worker, storage &#x438;&#x43B;&#x438; GPU queue? &#x41F;&#x43B;&#x430;&#x43D; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x437;&#x430; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x435;&#x439; fast path. &#x425;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x439; runbook &#x437;&#x430;&#x43A;&#x430;&#x43D;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x435; &#x437;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x43C; counter, &#x430; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x438;&#x43C;&#x44B;&#x43C; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x432;&#x441;&#x435;&#x439; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x438; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430;.</p><h2 id="conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; hop, &#x430; &#x43D;&#x435; &#x430;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x443; &#x43D;&#x430; &#x433;&#x43B;&#x430;&#x437;</h2>
<p>nftables flowtable &#x2014; &#x437;&#x440;&#x435;&#x43B;&#x44B;&#x439; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; fast path &#x434;&#x43B;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x44B;&#x445; TCP/UDP flows, &#x43D;&#x43E; &#x435;&#x433;&#x43E; &#x43E;&#x431;&#x43B;&#x430;&#x441;&#x442;&#x44C; &#x443;&#x436;&#x435;, &#x447;&#x435;&#x43C; &#x437;&#x432;&#x443;&#x447;&#x438;&#x442; &#x441;&#x43B;&#x43E;&#x432;&#x43E; &#xAB;&#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x435;&#xBB;. &#x41F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; classic path, policy &#x44F;&#x432;&#x43D;&#x43E; &#x43E;&#x442;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x43A;&#x430;&#x43D;&#x434;&#x438;&#x434;&#x430;&#x442;&#x43E;&#x432;, &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x435; hits &#x43E;&#x431;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x43F;&#x43E;&#x437;&#x434;&#x43D;&#x438;&#x435; Netfilter hooks, &#x430; NAT state &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;. Exceptions &#x437;&#x430;&#x43A;&#x43E;&#x43D;&#x43E;&#x43C;&#x435;&#x440;&#x43D;&#x43E; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x432; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x443;&#x44E; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x443;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; production-&#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x442;&#x44C; path, OFFLOAD state, CPU/queue delta &#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; LLM API.</p>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; software canary &#x438; A/B/A rollback. Hardware offload &#x438; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; gateway &#x440;&#x430;&#x441;&#x441;&#x43C;&#x430;&#x442;&#x440;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; packet-processing hotspot &#x438; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x43E;&#x439; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x44B; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F;. &#x415;&#x441;&#x43B;&#x438; application metric &#x43D;&#x435; &#x434;&#x432;&#x438;&#x433;&#x430;&#x435;&#x442;&#x441;&#x44F;, &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x435;&#x441;&#x44C;: &#x43D;&#x43E;&#x432;&#x43E;&#x435; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; TLS, buffering, retry storm &#x438;&#x43B;&#x438; GPU queue. &#x417;&#x430;&#x442;&#x43E; &#x43F;&#x440;&#x438; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x43E;&#x43C; forwarding bottleneck &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; kernel/NIC baseline, &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x438; change window &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x44F;&#x442;&#x441;&#x44F; &#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x44B;.</p>
<p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x448;&#x430;&#x433; &#x43F;&#x440;&#x43E;&#x441;&#x442;: &#x432;&#x43E;&#x437;&#x44C;&#x43C;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; gateway, &#x441;&#x43E;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; baseline &#x43F;&#x43E; &#x447;&#x435;&#x43A;&#x43B;&#x438;&#x441;&#x442;&#x443;, &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x44C;&#x442;&#x435; canary &#x43E;&#x434;&#x43D;&#x438;&#x43C; flow &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x43D;&#x430; fresh connections. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; evidence bundle &#x438; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435; rollback &#x434;&#x430;&#x436;&#x435; &#x43F;&#x440;&#x438; &#x445;&#x43E;&#x440;&#x43E;&#x448;&#x435;&#x43C; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;&#x435;. &#x422;&#x430;&#x43A; &#x432;&#x44B; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x435; &#x43D;&#x435; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x44B;&#x439; tag, &#x430; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x435; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x435; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x442;&#x44C; &#x438;&#x43B;&#x438; &#x43E;&#x431;&#x441;&#x443;&#x434;&#x438;&#x442;&#x44C; &#x441; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x43E;&#x439; KingServers &#x43F;&#x440;&#x438; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; VPS &#x43B;&#x438;&#x431;&#x43E; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x433;&#x43E; &#x443;&#x437;&#x43B;&#x430;.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[HTTP/2 flow control для LLM streaming: как найти паузы за API gateway]]></title><description><![CDATA[Production-runbook по HTTP/2 flow control для LLM streaming: как найти исчерпание stream и connection window, проверить Envoy, провести canary и не скрыть медленного consumer.]]></description><link>https://kingservers.com/blog/http2-flow-control-llm-streaming-api-gateway/</link><guid isPermaLink="false">6ad32b6faff2afac25354e7c</guid><category><![CDATA[Сетевые протоколы]]></category><category><![CDATA[AI]]></category><category><![CDATA[LLM]]></category><category><![CDATA[Инфраструктура]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Sat, 17 Oct 2026 23:13:16 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-hero-3e7cacb5.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#symptom-boundary">&#x421;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;: &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x438;&#x434;&#x443;&#x442; &#x440;&#x44B;&#x432;&#x43A;&#x430;&#x43C;&#x438;, &#x43D;&#x43E; TCP &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x43C;</a></li>
<li><a href="#hop-by-hop">&#x41F;&#x43E;&#x447;&#x435;&#x43C;&#x443; flow control &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x440;&#x430;&#x437;&#x431;&#x438;&#x440;&#x430;&#x442;&#x44C; hop-by-hop</a></li>
<li><a href="#evidence-capture">&#x421;&#x43E;&#x431;&#x438;&#x440;&#x430;&#x435;&#x43C; evidence bundle &#x434;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</a></li>
<li><a href="#four-gates">&#x427;&#x435;&#x442;&#x44B;&#x440;&#x435; gate: frame, proxy, consumer &#x438; application</a></li>
<li><a href="#envoy-config">&#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; Envoy: &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x43C; &#x43E;&#x434;&#x43D;&#x43E; &#x43E;&#x43A;&#x43D;&#x43E; &#x438; &#x441;&#x447;&#x438;&#x442;&#x430;&#x435;&#x43C; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C;</a></li>
<li><a href="#canary">A/B/A canary: &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x43C; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C;, &#x430; &#x43D;&#x435; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x435;</a></li>
<li><a href="#memory-budget">&#x41C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; consumer: &#x43E;&#x43A;&#x43D;&#x43E; &#x43F;&#x43E;&#x43A;&#x443;&#x43F;&#x430;&#x435;&#x442; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x437;&#x430; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C;</a></li>
<li><a href="#failure-modes">&#x427;&#x442;&#x43E; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x44E;&#x442; &#x437;&#x430; HTTP/2 flow-control stall</a></li>
<li><a href="#platform-choice">VPS, dedicated edge &#x438;&#x43B;&#x438; managed gateway: &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; path proof</a></li>
<li><a href="#runbook">Production-runbook: &#x43E;&#x442; &#x430;&#x43B;&#x435;&#x440;&#x442;&#x430; &#x434;&#x43E; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x433;&#x43E; rollback</a></li>
<li><a href="#conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430;</a></li>
</ul></div>

</div><img src="https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-hero-3e7cacb5.webp" alt="HTTP/2 flow control &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x437;&#x430; API gateway"><p>&#x422;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x432;&#x43D;&#x435;&#x437;&#x430;&#x43F;&#x43D;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x44E;&#x442; &#x438;&#x434;&#x442;&#x438;, &#x445;&#x43E;&#x442;&#x44F; TLS &#x436;&#x438;&#x432;, TCP &#x43D;&#x435; &#x442;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B;, &#x430; GPU &#x435;&#x449;&#x451; &#x43D;&#x435; &#x443;&#x43F;&#x451;&#x440;&#x441;&#x44F; &#x432; &#x43F;&#x43E;&#x442;&#x43E;&#x43B;&#x43E;&#x43A;. &#x427;&#x435;&#x440;&#x435;&#x437; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x434;&#x43E;&#x433;&#x43E;&#x43D;&#x44F;&#x435;&#x442; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x43F;&#x430;&#x447;&#x43A;&#x43E;&#x439;, &#x438; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x44F;&#x44F; latency &#x43C;&#x430;&#x441;&#x43A;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43D;&#x435;&#x43F;&#x440;&#x438;&#x44F;&#x442;&#x43D;&#x443;&#x44E; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432;&#x443;&#x44E; &#x43F;&#x430;&#x443;&#x437;&#x443;. &#x427;&#x430;&#x441;&#x442;&#x43E; &#x432;&#x438;&#x43D;&#x43E;&#x432;&#x430;&#x442; &#x43D;&#x435; &#x441;&#x43E;&#x43A;&#x435;&#x442; &#x438; &#x43D;&#x435; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C;, &#x430; &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43D;&#x43D;&#x44B;&#x439; credit HTTP/2 &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x438;&#x437; &#x434;&#x432;&#x443;&#x445; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B;&#x445; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43A;&#x43E;&#x432; &#x432;&#x43E;&#x43A;&#x440;&#x443;&#x433; API gateway. &#x420;&#x430;&#x437;&#x431;&#x435;&#x440;&#x451;&#x43C;, &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x44D;&#x442;&#x443; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x443; &#x43A;&#x430;&#x434;&#x440;&#x430;&#x43C;&#x438; WINDOW_UPDATE, &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x430;&#x43C;&#x438; Envoy &#x438; A/B/A canary, &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44F; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x43A;&#x43E;&#x43D; &#x432; &#x431;&#x435;&#x441;&#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x440;&#x430;&#x441;&#x445;&#x43E;&#x434; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438;.</p><div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="symptom-boundary">&#x421;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;: &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x438;&#x434;&#x443;&#x442; &#x440;&#x44B;&#x432;&#x43A;&#x430;&#x43C;&#x438;, &#x43D;&#x43E; TCP &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x43C;</h2>
<p>&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x439; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x435;&#x43F;&#x440;&#x438;&#x44F;&#x442;&#x43D;&#x43E; &#x431;&#x443;&#x434;&#x43D;&#x438;&#x447;&#x43D;&#x43E;: TLS &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;, retransmits &#x43D;&#x435; &#x440;&#x430;&#x441;&#x442;&#x443;&#x442;, GPU &#x43D;&#x435; &#x437;&#x430;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D; &#x434;&#x43E; &#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x430;, &#x430; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x432;&#x44B;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442; LLM &#x43D;&#x430; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434; &#x437;&#x430;&#x43C;&#x438;&#x440;&#x430;&#x435;&#x442; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;&#x43C;&#x438;. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x43F;&#x430;&#x447;&#x43A;&#x43E;&#x439;, &#x438; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x44F;&#x44F; latency &#x432; &#x434;&#x430;&#x448;&#x431;&#x43E;&#x440;&#x434;&#x435; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x442;&#x435;&#x440;&#x43F;&#x438;&#x43C;&#x43E;. &#x41F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;, &#x43E;&#x434;&#x43D;&#x430;&#x43A;&#x43E;, &#x432;&#x438;&#x434;&#x438;&#x442; &#x43D;&#x435; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x435;&#x435;, &#x430; &#x43F;&#x430;&#x443;&#x437;&#x443;. &#x415;&#x441;&#x43B;&#x438; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x441;&#x440;&#x430;&#x437;&#x443; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; TCP buffers &#x438;&#x43B;&#x438; &#x447;&#x438;&#x441;&#x43B;&#x43E; GPU, &#x43E;&#x43D;&#x430; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43D;&#x435; &#x442;&#x43E;&#x442; &#x441;&#x43B;&#x43E;&#x439;.</p>
<p>HTTP/2 &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43F;&#x43E;&#x432;&#x435;&#x440;&#x445; TCP &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x439; credit-based flow control. &#x41E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; DATA, &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x43A;&#x430; &#x443; &#x43D;&#x435;&#x433;&#x43E; &#x435;&#x441;&#x442;&#x44C; &#x43A;&#x440;&#x435;&#x434;&#x438;&#x442; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x432; &#x43E;&#x43A;&#x43D;&#x435; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; stream &#x438; &#x432; &#x43E;&#x43A;&#x43D;&#x435; connection. &#x41A;&#x440;&#x435;&#x434;&#x438;&#x442; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x442;&#x435;&#x43B;&#x44C; &#x43A;&#x430;&#x434;&#x440;&#x430;&#x43C;&#x438; WINDOW_UPDATE &#x43F;&#x43E; &#x43C;&#x435;&#x440;&#x435; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x439; socket &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442;, &#x447;&#x442;&#x43E; HTTP/2 sender &#x441;&#x435;&#x439;&#x447;&#x430;&#x441; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x43F;&#x440;&#x430;&#x432;&#x43E; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x444;&#x440;&#x430;&#x433;&#x43C;&#x435;&#x43D;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;.</p>
<p>&#x413;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x44D;&#x442;&#x43E;&#x439; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x438; &#x443;&#x437;&#x43A;&#x430;&#x44F;: &#x43C;&#x44B; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x443;&#x435;&#x43C; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x432; LLM streaming &#x43D;&#x430; &#x43F;&#x443;&#x442;&#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x2192; Envoy &#x2192; inference &#x438; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x43C;, &#x433;&#x434;&#x435; &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43D; credit. &#x42D;&#x442;&#x43E; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x431;&#x449;&#x435;&#x433;&#x43E; &#x440;&#x430;&#x437;&#x431;&#x43E;&#x440;&#x430; TCP autotuning &#x438; &#x43D;&#x435; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x44F; &#x43E; graceful drain. &#x41C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43F;&#x440;&#x43E; &#x442;&#x43E;, &#x43A;&#x430;&#x43A; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; consumer, &#x43E;&#x43A;&#x43D;&#x43E; stream, &#x43E;&#x43A;&#x43D;&#x43E; connection, buffering &#x43F;&#x43E;&#x441;&#x440;&#x435;&#x434;&#x43D;&#x438;&#x43A;&#x430; &#x438; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;.</p>
<p>&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; disqualifier: &#x435;&#x441;&#x43B;&#x438; inference backend &#x43D;&#x435; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; scheduler &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;, &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; HTTP/2-&#x43E;&#x43A;&#x43E;&#x43D; &#x43D;&#x435; &#x43F;&#x43E;&#x43C;&#x43E;&#x436;&#x435;&#x442;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; &#x43D;&#x430;&#x43B;&#x438;&#x447;&#x438;&#x435; DATA &#x43D;&#x430; upstream hop. &#x422;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x435;&#x441;&#x442;&#x44C; &#x441;&#x43C;&#x44B;&#x441;&#x43B; &#x442;&#x440;&#x43E;&#x433;&#x430;&#x442;&#x44C; flow control.</p><p>&#x414;&#x43B;&#x44F; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435;&#x439; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; runbook: <a href="https://kingservers.com/blog/tcp-buffer-autotuning-llm-streaming/">TCP buffers &#x438; socket backpressure</a>, <a href="https://kingservers.com/blog/http2-goaway-grpc-keepalive-llm-gateway/">HTTP/2 GOAWAY &#x438; gRPC keepalive</a>, <a href="https://kingservers.com/blog/tls-handshake-storm-llm-api-gateway/">TLS handshake storm</a> &#x438; <a href="https://kingservers.com/blog/http3-dlya-ai-api-latency-i-stabilnost/">HTTP/3 &#x434;&#x43B;&#x44F; AI API</a>. &#x41E;&#x43D;&#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x44E;&#x442; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; &#x441;&#x43C;&#x435;&#x436;&#x43D;&#x44B;&#x435; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x44B;, &#x43D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x44F; &#x438;&#x445; &#x441; credit HTTP/2.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-01-212300d5.webp" class="kg-image" alt="HTTP/2 flow control &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x437;&#x430; API gateway" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/http2-flow-control-llm-streaming-inline-01-212300d5.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/http2-flow-control-llm-streaming-inline-01-212300d5.webp 1000w, https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-01-212300d5.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="hop-by-hop">&#x41F;&#x43E;&#x447;&#x435;&#x43C;&#x443; flow control &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x440;&#x430;&#x437;&#x431;&#x438;&#x440;&#x430;&#x442;&#x44C; hop-by-hop</h2>
<p>&#x41F;&#x43E; <a href="https://www.rfc-editor.org/rfc/rfc9113.html?ref=kingservers.com#section-5.2">RFC 9113</a> flow control &#x441;&#x43F;&#x435;&#x446;&#x438;&#x444;&#x438;&#x447;&#x435;&#x43D; &#x434;&#x43B;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; HTTP/2 connection, &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D; &#x438; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x442;&#x435;&#x43B;&#x435;&#x43C;. &#x41F;&#x43E;&#x441;&#x440;&#x435;&#x434;&#x43D;&#x438;&#x43A; &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x44B;&#x43B;&#x430;&#x435;&#x442; WINDOW_UPDATE &#x441;&#x43A;&#x432;&#x43E;&#x437;&#x44C; &#x441;&#x435;&#x431;&#x44F;. Envoy &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; downstream DATA &#x432; &#x440;&#x43E;&#x43B;&#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; endpoint &#x438; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; upstream DATA &#x443;&#x436;&#x435; &#x43F;&#x43E; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x43C;&#x443; connection &#x432; &#x440;&#x43E;&#x43B;&#x438; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x433;&#x43E; endpoint.</p>
<p>&#x42D;&#x442;&#x43E; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x445;&#x43E;&#x434; &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F;. &#x41F;&#x440;&#x435;&#x434;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435;, &#x447;&#x442;&#x43E; inference &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x43E;&#x442;&#x434;&#x430;&#x451;&#x442; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; Envoy, &#x430; &#x43C;&#x43E;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; &#x440;&#x435;&#x434;&#x43A;&#x43E;. Upstream window &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x44B;&#x43C;, &#x43F;&#x43E;&#x43A;&#x430; downstream sender &#x443;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x43A;&#x440;&#x435;&#x434;&#x438;&#x442; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x438; memory watermark &#x448;&#x43B;&#x44E;&#x437;&#x430;. &#x41E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x430;&#x44F; &#x43A;&#x430;&#x440;&#x442;&#x438;&#x43D;&#x430; &#x442;&#x43E;&#x436;&#x435; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x430;: &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x433;&#x43E;&#x442;&#x43E;&#x432; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C;, &#x43D;&#x43E; upstream connection &#x437;&#x430;&#x441;&#x442;&#x43E;&#x43F;&#x43E;&#x440;&#x435;&#x43D; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;&#x43C;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x435; &#x43D;&#x435; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x430;&#x435;&#x442; receive buffer.</p>
<p>&#x423; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x432;&#x430; &#x43B;&#x438;&#x43C;&#x438;&#x442;&#x430;: stream window &#x438; connection window. &#x41F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;&#x437;&#x443;&#x435;&#x442; &#x434;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; RPC, &#x432;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x434;&#x435;&#x43B;&#x438;&#x442;&#x441;&#x44F; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x432;&#x441;&#x435;&#x43C;&#x438; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430;&#x43C;&#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;. &#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x434;&#x438;&#x43D; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x43B; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x442;&#x44C; stream credit, &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x435; stream &#x442;&#x435;&#x43E;&#x440;&#x435;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x438;&#x442;&#x44C;. &#x41A;&#x43E;&#x433;&#x434;&#x430; &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43D; connection credit, &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43A;&#x430; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x430; &#x448;&#x438;&#x440;&#x435;. &#x41D;&#x430; &#x43F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x43A;&#x435; &#x441;&#x44E;&#x434;&#x430; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x44E;&#x442;&#x441;&#x44F; scheduling, user-space buffers &#x438; event loop, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43E;&#x434;&#x438;&#x43D; &#x441;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; &#x43E;&#x43A;&#x43D;&#x430; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x443;.</p>
<p>RFC &#x437;&#x430;&#x434;&#x430;&#x451;&#x442; &#x43D;&#x430;&#x447;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; 65 535 &#x43E;&#x43A;&#x442;&#x435;&#x442;&#x43E;&#x432; &#x434;&#x43B;&#x44F; &#x43D;&#x43E;&#x432;&#x44B;&#x445; stream &#x438; connection &#x434;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x445; SETTINGS/WINDOW_UPDATE, &#x43D;&#x43E; &#x440;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x432;&#x43F;&#x440;&#x430;&#x432;&#x435; &#x440;&#x435;&#x43A;&#x43B;&#x430;&#x43C;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x434;&#x440;&#x443;&#x433;&#x438;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F;. &#x412; &#x430;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; Envoy v3 &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x44B; <code>initial_stream_window_size</code> &#x438; <code>initial_connection_window_size</code> &#x43D;&#x430;&#x441;&#x442;&#x440;&#x430;&#x438;&#x432;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x434;&#x43B;&#x44F; downstream &#x438; upstream. &#x421;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x441;&#x438;&#x43D;&#x442;&#x430;&#x43A;&#x441;&#x438;&#x441; &#x441; &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x435;&#x439;: latest-&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43D;&#x43E;&#x432;&#x44B;&#x439; &#x440;&#x435;&#x43B;&#x438;&#x437;.</p><style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-tab-h2fc817"><h3>&#x413;&#x434;&#x435; &#x438;&#x441;&#x43A;&#x430;&#x442;&#x44C; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43A;&#x443; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430;</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="client">&#x41A;&#x43B;&#x438;&#x435;&#x43D;&#x442;</button><button type="button" class="tab-btn" data-t="down">Downstream</button><button type="button" class="tab-btn" data-t="up">Upstream</button><button type="button" class="tab-btn" data-t="app">&#x41F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;</button></div>
<div class="panel on" data-p="client">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435;, &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; &#x43B;&#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x438; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x43B;&#x438; receive window. &#x41C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; consumer &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; DATA &#x434;&#x430;&#x436;&#x435; &#x43F;&#x440;&#x438; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x43E;&#x439; &#x441;&#x435;&#x442;&#x438;.</div><div class="panel" data-p="down">&#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; DATA &#x438; WINDOW_UPDATE &#x43D;&#x430; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x2014; gateway. &#x42D;&#x442;&#x43E; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x443;&#x440; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43C;.</div><div class="panel" data-p="up">&#x41F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443; &#x43D;&#x430; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x438; gateway &#x2014; inference. &#x41E;&#x43A;&#x43D;&#x430; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B; &#x43E;&#x442; downstream.</div><div class="panel" data-p="app">&#x41F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x435;&#x441;&#x441; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432;, &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x435; worker &#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; outcome. &#x41E;&#x434;&#x43D;&#x438;&#x445; &#x43A;&#x430;&#x434;&#x440;&#x43E;&#x432; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x430; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E;.</div>
<script>(function(){var r=document.getElementById('ks-tab-h2fc817');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-02-8e0dbc17.webp" class="kg-image" alt="HTTP/2 flow control &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x437;&#x430; API gateway" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/http2-flow-control-llm-streaming-inline-02-8e0dbc17.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/http2-flow-control-llm-streaming-inline-02-8e0dbc17.webp 1000w, https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-02-8e0dbc17.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="evidence-capture">&#x421;&#x43E;&#x431;&#x438;&#x440;&#x430;&#x435;&#x43C; evidence bundle &#x434;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</h2>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x439; canary-&#x441;&#x435;&#x441;&#x441;&#x438;&#x438; &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x438;&#x434;&#x435;&#x43D;&#x442;&#x438;&#x447;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43F;&#x443;&#x442;&#x438;: &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x439; IP, gateway pod &#x438;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;, upstream endpoint, connection ID &#x438; stream ID. &#x411;&#x435;&#x437; &#x44D;&#x442;&#x43E;&#x439; &#x441;&#x432;&#x44F;&#x437;&#x43A;&#x438; &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x44C; WINDOW_UPDATE &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x441; TTFT &#x434;&#x440;&#x443;&#x433;&#x43E;&#x433;&#x43E;. &#x414;&#x43B;&#x44F; long-lived stream &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x430;&#x436;&#x43D;&#x43E; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; fresh connection: reuse &#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; SETTINGS &#x438; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442; &#x43D;&#x430;&#x43A;&#x43E;&#x43F;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;.</p>
<p>&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435; negotiated protocol &#x438; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x445; &#x431;&#x430;&#x439;&#x442;&#x43E;&#x432;. <code>curl</code> &#x443;&#x434;&#x43E;&#x431;&#x435;&#x43D; &#x434;&#x43B;&#x44F; SSE &#x438;&#x43B;&#x438; &#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x433;&#x43E; HTTP API; &#x434;&#x43B;&#x44F; gRPC &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; transport events, &#x43B;&#x438;&#x431;&#x43E; <code>grpcurl</code> &#x434;&#x43B;&#x44F; &#x444;&#x443;&#x43D;&#x43A;&#x446;&#x438;&#x43E;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438;. &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x43D;&#x438;&#x436;&#x435; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; flow-control stall &#x441;&#x430;&#x43C;&#x430; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435;, &#x43D;&#x43E; &#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x435;&#x442; ALPN, headers &#x438; application timeline.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>curl -sv --http2 --no-keepalive \
  -H &apos;content-type: application/json&apos; \
  --data @request.json \
  https://canary.example/v1/chat/completions \
  -o /tmp/stream.out 2&gt;/tmp/curl.trace

date -Ins
wc -c /tmp/stream.out
sed -n &apos;1,120p&apos; /tmp/curl.trace</code></pre>
<div class="ks-canonical-code-block__caption">Fresh-connection baseline &#x434;&#x43B;&#x44F; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x432;&#x43E;&#x433;&#x43E; HTTP API</div>
</div>
<p>&#x417;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; pcap &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43D;&#x430; downstream &#x438; upstream &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430;&#x445; &#x448;&#x43B;&#x44E;&#x437;&#x430;. TLS &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; session keys &#x438;&#x43B;&#x438; capture &#x43D;&#x430; &#x434;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x442;&#x43E;&#x447;&#x43A;&#x435; &#x434;&#x43E; &#x448;&#x438;&#x444;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F;; &#x431;&#x435;&#x437; &#x440;&#x430;&#x441;&#x448;&#x438;&#x444;&#x440;&#x43E;&#x432;&#x43A;&#x438; &#x432;&#x44B; &#x443;&#x432;&#x438;&#x434;&#x438;&#x442;&#x435; TCP timing, &#x43D;&#x43E; &#x43D;&#x435; &#x442;&#x438;&#x43F;&#x44B; HTTP/2 frames. &#x41D;&#x430; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;&#x43E;&#x43C; &#x441;&#x442;&#x435;&#x43D;&#x434;&#x435; h2c &#x438;&#x43B;&#x438; debug build &#x443;&#x43F;&#x440;&#x43E;&#x449;&#x430;&#x435;&#x442; &#x430;&#x43D;&#x430;&#x43B;&#x438;&#x437;, &#x43E;&#x434;&#x43D;&#x430;&#x43A;&#x43E; &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x43D;&#x435;&#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x439; &#x440;&#x435;&#x436;&#x438;&#x43C; &#x432; production.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">capture.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>sudo tcpdump -i eth0 -s 0 -w /tmp/downstream.pcap &apos;host 198.51.100.24&apos;
sudo tcpdump -i eth1 -s 0 -w /tmp/upstream.pcap &apos;host 10.42.7.19&apos;

tshark -r /tmp/downstream.pcap -Y &apos;http2.type == 0 || http2.type == 8&apos;
tshark -r /tmp/upstream.pcap   -Y &apos;http2.type == 0 || http2.type == 8&apos;</code></pre>
<div class="ks-canonical-code-block__caption">&#x414;&#x432;&#x430; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B;&#x445; capture &#x434;&#x43B;&#x44F; hop-by-hop &#x441;&#x440;&#x430;&#x432;&#x43D;&#x435;&#x43D;&#x438;&#x44F;</div>
</div>
<p>&#x418;&#x449;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; DATA &#x2192; &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43D;&#x438;&#x435; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x43E;&#x433;&#x43E; credit &#x2192; &#x43F;&#x430;&#x443;&#x437;&#x430; &#x2192; WINDOW_UPDATE &#x2192; &#x432;&#x43E;&#x437;&#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; DATA. &#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x435;&#x451; &#x43D;&#x435; &#x441;&#x43E; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x435;&#x439; throughput, &#x430; &#x441; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432;&#x43E;&#x439; &#x43F;&#x430;&#x443;&#x437;&#x43E;&#x439; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430;. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x430;&#x443;&#x437;&#x430; &#x432; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x438; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x440;&#x430;&#x43D;&#x44C;&#x448;&#x435; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43A;&#x438;, &#x43E;&#x43A;&#x43D;&#x43E; &#x43B;&#x438;&#x448;&#x44C; &#x43E;&#x442;&#x440;&#x430;&#x436;&#x430;&#x435;&#x442; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x435; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x44B;&#x448;&#x435; &#x43F;&#x43E; &#x441;&#x442;&#x435;&#x43A;&#x443;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-03-52f3d5a4.webp" class="kg-image" alt="HTTP/2 flow control &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x437;&#x430; API gateway" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/http2-flow-control-llm-streaming-inline-03-52f3d5a4.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/http2-flow-control-llm-streaming-inline-03-52f3d5a4.webp 1000w, https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-03-52f3d5a4.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="four-gates">&#x427;&#x435;&#x442;&#x44B;&#x440;&#x435; gate: frame, proxy, consumer &#x438; application</h2>
<p>&#x420;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x43E; &#x432;&#x435;&#x441;&#x442;&#x438; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x44C;&#x43C;&#x44F; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430;&#x43C;&#x438;. Frame gate &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;, &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43B;&#x438; sender &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43B; stream &#x438;&#x43B;&#x438; connection credit. &#x41D;&#x443;&#x436;&#x43D;&#x44B; DATA &#x438; WINDOW_UPDATE &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; connection, &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x438; &#x43E;&#x431;&#x449;&#x438;&#x439; timeline. &#x421;&#x430;&#x43C;&#x43E; &#x43D;&#x430;&#x43B;&#x438;&#x447;&#x438;&#x435; WINDOW_UPDATE &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;: &#x44D;&#x442;&#x43E; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x44B; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x430;, &#x430; &#x43D;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430;.</p>
<p>Proxy gate &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442;, &#x433;&#x434;&#x435; Envoy &#x43F;&#x440;&#x438;&#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x43B; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x435; &#x438; &#x432;&#x44B;&#x440;&#x43E;&#x441;&#x43B;&#x438; &#x43B;&#x438; &#x431;&#x443;&#x444;&#x435;&#x440;&#x44B;. &#x412; &#x441;&#x442;&#x430;&#x442;&#x438;&#x441;&#x442;&#x438;&#x43A;&#x435; Envoy &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B; counters &#x441;&#x435;&#x43C;&#x435;&#x439;&#x441;&#x442;&#x432;&#x430; <code>downstream_flow_control_paused_reading_total</code>, <code>upstream_flow_control_paused_reading_total</code> &#x438; <code>upstream_flow_control_backed_up_total</code>, &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x43D;&#x438; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B; &#x432; &#x432;&#x430;&#x448;&#x435;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; &#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;. &#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x434;&#x435;&#x43B;&#x44C;&#x442;&#x443; &#x43D;&#x430; canary, &#x430; &#x43D;&#x435; &#x430;&#x431;&#x441;&#x43E;&#x43B;&#x44E;&#x442;&#x43D;&#x43E;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43C;&#x435;&#x441;&#x44F;&#x446;&#x435;&#x432; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x44B;.</p>
<p>Consumer gate &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x442;&#x435;&#x43B;&#x44C; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; stream. &#x412; gRPC &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x441;&#x43E;&#x43E;&#x431;&#x449;&#x435;&#x43D;&#x438;&#x44F; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x443; framework, &#x430; &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x443;&#x44E; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43A;&#x443; &#x43F;&#x43E; &#x441;&#x435;&#x442;&#x438;; &#x43E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; <a href="https://grpc.io/docs/guides/flow-control/?ref=kingservers.com">&#x440;&#x443;&#x43A;&#x43E;&#x432;&#x43E;&#x434;&#x441;&#x442;&#x432;&#x43E; gRPC &#x43F;&#x43E; flow control</a> &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x440;&#x435;&#x434;&#x443;&#x43F;&#x440;&#x435;&#x436;&#x434;&#x430;&#x435;&#x442; &#x43E; &#x432;&#x437;&#x430;&#x438;&#x43C;&#x43D;&#x43E;&#x439; &#x431;&#x43B;&#x43E;&#x43A;&#x438;&#x440;&#x43E;&#x432;&#x43A;&#x435; &#x43F;&#x440;&#x438; &#x440;&#x443;&#x447;&#x43D;&#x43E;&#x43C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x438;, &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x435; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x44B; &#x43C;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x438;&#x448;&#x443;&#x442; &#x438; &#x43D;&#x435; &#x447;&#x438;&#x442;&#x430;&#x44E;&#x442;. &#x414;&#x43B;&#x44F; SSE &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435;, &#x43D;&#x435; &#x431;&#x443;&#x444;&#x435;&#x440;&#x438;&#x437;&#x443;&#x435;&#x442; &#x43B;&#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x439; SDK, reverse proxy &#x438;&#x43B;&#x438; UI-&#x441;&#x43B;&#x43E;&#x439;.</p>
<p>Application gate &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x442;&#x440;&#x430;&#x43D;&#x441;&#x43F;&#x43E;&#x440;&#x442; &#x441; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;&#x43E;&#x43C;: TTFT, &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x43F;&#x430;&#x443;&#x437;, &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x451;&#x43D;&#x43D;&#x44B;&#x445; stream, &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x44F; inference slot &#x438; &#x434;&#x43E;&#x43B;&#x44F; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x451;&#x43D;&#x43D;&#x44B;&#x445; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432;. &#x41F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; frame gate &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x44D;&#x442;&#x438;&#x445; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;, &#x43D;&#x43E; &#x43D;&#x435; &#x431;&#x438;&#x437;&#x43D;&#x435;&#x441;-&#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;.</p><div class="ks-widget" id="ks-sel-fcgate2"><h3>&#x41A;&#x430;&#x43A;&#x43E;&#x439; gate &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C;</h3>
<label>&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;</label><select data-s><option value="one">&#x417;&#x430;&#x432;&#x438;&#x441; &#x43E;&#x434;&#x438;&#x43D; stream</option><option value="all">&#x417;&#x430;&#x43C;&#x438;&#x440;&#x430;&#x44E;&#x442; &#x432;&#x441;&#x435; stream &#x43D;&#x430; connection</option><option value="proxy">&#x41F;&#x430;&#x443;&#x437;&#x430; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x447;&#x435;&#x440;&#x435;&#x437; gateway</option><option value="gpu">Gateway &#x43E;&#x442;&#x434;&#x430;&#x451;&#x442; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x440;&#x43E;&#x432;&#x43D;&#x43E;, &#x43D;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432; &#x43D;&#x435;&#x442;</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-fcgate2');if(!r)return;var m={"one":"Начните со stream window и скорости чтения конкретного consumer.","all":"Проверьте connection window, event loop и общий memory watermark.","proxy":"Снимите отдельные traces downstream и upstream: посредник завершает два независимых HTTP/2 hop.","gpu":"Flow control пока не доказан: проверьте scheduler, очередь inference и генерацию токенов."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-04-e6a40110.webp" class="kg-image" alt="HTTP/2 flow control &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x437;&#x430; API gateway" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/http2-flow-control-llm-streaming-inline-04-e6a40110.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/http2-flow-control-llm-streaming-inline-04-e6a40110.webp 1000w, https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-04-e6a40110.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="envoy-config">&#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; Envoy: &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x43C; &#x43E;&#x434;&#x43D;&#x43E; &#x43E;&#x43A;&#x43D;&#x43E; &#x438; &#x441;&#x447;&#x438;&#x442;&#x430;&#x435;&#x43C; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C;</h2>
<p>&#x412; Envoy downstream &#x438; upstream HTTP/2 options &#x43F;&#x440;&#x438;&#x43D;&#x430;&#x434;&#x43B;&#x435;&#x436;&#x430;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x43C; &#x43E;&#x431;&#x44A;&#x435;&#x43A;&#x442;&#x430;&#x43C; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;. &#x42D;&#x442;&#x43E; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;: &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; receive window &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x43E;&#x43C; hop. &#x41E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x44D;&#x442;&#x43E; &#x43B;&#x43E;&#x432;&#x443;&#x448;&#x43A;&#x430;: &#x43F;&#x440;&#x430;&#x432;&#x43A;&#x430; upstream &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x430; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x43B; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; downstream response.</p>
<p>&#x41D;&#x438;&#x436;&#x435; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D; &#x444;&#x440;&#x430;&#x433;&#x43C;&#x435;&#x43D;&#x442; v3 API &#x434;&#x43B;&#x44F; upstream cluster. &#x41E;&#x43D; &#x434;&#x435;&#x43C;&#x43E;&#x43D;&#x441;&#x442;&#x440;&#x438;&#x440;&#x443;&#x435;&#x442; &#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;, &#x430; &#x43D;&#x435; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x430;. &#x410;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; Envoy &#x443;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x439; &#x434;&#x438;&#x430;&#x43F;&#x430;&#x437;&#x43E;&#x43D; &#x434;&#x43E; 2<sup>31</sup>&#x2212;1 &#x438; &#x43F;&#x440;&#x435;&#x434;&#x443;&#x43F;&#x440;&#x435;&#x436;&#x434;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; window &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D; &#x441; buffering. &#x41F;&#x435;&#x440;&#x435;&#x434; rollout &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; config dump &#x438; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x430;&#x448;&#x435;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438;; legacy &#x43F;&#x43E;&#x43B;&#x435; <code>http2_protocol_options</code> &#x43D;&#x430; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435; cluster &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; typed extension options.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">yaml</span><span class="ks-canonical-code-block__filename">envoy-http2-canary.yaml</span></div>
<pre class="ks-canonical-code-block__pre"><code>typed_extension_protocol_options:
  envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
    &quot;@type&quot;: type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
    explicit_http_config:
      http2_protocol_options:
        initial_stream_window_size: 1048576
        initial_connection_window_size: 4194304</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; upstream HTTP/2 &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44F;</div>
</div>
<p>&#x41D;&#x435; &#x43A;&#x43E;&#x43F;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x44D;&#x442;&#x438; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x43A;&#x430;&#x43A; &#xAB;&#x43E;&#x43F;&#x442;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435;&#xBB;. &#x41E;&#x446;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x432;&#x435;&#x440;&#x445;&#x43D;&#x44E;&#x44E; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438;: &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x445; connections &#xD7; connection budget &#x43F;&#x43B;&#x44E;&#x441; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x445; streams &#xD7; stream budget, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; L7 buffers, &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x44B;, TLS &#x438; allocator overhead. Window &#x43D;&#x435; &#x432;&#x441;&#x435;&#x433;&#x434;&#x430; &#x440;&#x430;&#x432;&#x435;&#x43D; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438; &#x431;&#x430;&#x439;&#x442; &#x432; &#x431;&#x430;&#x439;&#x442;, &#x43D;&#x43E; &#x440;&#x43E;&#x441;&#x442; &#x43B;&#x438;&#x43C;&#x438;&#x442;&#x43E;&#x432; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x435;&#x442; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x44B;&#x439; memory envelope &#x438; blast radius.</p>
<p>&#x41A;&#x430;&#x43D;&#x430;&#x440;&#x435;&#x435;&#x447;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x430;&#x432;&#x43A;&#x430; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430;, &#x43B;&#x438;&#x43C;&#x438;&#x442; RSS &#x438; stop condition. &#x41D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;: &#x43E;&#x442;&#x43A;&#x430;&#x442;&#x438;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44C;, &#x435;&#x441;&#x43B;&#x438; RSS &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x431;&#x435;&#x437; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x44F; p95 &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432;&#x43E;&#x439; &#x43F;&#x430;&#x443;&#x437;&#x44B;, &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x44E;&#x442;&#x441;&#x44F; resets &#x438;&#x43B;&#x438; gateway &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x435; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B;. &#x42D;&#x442;&#x43E; &#x432;&#x430;&#x436;&#x43D;&#x435;&#x435; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x43E;&#x433;&#x43E; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430; throughput &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; stream.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-05-7ee2f243.webp" class="kg-image" alt="HTTP/2 flow control &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x437;&#x430; API gateway" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/http2-flow-control-llm-streaming-inline-05-7ee2f243.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/http2-flow-control-llm-streaming-inline-05-7ee2f243.webp 1000w, https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-05-7ee2f243.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="canary">A/B/A canary: &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x43C; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C;, &#x430; &#x43D;&#x435; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x435;</h2>
<p>Baseline A &#x441;&#x43E;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x430; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438; &#x441; &#x434;&#x432;&#x443;&#x43C;&#x44F; &#x43A;&#x43B;&#x430;&#x441;&#x441;&#x430;&#x43C;&#x438; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430;: &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x43C; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x43C; consumer &#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x43C;. &#x424;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; advertised SETTINGS, &#x447;&#x430;&#x441;&#x442;&#x43E;&#x442;&#x443; &#x438; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440; WINDOW_UPDATE, paused-reading counters, RSS, CPU event loop, TTFT &#x438; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x43F;&#x430;&#x443;&#x437;&#x44B;. &#x41C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; consumer &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43A;&#x430;&#x43A; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;: &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x43A;&#x43D;&#x430; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x43E; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43E;&#x442;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x44C; &#x435;&#x433;&#x43E; backpressure, &#x430; &#x43D;&#x435; &#x443;&#x441;&#x442;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C;.</p>
<p>&#x412; &#x444;&#x430;&#x437;&#x435; B &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; owner. &#x415;&#x441;&#x43B;&#x438; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x430; &#x43F;&#x440;&#x43E; upstream stream window, &#x43D;&#x435; &#x442;&#x440;&#x43E;&#x433;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; connection window, &#x447;&#x438;&#x441;&#x43B;&#x43E; connections, TCP rmem &#x438; worker count. &#x418;&#x43D;&#x430;&#x447;&#x435; &#x432;&#x44B; &#x43D;&#x435; &#x43F;&#x43E;&#x439;&#x43C;&#x451;&#x442;&#x435;, &#x447;&#x442;&#x43E; &#x441;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x43B;&#x43E;. &#x41D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43E;&#x447;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44C;, model revision, prompt &#x438; sampling parameters &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x43C;&#x438;.</p>
<p>&#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;&#x430; &#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; baseline A. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x43F;&#x430;&#x443;&#x437;&#x430; &#x438; application metric &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442;&#x441;&#x44F;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x43B;&#x430; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x43E; &#x441;&#x438;&#x43B;&#x44C;&#x43D;&#x435;&#x435;. &#x415;&#x441;&#x43B;&#x438; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x441;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435; rollback, &#x432;&#x435;&#x440;&#x43E;&#x44F;&#x442;&#x43D;&#x43E;, &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B;&#x430;&#x441;&#x44C; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430;, &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x435;&#x43B;&#x441;&#x44F; cache, &#x43C;&#x438;&#x433;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43B; endpoint &#x438;&#x43B;&#x438; &#x440;&#x430;&#x441;&#x441;&#x43E;&#x441;&#x430;&#x43B;&#x430;&#x441;&#x44C; GPU queue.</p>
<p>&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x438; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x435; connections. SETTINGS_INITIAL_WINDOW_SIZE &#x432;&#x43B;&#x438;&#x44F;&#x435;&#x442; &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x435; stream &#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x435; stream, &#x430; connection-level credit &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; WINDOW_UPDATE. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x432; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x438;&#x442; &#x436;&#x438;&#x442;&#x44C; &#x441;&#x43E; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x43C; negotiated state &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x43E;&#x434;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F;. Rollout-&#x43F;&#x43B;&#x430;&#x43D; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x44F;&#x432;&#x43D;&#x43E; &#x441;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C;, &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43B;&#x438; drain, &#x438; &#x43D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x435;&#x433;&#x43E; &#x441; &#x430;&#x432;&#x430;&#x440;&#x438;&#x439;&#x43D;&#x44B;&#x43C; reset.</p><div class="ks-widget" id="ks-chk-can817a"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432; &#x43B;&#x438; canary &#x43A; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x443;</h3>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x44B; downstream &#x438; upstream SETTINGS</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x415;&#x441;&#x442;&#x44C; baseline TTFT &#x438; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x43F;&#x430;&#x443;&#x437;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x41A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x44E;&#x442;&#x441;&#x44F; RSS, &#x431;&#x443;&#x444;&#x435;&#x440;&#x44B; &#x438; resets gateway</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x41C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; &#x43E;&#x43A;&#x43D;&#x430;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x415;&#x441;&#x442;&#x44C; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; consumer &#x43A;&#x430;&#x43A; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x41E;&#x43F;&#x438;&#x441;&#x430;&#x43D; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; stop condition &#x438; rollback</label><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-can817a');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-06-211370e9.webp" class="kg-image" alt="HTTP/2 flow control &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x437;&#x430; API gateway" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/http2-flow-control-llm-streaming-inline-06-211370e9.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/http2-flow-control-llm-streaming-inline-06-211370e9.webp 1000w, https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-06-211370e9.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="memory-budget">&#x41C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; consumer: &#x43E;&#x43A;&#x43D;&#x43E; &#x43F;&#x43E;&#x43A;&#x443;&#x43F;&#x430;&#x435;&#x442; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x437;&#x430; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C;</h2>
<p>&#x411;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x43D;&#x435; &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x43C;. &#x41E;&#x43D;&#x43E; &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; sender &#x434;&#x43E;&#x43B;&#x44C;&#x448;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x434;&#x43E; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43A;&#x438; &#x438; &#x43F;&#x435;&#x440;&#x435;&#x43C;&#x435;&#x449;&#x430;&#x435;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x441;&#x43B;&#x43E;&#x44F;&#x43C;&#x438;. &#x414;&#x43B;&#x44F; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x43E;&#x433;&#x43E; burst &#x44D;&#x442;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x433;&#x43B;&#x430;&#x434;&#x438;&#x442;&#x44C; &#x43F;&#x430;&#x443;&#x437;&#x443;. &#x414;&#x43B;&#x44F; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x43B;&#x44F;&#x435;&#x442; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x435;&#x435; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x438;, &#x43D;&#x430;&#x43A;&#x43E;&#x43F;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x438;&#x442;&#x441;&#x44F;, &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x435; &#x441;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; watermark, &#x43B;&#x438;&#x43C;&#x438;&#x442; &#x431;&#x443;&#x444;&#x435;&#x440;&#x430;, timeout &#x438;&#x43B;&#x438; cancellation.</p>
<p>&#x417;&#x434;&#x435;&#x441;&#x44C; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E; &#x440;&#x430;&#x441;&#x441;&#x443;&#x436;&#x434;&#x430;&#x442;&#x44C; &#x447;&#x435;&#x440;&#x435;&#x437; &#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x44B;&#x439; budget. &#x414;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;, &#x443; &#x432;&#x430;&#x441; &#x442;&#x44B;&#x441;&#x44F;&#x447;&#x438; &#x434;&#x43E;&#x43B;&#x433;&#x438;&#x445; LLM stream, &#x447;&#x430;&#x441;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; &#x43C;&#x43E;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x441;&#x435;&#x442;&#x438;. &#x414;&#x430;&#x436;&#x435; &#x443;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x44B;&#x439; per-stream &#x437;&#x430;&#x43F;&#x430;&#x441;, &#x443;&#x43C;&#x43D;&#x43E;&#x436;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x43D;&#x430; concurrency, &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x44B;&#x439; memory envelope. &#x414;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; connection window: &#x441;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x43C;&#x430;&#x43B;&#x435;&#x43D;&#x44C;&#x43A;&#x438;&#x439; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x442;&#x44C; &#x441;&#x443;&#x434;&#x44C;&#x431;&#x443; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x445; stream, &#x441;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; &#x43E;&#x441;&#x43B;&#x430;&#x431;&#x43B;&#x44F;&#x435;&#x442; &#x440;&#x430;&#x43D;&#x43D;&#x438;&#x439; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;.</p>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x442;&#x440;&#x438; &#x440;&#x435;&#x436;&#x438;&#x43C;&#x430; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;: &#x431;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; consumer, consumer &#x441; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x441;&#x43A;&#x43E;&#x440;&#x43E;&#x441;&#x442;&#x44C;&#x44E; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x44F; &#x438; consumer, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x43B; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x441;&#x43E;&#x432;&#x441;&#x435;&#x43C;. &#x412; &#x442;&#x440;&#x435;&#x442;&#x44C;&#x435;&#x43C; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x435; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x44B;&#x439; outcome &#x447;&#x430;&#x441;&#x442;&#x43E; &#x43D;&#x435; &#xAB;&#x434;&#x43E;&#x436;&#x434;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43A;&#x43E;&#x433;&#x434;&#x430;-&#x43D;&#x438;&#x431;&#x443;&#x434;&#x44C;&#xBB;, &#x430; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; stream, &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x438;&#x442;&#x44C; backend capacity &#x438; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x430;&#x442;&#x44C; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x443;&#x44E; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x443;. &#x418;&#x43D;&#x430;&#x447;&#x435; gateway &#x443;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C;, &#x430; inference &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x443;, &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x43D;&#x438;&#x43A;&#x442;&#x43E; &#x43D;&#x435; &#x437;&#x430;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442;.</p>
<p>&#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; gRPC manual flow control, &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x443;&#x439;&#x442;&#x435; read/write loop. &#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; gRPC &#x43F;&#x43E;&#x434;&#x447;&#x451;&#x440;&#x43A;&#x438;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; framework &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; write &#x438; &#x447;&#x442;&#x43E; &#x43E;&#x431;&#x435; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x44B; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x442;&#x44C; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x435;. &#x412; SSE &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; flush &#x43D;&#x430; backend &#x438; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x44B; &#x43F;&#x43E;&#x441;&#x440;&#x435;&#x434;&#x43D;&#x438;&#x43A;&#x430;: application buffering &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x435;&#x442;&#x44C; &#x43A;&#x430;&#x43A; transport stall, &#x445;&#x43E;&#x442;&#x44F; credit &#x435;&#x449;&#x451; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x435;&#x43D;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-07-e1a291ea.webp" class="kg-image" alt="HTTP/2 flow control &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x437;&#x430; API gateway" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/http2-flow-control-llm-streaming-inline-07-e1a291ea.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/http2-flow-control-llm-streaming-inline-07-e1a291ea.webp 1000w, https://kingservers.com/blog/content/images/2026/10/http2-flow-control-llm-streaming-inline-07-e1a291ea.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="failure-modes">&#x427;&#x442;&#x43E; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x44E;&#x442; &#x437;&#x430; HTTP/2 flow-control stall</h2>
<p>&#x41F;&#x435;&#x440;&#x432;&#x430;&#x44F; &#x43B;&#x43E;&#x436;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x2014; TCP backpressure. HTTP/2 &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x432;&#x435;&#x440;&#x445; TCP, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; loss, congestion window, zero window &#x43D;&#x430; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x435; &#x438; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; receiver &#x43E;&#x441;&#x442;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x437;&#x43D;&#x430;&#x447;&#x438;&#x43C;&#x44B;&#x43C;&#x438;. &#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; <code>ss -tinm</code>, retransmits &#x438; pcap &#x441; HTTP/2 frames. &#x415;&#x441;&#x43B;&#x438; sender &#x438;&#x43C;&#x435;&#x435;&#x442; HTTP/2 credit, &#x43D;&#x43E; socket write &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x434;&#x432;&#x438;&#x433;&#x430;&#x435;&#x442;&#x441;&#x44F;, &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; protocol window &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442; transport path.</p>
<p>&#x412;&#x442;&#x43E;&#x440;&#x430;&#x44F; &#x2014; L7 buffering. &#x41D;&#x435;&#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; filters &#x442;&#x440;&#x435;&#x431;&#x443;&#x44E;&#x442; &#x442;&#x435;&#x43B;&#x43E; &#x446;&#x435;&#x43B;&#x438;&#x43A;&#x43E;&#x43C; &#x438;&#x43B;&#x438; &#x438;&#x43C;&#x435;&#x44E;&#x442; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43B;&#x438;&#x43C;&#x438;&#x442;&#x44B;. <a href="https://www.envoyproxy.io/docs/envoy/latest/faq/configuration/flow_control?ref=kingservers.com">Envoy flow-control FAQ</a> &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; listener, cluster &#x438; HTTP/2 stream limits &#x438; &#x43E;&#x442;&#x43C;&#x435;&#x447;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; non-streaming filters &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x445; body. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; transcoder, buffer filter, ext_authz body capture &#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x435; extensions.</p>
<p>&#x422;&#x440;&#x435;&#x442;&#x44C;&#x44F; &#x2014; concurrency queue. &#x41E;&#x434;&#x438;&#x43D; HTTP/2 connection &#x438;&#x43C;&#x435;&#x435;&#x442; negotiated &#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x445; streams. &#x412; <a href="https://grpc.io/docs/guides/performance/?ref=kingservers.com">gRPC performance guidance</a> &#x43E;&#x442;&#x43C;&#x435;&#x447;&#x435;&#x43D;&#x43E;, &#x447;&#x442;&#x43E; &#x43D;&#x43E;&#x432;&#x44B;&#x435; RPC &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x436;&#x434;&#x430;&#x442;&#x44C;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43B;&#x438;&#x43C;&#x438;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x438;&#x433;&#x43D;&#x443;&#x442;; &#x434;&#x43B;&#x44F; long-lived streaming &#x44D;&#x442;&#x43E; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x43E;. &#x422;&#x430;&#x43A;&#x430;&#x44F; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x432;&#x43E;&#x437;&#x43D;&#x438;&#x43A;&#x430;&#x435;&#x442; &#x434;&#x43E; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43A;&#x438; DATA &#x438; &#x43D;&#x435; &#x440;&#x430;&#x432;&#x43D;&#x430; &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43D;&#x438;&#x44E; flow-control window.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">envoy-evidence.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>curl -fsS http://127.0.0.1:9901/stats?filter=flow_control
curl -fsS http://127.0.0.1:9901/stats?filter=&apos;upstream_rq_(pending|active|tx_reset|rx_reset)&apos;
curl -fsS http://127.0.0.1:9901/config_dump &gt; /tmp/envoy-config-dump.json
sha256sum /tmp/envoy-config-dump.json</code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; counters &#x438; effective configuration Envoy</div>
</div>
<p>&#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x430;&#x44F; &#x2014; &#x441;&#x430;&#x43C;&#x430; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C;. &#x415;&#x441;&#x43B;&#x438; upstream &#x43D;&#x435; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; DATA, &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; scheduler delay, prefill, KV-cache pressure, batch composition &#x438; cancellation. &#x411;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x438; &#x441;&#x43C;&#x435;&#x448;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;: &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; downstream &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x443;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; stream, cancellation &#x43D;&#x435; &#x434;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x434;&#x43E; inference, &#x438; GPU &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x43D;&#x435;&#x43D;&#x443;&#x436;&#x43D;&#x443;&#x44E; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x44E;. &#x422;&#x43E;&#x433;&#x434;&#x430; &#x43B;&#x435;&#x447;&#x438;&#x442;&#x44C; &#x43D;&#x443;&#x436;&#x43D;&#x43E; propagation &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x44B; &#x438; ownership capacity, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43E;&#x43A;&#x43D;&#x43E;.</p><div class="ks-widget" id="ks-tab-fail817"><h3>&#x41E;&#x43A;&#x43D;&#x43E; &#x432;&#x44B;&#x440;&#x43E;&#x441;&#x43B;&#x43E;, &#x430; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x43D;&#x435; &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x43B;&#x441;&#x44F;</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="tcp">TCP</button><button type="button" class="tab-btn" data-t="filter">L7-&#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;</button><button type="button" class="tab-btn" data-t="queue">Inference</button></div>
<div class="panel on" data-p="tcp">&#x421;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; RTT, loss, retransmits &#x438; socket backpressure. &#x411;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x435; HTTP/2-&#x43E;&#x43A;&#x43D;&#x43E; &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442; &#x43F;&#x43B;&#x43E;&#x445;&#x43E;&#x439; transport path.</div><div class="panel" data-p="filter">Buffering, transcoding &#x438;&#x43B;&#x438; body inspection &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x443;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E; &#x43E;&#x442; WINDOW_UPDATE.</div><div class="panel" data-p="queue">&#x415;&#x441;&#x43B;&#x438; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B;, &#x442;&#x440;&#x430;&#x43D;&#x441;&#x43F;&#x43E;&#x440;&#x442; &#x43D;&#x435; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x438;&#x445; &#x43F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x442;&#x44C;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; scheduler &#x438; GPU queue.</div>
<script>(function(){var r=document.getElementById('ks-tab-fail817');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><h2 id="platform-choice">VPS, dedicated edge &#x438;&#x43B;&#x438; managed gateway: &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; path proof</h2>
<p>&#x41F;&#x43E;&#x43A;&#x443;&#x43F;&#x430;&#x442;&#x44C; &#x43D;&#x43E;&#x432;&#x443;&#x44E; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x443; &#x434;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430; hop &#x2014; &#x43F;&#x43B;&#x43E;&#x445;&#x43E;&#x439; procurement default. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x432; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x43E;&#x43C; SDK, &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x435; buffering &#x438;&#x43B;&#x438; GPU queue, &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43C;&#x43E;&#x449;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x43B;&#x438;&#x448;&#x44C; &#x441;&#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x443; &#x434;&#x43E;&#x440;&#x43E;&#x436;&#x435;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435;, &#x447;&#x442;&#x43E; canary &#x43E;&#x43A;&#x43D;&#x430; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; application metric &#x438; &#x447;&#x442;&#x43E; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435; rollback.</p>
<p>VPS &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; gateway &#x441; &#x443;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x44B;&#x43C; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x43E;&#x43C;, &#x430; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x442; Envoy config, telemetry &#x438; rollout. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435;, &#x43D;&#x430;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B; CPU scheduling, memory guarantee &#x438; network path. &#x414;&#x43B;&#x44F; flow-control &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x432;&#x430;&#x436;&#x43D;&#x430; &#x43D;&#x435; &#x432;&#x44B;&#x432;&#x435;&#x441;&#x43A;&#x430; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438;, &#x430; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; baseline &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x442;&#x435;&#x441;&#x442;.</p>
<p>Dedicated edge &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x43C;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D; CPU/NIC/memory control gap: &#x43D;&#x443;&#x436;&#x43D;&#x430; &#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x430;&#x44F; NUMA-&#x442;&#x43E;&#x43F;&#x43E;&#x43B;&#x43E;&#x433;&#x438;&#x44F;, &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x44B;&#x435; NIC queues, &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; memory envelope &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; failure domain. &#x426;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x2014; ownership &#x432;&#x435;&#x440;&#x441;&#x438;&#x438;, kernel, &#x43E;&#x43A;&#x43D;&#x430; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x438; rollback, &#x430; &#x43D;&#x435; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x435; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x439; latency.</p>
<p>Managed gateway &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x447;&#x430;&#x441;&#x442;&#x44C; on-call &#x438; lifecycle &#x440;&#x430;&#x431;&#x43E;&#x442;&#x44B;, &#x43D;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x442;&#x44C; negotiated SETTINGS, connection pooling &#x438; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x435;&#x43D;&#x43D;&#x438;&#x435; buffers. &#x41F;&#x435;&#x440;&#x435;&#x434; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x43E;&#x43C; &#x441;&#x43F;&#x440;&#x43E;&#x441;&#x438;&#x442;&#x435;, &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B; &#x43B;&#x438; per-hop metrics, packet evidence, config versioning &#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x44B;&#x439; canary. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432; &#x43D;&#x435;&#x442;, &#x441;&#x435;&#x440;&#x432;&#x438;&#x441; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x44B;&#x43C;, &#x43D;&#x43E; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x435;&#x442;&#x441;&#x44F; &#x443; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x439;&#x434;&#x435;&#x440;&#x430;.</p>
<p>KingServers &#x443;&#x43C;&#x435;&#x441;&#x442;&#x435;&#x43D; &#x432; &#x44D;&#x442;&#x43E;&#x439; &#x441;&#x445;&#x435;&#x43C;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; resource/control gap: &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x432;&#x44B;&#x43D;&#x435;&#x441;&#x442;&#x438; gateway &#x43D;&#x430; <a href="https://kingservers.com/vps/?ref=kingservers.com">VPS</a> &#x438;&#x43B;&#x438; <a href="https://kingservers.com/dedicated/?ref=kingservers.com">&#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;</a>, &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; &#x435;&#x433;&#x43E; failure domain &#x43E;&#x442; inference &#x438; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44C;. &#x41D;&#x43E; &#x43D;&#x43E;&#x432;&#x43E;&#x435; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; consumer, &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; L7 filter &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;.</p><div class="ks-widget" id="ks-sel-buy817"><h3>&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x43D;&#x44B;&#x439; &#x430;&#x43F;&#x433;&#x440;&#x435;&#x439;&#x434; &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;</h3>
<label>&#x427;&#x442;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43B; A/B/A canary</label><select data-s><option value="none">Application metric &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;</option><option value="mem">&#x423;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x43C;&#x441;&#x44F; &#x432; memory envelope gateway</option><option value="cpu">&#x423;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x43C;&#x441;&#x44F; &#x432; CPU/event loop &#x438; NIC path</option><option value="owner">&#x41D;&#x443;&#x436;&#x435;&#x43D; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438;, &#x43E;&#x43A;&#x43D;&#x430; &#x438; rollback</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-buy817');if(!r)return;var m={"none":"Не покупайте железо ради flow control: причина находится в другом слое.","mem":"Сначала задайте конечный per-connection budget; затем сравнивайте VPS и dedicated по гарантированной RAM и blast radius.","cpu":"После path proof сравнивайте платформы по CPU locality, NIC queues и наблюдаемости, а не по обещанию меньшей latency.","owner":"Выделенный edge ценен воспроизводимым baseline, change window и правом отката, если команда готова владеть этим контуром."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><h2 id="runbook">Production-runbook: &#x43E;&#x442; &#x430;&#x43B;&#x435;&#x440;&#x442;&#x430; &#x434;&#x43E; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x433;&#x43E; rollback</h2>
<p>&#x428;&#x430;&#x433; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x2014; &#x43A;&#x432;&#x430;&#x43B;&#x438;&#x444;&#x438;&#x446;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;. &#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; TTFT &#x438; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432;&#x443;&#x44E; &#x43F;&#x430;&#x443;&#x437;&#x443;, &#x43E;&#x442;&#x43C;&#x435;&#x442;&#x44C;&#x442;&#x435; client class, connection reuse &#x438; backend endpoint. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; healthy negative control: &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; unary &#x438;&#x43B;&#x438; streaming request &#x447;&#x435;&#x440;&#x435;&#x437; &#x442;&#x43E;&#x442; &#x436;&#x435; gateway, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43D;&#x435; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442; &#x43F;&#x430;&#x443;&#x437;&#x443;.</p>
<p>&#x428;&#x430;&#x433; &#x432;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x2014; &#x43F;&#x43E;&#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x44C; owner map. &#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; hop &#x437;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; sender, receiver, stream ID, advertised window, &#x43A;&#x442;&#x43E; &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x438; &#x43A;&#x442;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44E;. &#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; frame trace &#x438; Envoy counters &#x432; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x43E;&#x43A;&#x43D;&#x435;. &#x41D;&#x435; &#x434;&#x435;&#x43B;&#x430;&#x439;&#x442;&#x435; &#x432;&#x44B;&#x432;&#x43E;&#x434; &#x43F;&#x43E; &#x441;&#x442;&#x430;&#x440;&#x43E;&#x43C;&#x443; pcap &#x438; &#x442;&#x435;&#x43A;&#x443;&#x449;&#x435;&#x43C;&#x443; &#x434;&#x430;&#x448;&#x431;&#x43E;&#x440;&#x434;&#x443;.</p>
<p>&#x428;&#x430;&#x433; &#x442;&#x440;&#x435;&#x442;&#x438;&#x439; &#x2014; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x44C; gate. Flow-control &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x430; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x442;&#x440;&#x451;&#x445; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x439;: credit &#x434;&#x43E;&#x441;&#x442;&#x438;&#x433;&#x430;&#x435;&#x442; &#x43D;&#x443;&#x43B;&#x44F;, DATA &#x43F;&#x440;&#x435;&#x43A;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; hop, &#x43F;&#x43E;&#x441;&#x43B;&#x435; WINDOW_UPDATE DATA &#x432;&#x43E;&#x437;&#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F;. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x447;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x44B;&#x439; &#x44D;&#x43B;&#x435;&#x43C;&#x435;&#x43D;&#x442; &#x2014; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x441; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x43E;&#x439; &#x43F;&#x430;&#x443;&#x437;&#x43E;&#x439;. &#x411;&#x435;&#x437; &#x43D;&#x435;&#x433;&#x43E; &#x44D;&#x442;&#x43E; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x430;.</p>
<p>&#x428;&#x430;&#x433; &#x447;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x44B;&#x439; &#x2014; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x441;&#x442;&#x438; B-canary &#x43E;&#x434;&#x43D;&#x438;&#x43C; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x43E;&#x43C; &#x438; &#x441; &#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x44B;&#x43C; memory budget. Stop condition &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x437;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x44B;&#x43C;: &#x440;&#x43E;&#x441;&#x442; RSS, resets, downstream errors &#x438;&#x43B;&#x438; &#x434;&#x435;&#x433;&#x440;&#x430;&#x434;&#x430;&#x446;&#x438;&#x44F; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x435;&#x433;&#x43E; &#x43A;&#x43B;&#x430;&#x441;&#x441;&#x430; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x43A;&#x43D;&#x43E; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x438;&#x43D;&#x442;&#x435;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x43C;&#x443; stream, &#x430; production distribution &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;, rollout &#x43D;&#x435; &#x43E;&#x431;&#x43E;&#x441;&#x43D;&#x43E;&#x432;&#x430;&#x43D;.</p>
<p>&#x428;&#x430;&#x433; &#x43F;&#x44F;&#x442;&#x44B;&#x439; &#x2014; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; A &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x442;&#x435; &#x436;&#x435; probes. &#x421;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; rollback &#x432;&#x430;&#x436;&#x435;&#x43D; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; rollout: fresh connection, &#x442;&#x435; &#x436;&#x435; prompt &#x438; consumer profile, &#x442;&#x435; &#x436;&#x435; counters &#x438; application metrics. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; effective config &#x438; version lock, &#x438;&#x43D;&#x430;&#x447;&#x435; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; deploy &#x43D;&#x435;&#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x43E; &#x432;&#x435;&#x440;&#x43D;&#x451;&#x442; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x435; &#x43E;&#x43A;&#x43D;&#x430;.</p>
<p>&#x41D;&#x430;&#x43A;&#x43E;&#x43D;&#x435;&#x446;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44E; bottleneck. &#x423;&#x431;&#x440;&#x430;&#x432; flow-control stall, &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x44C; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;: TCP, event loop, TLS, L7 filter, GPU scheduler &#x438;&#x43B;&#x438; storage. &#x423;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x439; &#x442;&#x44E;&#x43D;&#x438;&#x43D;&#x433; &#x2014; &#x44D;&#x442;&#x43E; &#x43D;&#x435; &#xAB;&#x432;&#x441;&#x435; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x438; &#x437;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x435;&#xBB;, &#x430; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x438;&#x43C;&#x430;&#x44F; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x430;&#x44F; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x430; &#x43E;&#x442; frame &#x434;&#x43E; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;&#x430; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44F;.</p><h2 id="conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430;</h2>
<p>HTTP/2 flow control &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x442;&#x435;&#x43B;&#x44F; &#x438; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; &#x440;&#x435;&#x441;&#x443;&#x440;&#x441;&#x44B; &#x43C;&#x435;&#x436;&#x434;&#x443; stream, &#x43D;&#x43E; &#x43D;&#x430; LLM streaming &#x43E;&#x43D; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x43F;&#x440;&#x43E;&#x44F;&#x432;&#x438;&#x442;&#x44C;&#x441;&#x44F; &#x43A;&#x430;&#x43A; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x430;&#x44F; &#x43F;&#x430;&#x443;&#x437;&#x430; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;&#x43C;&#x438;. &#x41A;&#x43B;&#x44E;&#x447; &#x43A; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x435; &#x2014; &#x43D;&#x435; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440; &#x43E;&#x43A;&#x43D;&#x430; &#x441;&#x430;&#x43C; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435;, &#x430; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430;: &#x43A;&#x430;&#x434;&#x440;&#x44B; &#x43D;&#x430; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x43C; hop, &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; gateway, &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; consumer &#x438; application outcome.</p>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; fresh-connection baseline, &#x441;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; downstream &#x438; upstream &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; A/B/A canary &#x438; &#x43F;&#x43E;&#x441;&#x447;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; &#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x44B;&#x439; memory envelope. &#x423;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x43A;&#x43D;&#x430; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x43E;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x43D;&#x43E; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E; &#x443;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43A;&#x443; &#x438; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x443;&#x44E; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x443; &#x431;&#x435;&#x437; &#x440;&#x43E;&#x441;&#x442;&#x430; resets &#x438; &#x434;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43D;&#x430; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C;. &#x412;&#x43E; &#x432;&#x441;&#x435;&#x445; &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x44F;&#x445; &#x438;&#x449;&#x438;&#x442;&#x435; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; &#x432; TCP, &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x430;&#x445;, concurrency queue &#x438;&#x43B;&#x438; inference.</p>
<p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x448;&#x430;&#x433; &#x43F;&#x440;&#x43E;&#x441;&#x442;: &#x432;&#x43E;&#x437;&#x44C;&#x43C;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x439; stream, &#x441;&#x43E;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; evidence bundle &#x43F;&#x43E; runbook &#x438; &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; &#x43C;&#x435;&#x441;&#x442;&#x43E; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43A;&#x438; &#x434;&#x43E; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E; change window. &#x415;&#x441;&#x43B;&#x438; path proof &#x443;&#x43A;&#x430;&#x436;&#x435;&#x442; &#x43D;&#x430; &#x43D;&#x435;&#x445;&#x432;&#x430;&#x442;&#x43A;&#x443; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x43E;&#x433;&#x43E; CPU, NIC &#x438;&#x43B;&#x438; memory budget, &#x442;&#x43E;&#x433;&#x434;&#x430; &#x443;&#x436;&#x435; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x441;&#x43C;&#x44B;&#x441;&#x43B; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x44C; gateway &#x43D;&#x430; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; VPS &#x438;&#x43B;&#x438; dedicated edge &#x438; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x43B;&#x44F;&#x442;&#x44C; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x44B;&#x439; baseline.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[TCP buffers для LLM streaming: rmem, wmem и диагностика backpressure]]></title><description><![CDATA[Практический runbook по TCP buffers для LLM streaming: как читать ss -tinm, отличить rmem/wmem от backpressure, настроить canary и выполнить rollback.]]></description><link>https://kingservers.com/blog/tcp-buffer-autotuning-llm-streaming/</link><guid isPermaLink="false">6acb4481aff2afac25354de8</guid><category><![CDATA[Сетевые протоколы]]></category><category><![CDATA[Linux]]></category><category><![CDATA[LLM]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 16 Oct 2026 08:10:43 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-hero-7c8fe6af.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#quick-verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x432;&#x44B;&#x432;&#x43E;&#x434;: &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; buffer &#x43D;&#x435; &#x440;&#x430;&#x432;&#x435;&#x43D; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E;&#x43C;&#x443; streaming</a></li>
<li><a href="#buffer-path">&#x41A;&#x430;&#x43A; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; rmem, &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x438; wmem</a></li>
<li><a href="#baseline">&#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; baseline: sysctl, socket memory &#x438; TCP_INFO</a></li>
<li><a href="#read-ss">&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; ss -tinm &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x44B;&#x445; &#x432;&#x44B;&#x432;&#x43E;&#x434;&#x43E;&#x432;</a></li>
<li><a href="#autotuning">Autotuning &#x438; bandwidth-delay product: &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x43E;&#x442;&#x43E;&#x43B;&#x43E;&#x43A; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43C;&#x430;&#x43B;</a></li>
<li><a href="#memory-pressure">Memory pressure: &#x43F;&#x43E;&#x447;&#x435;&#x43C;&#x443; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x435; maxima &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x443;&#x445;&#x443;&#x434;&#x448;&#x438;&#x442;&#x44C; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;</a></li>
<li><a href="#app-backpressure">&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; TCP &#x43E;&#x442; proxy buffering &#x438; application backpressure</a></li>
<li><a href="#kubernetes">Kubernetes: Pod sysctl, hostNetwork &#x438; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;</a></li>
<li><a href="#canary">Canary &#x438; rollback: &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; owner &#x437;&#x430; &#x440;&#x430;&#x437;</a></li>
<li><a href="#decision">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; autotuning, &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x44C; socket &#x438;&#x43B;&#x438; &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; gateway</a></li>
<li><a href="#runbook">Production-runbook: &#x43E;&#x442; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;&#x430; &#x434;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;</a></li>
<li><a href="#conclusion">&#x418;&#x442;&#x43E;&#x433;: &#x431;&#x443;&#x444;&#x435;&#x440; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x442;&#x44C; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;, &#x430; &#x43D;&#x435; &#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;</a></li>
</ul></div>

</div>&#x422;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x438;&#x434;&#x443;&#x442; &#x440;&#x44B;&#x432;&#x43A;&#x430;&#x43C;&#x438;, streaming-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x437;&#x430;&#x432;&#x438;&#x441;&#x430;&#x44E;&#x442;, &#x430; CPU &#x438; GPU &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x44F;&#x442; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x43C;&#x438; &#x2014; &#x432; &#x442;&#x430;&#x43A;&#x43E;&#x439; &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442; &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x43E;&#x431;&#x432;&#x438;&#x43D;&#x438;&#x442;&#x44C; TCP buffers. &#x41D;&#x43E; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; rmem &#x438;&#x43B;&#x438; wmem &#x43D;&#x435; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x44F;&#x435;&#x442; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x438; &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x432;&#x448;&#x438;&#x439;&#x441;&#x44F; event loop. &#x41D;&#x443;&#x436;&#x43D;&#x430; &#x441;&#x432;&#x44F;&#x437;&#x43A;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432; &#x43E;&#x442; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430; &#x434;&#x43E; time to first token &#x438; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x44F; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;. &#x41D;&#x438;&#x436;&#x435; &#x2014; production-runbook, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x44C; Linux gateway &#x431;&#x435;&#x437; &#x43C;&#x430;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; sysctl &#x438; &#x43D;&#x435;&#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x433;&#x43E; &#x440;&#x430;&#x441;&#x445;&#x43E;&#x434;&#x430; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438;.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-hero-7c8fe6af.webp" alt="TCP buffers &#x434;&#x43B;&#x44F; LLM streaming: rmem, wmem &#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; backpressure"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="quick-verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x432;&#x44B;&#x432;&#x43E;&#x434;: &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; buffer &#x43D;&#x435; &#x440;&#x430;&#x432;&#x435;&#x43D; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E;&#x43C;&#x443; streaming</h2>
<p>&#x423; TCP-&#x431;&#x443;&#x444;&#x435;&#x440;&#x43E;&#x432; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x430;&#x44F; &#x437;&#x430;&#x434;&#x430;&#x447;&#x430;: &#x441;&#x433;&#x43B;&#x430;&#x434;&#x438;&#x442;&#x44C; &#x440;&#x430;&#x437;&#x43D;&#x438;&#x446;&#x443; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x441;&#x43A;&#x43E;&#x440;&#x43E;&#x441;&#x442;&#x44C;&#x44E; &#x441;&#x435;&#x442;&#x438; &#x438; &#x442;&#x435;&#x43C;&#x43F;&#x43E;&#x43C;, &#x441; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x43C; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; &#x438;&#x43B;&#x438; &#x43F;&#x438;&#x448;&#x435;&#x442; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;. &#x423; LLM API &#x44D;&#x442;&#x430; &#x440;&#x430;&#x437;&#x43D;&#x438;&#x446;&#x430; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x430;. &#x417;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x43C;, &#x430; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x436;&#x438;&#x432;&#x451;&#x442; &#x434;&#x435;&#x441;&#x44F;&#x442;&#x43A;&#x438; &#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434;; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x438;&#x434;&#x443;&#x442; &#x43C;&#x430;&#x43B;&#x435;&#x43D;&#x44C;&#x43A;&#x438;&#x43C;&#x438; &#x43F;&#x43E;&#x440;&#x446;&#x438;&#x44F;&#x43C;&#x438;, &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; &#x438;&#x445; &#x43D;&#x435;&#x440;&#x430;&#x432;&#x43D;&#x43E;&#x43C;&#x435;&#x440;&#x43D;&#x43E;, gateway &#x43F;&#x430;&#x440;&#x430;&#x43B;&#x43B;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43E;&#x431;&#x441;&#x43B;&#x443;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x442;&#x44B;&#x441;&#x44F;&#x447;&#x438; &#x442;&#x430;&#x43A;&#x438;&#x445; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x432;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43E;&#x434;&#x438;&#x43D; &#x438; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x2014; &#x43F;&#x430;&#x443;&#x437;&#x430; &#x432; &#x432;&#x44B;&#x434;&#x430;&#x447;&#x435; &#x2014; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x438; &#x43F;&#x440;&#x438; &#x442;&#x435;&#x441;&#x43D;&#x43E;&#x43C; receive window, &#x438; &#x43F;&#x440;&#x438; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x435;, &#x438; &#x43F;&#x440;&#x438; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x432;&#x448;&#x435;&#x43C;&#x441;&#x44F; event loop.</p>
<p>&#x413;&#x43B;&#x430;&#x432;&#x43D;&#x43E;&#x435; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x43E;: &#x43D;&#x435; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x441; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x44F; <code>tcp_rmem</code> &#x438; <code>tcp_wmem</code>. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435;, &#x447;&#x442;&#x43E; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x432; socket memory &#x438; &#x432;&#x43B;&#x438;&#x44F;&#x435;&#x442; &#x43D;&#x430; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; outcome: time to first token, &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x430;&#x443;&#x437;&#x44B;, &#x434;&#x43E;&#x43B;&#x44E; &#x43E;&#x431;&#x43E;&#x440;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x445; streams &#x438;&#x43B;&#x438; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;&#x435; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x43E;&#x43A;&#x435;&#x442; &#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x435;&#x43D;, &#x430; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; inference &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;, &#x43D;&#x43E;&#x432;&#x44B;&#x439; sysctl &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x430;&#x441; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438;.</p>
<p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; default &#x2014; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C; autotuning, &#x441;&#x43E;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43D;&#x430; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x445; &#x438; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; &#x43E;&#x434;&#x438;&#x43D; &#x441;&#x43B;&#x43E;&#x439; &#x43D;&#x430; canary. &#x420;&#x443;&#x447;&#x43D;&#x43E;&#x439; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x43B;&#x438;&#x448;&#x44C; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430;. &#x414;&#x43B;&#x44F; gateway &#x43D;&#x430; VPS &#x438;&#x43B;&#x438; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x435; &#x43A;&#x43E;&#x43C;&#x43C;&#x435;&#x440;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x430; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x435; &#x441; &#xAB;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; RAM&#xBB;, &#x430; &#x441; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x433;&#x43E; kernel/NIC baseline, &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x433;&#x43E; &#x43B;&#x438;&#x43C;&#x438;&#x442;&#x430; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x438; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x43E;&#x433;&#x43E; rollback.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-01-b3d2dd28.webp" class="kg-image" alt="TCP buffers &#x434;&#x43B;&#x44F; LLM streaming: rmem, wmem &#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; backpressure" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-buffer-autotuning-llm-streaming-inline-01-b3d2dd28.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-buffer-autotuning-llm-streaming-inline-01-b3d2dd28.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-01-b3d2dd28.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="buffer-path">&#x41A;&#x430;&#x43A; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; rmem, &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x438; wmem</h2>
<p>&#x412;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; NIC &#x438; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x441;&#x442;&#x435;&#x43A;, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x432; receive buffer &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430;. &#x41F;&#x43E;&#x43A;&#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x435; &#x432;&#x44B;&#x437;&#x432;&#x430;&#x43B;&#x43E; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x435;, &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x437;&#x430;&#x43D;&#x44F;&#x442;&#x43E;&#x439;, &#x430; TCP &#x440;&#x435;&#x433;&#x443;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x442; advertised window. &#x41D;&#x430; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x435;&#x43C; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x432; socket; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x435;&#x449;&#x451; &#x436;&#x434;&#x451;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x438; &#x438;&#x43B;&#x438; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x44F; peer. &#x42D;&#x442;&#x43E; &#x43D;&#x435; &#x435;&#x434;&#x438;&#x43D;&#x430;&#x44F; &#xAB;&#x441;&#x435;&#x442;&#x435;&#x432;&#x430;&#x44F; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;&#xBB;, &#x430; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x439; &#x441; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x43C;&#x438; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430;&#x43C;&#x438;.</p>
<p><code>tcp_rmem</code> &#x438; <code>tcp_wmem</code> &#x437;&#x430;&#x434;&#x430;&#x44E;&#x442; &#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438; <em>min/default/max</em> &#x434;&#x43B;&#x44F; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x434;&#x431;&#x43E;&#x440;&#x430;. &#x41F;&#x43E; &#x430;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; <a href="https://kernel.org/doc/html/latest/networking/ip-sysctl.html?ref=kingservers.com">&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; Linux kernel</a>, receive autotuning &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43C;&#x430;&#x43A;&#x441;&#x438;&#x43C;&#x443;&#x43C;&#x43E;&#x43C; <code>tcp_rmem[2]</code>; &#x44F;&#x432;&#x43D;&#x44B;&#x439; <code>SO_RCVBUF</code> &#x434;&#x43B;&#x44F; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; autotuning &#x435;&#x433;&#x43E; receive buffer. &#x42D;&#x442;&#x43E; &#x432;&#x430;&#x436;&#x43D;&#x430;&#x44F; &#x43B;&#x43E;&#x432;&#x443;&#x448;&#x43A;&#x430;: &#xAB;&#x442;&#x43E;&#x447;&#x435;&#x447;&#x43D;&#x430;&#x44F; &#x43E;&#x43F;&#x442;&#x438;&#x43C;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F;&#xBB; &#x432; &#x431;&#x438;&#x431;&#x43B;&#x438;&#x43E;&#x442;&#x435;&#x43A;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43D;&#x435;&#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x43E; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x440;&#x430;&#x437;&#x443;&#x43C;&#x43D;&#x43E;&#x435; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x44F;&#x434;&#x440;&#x430;.</p>
<p>&#x41F;&#x440;&#x435;&#x434;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; SSE-&#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;. Gateway &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x43E;&#x442; backend &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E;, &#x43D;&#x43E; &#x431;&#x440;&#x430;&#x443;&#x437;&#x435;&#x440; &#x438;&#x43B;&#x438; &#x43A;&#x43E;&#x440;&#x43F;&#x43E;&#x440;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x439; proxy &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x440;&#x44B;&#x432;&#x43A;&#x430;&#x43C;&#x438;. &#x420;&#x430;&#x441;&#x442;&#x451;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43A;&#x438; downstream-&#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430;. &#x423;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432; <code>wmem</code>, &#x432;&#x44B; &#x43D;&#x435; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x2014; &#x43B;&#x438;&#x448;&#x44C; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x438;&#x442;&#x435; gateway &#x434;&#x43E;&#x43B;&#x44C;&#x448;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C; &#x435;&#x433;&#x43E; &#x43E;&#x442;&#x441;&#x442;&#x430;&#x432;&#x430;&#x43D;&#x438;&#x435;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430; &#x438; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; socket owner &#x432;&#x430;&#x436;&#x43D;&#x435;&#x435; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x435;&#x433;&#x43E; &#x447;&#x438;&#x441;&#x43B;&#x430; &#x431;&#x430;&#x439;&#x442;&#x43E;&#x432; &#x43D;&#x430; &#x445;&#x43E;&#x441;&#x442;&#x435;.</p>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-tab-buf7a21"><h3>&#x413;&#x434;&#x435; &#x438;&#x441;&#x43A;&#x430;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B;</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="rx">&#x41F;&#x440;&#x438;&#x451;&#x43C;</button><button type="button" class="tab-btn" data-t="tx">&#x41E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43A;&#x430;</button><button type="button" class="tab-btn" data-t="app">&#x41F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;</button></div>
<div class="panel on" data-p="rx">&#x420;&#x430;&#x441;&#x442;&#x451;&#x442; <code>rmem_alloc</code>, &#x430; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441; &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; &#x440;&#x435;&#x434;&#x43A;&#x43E;: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; event loop, CPU throttling &#x438; downstream-&#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x44B;.</div><div class="panel" data-p="tx">&#x420;&#x430;&#x441;&#x442;&#x451;&#x442; <code>wmem_queued</code> &#x438; &#x43D;&#x435; &#x434;&#x432;&#x438;&#x433;&#x430;&#x435;&#x442;&#x441;&#x44F; ACK: &#x438;&#x449;&#x438;&#x442;&#x435; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; peer, loss &#x438;&#x43B;&#x438; application backpressure.</div><div class="panel" data-p="app">&#x421;&#x43E;&#x43A;&#x435;&#x442;&#x44B; &#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x43D;&#x44B;, &#x43D;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x440;&#x44B;&#x432;&#x43A;&#x430;&#x43C;&#x438;: &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x435;&#x446; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x438;, &#x432;&#x435;&#x440;&#x43E;&#x44F;&#x442;&#x43D;&#x43E;, &#x432;&#x44B;&#x448;&#x435; TCP &#x2014; proxy buffering, &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438; &#x438;&#x43B;&#x438; batching.</div>
<script>(function(){var r=document.getElementById('ks-tab-buf7a21');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-02-151a4fea.webp" class="kg-image" alt="TCP buffers &#x434;&#x43B;&#x44F; LLM streaming: rmem, wmem &#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; backpressure" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-buffer-autotuning-llm-streaming-inline-02-151a4fea.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-buffer-autotuning-llm-streaming-inline-02-151a4fea.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-02-151a4fea.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="baseline">&#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; baseline: sysctl, socket memory &#x438; TCP_INFO</h2>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x43C;&#x43E;&#x433;&#x43E; &#x441;&#x43D;&#x438;&#x43C;&#x43A;&#x430;. &#x41D;&#x443;&#x436;&#x43D;&#x44B; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; sysctl, &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439;, &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435; RTT, retransmissions &#x438; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x43E;&#x432;. &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; <code>ss -tinm</code> &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x430; &#x442;&#x435;&#x43C;, &#x447;&#x442;&#x43E; &#x43E;&#x431;&#x44A;&#x435;&#x434;&#x438;&#x43D;&#x44F;&#x435;&#x442; TCP internal info &#x438; <code>skmem</code>. &#x412; &#x432;&#x44B;&#x432;&#x43E;&#x434;&#x435; <code>rb</code> &#x438; <code>tb</code> &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x44E;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x435; receive/send limits, <code>r</code> &#x2014; &#x437;&#x430;&#x43D;&#x44F;&#x442;&#x443;&#x44E; receive memory, <code>w</code> &#x2014; queued send memory, <code>bl</code> &#x2014; socket backlog, <code>d</code> &#x2014; drops. &#x42D;&#x442;&#x438; &#x43F;&#x43E;&#x43B;&#x44F; &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x44B; &#x432; <a href="https://www.man7.org/linux/man-pages/man8/ss.8.html?ref=kingservers.com">ss(8)</a>.</p>
<p>&#x41D;&#x435; &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#xAB;&#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x44B;&#x439;&#xBB; &#x441;&#x43E;&#x43A;&#x435;&#x442;. &#x412;&#x43E;&#x437;&#x44C;&#x43C;&#x438;&#x442;&#x435; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x43A;&#x443; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x445; &#x438; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x445; streams &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; route, &#x441; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x43C;&#x44B;&#x43C; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x43E;&#x43C; prompt &#x438; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C;&#x44E;. &#x415;&#x441;&#x43B;&#x438; &#x443; &#x437;&#x430;&#x432;&#x438;&#x441;&#x448;&#x438;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E; &#x437;&#x430;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D; <code>wmem_queued</code>, &#x430; &#x443; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; &#x43D;&#x435;&#x442;, &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x430;&#x44F; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x430;. &#x415;&#x441;&#x43B;&#x438; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x438;&#x439; &#x43D;&#x435;&#x442;, TCP buffer &#x43F;&#x43E;&#x43A;&#x430; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x435;&#x43C;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">tcp-buffer-baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>sysctl net.ipv4.tcp_moderate_rcvbuf \
       net.ipv4.tcp_rmem net.ipv4.tcp_wmem \
       net.core.rmem_max net.core.wmem_max
ss -tinm state established &apos;( sport = :443 )&apos;
nstat -az | egrep &apos;TcpRetransSegs|TcpExtTCPRcvQDrop|TcpExtTCPMemoryPressures&apos;
cat /proc/net/sockstat</code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; sysctl &#x438; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; gateway</div>
</div>
<p>&#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; socket evidence &#x441;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x435;&#x43C; &#x43D;&#x430; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;. &#x414;&#x43B;&#x44F; LLM streaming &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E; &#x43B;&#x43E;&#x433;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; accept time, &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43A;&#x443; upstream, &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x431;&#x430;&#x439;&#x442; &#x43E;&#x442; inference backend, &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x431;&#x430;&#x439;&#x442; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x443; &#x438; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435; response. &#x422;&#x430;&#x43A; &#x432;&#x438;&#x434;&#x43D;&#x43E;, &#x43E;&#x431;&#x440;&#x430;&#x437;&#x43E;&#x432;&#x430;&#x43B;&#x430;&#x441;&#x44C; &#x43F;&#x430;&#x443;&#x437;&#x430; &#x434;&#x43E; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;, &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; proxy &#x438;&#x43B;&#x438; &#x443;&#x436;&#x435; &#x43D;&#x430; downstream. &#x411;&#x435;&#x437; &#x44D;&#x442;&#x43E;&#x439; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43B;&#x438;&#x43D;&#x438;&#x438; &#x437;&#x430;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x43D;&#x44B;&#x439; buffer &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x437;&#x430; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x443;, &#x445;&#x43E;&#x442;&#x44F; &#x43E;&#x43D; &#x43B;&#x438;&#x448;&#x44C; &#x441;&#x43B;&#x435;&#x434;&#x441;&#x442;&#x432;&#x438;&#x435; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x432;&#x448;&#x435;&#x433;&#x43E;&#x441;&#x44F; consumer.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-03-e5c272cf.webp" class="kg-image" alt="TCP buffers &#x434;&#x43B;&#x44F; LLM streaming: rmem, wmem &#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; backpressure" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-buffer-autotuning-llm-streaming-inline-03-e5c272cf.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-buffer-autotuning-llm-streaming-inline-03-e5c272cf.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-03-e5c272cf.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="read-ss">&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; ss -tinm &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x44B;&#x445; &#x432;&#x44B;&#x432;&#x43E;&#x434;&#x43E;&#x432;</h2>
<p>&#x41E;&#x434;&#x43D;&#x43E; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x43E;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; <code>rb</code> &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443;: &#x44D;&#x442;&#x43E; capacity, &#x430; &#x43D;&#x435; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;. &#x421;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x44B;. &#x415;&#x441;&#x43B;&#x438; <code>r</code> &#x43F;&#x440;&#x438;&#x431;&#x43B;&#x438;&#x436;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43A; <code>rb</code> &#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x440;&#x435;&#x434;&#x43A;&#x43E; &#x447;&#x438;&#x442;&#x430;&#x435;&#x442;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430;, &#x432;&#x435;&#x440;&#x43E;&#x44F;&#x442;&#x43D;&#x43E;, &#x432; scheduler, &#x431;&#x43B;&#x43E;&#x43A;&#x438;&#x440;&#x443;&#x44E;&#x449;&#x435;&#x43C; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x435; &#x438;&#x43B;&#x438; CPU throttling. &#x415;&#x441;&#x43B;&#x438; <code>w</code> &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x441; &#x443;&#x445;&#x443;&#x434;&#x448;&#x435;&#x43D;&#x438;&#x435;&#x43C; delivery rate, &#x438;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x443;&#x439;&#x442;&#x435; peer &#x438; &#x43F;&#x443;&#x442;&#x44C; ACK. &#x415;&#x441;&#x43B;&#x438; <code>d</code> &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;, &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;&#x437;&#x443;&#x439;&#x442;&#x435; drops &#x434;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43B;&#x438;&#x43C;&#x438;&#x442;&#x43E;&#x432;.</p>
<p>&#x41F;&#x43E;&#x43B;&#x44F; <code>cwnd</code>, <code>rtt</code>, <code>rto</code>, delivery rate &#x438; retransmissions &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x44E;&#x442; &#x43D;&#x430; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;: &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x43B;&#x438; &#x43F;&#x443;&#x442;&#x44C; &#x443;&#x43D;&#x435;&#x441;&#x442;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;. &#x41C;&#x430;&#x43B;&#x435;&#x43D;&#x44C;&#x43A;&#x438;&#x439; congestion window &#x43F;&#x43E;&#x441;&#x43B;&#x435; loss &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442;&#x441;&#x44F; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x43C; <code>wmem</code>. &#x422;&#x43E;&#x447;&#x43D;&#x43E; &#x442;&#x430;&#x43A; &#x436;&#x435; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x435; bandwidth-delay product &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x442;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E;&#x433;&#x43E; window, &#x43D;&#x43E; &#x434;&#x43B;&#x44F; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432; &#x43F;&#x43E; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x435;&#x441;&#x44F;&#x442;&#x43A;&#x43E;&#x432; &#x431;&#x430;&#x439;&#x442;&#x43E;&#x432; throughput &#x440;&#x435;&#x434;&#x43A;&#x43E; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x435;&#x434;&#x438;&#x43D;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x435;&#x439;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x44D;&#x442;&#x43E; &#x444;&#x430;&#x43A;&#x442;&#x43E;&#x43C;, &#x430; &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x434;&#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;&#x43C;.</p>
<p>&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43B;&#x43E;&#x432;&#x443;&#x448;&#x43A;&#x430; &#x2014; &#x430;&#x433;&#x440;&#x435;&#x433;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x432;&#x441;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43A; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x435;&#x43C;&#x443;. &#x41E;&#x434;&#x438;&#x43D; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x434;&#x435;&#x440;&#x436;&#x430;&#x442;&#x44C; &#x43C;&#x435;&#x433;&#x430;&#x431;&#x430;&#x439;&#x442;&#x44B; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438;, &#x43F;&#x43E;&#x43A;&#x430; &#x442;&#x44B;&#x441;&#x44F;&#x447;&#x438; streams &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;. &#x413;&#x440;&#x443;&#x43F;&#x43F;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43F;&#x43E; route, ASN &#x438;&#x43B;&#x438; &#x43A;&#x43B;&#x430;&#x441;&#x441;&#x443; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;, &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; gateway &#x438; backend pool. &#x412; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x435; &#x441;&#x43F;&#x440;&#x43E;&#x441;&#x438;&#x442;&#x435;: &#xAB;&#x42D;&#x442;&#x43E; &#x43E;&#x434;&#x438;&#x43D; socket &#x441; &#x43D;&#x435;&#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x43C; peer &#x438;&#x43B;&#x438; &#x432;&#x435;&#x441;&#x44C; canary-&#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;?&#xBB; &#x41E;&#x442;&#x432;&#x435;&#x442; &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442;, &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43B;&#x438; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; fix, &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; per-connection &#x438;&#x43B;&#x438; &#x438;&#x437;&#x43E;&#x43B;&#x44F;&#x446;&#x438;&#x44F; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x445; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x438;&#x442;&#x435;&#x43B;&#x435;&#x439;.</p>
<div class="ks-widget" id="ks-sel-bdp4f82"><h3>&#x427;&#x442;&#x43E; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;</h3>
<label>&#x421;&#x438;&#x442;&#x443;&#x430;&#x446;&#x438;&#x44F;</label><select data-s><option value="small">&#x41C;&#x430;&#x43B;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x438; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x438;&#x439; RTT</option><option value="queued">&#x420;&#x430;&#x441;&#x442;&#x451;&#x442; wmem_queued</option><option value="drops">&#x415;&#x441;&#x442;&#x44C; sock_drop</option><option value="healthy">&#x411;&#x443;&#x444;&#x435;&#x440;&#x44B; &#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x43D;&#x44B;, latency &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x430;&#x44F;</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-bdp4f82');if(!r)return;var m={"small":"Сначала проверьте window scaling, autotuning и реальный bandwidth-delay product; не увеличивайте лимиты вслепую.","queued":"Проверьте скорость чтения peer, retransmissions и pacing. Больший wmem может лишь дольше хранить очередь.","drops":"Локализуйте место потери: socket backlog, softnet или NIC. Изменение rmem без доказательства может не помочь.","healthy":"Смотрите очередь приложения, proxy buffering, GPU scheduler и time to first token: TCP здесь отрицательный контроль."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><h2 id="autotuning">Autotuning &#x438; bandwidth-delay product: &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x43E;&#x442;&#x43E;&#x43B;&#x43E;&#x43A; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43C;&#x430;&#x43B;</h2>
<p>Receive autotuning &#x43F;&#x44B;&#x442;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x434;&#x43E;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x43E;&#x43A;&#x43D;&#x43E; &#x43F;&#x43E;&#x434; &#x43F;&#x443;&#x442;&#x44C;, &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x44B;&#x448;&#x430;&#x44F; <code>tcp_rmem[2]</code>. &#x414;&#x43B;&#x44F; bulk transfer &#x43E;&#x440;&#x438;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x43E;&#x43C; &#x441;&#x43B;&#x443;&#x436;&#x438;&#x442; bandwidth-delay product: &#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x44C;&#x441;&#x44F; &#xAB;&#x432; &#x43F;&#x43E;&#x43B;&#x451;&#x442;&#x435;&#xBB;, &#x447;&#x442;&#x43E;&#x431;&#x44B; &#x43A;&#x430;&#x43D;&#x430;&#x43B; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x430;&#x438;&#x432;&#x430;&#x43B;. &#x41D;&#x43E; LLM streaming &#x43D;&#x435; &#x43F;&#x43E;&#x445;&#x43E;&#x436; &#x43D;&#x430; &#x43D;&#x435;&#x43F;&#x440;&#x435;&#x440;&#x44B;&#x432;&#x43D;&#x443;&#x44E; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x443; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x433;&#x43E; &#x444;&#x430;&#x439;&#x43B;&#x430;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x447;&#x430;&#x441;&#x442;&#x43E; &#x432;&#x44B;&#x434;&#x430;&#x451;&#x442; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x435; chunks, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x442;&#x435;&#x43B;&#x435;&#x43C; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x44F;&#x442;&#x441;&#x44F; scheduling, flush semantics, proxy buffering &#x438;&#x43B;&#x438; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; consumer.</p>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x44F;&#x442;&#x44C; &#x440;&#x435;&#x436;&#x438;&#x43C;&#x44B;. &#x412;&#x43E;&#x437;&#x44C;&#x43C;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x438; &#x442;&#x43E;&#x442; &#x436;&#x435; gateway &#x438; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; streaming response, &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x443;&#x44E; bulk-&#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x443; &#x43F;&#x43E; &#x442;&#x43E;&#x43C;&#x443; &#x436;&#x435; &#x43F;&#x443;&#x442;&#x438;. &#x415;&#x441;&#x43B;&#x438; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; bulk &#x443;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x43E;&#x43A;&#x43D;&#x43E;, &#x430; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;, &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; TCP max &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; LLM latency. &#x415;&#x441;&#x43B;&#x438; &#x438; stream &#x43D;&#x430; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x43C; RTT &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x44E;&#x449;&#x435;&#x435;&#x441;&#x44F; receive window, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x443;&#x431;&#x435;&#x434;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x435;&#x435;.</p>
<p>&#x41D;&#x435; &#x43A;&#x43E;&#x43F;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; sysctl &#x438;&#x437; &#x447;&#x443;&#x436;&#x43E;&#x433;&#x43E; benchmark. &#x417;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x437;&#x430;&#x432;&#x438;&#x441;&#x44F;&#x442; &#x43E;&#x442; RAM, concurrency, kernel, &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x442;&#x43E;&#x433;&#x43E;, &#x432;&#x44B;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43B;&#x438; &#x431;&#x438;&#x431;&#x43B;&#x438;&#x43E;&#x442;&#x435;&#x43A;&#x430; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x435; socket options. <a href="https://man7.org/linux/man-pages/man7/tcp.7.html?ref=kingservers.com">tcp(7)</a> &#x442;&#x430;&#x43A;&#x436;&#x435; &#x43D;&#x430;&#x43F;&#x43E;&#x43C;&#x438;&#x43D;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; kernel &#x443;&#x447;&#x438;&#x442;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x441;&#x43B;&#x443;&#x436;&#x435;&#x431;&#x43D;&#x44B;&#x439; overhead &#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;, &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x44E;&#x449;&#x438;&#x439;&#x441;&#x44F; &#x43E;&#x442; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x448;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x447;&#x435;&#x440;&#x435;&#x437; <code>setsockopt()</code>. &#x41F;&#x43B;&#x430;&#x43D; capacity &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43E;&#x43F;&#x438;&#x440;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43D;&#x430; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; <code>skmem</code>, &#x430; &#x43D;&#x435; &#x43D;&#x430; &#x443;&#x43C;&#x43D;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; max &#x43D;&#x430; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x43A;&#x430;&#x43A; &#x43D;&#x430; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x435; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435;.</p><h2 id="memory-pressure">Memory pressure: &#x43F;&#x43E;&#x447;&#x435;&#x43C;&#x443; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x435; maxima &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x443;&#x445;&#x443;&#x434;&#x448;&#x438;&#x442;&#x44C; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;</h2>
<p>Maxima &#x2014; &#x43D;&#x435; &#x431;&#x435;&#x441;&#x43F;&#x43B;&#x430;&#x442;&#x43D;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;. &#x42F;&#x434;&#x440;&#x43E; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; socket memory &#x43F;&#x43E; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x43D;&#x43E;&#x441;&#x442;&#x438;, &#x43E;&#x434;&#x43D;&#x430;&#x43A;&#x43E; &#x43F;&#x440;&#x438; &#x442;&#x44B;&#x441;&#x44F;&#x447;&#x430;&#x445; &#x434;&#x43E;&#x43B;&#x433;&#x43E;&#x436;&#x438;&#x432;&#x443;&#x449;&#x438;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x441;&#x43E;&#x432;&#x43E;&#x43A;&#x443;&#x43F;&#x43D;&#x44B;&#x439; &#x440;&#x43E;&#x441;&#x442; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x44B;&#x43C;. <code>tcp_mem</code> &#x437;&#x430;&#x434;&#x430;&#x451;&#x442; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x43D;&#x44B;&#x435; &#x43F;&#x43E;&#x440;&#x43E;&#x433;&#x438; &#x432; &#x441;&#x442;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430;&#x445; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438;; &#x43F;&#x440;&#x438; pressure TCP &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442; &#x443;&#x43C;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x43B;&#x435;&#x43D;&#x438;&#x435;. &#x41E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441; gateway &#x434;&#x435;&#x440;&#x436;&#x438;&#x442; userspace buffers, TLS state, HTTP/2 streams &#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x43E;&#x432;. &#x412; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x439;&#x43D;&#x435;&#x440;&#x435; &#x432;&#x441;&#x451; &#x44D;&#x442;&#x43E; &#x43A;&#x43E;&#x43D;&#x43A;&#x443;&#x440;&#x438;&#x440;&#x443;&#x435;&#x442; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; memory limit.</p>
<p>&#x41F;&#x43B;&#x43E;&#x445;&#x43E;&#x439; &#x441;&#x446;&#x435;&#x43D;&#x430;&#x440;&#x438;&#x439; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x442;&#x430;&#x43A;: &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; <code>tcp_rmem[2]</code> &#x438; <code>tcp_wmem[2]</code>, streams &#x43F;&#x435;&#x440;&#x435;&#x436;&#x438;&#x432;&#x430;&#x44E;&#x442; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x434;&#x43E;&#x43B;&#x433;&#x438;&#x435; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x432;, RSS &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;, Pod &#x43F;&#x43E;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x434; memory pressure, event loop &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; CPU &#x438;&#x43B;&#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x439;&#x43D;&#x435;&#x440; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E; OOM. &#x41D;&#x430; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x435; &#x441;&#x435;&#x442;&#x44C; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43A;&#x430;&#x436;&#x435;&#x442;&#x441;&#x44F; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x435;&#x435;, &#x43D;&#x43E; application outcome &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x445;&#x443;&#x436;&#x435;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; canary &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; socket memory, RSS/cgroup memory, CPU throttling &#x438; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435; streams.</p>
<p>&#x41F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; budget, &#x430; &#x43D;&#x435; &#xAB;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435;&#xBB;. &#x41D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x443;&#x44E; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; gateway &#x43F;&#x440;&#x438; &#x446;&#x435;&#x43B;&#x435;&#x432;&#x43E;&#x439; concurrency &#x438; abort criterion &#x43F;&#x43E; working set. &#x427;&#x438;&#x441;&#x43B;&#x43E; &#x431;&#x435;&#x440;&#x438;&#x442;&#x435; &#x438;&#x437; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; canary, &#x430; &#x43D;&#x435; &#x438;&#x437; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x438;. &#x415;&#x441;&#x43B;&#x438; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x44B; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x44B; &#x443;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x431;&#x443;&#x444;&#x435;&#x440;&#x44B; &#x431;&#x435;&#x441;&#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x43E;, &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; backpressure, per-connection limits &#x438; timeout policy &#x43D;&#x430; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;. &#x412;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x434;&#x430;&#x451;&#x442; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x430;&#x441; &#x438; kernel baseline, &#x43D;&#x43E; &#x43D;&#x435; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43D;&#x435;&#x43E;&#x431;&#x445;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;.</p>
<div class="ks-widget" id="ks-chk-can9d31"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432; &#x43B;&#x438; canary &#x43A; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44E;</h3>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D; baseline &#x43D;&#x430; &#x442;&#x435;&#x445; &#x436;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;&#x445; &#x438; payload</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x421;&#x43D;&#x44F;&#x442;&#x44B; ss -tinm &#x438; TCP counters</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x415;&#x441;&#x442;&#x44C; &#x43B;&#x438;&#x43C;&#x438;&#x442; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430; &#x438;&#x43B;&#x438; Pod</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x418;&#x437;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x417;&#x430;&#x434;&#x430;&#x43D;&#x44B; success &#x438; abort criteria</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x41F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x43B;&#x435;&#x43D; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; rollback</label>
<div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-can9d31');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-06-ea59e018.webp" class="kg-image" alt="TCP buffers &#x434;&#x43B;&#x44F; LLM streaming: rmem, wmem &#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; backpressure" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-buffer-autotuning-llm-streaming-inline-06-ea59e018.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-buffer-autotuning-llm-streaming-inline-06-ea59e018.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-06-ea59e018.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="app-backpressure">&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; TCP &#x43E;&#x442; proxy buffering &#x438; application backpressure</h2>
<p>&#x41C;&#x435;&#x436;&#x434;&#x443; inference backend &#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x43C; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x435;&#x441;&#x442;&#x44C; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x431;&#x443;&#x444;&#x435;&#x440;&#x43E;&#x432;: &#x431;&#x438;&#x431;&#x43B;&#x438;&#x43E;&#x442;&#x435;&#x43A;&#x430; HTTP, TLS record layer, reverse proxy, L7-&#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x44B; &#x438; TCP. NGINX &#x43F;&#x440;&#x438; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;&#x43D;&#x43E;&#x43C; <a href="https://nginx.org/en/docs/http/ngx_http_proxy_module.html?ref=kingservers.com#proxy_buffering">proxy_buffering</a> &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x442; upstream &#x43A;&#x430;&#x43A; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435; &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442; &#x435;&#x433;&#x43E; &#x432; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x435;&#x43D;&#x43D;&#x44B;&#x445; buffers; &#x434;&#x43B;&#x44F; streaming route &#x44D;&#x442;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x432;&#x438;&#x434;&#x438;&#x43C;&#x443;&#x44E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x443; &#x43F;&#x43E;&#x434;&#x430;&#x447;&#x443;. Envoy &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; L4/L7 limits &#x438; HTTP/2 flow control. &#x423;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; kernel buffers &#x43D;&#x435; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43F;&#x430;&#x443;&#x437;&#x443; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x430;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x43C;&#x443; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; body.</p>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x441;&#x43B;&#x43E;&#x438; &#x43F;&#x43E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438;. &#x415;&#x441;&#x43B;&#x438; backend &#x432;&#x44B;&#x434;&#x430;&#x451;&#x442; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x440;&#x43E;&#x432;&#x43D;&#x43E;, &#x430; gateway &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x438;&#x445; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x443; &#x43F;&#x430;&#x447;&#x43A;&#x430;&#x43C;&#x438; &#x43F;&#x440;&#x438; &#x43F;&#x443;&#x441;&#x442;&#x43E;&#x43C; <code>wmem</code>, &#x438;&#x449;&#x438;&#x442;&#x435; flush &#x438; buffering. &#x415;&#x441;&#x43B;&#x438; userspace &#x43F;&#x438;&#x448;&#x435;&#x442; &#x440;&#x435;&#x433;&#x443;&#x43B;&#x44F;&#x440;&#x43D;&#x43E;, &#x43D;&#x43E; <code>wmem_queued</code> &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;, &#x442;&#x43E;&#x433;&#x434;&#x430; peer &#x438;&#x43B;&#x438; transport &#x441;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;. &#x415;&#x441;&#x43B;&#x438; backend &#x441;&#x430;&#x43C; &#x43C;&#x43E;&#x43B;&#x447;&#x438;&#x442;, &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x439;&#x442;&#x435;&#x441;&#x44C; &#x43A; GPU queue &#x438; scheduler. &#x412; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B;&#x435; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/envoy-llm-overload-circuit-breaker-runbook/">Envoy overload manager</a> &#x43C;&#x44B; &#x440;&#x430;&#x437;&#x431;&#x438;&#x440;&#x430;&#x43B;&#x438; &#x437;&#x430;&#x449;&#x438;&#x442;&#x443; proxy &#x43E;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;; &#x437;&#x434;&#x435;&#x441;&#x44C; socket evidence &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x443;&#x442;&#x430;&#x442;&#x44C; overload &#x441; &#x442;&#x440;&#x430;&#x43D;&#x441;&#x43F;&#x43E;&#x440;&#x442;&#x43D;&#x44B;&#x43C; &#x437;&#x430;&#x43F;&#x430;&#x441;&#x43E;&#x43C;.</p>
<p>&#x414;&#x43B;&#x44F; negative control &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x442;&#x43E;&#x442; &#x436;&#x435; stream &#x432; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; consumer, &#x43C;&#x438;&#x43D;&#x443;&#x44F; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;, &#x43D;&#x43E; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x432; gateway &#x438; backend. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; &#x443;&#x434;&#x430;&#x43B;&#x451;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x447;&#x435;&#x440;&#x435;&#x437; production route. &#x418;&#x441;&#x447;&#x435;&#x437;&#x43D;&#x43E;&#x432;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x43D;&#x430; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; consumer &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443; &#x441; downstream; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x430;&#x443;&#x437; &#x443;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43D;&#x430; gateway &#x438;&#x43B;&#x438; backend. &#x42D;&#x442;&#x43E; &#x433;&#x43E;&#x440;&#x430;&#x437;&#x434;&#x43E; &#x441;&#x438;&#x43B;&#x44C;&#x43D;&#x435;&#x435;, &#x447;&#x435;&#x43C; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; sysctl &#x438; &#x443;&#x432;&#x438;&#x434;&#x435;&#x442;&#x44C; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E;&#x435; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">stream-observation.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>curl -Nsv --http1.1 https://gateway.example/v1/stream \
  -H &apos;Authorization: Bearer REDACTED&apos; \
  -o /dev/null 2&gt;client-timing.log

while true; do
  date --iso-8601=seconds
  ss -tinm state established &apos;( sport = :443 )&apos;
  sleep 2
done</code></pre>
<div class="ks-canonical-code-block__caption">&#x414;&#x432;&#x435; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B;&#x435; &#x43F;&#x440;&#x43E;&#x431;&#x44B; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; streaming route</div>
</div>
<h2 id="kubernetes">Kubernetes: Pod sysctl, hostNetwork &#x438; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;</h2>
<p>&#x412; Kubernetes &#x432;&#x430;&#x436;&#x43D;&#x43E; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x44C;, &#x433;&#x434;&#x435; &#x436;&#x438;&#x432;&#x451;&#x442; gateway socket. &#x414;&#x43B;&#x44F; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x433;&#x43E; Pod network namespace &#x447;&#x430;&#x441;&#x442;&#x44C; <code>net.*</code> sysctl &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; namespaced. &#x412; &#x430;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; Kubernetes <code>net.ipv4.tcp_rmem</code> &#x438; <code>net.ipv4.tcp_wmem</code> &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x432; safe set &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x44F; &#x441; Kubernetes 1.32 &#x43F;&#x440;&#x438; Linux kernel 4.15 &#x438;&#x43B;&#x438; &#x43D;&#x43E;&#x432;&#x435;&#x435;. &#x414;&#x43B;&#x44F; Pod &#x441; <code>hostNetwork: true</code> &#x441;&#x435;&#x442;&#x435;&#x432;&#x44B;&#x435; sysctl &#x447;&#x435;&#x440;&#x435;&#x437; security context &#x43D;&#x435; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x435;&#x43D;&#x44B;: &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x443;&#x436;&#x435; &#x437;&#x430;&#x442;&#x440;&#x430;&#x433;&#x438;&#x432;&#x430;&#x435;&#x442; node boundary.</p>
<p>&#x42D;&#x442;&#x43E; &#x43D;&#x435; &#x43F;&#x440;&#x438;&#x433;&#x43B;&#x430;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x437;&#x430;&#x434;&#x430;&#x442;&#x44C; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x435; maxima &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C;&#x443; Pod. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44E; control plane, kubelet &#x438; kernel, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443; &#x43A; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C;&#x443; Deployment &#x438;&#x43B;&#x438; node pool. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x439; Pod &#x431;&#x435;&#x437; sysctl &#x43A;&#x430;&#x43A; negative control. &#x41C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; cgroup memory, restarts, throttling, connection completion &#x438; socket fields &#x43D;&#x430; fresh connections: &#x443;&#x436;&#x435; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x44B;&#x439; socket &#x43D;&#x435; &#x432;&#x441;&#x435;&#x433;&#x434;&#x430; &#x43E;&#x442;&#x440;&#x430;&#x436;&#x430;&#x435;&#x442; &#x43D;&#x43E;&#x432;&#x44B;&#x439; baseline.</p>
<p>&#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; ownership. Platform team &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; node-wide limits &#x438; admission policy; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; gateway &#x2014; &#x437;&#x430; socket options, buffering &#x438; concurrency; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438; &#x2014; &#x437;&#x430; &#x432;&#x44B;&#x434;&#x430;&#x447;&#x443; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432;. &#x415;&#x441;&#x43B;&#x438; &#x432;&#x441;&#x435; &#x442;&#x440;&#x438; &#x441;&#x43B;&#x43E;&#x44F; &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x43D;&#x438;&#x43C; rollout, &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x443; &#x43D;&#x435;&#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;. &#x41F;&#x43E;&#x445;&#x43E;&#x436;&#x438;&#x439; &#x43F;&#x440;&#x438;&#x43D;&#x446;&#x438;&#x43F; effective path &#x43C;&#x44B; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x43B;&#x438; &#x432; &#x440;&#x430;&#x437;&#x431;&#x43E;&#x440;&#x435; <a href="https://kingservers.com/blog/nodelocal-dnscache-coredns-llm-inference-kubernetes/">NodeLocal DNSCache &#x434;&#x43B;&#x44F; LLM inference</a>: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x435; &#x434;&#x435;&#x43A;&#x43B;&#x430;&#x440;&#x430;&#x446;&#x438;&#x44F;, &#x430; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; namespace &#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">yaml</span><span class="ks-canonical-code-block__filename">gateway-canary.yaml</span></div>
<pre class="ks-canonical-code-block__pre"><code>apiVersion: v1
kind: Pod
metadata:
  name: llm-gateway-buffer-canary
spec:
  securityContext:
    sysctls:
      - name: net.ipv4.tcp_rmem
        value: &quot;4096 131072 4194304&quot;
      - name: net.ipv4.tcp_wmem
        value: &quot;4096 16384 4194304&quot;
  containers:
    - name: gateway
      image: example/llm-gateway:tested
      resources:
        requests:
          memory: &quot;512Mi&quot;
        limits:
          memory: &quot;1Gi&quot;</code></pre>
<div class="ks-canonical-code-block__caption">Namespaced sysctl &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43B;&#x44F; canary Pod</div>
</div>
<p>&#x427;&#x438;&#x441;&#x43B;&#x430; &#x432; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;&#x435; &#x2014; &#x434;&#x435;&#x43C;&#x43E;&#x43D;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x430;&#x44F; &#x444;&#x43E;&#x440;&#x43C;&#x430; manifest, &#x43D;&#x435; &#x440;&#x435;&#x43A;&#x43E;&#x43C;&#x435;&#x43D;&#x434;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; production. &#x41F;&#x43E;&#x434;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x438;&#x437; baseline &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x438;&#x445; &#x432; &#x432;&#x430;&#x448;&#x435;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438;. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x44B;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; <code>SO_RCVBUF</code>, &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; <code>tcp_rmem</code> &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43D;&#x435; &#x434;&#x430;&#x442;&#x44C; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x433;&#x43E; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;&#x430;; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; socket options &#x447;&#x435;&#x440;&#x435;&#x437; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44E; runtime &#x438;&#x43B;&#x438; eBPF/tracepoint-&#x438;&#x43D;&#x441;&#x442;&#x440;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x44B;, &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x435; &#x432;&#x430;&#x448;&#x435;&#x439; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x435;.</p>
<div class="ks-widget" id="ks-tab-k8s2e64"><h3>&#x413;&#x434;&#x435; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443;</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="host">&#x41D;&#x430; host</button><button type="button" class="tab-btn" data-t="pod">&#x412; Pod</button><button type="button" class="tab-btn" data-t="app">&#x412; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x438;</button></div>
<div class="panel on" data-p="host">&#x41F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x434;&#x43B;&#x44F; &#x43E;&#x431;&#x449;&#x435;&#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43B;&#x43A;&#x430; &#x438; node-wide capacity, &#x43D;&#x43E; blast radius &#x43C;&#x430;&#x43A;&#x441;&#x438;&#x43C;&#x430;&#x43B;&#x435;&#x43D;. &#x41D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; canary-&#x443;&#x437;&#x435;&#x43B;.</div><div class="panel" data-p="pod">Namespaced sysctl &#x434;&#x430;&#x451;&#x442; &#x443;&#x437;&#x43A;&#x438;&#x439; rollout. &#x423;&#x447;&#x438;&#x442;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44E; Kubernetes, kernel &#x438; &#x437;&#x430;&#x43F;&#x440;&#x435;&#x442; &#x434;&#x43B;&#x44F; hostNetwork.</div><div class="panel" data-p="app">SO_RCVBUF/SO_SNDBUF &#x43F;&#x440;&#x438;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43A; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x43C;&#x443; socket owner, &#x43D;&#x43E; &#x440;&#x443;&#x447;&#x43D;&#x43E;&#x439; SO_RCVBUF &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; receive autotuning &#x434;&#x43B;&#x44F; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430;.</div>
<script>(function(){var r=document.getElementById('ks-tab-k8s2e64');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-04-c13c3f90.webp" class="kg-image" alt="TCP buffers &#x434;&#x43B;&#x44F; LLM streaming: rmem, wmem &#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; backpressure" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-buffer-autotuning-llm-streaming-inline-04-c13c3f90.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-buffer-autotuning-llm-streaming-inline-04-c13c3f90.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-04-c13c3f90.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="canary">Canary &#x438; rollback: &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; owner &#x437;&#x430; &#x440;&#x430;&#x437;</h2>
<p>&#x425;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x439; canary &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443;, &#x430; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430;. &#x412;&#x44B;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x432; &#x441; &#x442;&#x435;&#x43C; &#x436;&#x435; RTT &#x438; &#x442;&#x435;&#x43C;&#x43F;&#x43E;&#x43C; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x44F;, &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x439; route, &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C; &#x438; payload class. &#x41D;&#x430; baseline &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x435;&#x435;: TTFT, &#x43C;&#x430;&#x43A;&#x441;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x43F;&#x430;&#x443;&#x437;&#x443;, &#x434;&#x43E;&#x43B;&#x44E; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x451;&#x43D;&#x43D;&#x44B;&#x445; streams, retransmissions, <code>r/rb</code>, <code>w/tb</code> &#x438; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;.</p>
<p>Success criterion &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x43D;&#x438;&#x437;&#x43A;&#x438;&#x439; &#x443;&#x440;&#x43E;&#x432;&#x435;&#x43D;&#x44C; &#x441; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;&#x43C;. &#x41D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;: &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x435; sockets &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x43B;&#x438; &#x443;&#x43F;&#x438;&#x440;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x432; receive limit, &#x430; completion rate &#x438; &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x438;&#x43B;&#x438;&#x441;&#x44C; &#x431;&#x435;&#x437; &#x440;&#x43E;&#x441;&#x442;&#x430; memory pressure. &#x423;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x448;&#x438;&#x439;&#x441;&#x44F; advertised window &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; user experience &#x2014; &#x43D;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x445;. &#x410;&#x43D;&#x430;&#x43B;&#x43E;&#x433;&#x438;&#x447;&#x43D;&#x43E; &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x43F;&#x440;&#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x440;&#x43E;&#x441;&#x442;&#x435; resets &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x44B;.</p>
<p>Rollback &#x434;&#x435;&#x43B;&#x430;&#x439;&#x442;&#x435; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x43C;. &#x412;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x439; sysctl &#x438;&#x43B;&#x438; socket option, &#x441;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; fresh connections &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x435; &#x436;&#x435; probes. &#x415;&#x441;&#x43B;&#x438; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x438;&#x441;&#x447;&#x435;&#x437;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x443;&#x441;&#x438;&#x43B;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x441;&#x44F;, &#x438;&#x449;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x430;, &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438; backend &#x438;&#x43B;&#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;. &#x414;&#x43B;&#x44F; &#x434;&#x43E;&#x43B;&#x433;&#x43E;&#x436;&#x438;&#x432;&#x443;&#x449;&#x438;&#x445; streams &#x432;&#x430;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; drain plan; &#x43E;&#x43F;&#x443;&#x431;&#x43B;&#x438;&#x43A;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; runbook &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/http2-goaway-grpc-keepalive-llm-gateway/">HTTP/2 GOAWAY &#x438; graceful drain</a> &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x43D;&#x435; &#x43E;&#x431;&#x440;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x441;&#x43C;&#x435;&#x43D;&#x44B; gateway.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">buffer-canary-rollback.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code># baseline
sysctl net.ipv4.tcp_rmem net.ipv4.tcp_wmem &gt; /var/tmp/tcp-buffer.baseline

# apply only after recording approved values
sysctl -w net.ipv4.tcp_rmem=&apos;MIN DEFAULT MAX&apos;
sysctl -w net.ipv4.tcp_wmem=&apos;MIN DEFAULT MAX&apos;

# rollback from the captured baseline values
while read -r key _ value1 value2 value3; do
  sysctl -w &quot;$key=$value1 $value2 $value3&quot;
done &lt; /var/tmp/tcp-buffer.baseline</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x43E;&#x433;&#x43E; host-level canary</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-05-3c94ca46.webp" class="kg-image" alt="TCP buffers &#x434;&#x43B;&#x44F; LLM streaming: rmem, wmem &#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; backpressure" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-buffer-autotuning-llm-streaming-inline-05-3c94ca46.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-buffer-autotuning-llm-streaming-inline-05-3c94ca46.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-05-3c94ca46.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="decision">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; autotuning, &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x44C; socket &#x438;&#x43B;&#x438; &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; gateway</h2>
<p><strong>&#x41E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; autotuning</strong>, &#x435;&#x441;&#x43B;&#x438; socket limits &#x43D;&#x435; &#x43D;&#x430;&#x441;&#x44B;&#x449;&#x430;&#x44E;&#x442;&#x441;&#x44F;, RTT &#x438; delivery rate &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;, &#x430; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x430; &#x432;&#x43E;&#x437;&#x43D;&#x438;&#x43A;&#x430;&#x435;&#x442; &#x432; proxy &#x438;&#x43B;&#x438; inference queue. &#x42D;&#x442;&#x43E; &#x441;&#x430;&#x43C;&#x44B;&#x439; &#x447;&#x430;&#x441;&#x442;&#x44B;&#x439; &#x438; &#x441;&#x430;&#x43C;&#x44B;&#x439; &#x434;&#x435;&#x448;&#x451;&#x432;&#x44B;&#x439; verdict: &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; owner &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x44B;. &#x41D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443; &#x431;&#x435;&#x437; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; socket-memory bottleneck.</p>
<p><strong>&#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x442;&#x435; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; socket</strong>, &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x438;&#x43D; &#x43A;&#x43B;&#x430;&#x441;&#x441; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x43E;&#x441;&#x43E;&#x431;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; buffer. &#x41D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; upstream &#x43A; &#x443;&#x434;&#x430;&#x43B;&#x451;&#x43D;&#x43D;&#x43E;&#x43C;&#x443; GPU pool &#x43D;&#x430; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x43C; RTT &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x442; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; downstream streams. &#x423;&#x447;&#x438;&#x442;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435;, &#x447;&#x442;&#x43E; &#x440;&#x443;&#x447;&#x43D;&#x43E;&#x439; <code>SO_RCVBUF</code> &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x441;&#x435;&#x43C;&#x430;&#x43D;&#x442;&#x438;&#x43A;&#x443; autotuning. &#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x431;&#x438;&#x431;&#x43B;&#x438;&#x43E;&#x442;&#x435;&#x43A;&#x443;, &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442; &#x432;&#x44B;&#x437;&#x43E;&#x432;&#x430; &#x43E;&#x442;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; <code>connect()</code>/<code>listen()</code> &#x438; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; &#x43D;&#x430; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;.</p>
<p><strong>&#x418;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; node-wide ceiling</strong>, &#x435;&#x441;&#x43B;&#x438; &#x43C;&#x43D;&#x43E;&#x436;&#x435;&#x441;&#x442;&#x432;&#x43E; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x43E;&#x432; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; gateway &#x443;&#x43F;&#x438;&#x440;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x432; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x43D;&#x44B;&#x439; &#x43F;&#x43E;&#x442;&#x43E;&#x43B;&#x43E;&#x43A; &#x438; canary &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435; application outcome. &#x414;&#x435;&#x43B;&#x430;&#x439;&#x442;&#x435; &#x44D;&#x442;&#x43E; &#x43D;&#x430; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; node pool &#x441; memory budget. <strong>&#x41C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; gateway</strong>, &#x43A;&#x43E;&#x433;&#x434;&#x430; bottleneck &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D; &#x441; &#x441;&#x43E;&#x432;&#x43E;&#x43A;&#x443;&#x43F;&#x43D;&#x43E;&#x439; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C;&#x44E;, CPU &#x438;&#x43B;&#x438; failure domain: &#x433;&#x43E;&#x440;&#x438;&#x437;&#x43E;&#x43D;&#x442;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435; connections &#x447;&#x430;&#x441;&#x442;&#x43E; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x435;&#x435; &#x43E;&#x433;&#x440;&#x43E;&#x43C;&#x43D;&#x44B;&#x445; per-socket maxima.</p>
<p>VPS &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x434;&#x43B;&#x44F; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x433;&#x43E; controlled edge &#x438; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x433;&#x43E; canary; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x430;&#x436;&#x43D;&#x44B; NIC queues, &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; kernel/driver baseline &#x438; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x430;&#x441; RAM. Disqualifier &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x435;&#x43D;: &#x43D;&#x43E;&#x432;&#x43E;&#x435; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;, &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;&#x43D;&#x44B;&#x439; proxy buffering, &#x431;&#x43B;&#x43E;&#x43A;&#x438;&#x440;&#x443;&#x44E;&#x449;&#x438;&#x439; L7 filter &#x438;&#x43B;&#x438; GPU queue. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; path proof, &#x437;&#x430;&#x442;&#x435;&#x43C; procurement.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-07-2445bc43.webp" class="kg-image" alt="TCP buffers &#x434;&#x43B;&#x44F; LLM streaming: rmem, wmem &#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; backpressure" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-buffer-autotuning-llm-streaming-inline-07-2445bc43.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-buffer-autotuning-llm-streaming-inline-07-2445bc43.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-buffer-autotuning-llm-streaming-inline-07-2445bc43.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="runbook">Production-runbook: &#x43E;&#x442; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;&#x430; &#x434;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;</h2>
<p>&#x421;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x43A; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x43E;&#x439; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;. &#x41F;&#x435;&#x440;&#x432;&#x43E;&#x435;: <strong>path</strong> &#x2014; &#x43A;&#x430;&#x43A;&#x43E;&#x439; client, gateway instance &#x438; backend &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x43E;&#x431;&#x441;&#x43B;&#x443;&#x436;&#x438;&#x432;&#x430;&#x43B;&#x438; stream. &#x412;&#x442;&#x43E;&#x440;&#x43E;&#x435;: <strong>socket</strong> &#x2014; &#x447;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x438;&#x441;&#x445;&#x43E;&#x434;&#x438;&#x43B;&#x43E; &#x441; rmem, wmem, RTT, cwnd, retransmissions &#x438; drops. &#x422;&#x440;&#x435;&#x442;&#x44C;&#x435;: <strong>application</strong> &#x2014; &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x447;&#x438;&#x442;&#x430;&#x43B;&#x438; &#x438; &#x43F;&#x438;&#x441;&#x430;&#x43B;&#x438; userspace, &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x43B; &#x43B;&#x438; buffering. &#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x43E;&#x435;: <strong>outcome</strong> &#x2014; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B;&#x438;&#x441;&#x44C; &#x43B;&#x438; TTFT, &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x438; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;.</p>
<ol><li>&#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; affected &#x438; healthy stream &#x441; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x43C; payload class.</li><li>&#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; <code>ss -tinm</code>, nstat, sockstat &#x438; cgroup memory.</li><li>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; proxy buffering, L7 filters &#x438; backend token cadence.</li><li>&#x421;&#x444;&#x43E;&#x440;&#x43C;&#x443;&#x43B;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; owner &#x438; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;.</li><li>&#x417;&#x430;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x442;&#x435; canary &#x43D;&#x430; fresh connections &#x441; negative control.</li><li>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; memory budget &#x438; failure signals.</li><li>&#x412;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435; rollback &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x435; &#x436;&#x435; probes.</li></ol>
<p>&#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x43C; &#x43F;&#x443;&#x442;&#x438;, &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443; route &#x438; loss. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x43D;&#x430; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; process instance, &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; event loop, CPU affinity &#x438; scheduling; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x44F; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/rss-rps-irq-affinity-llm-api-gateway/">RSS, RPS &#x438; IRQ affinity</a> &#x440;&#x430;&#x437;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; CPU &#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x430;&#x443;&#x437;&#x44B; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43B;&#x438;&#x440;&#x443;&#x44E;&#x442; &#x441; &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43D;&#x438;&#x435;&#x43C; backend capacity, &#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435;&#x441;&#x44C; &#x43A; overload control, &#x430; &#x43D;&#x435; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x439;&#x442;&#x435; TCP queues.</p>
<p>&#x420;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x2014; &#x43D;&#x435; &#xAB;&#x43C;&#x44B; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x43B;&#x438; &#x431;&#x443;&#x444;&#x435;&#x440;&#xBB;, &#x430; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x430;&#x44F; &#x441;&#x432;&#x44F;&#x437;&#x44C; &#x438; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x43D;&#x44B;&#x439; blast radius. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; baseline, change window, owner &#x438; &#x443;&#x441;&#x43B;&#x43E;&#x432;&#x438;&#x44F; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442;&#x430;. &#x422;&#x430;&#x43A; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x441; &#x444;&#x430;&#x43A;&#x442;&#x43E;&#x432;, &#x430; &#x43D;&#x435; &#x441; &#x435;&#x449;&#x451; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; sysctl &#x438;&#x437; &#x438;&#x441;&#x442;&#x43E;&#x440;&#x438;&#x438; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;.</p>
<div class="ks-widget" id="ks-chk-roll6c1"><h3>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x43F;&#x435;&#x440;&#x435;&#x434; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x438;&#x435;&#x43C; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430;</h3>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x423;&#x43B;&#x443;&#x447;&#x448;&#x438;&#x43B;&#x441;&#x44F; application outcome, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440; buffer</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x41D;&#x435; &#x432;&#x44B;&#x440;&#x43E;&#x441;&#x43B;&#x438; retransmissions &#x438; socket drops</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x41F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; gateway &#x443;&#x43A;&#x43B;&#x430;&#x434;&#x44B;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; budget &#x43F;&#x440;&#x438; &#x43F;&#x438;&#x43A;&#x435;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> Healthy negative control &#x43D;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B;&#x441;&#x44F;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x41F;&#x43E;&#x441;&#x43B;&#x435; rollback &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x438;&#x441;&#x447;&#x435;&#x437;&#x430;&#x435;&#x442;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x412;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x435;&#x446; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x43E;&#x432; &#x438; change window &#x437;&#x430;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x44B;</label>
<div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-roll6c1');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><h2 id="conclusion">&#x418;&#x442;&#x43E;&#x433;: &#x431;&#x443;&#x444;&#x435;&#x440; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x442;&#x44C; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;, &#x430; &#x43D;&#x435; &#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;</h2>
<p>TCP autotuning &#x432; Linux &#x443;&#x436;&#x435; &#x443;&#x43C;&#x435;&#x435;&#x442; &#x43F;&#x43E;&#x434;&#x441;&#x442;&#x440;&#x430;&#x438;&#x432;&#x430;&#x442;&#x44C; receive &#x438; send buffers, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x440;&#x443;&#x447;&#x43D;&#x43E;&#x435; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; maxima &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C; &#x448;&#x430;&#x433;&#x43E;&#x43C;. &#x414;&#x43B;&#x44F; LLM streaming &#x432;&#x430;&#x436;&#x43D;&#x435;&#x435; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x442;&#x44C; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x441;&#x43B;&#x43E;&#x44F;: &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;, &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; socket, &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; gateway &#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;. &#x417;&#x430;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x43D;&#x44B;&#x439; <code>wmem</code> &#x43F;&#x440;&#x438; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x435;, &#x43F;&#x443;&#x441;&#x442;&#x44B;&#x435; buffers &#x43F;&#x440;&#x438; proxy batching &#x438; memory pressure &#x443; &#x442;&#x44B;&#x441;&#x44F;&#x447; streams &#x442;&#x440;&#x435;&#x431;&#x443;&#x44E;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x439;.</p>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; <code>ss -tinm</code> &#x438; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43B;&#x438;&#x43D;&#x438;&#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; healthy negative control, &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; owner &#x43D;&#x430; canary &#x438; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443; &#x43A; baseline. &#x422;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435; application outcome &#x43F;&#x440;&#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x439; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438; &#x434;&#x430;&#x451;&#x442; &#x43F;&#x440;&#x430;&#x432;&#x43E; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x44C; change.</p>
<p>&#x415;&#x441;&#x43B;&#x438; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D; node-wide bottleneck, &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x435;&#x441;&#x438;&#x442;&#x435; gateway &#x43D;&#x430; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; VPS &#x438;&#x43B;&#x438; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; edge &#x441; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x44B;&#x43C; kernel/NIC baseline &#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; failure domain. &#x41D;&#x43E; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; checklist &#x438;&#x437; runbook &#x43A; &#x441;&#x432;&#x43E;&#x435;&#x43C;&#x443; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x443;: &#x43E;&#x43D; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x43F;&#x43E;&#x43A;&#x430;&#x436;&#x435;&#x442;, &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43B;&#x438; &#x43D;&#x43E;&#x432;&#x44B;&#x439; ceiling, &#x442;&#x43E;&#x447;&#x435;&#x447;&#x43D;&#x44B;&#x439; socket option &#x438;&#x43B;&#x438; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x441;&#x43E;&#x432;&#x441;&#x435;&#x43C; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x433;&#x43E; &#x441;&#x43B;&#x43E;&#x44F;.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[GRO, GSO и TSO для LLM API gateway: диагностика Linux network offload]]></title><description><![CDATA[Production-runbook по GRO, GSO, TSO и checksum offload для LLM API gateway: owner map, ethtool, capture traps, virtual NIC, canary и rollback.]]></description><link>https://kingservers.com/blog/gro-gso-tso-llm-api-gateway/</link><guid isPermaLink="false">6acc98c1aff2afac25354df0</guid><category><![CDATA[Инфраструктура]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 16 Oct 2026 08:10:27 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-hero-6f22ecf3.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#symptom-first">&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C; offload</a></li>
<li><a href="#offload-mechanics">&#x427;&#x442;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x434;&#x435;&#x43B;&#x430;&#x44E;&#x442; GRO, GSO, TSO &#x438; checksum offload</a></li>
<li><a href="#owner-map">&#x41F;&#x43E;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x442;&#x435; owner map &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; packet path</a></li>
<li><a href="#baseline">&#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; baseline: features, counters &#x438; workload</a></li>
<li><a href="#capture-traps">&#x41F;&#x43E;&#x447;&#x435;&#x43C;&#x443; tcpdump &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x441;&#x442;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x44B; &#x438; bad checksum</a></li>
<li><a href="#virtualization-tunnels">&#x412;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x438; &#x442;&#x443;&#x43D;&#x43D;&#x435;&#x43B;&#x438;: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; inner &#x438; outer path</a></li>
<li><a href="#canary">Canary: &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x444;&#x43B;&#x430;&#x433; &#x438; &#x442;&#x440;&#x435;&#x431;&#x443;&#x439;&#x442;&#x435; application outcome</a></li>
<li><a href="#failure-modes">&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x438; &#x43D;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44E; bottleneck &#x437;&#x430; &#x443;&#x441;&#x43F;&#x435;&#x445;</a></li>
<li><a href="#infrastructure-choice">&#x41A;&#x43E;&#x433;&#x434;&#x430; VPS &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E;, &#x430; &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; dedicated gateway</a></li>
<li><a href="#production-runbook">Production-runbook &#x438; &#x432;&#x44B;&#x432;&#x43E;&#x434;</a></li>
</ul></div>

</div>&#x41E;&#x434;&#x43D;&#x43E; &#x44F;&#x434;&#x440;&#x43E; gateway &#x437;&#x430;&#x431;&#x438;&#x442;&#x43E; softirq, tcpdump &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x433;&#x438;&#x433;&#x430;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B; &#x438; bad checksum, &#x430; TTFT &#x443; LLM &#x441;&#x43A;&#x430;&#x447;&#x435;&#x442;. &#x412;&#x44B;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; GRO &#x438;&#x43B;&#x438; TSO &#x43A;&#x430;&#x436;&#x435;&#x442;&#x441;&#x44F; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x43C; &#x43B;&#x435;&#x447;&#x435;&#x43D;&#x438;&#x435;&#x43C;, &#x43D;&#x43E; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x434;&#x430;&#x44E;&#x442; RX-&#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438;, virtio, &#x442;&#x443;&#x43D;&#x43D;&#x435;&#x43B;&#x44C;, TLS &#x438; backend queue. &#x42D;&#x442;&#x43E;&#x442; runbook &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; bottleneck, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x441;&#x442;&#x438; canary &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; offload-&#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x430; &#x438; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C;&#x441;&#x44F; &#x43A; baseline.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-hero-6f22ecf3.webp" alt="GRO, GSO &#x438; TSO &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; Linux network offload"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="symptom-first">&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C; offload</h2>

<p>&#x428;&#x43B;&#x44E;&#x437; LLM API &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x432;&#x44B;&#x447;&#x43D;&#x44B;&#x439; &#x43E;&#x431;&#x44A;&#x451;&#x43C; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432;, &#x43D;&#x43E; &#x43E;&#x434;&#x43D;&#x43E; &#x44F;&#x434;&#x440;&#x43E; &#x432;&#x43D;&#x435;&#x437;&#x430;&#x43F;&#x43D;&#x43E; &#x443;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x432; softirq, &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x43E;&#x432; &#x432; &#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434;&#x443;, &#x430; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x440;&#x432;&#x430;&#x43D;&#x44B;&#x43C;. &#x41D;&#x430; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x435; CPU &#x432;&#x441;&#x451; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x43A;&#x430;&#x43A; &#xAB;&#x441;&#x435;&#x442;&#x44C; &#x43D;&#x435; &#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F;&#xBB;, &#x438; &#x440;&#x443;&#x43A;&#x430; &#x442;&#x44F;&#x43D;&#x435;&#x442;&#x441;&#x44F; &#x432;&#x44B;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; GRO &#x438;&#x43B;&#x438; TSO. &#x42D;&#x442;&#x43E; &#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x430;&#x44F; &#x434;&#x43E;&#x433;&#x430;&#x434;&#x43A;&#x430;: &#x43F;&#x43E;&#x445;&#x43E;&#x436;&#x443;&#x44E; &#x43A;&#x430;&#x440;&#x442;&#x438;&#x43D;&#x443; &#x434;&#x430;&#x44E;&#x442; &#x43F;&#x43B;&#x43E;&#x445;&#x43E;&#x435; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435; RX-&#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439;, &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;, &#x442;&#x443;&#x43D;&#x43D;&#x435;&#x43B;&#x44C; &#x431;&#x435;&#x437; &#x43D;&#x443;&#x436;&#x43D;&#x43E;&#x433;&#x43E; offload, TLS termination &#x438; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; backend.</p>
<p>GRO, GSO, TSO &#x438; checksum offload &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x430;&#x44E;&#x442; &#x43A;&#x43E;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x442;&#x432;&#x43E; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x439;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; CPU &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442; &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x44B;&#x439; &#x43F;&#x430;&#x43A;&#x435;&#x442;. &#x41E;&#x43D;&#x438; &#x43D;&#x435; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x44E;&#x442; &#x43F;&#x440;&#x43E;&#x43F;&#x443;&#x441;&#x43A;&#x43D;&#x443;&#x44E; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x430;&#x43C;&#x438; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x438; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x44E;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x432; inference-&#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x435;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x439; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#x437;&#x432;&#x443;&#x447;&#x438;&#x442; &#x43D;&#x435; &#xAB;&#x43A;&#x430;&#x43A;&#x43E;&#x439; &#x444;&#x43B;&#x430;&#x433; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435;&#xBB;, &#x430; &#xAB;&#x43D;&#x430; &#x43A;&#x430;&#x43A;&#x43E;&#x43C; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43A;&#x435; packet path &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B;&#x430;&#x441;&#x44C; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430; &#x438; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x438;&#x43B;&#x441;&#x44F; &#x43B;&#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; outcome&#xBB;.</p>
<p>&#x414;&#x43B;&#x44F; LLM gateway &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x430;&#x436;&#x43D;&#x43E; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x44F;&#x442;&#x44C; &#x434;&#x432;&#x435; &#x444;&#x430;&#x437;&#x44B;. &#x414;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x431;&#x430;&#x439;&#x442;&#x430; &#x43D;&#x430;&#x441; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x435;&#x441;&#x443;&#x44E;&#x442; accept, TLS, &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x438; TTFT. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; SSE-&#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430; &#x432;&#x430;&#x436;&#x43D;&#x44B; progress, &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x445; &#x43F;&#x430;&#x443;&#x437;. &#x415;&#x441;&#x43B;&#x438; p99 TTFT &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;, &#x430; CPU proxy &#x43F;&#x430;&#x434;&#x430;&#x435;&#x442;, &#x44D;&#x442;&#x43E; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;, &#x43D;&#x43E; &#x435;&#x433;&#x43E; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x432;&#x44B;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; &#x437;&#x430; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;.</p>
<p>&#x414;&#x430;&#x43B;&#x44C;&#x448;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x43C; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; evidence gate: &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x43E;&#x432;, &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; offload &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C; hop, kernel/NIC counters &#x438; application outcome &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x445;. &#x422;&#x430;&#x43A;&#x43E;&#x439; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434; &#x438;&#x437; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B;&#x43E;&#x432; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/rss-rps-irq-affinity-llm-api-gateway/">RSS, RPS &#x438; IRQ affinity</a> &#x438; <a href="https://kingservers.com/blog/so-reuseport-llm-api-gateway-ebpf/">SO_REUSEPORT</a>: &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;&#x437;&#x443;&#x435;&#x43C; owner, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x43C; &#x440;&#x43E;&#x432;&#x43D;&#x43E; &#x43E;&#x434;&#x438;&#x43D; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-01-c4410291.webp" class="kg-image" alt="GRO, GSO &#x438; TSO &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; Linux network offload" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/gro-gso-tso-llm-api-gateway-inline-01-c4410291.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/gro-gso-tso-llm-api-gateway-inline-01-c4410291.webp 1000w, https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-01-c4410291.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="offload-mechanics">&#x427;&#x442;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x434;&#x435;&#x43B;&#x430;&#x44E;&#x442; GRO, GSO, TSO &#x438; checksum offload</h2>

<p><strong>GSO</strong> &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; &#x441;&#x442;&#x435;&#x43A;&#x443; Linux &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; &#x432;&#x43D;&#x438;&#x437; &#x43A;&#x440;&#x443;&#x43F;&#x43D;&#x44B;&#x439; socket buffer, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43F;&#x43E;&#x437;&#x436;&#x435; &#x431;&#x443;&#x434;&#x435;&#x442; &#x440;&#x430;&#x437;&#x440;&#x435;&#x437;&#x430;&#x43D; &#x43D;&#x430; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x44B;. <strong>TSO</strong> &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442; TCP-&#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44E; &#x432; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x43A;&#x430;&#x440;&#x442;&#x435;, &#x430; &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x43D;&#x44B;&#x439; GSO &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x441;&#x442;&#x440;&#x430;&#x445;&#x43E;&#x432;&#x43A;&#x43E;&#x439; &#x434;&#x43B;&#x44F; &#x43F;&#x443;&#x442;&#x438;, &#x433;&#x434;&#x435; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x43D;&#x435; &#x443;&#x43C;&#x435;&#x435;&#x442; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x439; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442;. &#x41D;&#x430; &#x43F;&#x440;&#x438;&#x451;&#x43C;&#x435; <strong>GRO</strong> &#x43E;&#x431;&#x44A;&#x435;&#x434;&#x438;&#x43D;&#x44F;&#x435;&#x442; &#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B; &#x432; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43A;&#x440;&#x443;&#x43F;&#x43D;&#x44B;&#x435; skb, &#x447;&#x442;&#x43E;&#x431;&#x44B; &#x432;&#x435;&#x440;&#x445;&#x43D;&#x438;&#x435; &#x441;&#x43B;&#x43E;&#x438; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x430;&#x442;&#x44B;&#x432;&#x430;&#x43B;&#x438; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; &#x43E;&#x431;&#x44A;&#x435;&#x43A;&#x442;&#x43E;&#x432;.</p>
<p>&#x421;&#x432;&#x44F;&#x437;&#x43A;&#x430; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430; &#x43F;&#x43E; &#x441;&#x43C;&#x44B;&#x441;&#x43B;&#x443;, &#x43D;&#x43E; &#x43D;&#x435; &#x43F;&#x43E; &#x43C;&#x435;&#x441;&#x442;&#x443; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x438;&#x44F;. TSO &#x43E;&#x442;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x441;&#x44F; &#x43A; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x447;&#x435; &#x438; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x435;&#x439; NIC &#x438; TX checksum offload. GRO &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x43D;&#x430; receive path &#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x442;&#x44C;&#x441;&#x44F; &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x43D;&#x43E;. &#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; <a href="https://docs.kernel.org/networking/segmentation-offloads.html?ref=kingservers.com">&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; Linux &#x43F;&#x43E; segmentation offloads</a> &#x43F;&#x43E;&#x434;&#x447;&#x451;&#x440;&#x43A;&#x438;&#x432;&#x430;&#x435;&#x442;: &#x441;&#x43E;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x430;&#x44F; GRO &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x432; &#x438;&#x434;&#x435;&#x430;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x441;&#x43D;&#x43E;&#x432;&#x430; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x447;&#x435;&#x440;&#x435;&#x437; GSO.</p>
<p>Checksum offload &#x442;&#x43E;&#x436;&#x435; &#x43D;&#x435; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#xAB;&#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x441;&#x443;&#x43C;&#x43C;&#x430; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442;&#xBB;. &#x41F;&#x440;&#x438; TX &#x441;&#x442;&#x435;&#x43A; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x443;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x443; &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x438;&#x435; &#x442;&#x43E;&#x433;&#x43E;, &#x433;&#x434;&#x435; &#x43B;&#x435;&#x436;&#x430;&#x442; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x434;&#x43B;&#x44F; &#x432;&#x44B;&#x447;&#x438;&#x441;&#x43B;&#x435;&#x43D;&#x438;&#x44F;; &#x43D;&#x430; RX &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440; &#x441;&#x43E;&#x43E;&#x431;&#x449;&#x430;&#x435;&#x442;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x430; &#x43B;&#x438; &#x441;&#x443;&#x43C;&#x43C;&#x430;. &#x412; &#x442;&#x443;&#x43D;&#x43D;&#x435;&#x43B;&#x44F;&#x445; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x435;&#x43D;&#x43D;&#x438;&#x439; &#x438; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; &#x437;&#x430;&#x433;&#x43E;&#x43B;&#x43E;&#x432;&#x43A;&#x438;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x430; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x433;&#x43E; TCP checksum &#x435;&#x449;&#x451; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x443;&#x44E; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x443; VXLAN &#x438;&#x43B;&#x438; Geneve. &#x421;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; CHECKSUM_PARTIAL &#x438; CHECKSUM_UNNECESSARY &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x44B; &#x432; <a href="https://docs.kernel.org/networking/checksum-offloads.html?ref=kingservers.com">&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; &#x44F;&#x434;&#x440;&#x430;</a>.</p>
<p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;: proxy &#x43F;&#x438;&#x448;&#x435;&#x442; &#x43A;&#x440;&#x443;&#x43F;&#x43D;&#x443;&#x44E; TLS-&#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C;, &#x441;&#x442;&#x435;&#x43A; &#x434;&#x435;&#x440;&#x436;&#x438;&#x442; &#x435;&#x451; &#x43A;&#x430;&#x43A; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; skb, &#x430; NIC &#x444;&#x43E;&#x440;&#x43C;&#x438;&#x440;&#x443;&#x435;&#x442; wire-sized TCP segments. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x43D;&#x44F;&#x442;&#x44C; tcpdump &#x43D;&#x430; &#x445;&#x43E;&#x441;&#x442;&#x435; &#x434;&#x43E; NIC, &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x443;&#x432;&#x438;&#x434;&#x435;&#x442;&#x44C; &#xAB;&#x43F;&#x430;&#x43A;&#x435;&#x442;&#xBB; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; MTU. &#x42D;&#x442;&#x43E; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E;, &#x447;&#x442;&#x43E; &#x442;&#x430;&#x43A;&#x43E;&#x439; Ethernet frame &#x443;&#x448;&#x451;&#x43B; &#x432; &#x441;&#x435;&#x442;&#x44C;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x43B;&#x438; &#x43B;&#x438; &#x432;&#x44B; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; &#x441; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x433;&#x43E; TAP &#x438;&#x43B;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x435;&#x43C; &#x443;&#x437;&#x43B;&#x435;?</p>
<style>.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}.ks-widget .panel.on{display:block}.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}</style><div class="ks-widget" id="ks-tab-a7f31c2"><h3>&#x41A;&#x442;&#x43E; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x443;?</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="gro">GRO</button><button type="button" class="tab-btn" data-t="gso">GSO</button><button type="button" class="tab-btn" data-t="tso">TSO</button><button type="button" class="tab-btn" data-t="csum">Checksum</button></div><div class="panel on" data-p="gro">RX: &#x43E;&#x431;&#x44A;&#x435;&#x434;&#x438;&#x43D;&#x44F;&#x435;&#x442; &#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B; &#x434;&#x43E; TCP, &#x441;&#x43D;&#x438;&#x436;&#x430;&#x44F; &#x447;&#x438;&#x441;&#x43B;&#x43E; skb &#x438; &#x432;&#x44B;&#x437;&#x43E;&#x432;&#x43E;&#x432; &#x432;&#x435;&#x440;&#x445;&#x43D;&#x438;&#x445; &#x441;&#x43B;&#x43E;&#x451;&#x432;.</div><div class="panel" data-p="gso">TX: &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x43D;&#x430;&#x44F; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x438; &#x43E;&#x431;&#x449;&#x438;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x430;&#x43A;&#x442; &#x441;&#x442;&#x435;&#x43A;&#x430; &#x434;&#x43B;&#x44F; &#x43A;&#x440;&#x443;&#x43F;&#x43D;&#x44B;&#x445; skb.</div><div class="panel" data-p="tso">TX: NIC &#x440;&#x435;&#x436;&#x435;&#x442; TCP payload &#x43D;&#x430; wire-&#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x44B;; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; TX checksum offload.</div><div class="panel" data-p="csum">TX/RX: &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442; &#x432;&#x44B;&#x447;&#x438;&#x441;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x438;&#x43B;&#x438; &#x432;&#x435;&#x440;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x446;&#x438;&#x44E; checksum, &#x43D;&#x43E; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x430; &#x438; &#x442;&#x443;&#x43D;&#x43D;&#x435;&#x43B;&#x44F;.</div><script>(function(){var r=document.getElementById('ks-tab-a7f31c2');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-02-544dca5d.webp" class="kg-image" alt="GRO, GSO &#x438; TSO &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; Linux network offload" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/gro-gso-tso-llm-api-gateway-inline-02-544dca5d.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/gro-gso-tso-llm-api-gateway-inline-02-544dca5d.webp 1000w, https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-02-544dca5d.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="owner-map">&#x41F;&#x43E;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x442;&#x435; owner map &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; packet path</h2>

<p>&#x41D;&#x430; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x435; &#x43F;&#x443;&#x442;&#x44C; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x43C;: &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; NIC &#x2192; Linux TCP &#x2192; NGINX &#x438;&#x43B;&#x438; Envoy &#x2192; upstream. &#x41D;&#x430; VPS &#x43E;&#x43D; &#x447;&#x430;&#x441;&#x442;&#x43E; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x435;&#x435;: NIC &#x445;&#x43E;&#x441;&#x442;&#x430; &#x2192; vhost/virtio &#x2192; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441; &#x433;&#x43E;&#x441;&#x442;&#x44F; &#x2192; bridge &#x438;&#x43B;&#x438; overlay &#x2192; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x439;&#x43D;&#x435;&#x440;&#x43D;&#x44B;&#x439; veth &#x2192; proxy. &#x423; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; hop &#x441;&#x432;&#x43E;&#x439; &#x43D;&#x430;&#x431;&#x43E;&#x440; feature flags, &#x441;&#x432;&#x43E;&#x438; counters &#x438; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x439; owner. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; <code>eth0</code> &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; VM &#x434;&#x430;&#x451;&#x442; &#x43A;&#x443;&#x441;&#x43E;&#x43A; &#x43A;&#x430;&#x440;&#x442;&#x438;&#x43D;&#x44B;, &#x430; &#x43D;&#x435; &#x43A;&#x430;&#x440;&#x442;&#x438;&#x43D;&#x443;.</p>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430; &#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x433;&#x43E; peer. &#x414;&#x43B;&#x44F; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x435;&#x433;&#x43E; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;, RX queue, CPU, namespace, &#x43C;&#x435;&#x441;&#x442;&#x43E; TLS termination &#x438; interface &#x434;&#x43E; upstream. &#x414;&#x43B;&#x44F; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x435;&#x433;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; route lookup &#x438; &#x442;&#x443;&#x43D;&#x43D;&#x435;&#x43B;&#x44C;. &#x41E;&#x434;&#x438;&#x43D; gateway &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x442;&#x44C; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x43F;&#x43E; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x43C;&#x443; NIC, &#x430; &#x445;&#x43E;&#x434;&#x438;&#x442;&#x44C; &#x43A; GPU &#x447;&#x435;&#x440;&#x435;&#x437; VXLAN; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x439; TSO &#x43D;&#x430; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x43C; &#x43F;&#x443;&#x442;&#x438; &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x433;&#x43E;&#x432;&#x43E;&#x440;&#x438;&#x442; &#x43E; &#x432;&#x442;&#x43E;&#x440;&#x43E;&#x43C;.</p>
<p>&#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; owner &#x43F;&#x43E; &#x441;&#x43B;&#x43E;&#x44F;&#x43C;: &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x439;&#x434;&#x435;&#x440; &#x438;&#x43B;&#x438; hypervisor &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; physical NIC &#x438; vhost; &#x432;&#x430;&#x448;&#x430; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x2014; guest kernel, CNI, proxy &#x438; systemd units; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x2014; connection pool &#x438; streaming semantics. &#x42D;&#x442;&#x430; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x432;&#x430;&#x436;&#x43D;&#x430; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x44F; &#x43E; VPS &#x438;&#x43B;&#x438; dedicated gateway. &#x41D;&#x43E;&#x432;&#x43E;&#x435; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;, &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439;, firmware &#x438; change window. &#x41E;&#x43D;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x43D;&#x44B;&#x439; route, single-flow hotspot &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; vLLM.</p>
<p>&#x41C;&#x438;&#x43D;&#x438;-&#x43A;&#x435;&#x439;&#x441;: &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x438; &#x432; VM &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; CPU &#x43F;&#x440;&#x438; &#x442;&#x43E;&#x439; &#x436;&#x435; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x435;. &#x412; &#x433;&#x43E;&#x441;&#x442;&#x435; TSO &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;, &#x43D;&#x43E; host-side tap &#x43D;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x439; tunnel GSO &#x438; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442; software segmentation. &#x41B;&#x435;&#x447;&#x438;&#x442;&#x44C; guest sysctl &#x431;&#x435;&#x441;&#x441;&#x43C;&#x44B;&#x441;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;. Evidence &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x434;&#x43E;&#x439;&#x442;&#x438; &#x434;&#x43E; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x44B;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x432;&#x44B; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x435;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">path-baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>ip -br link
ip route get 203.0.113.20
ethtool -i eth0
ethtool -k eth0
ethtool -S eth0 | head -n 80
ip -s -s link show dev eth0</code></pre>
<div class="ks-canonical-code-block__caption">&#x418;&#x43D;&#x432;&#x435;&#x43D;&#x442;&#x430;&#x440;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x43E;&#x432;, &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x430; &#x438; offload</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-03-c66ae943.webp" class="kg-image" alt="GRO, GSO &#x438; TSO &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; Linux network offload" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/gro-gso-tso-llm-api-gateway-inline-03-c66ae943.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/gro-gso-tso-llm-api-gateway-inline-03-c66ae943.webp 1000w, https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-03-c66ae943.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="baseline">&#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; baseline: features, counters &#x438; workload</h2>

<p><code>ethtool -k</code> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; requested &#x438; effective features. &#x41F;&#x43E;&#x43C;&#x435;&#x442;&#x43A;&#x430; <code>[fixed]</code> &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440; &#x43D;&#x435; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x430;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; &#x43E;&#x43F;&#x446;&#x438;&#x44E; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x439; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x43E;&#x439;. &#x41D;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x439;&#x442;&#x435; &#x441;&#x43F;&#x438;&#x441;&#x43E;&#x43A; &#x444;&#x43B;&#x430;&#x433;&#x43E;&#x432; &#x432; &#x447;&#x435;&#x43A;&#x43B;&#x438;&#x441;&#x442; &#xAB;&#x432;&#x441;&#x451; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x431;&#x44B;&#x442;&#x44C; on&#xBB;: &#x43D;&#x430;&#x431;&#x43E;&#x440; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;, &#x442;&#x438;&#x43F;&#x430; &#x443;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x430;, &#x438;&#x43D;&#x43A;&#x430;&#x43F;&#x441;&#x443;&#x43B;&#x44F;&#x446;&#x438;&#x438; &#x438; kernel version. &#x410;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; ethtool &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x441;&#x442;&#x430;&#x43D;&#x434;&#x430;&#x440;&#x442;&#x43D;&#x44B;&#x43C; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x43E;&#x43C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x43E;&#x43C; &#x438; hardware features; &#x435;&#x433;&#x43E; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x43F;&#x435;&#x440;&#x435;&#x447;&#x438;&#x441;&#x43B;&#x435;&#x43D;&#x44B; &#x43D;&#x430; <a href="https://kernel.org/pub/software/network/ethtool/?ref=kingservers.com">&#x441;&#x442;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x435; &#x43F;&#x440;&#x43E;&#x435;&#x43A;&#x442;&#x430;</a>.</p>
<p>Baseline &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43D;&#x430; &#x442;&#x440;&#x451;&#x445; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x44F;&#x445;. &#x41D;&#x430; NIC &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; drops, missed errors, queue counters &#x438; driver-specific fallback. &#x412; &#x44F;&#x434;&#x440;&#x435; &#x2014; softirq &#x43F;&#x43E; CPU, backlog/drop, retransmits &#x438; packet rate. &#x412; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x438; &#x2014; request rate, TTFT, &#x434;&#x43E;&#x43B;&#x44E; 5xx, resets, &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x445; SSE-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x438; utilisation inference backend. &#x417;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x435;&#x433;&#x43E; CPU &#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44E; bottleneck &#x43C;&#x435;&#x436;&#x434;&#x443; &#x44F;&#x434;&#x440;&#x430;&#x43C;&#x438;.</p>
<p>&#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x434; &#x440;&#x435;&#x43F;&#x440;&#x435;&#x437;&#x435;&#x43D;&#x442;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x43C; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x43E;&#x43C; &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x43E;&#x432; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432;. &#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; health check &#x43F;&#x43E;&#x447;&#x442;&#x438; &#x43D;&#x435; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;&#x439; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438; &#x434;&#x43B;&#x44F; TSO/GRO, &#x430; &#x43E;&#x434;&#x438;&#x43D; &#x434;&#x43E;&#x43B;&#x433;&#x438;&#x439; SSE stream &#x43F;&#x43B;&#x43E;&#x445;&#x43E; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43F;&#x430;&#x440;&#x430;&#x43B;&#x43B;&#x435;&#x43B;&#x438;&#x437;&#x43C;. &#x41D;&#x443;&#x436;&#x43D;&#x44B; &#x438; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x435; fresh connections, &#x438; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x432;&#x44B;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x44B;, &#x43F;&#x440;&#x438;&#x447;&#x451;&#x43C; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; proxy &#x438; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;.</p>
<p>&#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x44F;&#x434;&#x440;&#x430; &#x43F;&#x43E; <a href="https://docs.kernel.org/networking/scaling.html?ref=kingservers.com">RSS/RPS/RFS/XPS</a> &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x44F;&#x435;&#x442;, &#x43A;&#x430;&#x43A; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x438; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x43F;&#x43E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44F;&#x43C; &#x438; CPU. &#x42D;&#x442;&#x43E; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x439; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;: GRO &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43D;&#x438;&#x437;&#x438;&#x442;&#x44C; &#x447;&#x438;&#x441;&#x43B;&#x43E; skb, &#x43D;&#x43E; &#x43D;&#x435; &#x432;&#x44B;&#x43B;&#x435;&#x447;&#x438;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;, &#x43F;&#x440;&#x438;&#x431;&#x438;&#x442;&#x443;&#x44E; &#x43A; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x43D;&#x43E;&#x43C;&#x443; CPU. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; offload &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x435;&#x445;&#x430;&#x43B;&#x430;, application gate &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x439;&#x434;&#x435;&#x43D;.</p>
<div class="ks-widget" id="ks-chk-b4d82e1"><h3>Baseline &#x433;&#x43E;&#x442;&#x43E;&#x432; &#x43A; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x435;&#x43D;&#x438;&#x44E;?</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x44B; kernel, driver &#x438; firmware</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x451;&#x43D; ethtool -k &#x434;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; hop</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x421;&#x43D;&#x44F;&#x442;&#x44B; queue/NIC counters</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x415;&#x441;&#x442;&#x44C; per-CPU softirq &#x438; packet rate</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x418;&#x437;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x44B; TTFT, resets &#x438; 5xx</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x422;&#x435;&#x441;&#x442; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; fresh &#x438; streaming connections</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-b4d82e1');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-04-4fa86e15.webp" class="kg-image" alt="GRO, GSO &#x438; TSO &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; Linux network offload" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/gro-gso-tso-llm-api-gateway-inline-04-4fa86e15.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/gro-gso-tso-llm-api-gateway-inline-04-4fa86e15.webp 1000w, https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-04-4fa86e15.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="capture-traps">&#x41F;&#x43E;&#x447;&#x435;&#x43C;&#x443; tcpdump &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x441;&#x442;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x44B; &#x438; bad checksum</h2>

<p>&#x417;&#x430;&#x445;&#x432;&#x430;&#x442; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; &#x445;&#x43E;&#x441;&#x442;&#x430; &#x43F;&#x440;&#x43E;&#x438;&#x441;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x432; &#x442;&#x43E;&#x447;&#x43A;&#x435;, &#x433;&#x434;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x435;&#x449;&#x451; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x43C; skb &#x438;&#x43B;&#x438; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x43D;&#x435;&#x437;&#x430;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x430;&#x43F;&#x43F;&#x430;&#x440;&#x430;&#x442;&#x43D;&#x443;&#x44E; checksum. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; Wireshark &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x43F;&#x43E;&#x434;&#x441;&#x432;&#x435;&#x442;&#x438;&#x442;&#x44C; checksum &#x43A;&#x430;&#x43A; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E;, &#x445;&#x43E;&#x442;&#x44F; &#x43D;&#x430; wire &#x43E;&#x43D;&#x430; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x430;. &#x42D;&#x442;&#x43E; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x442;&#x43E;&#x447;&#x43A;&#x438; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x44F;, &#x430; &#x43D;&#x435; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x43F;&#x43E;&#x432;&#x440;&#x435;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430;.</p>
<p>&#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x443;&#x43C; &#x434;&#x432;&#x435; &#x442;&#x43E;&#x447;&#x43A;&#x438;: capture &#x43D;&#x430; gateway &#x438; capture &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x433;&#x43E; NIC &#x2014; &#x43D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, &#x43D;&#x430; TAP, SPAN &#x438;&#x43B;&#x438; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x435;&#x43C; &#x443;&#x437;&#x43B;&#x435;. &#x414;&#x43B;&#x44F; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x443;&#x442;&#x438; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; capture &#x432; guest namespace &#x438; &#x43D;&#x430; host-side tap. &#x415;&#x441;&#x43B;&#x438; &#xAB;&#x433;&#x438;&#x433;&#x430;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B;&#xBB; &#x435;&#x441;&#x442;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43E; segmentation, &#x430; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; capture &#x443;&#x43A;&#x43B;&#x430;&#x434;&#x44B;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; MTU, TSO/GSO &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x44E;&#x442; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x443;&#x44E; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x443;.</p>
<p>&#x41D;&#x435; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; checksum offload &#x433;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x440;&#x430;&#x434;&#x438; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x43E;&#x433;&#x43E; capture. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; &#x430;&#x43D;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x442;&#x43E;&#x440;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x443;&#x43C;&#x435;&#x435;&#x442; &#x443;&#x447;&#x438;&#x442;&#x44B;&#x432;&#x430;&#x442;&#x44C; offload, &#x438;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; wire-side. &#x412;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x435; &#x432;&#x44B;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x43E; &#x43D;&#x430; canary-&#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x435; &#x441; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x43C; change window &#x438; &#x44F;&#x432;&#x43D;&#x44B;&#x43C; rollback. &#x41D;&#x430; production gateway &#x442;&#x430;&#x43A;&#x430;&#x44F; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; CPU-cost &#x432;&#x441;&#x435;&#x433;&#x43E; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430; &#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x430;&#x43C;&#x430; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x443;.</p>
<p>&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43B;&#x43E;&#x432;&#x443;&#x448;&#x43A;&#x430;: &#x438;&#x43D;&#x436;&#x435;&#x43D;&#x435;&#x440; &#x432;&#x438;&#x434;&#x438;&#x442; bad checksum &#x43D;&#x430; loopback &#x438;&#x43B;&#x438; veth, &#x432;&#x44B;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; TX checksum, CPU &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;, &#x430; &#x436;&#x430;&#x43B;&#x43E;&#x431;&#x430; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F;. &#x41F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; negative control &#x2014; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x447;&#x435;&#x440;&#x435;&#x437; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; capture point &#x438;&#x43B;&#x438; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; probe. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; outcome &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x431;&#x44B;&#x43B;&#x430; &#x432; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x438;, &#x430; &#x43D;&#x435; &#x432; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;&#x445;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">capture-compare.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>sudo tcpdump -ni eth0 -s 0 -w /tmp/gateway-eth0.pcap &apos;tcp port 443&apos;
sudo nsenter -t &quot;$(pgrep -n nginx)&quot; -n tcpdump -ni any -s 0 -w /tmp/proxy-ns.pcap &apos;tcp port 443&apos;
ethtool -k eth0 | grep -E &apos;checksum|segmentation|generic-receive&apos;</code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x442;&#x43E;&#x447;&#x435;&#x43A; &#x437;&#x430;&#x445;&#x432;&#x430;&#x442;&#x430; &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; production state</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-05-925ad4e6.webp" class="kg-image" alt="GRO, GSO &#x438; TSO &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; Linux network offload" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/gro-gso-tso-llm-api-gateway-inline-05-925ad4e6.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/gro-gso-tso-llm-api-gateway-inline-05-925ad4e6.webp 1000w, https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-05-925ad4e6.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="virtualization-tunnels">&#x412;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x438; &#x442;&#x443;&#x43D;&#x43D;&#x435;&#x43B;&#x438;: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; inner &#x438; outer path</h2>

<p>&#x412; overlay-&#x441;&#x435;&#x442;&#x438; &#x43E;&#x434;&#x438;&#x43D; &#x43B;&#x43E;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43D;&#x435;&#x441;&#x451;&#x442; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x435;&#x43D;&#x43D;&#x438;&#x435; TCP/IP headers &#x438; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; UDP/VXLAN &#x438;&#x43B;&#x438; Geneve header. NIC &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x443;&#x43C;&#x435;&#x442;&#x44C; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x439; TSO, &#x43D;&#x43E; &#x43D;&#x435; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; tunnel offload. &#x422;&#x43E;&#x433;&#x434;&#x430; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x44B; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; software GSO, &#x430; CPU host &#x438;&#x43B;&#x438; guest &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;. &#x41F;&#x43E; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; &#x444;&#x43B;&#x430;&#x433;&#x443; <code>tcp-segmentation-offload: on</code> &#x44D;&#x442;&#x43E; &#x43D;&#x435; &#x432;&#x438;&#x434;&#x43D;&#x43E;.</p>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; features &#x43D;&#x430; physical NIC, bridge/tap, virtio &#x438; veth. &#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x438;&#x445; &#x441; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; encapsulation. &#x42F;&#x434;&#x440;&#x43E; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; GSO-&#x442;&#x438;&#x43F;&#x44B; &#x434;&#x43B;&#x44F; GRE &#x438; UDP tunnels, &#x430; &#x442;&#x430;&#x43A;&#x436;&#x435; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; &#x433;&#x43B;&#x443;&#x431;&#x438;&#x43D;&#x443; &#x432;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x43D;&#x44B;&#x445; headers. &#x41D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; bare metal &#x43D;&#x430; VPS &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x438;&#x44F;: effective path &#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x434;&#x440;&#x443;&#x433;&#x438;&#x435;.</p>
<p>&#x414;&#x43B;&#x44F; Kubernetes &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; CNI owner: &#x43A;&#x442;&#x43E; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; tunnel device, &#x433;&#x434;&#x435; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; eBPF &#x438;&#x43B;&#x438; iptables, &#x43A;&#x442;&#x43E; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; MTU. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F; overlay &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x43B;&#x438;&#x441;&#x44C; retransmits, &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x438;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x435; PMTU &#x438; MTU mismatch. Offload &#x43D;&#x435; &#x43A;&#x43E;&#x43C;&#x43F;&#x435;&#x43D;&#x441;&#x438;&#x440;&#x443;&#x435;&#x442; &#x444;&#x440;&#x430;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44E;, &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; ICMP Packet Too Big &#x438;&#x43B;&#x438; &#x441;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; inner packet.</p>
<p>&#x41D;&#x443;&#x436;&#x435;&#x43D; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x44B;&#x439; procurement default: &#x43E;&#x441;&#x442;&#x430;&#x432;&#x430;&#x439;&#x442;&#x435;&#x441;&#x44C; &#x43D;&#x430; &#x442;&#x435;&#x43A;&#x443;&#x449;&#x435;&#x439; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x435;, &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D; control gap. Dedicated edge &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;, &#x435;&#x441;&#x43B;&#x438; canary &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443; &#x441; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x43C; &#x432;&#x430;&#x43C; host NIC, &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x43E;&#x43C;, queue layout &#x438;&#x43B;&#x438; tunnel feature. &#x414;&#x43B;&#x44F; &#x43E;&#x431;&#x449;&#x435;&#x439; &#x430;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x44B; private inference &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; <a href="https://kingservers.com/blog/private-ai-api-analog-openai-na-svoih-serverah/">&#x43F;&#x440;&#x43E; Private AI API</a>, &#x43D;&#x43E; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E; packet-path evidence.</p>
<div class="ks-widget" id="ks-sel-c9e42a7"><h3>&#x413;&#x434;&#x435; &#x438;&#x441;&#x43A;&#x430;&#x442;&#x44C; owner?</h3><label>&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;</label><select data-s><option value="guest">CPU &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432; VM</option><option value="host">&#x413;&#x43E;&#x440;&#x438;&#x442; host softirq</option><option value="tunnel">&#x41F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x43B;&#x430;&#x441;&#x44C; &#x441; overlay</option><option value="app">NIC &#x447;&#x438;&#x441;&#x442;&#x44B;&#x439;, TTFT &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-c9e42a7');if(!r)return;var m={"guest":"Сравните virtio features, vhost path, vCPU placement и guest counters.","host":"Проверяйте physical NIC queues, IRQ affinity, GRO/TSO fallback и host-side tap.","tunnel":"Сверьте inner/outer MTU и поддержку tunnel GSO/checksum на каждом hop.","app":"Не тюньте offload: локализуйте TLS, proxy buffering, connection pool или inference queue."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><h2 id="canary">Canary: &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x444;&#x43B;&#x430;&#x433; &#x438; &#x442;&#x440;&#x435;&#x431;&#x443;&#x439;&#x442;&#x435; application outcome</h2>

<p>&#x411;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x439; canary &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x441; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; baseline-&#x443;&#x437;&#x43B;&#x430; &#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x437;&#x43B;&#x430;-&#x43A;&#x430;&#x43D;&#x434;&#x438;&#x434;&#x430;&#x442;&#x430;. &#x41D;&#x430; &#x43D;&#x438;&#x445; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x438;&#x434;&#x442;&#x438; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x43C;&#x44B;&#x435; fresh connections, &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x44B; prompts &#x438; &#x440;&#x435;&#x436;&#x438;&#x43C; streaming. &#x418;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43E;&#x434;&#x438;&#x43D; effective feature: &#x43D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, GRO &#x43D;&#x430; receive path &#x438;&#x43B;&#x438; TSO &#x43D;&#x430; transmit path. &#x41E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x435; GRO, GSO, TSO &#x438; checksum &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x442;&#x435;&#x441;&#x442; &#x432; &#x43B;&#x43E;&#x442;&#x435;&#x440;&#x435;&#x44E;.</p>
<p>&#x421;&#x43E;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; &#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x432; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x43E;&#x43A;&#x43D;&#x435;. Mechanism gate: effective flag &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B;&#x441;&#x44F;, packet rate &#x438;&#x43B;&#x438; skb processing &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B;&#x438;&#x441;&#x44C; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x43E;, counters &#x43D;&#x435; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x442; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;. Resource gate: softirq, system CPU &#x438; queue pressure &#x43D;&#x435; &#x443;&#x445;&#x443;&#x434;&#x448;&#x438;&#x43B;&#x438;&#x441;&#x44C;. Application gate: TTFT, error rate, resets &#x438; &#x441;&#x43A;&#x43E;&#x440;&#x43E;&#x441;&#x442;&#x44C; &#x432;&#x44B;&#x434;&#x430;&#x447;&#x438; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432; &#x43D;&#x435; &#x434;&#x435;&#x433;&#x440;&#x430;&#x434;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43B;&#x438;. Backend gate: GPU queue &#x438; model latency &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x438;&#x441;&#x44C; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x43C;&#x44B;&#x43C;&#x438;.</p>
<p>&#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;&#x430; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x444;&#x430;&#x43A;&#x442;: &#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; &#x444;&#x43B;&#x430;&#x433; &#x432; baseline &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435;, &#x432;&#x435;&#x440;&#x43D;&#x443;&#x43B;&#x430;&#x441;&#x44C; &#x43B;&#x438; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x430;. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;. &#x422;&#x430;&#x43A;&#x43E;&#x439; A/B/A &#x446;&#x438;&#x43A;&#x43B; &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x435;&#x442; &#x43E;&#x442; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x441; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;. &#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;: offload &#x438; routing changes &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x432;&#x43B;&#x438;&#x44F;&#x442;&#x44C; &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x435; flows &#x438;&#x43D;&#x430;&#x447;&#x435;, &#x447;&#x435;&#x43C; &#x43D;&#x430; &#x443;&#x436;&#x435; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x44B;&#x435; SSE streams.</p>
<p>Canary &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x43B;&#x438;&#x43C;&#x438;&#x442; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x438; &#x438; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; stop &#x43F;&#x43E; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430;&#x43C;. &#x41D;&#x435; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x440;&#x443;&#x447;&#x43D;&#x443;&#x44E; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x443; &#x435;&#x434;&#x438;&#x43D;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x43C; &#x437;&#x43D;&#x430;&#x43D;&#x438;&#x435;&#x43C; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x438;&#x44F; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x44F; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x435; setting &#x432; NetworkManager, systemd-networkd, udev &#x438;&#x43B;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438; orchestration, &#x43D;&#x43E; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43E;&#x43C;, &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x43C; &#x432;&#x430;&#x448;&#x435;&#x439; &#x41E;&#x421; &#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x443;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">offload-canary.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>#!/usr/bin/env bash
set -euo pipefail
dev=eth0
before=&quot;$(ethtool -k &quot;$dev&quot;)&quot;
trap &apos;ethtool -K eth0 gro on; logger -t offload-canary &quot;rollback gro=on&quot;&apos; EXIT
ethtool -K &quot;$dev&quot; gro off
ethtool -k &quot;$dev&quot; | grep &apos;generic-receive-offload&apos;
# &#x417;&#x430;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x442;&#x435; &#x448;&#x442;&#x430;&#x442;&#x43D;&#x44B;&#x439; load probe &#x438; &#x441;&#x431;&#x43E;&#x440; NIC/softirq/application metrics.
sleep 60
ethtool -K &quot;$dev&quot; gro on
trap - EXIT
printf &apos;%s\n&apos; &quot;$before&quot; &gt; /var/tmp/offload-baseline.txt</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x442;&#x43E;&#x447;&#x435;&#x447;&#x43D;&#x43E;&#x433;&#x43E; canary &#x438; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; rollback</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-06-89be59f6.webp" class="kg-image" alt="GRO, GSO &#x438; TSO &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; Linux network offload" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/gro-gso-tso-llm-api-gateway-inline-06-89be59f6.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/gro-gso-tso-llm-api-gateway-inline-06-89be59f6.webp 1000w, https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-06-89be59f6.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="failure-modes">&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x438; &#x43D;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44E; bottleneck &#x437;&#x430; &#x443;&#x441;&#x43F;&#x435;&#x445;</h2>

<p>&#x415;&#x441;&#x43B;&#x438; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x435; GRO &#x441;&#x43D;&#x438;&#x436;&#x430;&#x435;&#x442; tail latency, &#x43D;&#x43E; &#x440;&#x435;&#x437;&#x43A;&#x43E; &#x43F;&#x43E;&#x434;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; softirq &#x438; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; TTFT, &#x432;&#x44B; &#x43D;&#x430;&#x448;&#x43B;&#x438; trade-off, &#x430; &#x43D;&#x435; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x443;&#x44E; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443;. &#x412;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;, coalescing &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x43B; burst &#x432; proxy, &#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x43B;&#x435;&#x436;&#x438;&#x442; &#x432; scheduler &#x438;&#x43B;&#x438; user-space queue. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440; batching &#x438; wakeups, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x435;&#x441;&#x442;. &#x41B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x43F;&#x43E;&#x43A;&#x443;&#x43F;&#x430;&#x442;&#x44C; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x445;&#x440;&#x443;&#x43F;&#x43A;&#x438;&#x439; gateway.</p>
<p>&#x415;&#x441;&#x43B;&#x438; TSO off &#x441;&#x43D;&#x438;&#x436;&#x430;&#x435;&#x442; retransmits, &#x43D;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; &#x442;&#x43E;&#x447;&#x43D;&#x44B;&#x439; hop. &#x412;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x44B; driver/firmware defect, &#x43D;&#x435;&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x442;&#x443;&#x43D;&#x43D;&#x435;&#x43B;&#x44F; &#x438;&#x43B;&#x438; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x433;&#x43E; &#x443;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x430;. &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; kernel, driver &#x438; firmware, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; release notes &#x438; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x445;&#x43E;&#x441;&#x442;&#x435;. &#x41F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x43E; &#x434;&#x435;&#x440;&#x436;&#x430;&#x442;&#x44C; TSO off &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x43E; &#x43A;&#x430;&#x43A; &#x43E;&#x441;&#x43E;&#x437;&#x43D;&#x430;&#x43D;&#x43D;&#x44B;&#x439; workaround, &#x43D;&#x43E; &#x435;&#x433;&#x43E; CPU-&#x441;&#x442;&#x43E;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x431;&#x44B;&#x442;&#x44C; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x430;.</p>
<p>&#x415;&#x441;&#x43B;&#x438; offload &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; gateway CPU, &#x430; application outcome &#x43D;&#x435; &#x434;&#x432;&#x438;&#x433;&#x430;&#x435;&#x442;&#x441;&#x44F;, bottleneck &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x434;&#x430;&#x43B;&#x44C;&#x448;&#x435;: TLS, proxy, network egress &#x438;&#x43B;&#x438; GPU queue. &#x42D;&#x442;&#x43E; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x439; disqualifier &#x434;&#x43B;&#x44F; &#x437;&#x430;&#x43A;&#x443;&#x43F;&#x43A;&#x438;. &#x41C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/tls-handshake-storm-llm-api-gateway/">TLS handshake storm</a> &#x43F;&#x43E;&#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; &#x43A;&#x440;&#x438;&#x43F;&#x442;&#x43E;&#x433;&#x440;&#x430;&#x444;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x443;&#x44E; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x443;, &#x430; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x435;&#x43D;&#x438;&#x435; <a href="https://kingservers.com/blog/nginx-vs-caddy-vs-traefik-reverse-proxy/">Nginx, Caddy &#x438; Traefik</a> &#x2014; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443; reverse proxy.</p>
<p>&#x41D;&#x430;&#x43A;&#x43E;&#x43D;&#x435;&#x446;, &#x43D;&#x435; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; throughput. &#x414;&#x43B;&#x44F; LLM API &#x432;&#x430;&#x436;&#x43D;&#x44B; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; first byte, progress &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43D;&#x435;&#x433;&#x43E;, &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; &#x43E;&#x431;&#x440;&#x44B;&#x432;&#x43E;&#x432; &#x438; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x430;&#x44F; &#x446;&#x435;&#x43D;&#x430; CPU &#x43D;&#x430; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;. &#x418;&#x43D;&#x43E;&#x433;&#x434;&#x430; &#x43B;&#x443;&#x447;&#x448;&#x438;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x2014; &#x442;&#x43E;&#x442; &#x436;&#x435; latency &#x43F;&#x440;&#x438; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x43C; system CPU: &#x43E;&#x43D; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; capacity &#x434;&#x43B;&#x44F; &#x43F;&#x438;&#x43A;&#x430; &#x438; &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; failure domain &#x43C;&#x435;&#x43D;&#x435;&#x435; &#x43D;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x43C;.</p>
<div class="ks-widget" id="ks-tab-d1a58f4"><h3>&#x427;&#x442;&#x43E; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; canary?</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="win">CPU &#x438; outcome &#x43B;&#x443;&#x447;&#x448;&#x435;</button><button type="button" class="tab-btn" data-t="trade">&#x41E;&#x434;&#x43D;&#x430; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x430; &#x43B;&#x443;&#x447;&#x448;&#x435;</button><button type="button" class="tab-btn" data-t="none">Outcome &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x439;</button></div><div class="panel on" data-p="win">&#x41F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; A/B/A, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x435; streams &#x438; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x435; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443; &#x441; rollback.</div><div class="panel" data-p="trade">&#x418;&#x449;&#x438;&#x442;&#x435; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44E; bottleneck &#x438; &#x437;&#x430;&#x434;&#x430;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x439; &#x431;&#x44E;&#x434;&#x436;&#x435;&#x442; CPU, &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x43A; &#x438; tail latency.</div><div class="panel" data-p="none">&#x418;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43A;&#x430;&#x43A; disqualifier: offload &#x43D;&#x435; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x435;&#x442; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x43C; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;&#x43E;&#x43C;.</div><script>(function(){var r=document.getElementById('ks-tab-d1a58f4');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><h2 id="infrastructure-choice">&#x41A;&#x43E;&#x433;&#x434;&#x430; VPS &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E;, &#x430; &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; dedicated gateway</h2>

<p>VPS &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442;, &#x435;&#x441;&#x43B;&#x438; provider &#x434;&#x430;&#x451;&#x442; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; virtio path, &#x432;&#x44B; &#x432;&#x438;&#x434;&#x438;&#x442;&#x435; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x435; counters, &#x430; canary &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x435;&#x442; application SLO &#x43F;&#x440;&#x438; &#x440;&#x430;&#x437;&#x443;&#x43C;&#x43D;&#x43E;&#x43C; CPU reserve. &#x414;&#x43B;&#x44F; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x433;&#x43E; private LLM API &#x44D;&#x442;&#x43E; &#x447;&#x430;&#x441;&#x442;&#x43E; &#x43B;&#x443;&#x447;&#x448;&#x438;&#x439; &#x441;&#x442;&#x430;&#x440;&#x442;: &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x434;&#x43E;&#x43B;&#x433;&#x430;, &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435; rollout, &#x43F;&#x440;&#x43E;&#x449;&#x435; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435;. &#x422;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x442;&#x44C; physical NIC &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; TSO, &#x43D;&#x435;&#x442; &#x441;&#x43C;&#x44B;&#x441;&#x43B;&#x430;.</p>
<p>Dedicated gateway &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x430; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x43E;&#x442; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; NIC, driver &#x438;&#x43B;&#x438; firmware, &#x43D;&#x443;&#x436;&#x43D;&#x430; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x430;&#x44F; queue topology, NUMA locality, &#x430;&#x43F;&#x43F;&#x430;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x435; tunnel features &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; change window. &#x41A;&#x43E;&#x43C;&#x43C;&#x435;&#x440;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x43D;&#x435; &#x432; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x438; &#xAB;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; latency&#xBB;, &#x430; &#x432; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x43C; baseline &#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x435; failure domain. &#x42D;&#x442;&#x43E; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x430;&#x436;&#x43D;&#x43E;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x434;&#x438;&#x43D; edge &#x43E;&#x431;&#x441;&#x43B;&#x443;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43C;&#x43D;&#x43E;&#x433;&#x43E; GPU workers.</p>
<p>Managed load balancer &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x447;&#x430;&#x441;&#x442;&#x44C; ownership, &#x43D;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x442;&#x44C; offload &#x438; queue details. &#x412;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; &#x435;&#x433;&#x43E;, &#x435;&#x441;&#x43B;&#x438; &#x435;&#x433;&#x43E; SLO &#x438; telemetry &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x44B;, &#x430; &#x43D;&#x435; &#x435;&#x441;&#x43B;&#x438; &#x445;&#x43E;&#x447;&#x435;&#x442;&#x441;&#x44F; &#x438;&#x437;&#x431;&#x435;&#x436;&#x430;&#x442;&#x44C; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x438;. &#x415;&#x441;&#x43B;&#x438; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x442;&#x43E;&#x447;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; packet path, VPS &#x438;&#x43B;&#x438; dedicated edge &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x437;&#x440;&#x430;&#x447;&#x43D;&#x435;&#x435; &#x2014; &#x446;&#x435;&#x43D;&#x43E;&#x439; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x438; kernel, drivers &#x438; rollback &#x432;&#x430;&#x448;&#x435;&#x439; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x43E;&#x439;.</p>
<p>&#x41F;&#x435;&#x440;&#x435;&#x434; &#x437;&#x430;&#x43A;&#x443;&#x43F;&#x43A;&#x43E;&#x439; &#x441;&#x444;&#x43E;&#x440;&#x43C;&#x443;&#x43B;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; disqualifiers. &#x41D;&#x43E;&#x432;&#x430;&#x44F; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x430; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x43F;&#x43B;&#x43E;&#x445;&#x443;&#x44E; hash entropy, &#x43E;&#x434;&#x438;&#x43D; &#x433;&#x43E;&#x440;&#x44F;&#x447;&#x438;&#x439; flow, &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; MTU, retry storm, proxy buffering &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435;, &#x447;&#x442;&#x43E; bottleneck &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; &#x441;&#x43B;&#x43E;&#x439;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x432;&#x44B; &#x441;&#x43E;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442;&#x435;&#x441;&#x44C; &#x43A;&#x443;&#x43F;&#x438;&#x442;&#x44C;. &#x418;&#x43D;&#x430;&#x447;&#x435; &#x432;&#x44B; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x435;&#x441;&#x451;&#x442;&#x435; &#x442;&#x443; &#x436;&#x435; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443; &#x43D;&#x430; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x43E;&#x439; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;.</p>
<div class="ks-widget" id="ks-sel-e6b73d9"><h3>&#x41A;&#x430;&#x43A;&#x43E;&#x439; &#x443;&#x440;&#x43E;&#x432;&#x435;&#x43D;&#x44C; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F; &#x43D;&#x443;&#x436;&#x435;&#x43D;?</h3><label>&#x414;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; constraint</label><select data-s><option value="none">Offload &#x43D;&#x435; &#x432;&#x43B;&#x438;&#x44F;&#x435;&#x442; &#x43D;&#x430; outcome</option><option value="virt">&#x41D;&#x443;&#x436;&#x43D;&#x44B; guest-level &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438;</option><option value="nic">&#x41D;&#x443;&#x436;&#x435;&#x43D; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; NIC/driver/NUMA</option><option value="managed">&#x412;&#x430;&#x436;&#x43D;&#x435;&#x435; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x44B;&#x439; SLO &#x438; &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x443;&#x43C; ownership</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-e6b73d9');if(!r)return;var m={"none":"Не меняйте платформу: ищите TLS, proxy, MTU или backend queue.","virt":"Начните с VPS с прозрачным virtio path и достаточной telemetry.","nic":"Рассмотрите dedicated edge с фиксированными NIC, driver, firmware и change window.","managed":"Сравните telemetry и rollback managed LB; детали offload могут остаться у провайдера."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-07-916d83ae.webp" class="kg-image" alt="GRO, GSO &#x438; TSO &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; Linux network offload" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/gro-gso-tso-llm-api-gateway-inline-07-916d83ae.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/gro-gso-tso-llm-api-gateway-inline-07-916d83ae.webp 1000w, https://kingservers.com/blog/content/images/2026/10/gro-gso-tso-llm-api-gateway-inline-07-916d83ae.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="production-runbook">Production-runbook &#x438; &#x432;&#x44B;&#x432;&#x43E;&#x434;</h2>

<p>&#x421;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43A; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x43E;&#x43C;&#x443; operational contract. &#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; gateway &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; kernel, driver, firmware, effective offload features, queue layout &#x438; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;. &#x412; &#x43C;&#x43E;&#x43D;&#x438;&#x442;&#x43E;&#x440;&#x438;&#x43D;&#x433;&#x435; &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x436;&#x438;&#x442;&#x44C; NIC errors, drops, per-CPU softirq, packet rate, proxy CPU, TTFT, resets &#x438; backend latency. &#x422;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; kernel &#x438;&#x43B;&#x438; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x438; VM &#x432;&#x44B; &#x443;&#x432;&#x438;&#x434;&#x438;&#x442;&#x435; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#xAB;CPU &#x432;&#x44B;&#x440;&#x43E;&#x441;&#xBB;, &#x430; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43E;&#x43A;, &#x433;&#x434;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B;&#x441;&#x44F; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;.</p>
<p>Rollout &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x441;&#x442;&#x443;&#x43F;&#x435;&#x43D;&#x447;&#x430;&#x442;&#x43E;: &#x43E;&#x434;&#x438;&#x43D; canary, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43C;&#x430;&#x43B;&#x430;&#x44F; &#x434;&#x43E;&#x43B;&#x44F; fresh connections, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43E;&#x434;&#x438;&#x43D; failure domain. &#x414;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x435; SSE streams &#x434;&#x440;&#x435;&#x43D;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; mid-stream retry &#x43A;&#x430;&#x43A; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; HA-&#x444;&#x443;&#x43D;&#x43A;&#x446;&#x438;&#x44E;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x448;&#x430;&#x433;&#x430; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x441; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x43C; baseline &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; &#x43F;&#x440;&#x435;&#x436;&#x43D;&#x438;&#x435; features &#x431;&#x435;&#x437; &#x43F;&#x435;&#x440;&#x435;&#x437;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;.</p>
<p>&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;. Feature, &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x43A;&#x430;&#x43A; <code>on</code>, &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x442;&#x44C; &#x438;&#x43D;&#x430;&#x447;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x441;&#x43C;&#x435;&#x43D;&#x44B; driver &#x438;&#x43B;&#x438; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x44B;. &#x41F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; capture, negative control &#x438; application probe. &#x414;&#x43B;&#x44F; UDP-based tunnels &#x43F;&#x43E;&#x43C;&#x43D;&#x438;&#x442;&#x435;, &#x447;&#x442;&#x43E; &#x443;&#x441;&#x442;&#x430;&#x440;&#x435;&#x432;&#x448;&#x438;&#x439; UFO &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x441;&#x442;&#x440;&#x430;&#x442;&#x435;&#x433;&#x438;&#x435;&#x439;: &#x430;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x430; GSO &#x438; tunnel-specific offloads.</p>
<p>&#x413;&#x43B;&#x430;&#x432;&#x43D;&#x44B;&#x439; &#x432;&#x44B;&#x432;&#x43E;&#x434; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;&#x439;: GRO, GSO, TSO &#x438; checksum offload &#x2014; &#x44D;&#x442;&#x43E; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x44B; &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x438;&#x442;&#x44C; packet-processing work, &#x430; &#x43D;&#x435; &#x43C;&#x430;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x435; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x438;&#x442;&#x435;&#x43B;&#x438; LLM. &#x41E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443;, &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x435;&#x441;&#x43B;&#x438; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43B;&#x438; effective mechanism &#x441; resource budget &#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x43C; outcome, &#x430; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x43B;&#x438; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; rollback. &#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; owner map &#x438; baseline &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; gateway; &#x435;&#x441;&#x43B;&#x438; evidence &#x443;&#x43F;&#x440;&#x451;&#x442;&#x441;&#x44F; &#x432; &#x447;&#x443;&#x436;&#x43E;&#x439; hypervisor &#x438;&#x43B;&#x438; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44B;&#x439; NIC, &#x442;&#x43E;&#x433;&#x434;&#x430; &#x443;&#x436;&#x435; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443; &#x441; &#x43D;&#x443;&#x436;&#x43D;&#x43E;&#x439; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x435;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F;.</p>
<div class="ks-widget" id="ks-chk-f2c84b6"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x43E; &#x43A; production rollout?</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> Owner &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x451;&#x43D; &#x434;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; interface hop</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x418;&#x437;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x438;&#x43D; effective feature</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x415;&#x441;&#x442;&#x44C; baseline &#x438; healthy negative control</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x44B; fresh &#x438; streaming connections</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> Application SLO &#x43D;&#x435; &#x443;&#x445;&#x443;&#x434;&#x448;&#x438;&#x43B;&#x441;&#x44F;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> A/B/A &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x43B; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="6"> Rollback &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x43D; &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-f2c84b6');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[Qdrant backup и restore для RAG: snapshots без ложного чувства безопасности]]></title><description><![CDATA[Практический runbook резервного копирования и восстановления Qdrant для RAG: snapshots, cluster mode, recovery priority, application gates, cutover и rollback.]]></description><link>https://kingservers.com/blog/qdrant-snapshot-restore-rag-disaster-recovery/</link><guid isPermaLink="false">6acde9acaff2afac25354e03</guid><category><![CDATA[AI]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 16 Oct 2026 08:10:11 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-hero-1244fae2.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#snapshot-is-not-backup">Snapshot Qdrant &#x2014; &#x43D;&#x435; &#x432;&#x441;&#x44F; &#x441;&#x442;&#x440;&#x430;&#x442;&#x435;&#x433;&#x438;&#x44F; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;</a></li>
<li><a href="#choose-rpo-rto">&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; RPO &#x438; RTO, &#x430; &#x43D;&#x435; &#x441; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B; curl</a></li>
<li><a href="#inventory-and-baseline">&#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; baseline &#x434;&#x43E; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x44F; snapshot</a></li>
<li><a href="#create-and-export">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; snapshot &#x438; &#x441;&#x440;&#x430;&#x437;&#x443; &#x432;&#x44B;&#x43D;&#x435;&#x441;&#x438;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x438;&#x437; failure domain</a></li>
<li><a href="#distributed-cluster">&#x412; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x451;&#x43D;&#x43D;&#x43E;&#x43C; Qdrant &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43A;&#x430;&#x436;&#x434;&#x44B;&#x439; &#x443;&#x437;&#x435;&#x43B;</a></li>
<li><a href="#restore-isolated">&#x412;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x430;&#x432;&#x43B;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x432; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x435; &#x43E;&#x43A;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x438;&#x435;</a></li>
<li><a href="#application-proof">&#x414;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x430; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435; RAG-&#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;</a></li>
<li><a href="#cutover-rollback">&#x41F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x447;&#x435;&#x440;&#x435;&#x437; alias &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x439;&#x442;&#x435; rollback</a></li>
<li><a href="#schedule-and-game-day">&#x410;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x437;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43A;&#x43E;&#x43F;&#x438;&#x438;, &#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; restore &#x432;&#x440;&#x443;&#x447;&#x43D;&#x443;&#x44E; &#x438; &#x43D;&#x430; game day</a></li>
</ul></div>

</div>RAG-&#x441;&#x435;&#x440;&#x432;&#x438;&#x441; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x442;&#x44C; HTTP 200 &#x438; &#x43F;&#x440;&#x438; &#x44D;&#x442;&#x43E;&#x43C; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x435; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x44B; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x430;&#x432;&#x430;&#x440;&#x438;&#x439;&#x43D;&#x43E;&#x433;&#x43E; restore. &#x421;&#x430;&#x43C;&#x430;&#x44F; &#x43D;&#x435;&#x43F;&#x440;&#x438;&#x44F;&#x442;&#x43D;&#x430;&#x44F; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44F; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x441;&#x43F;&#x43E;&#x43A;&#x43E;&#x439;&#x43D;&#x43E;: Qdrant &#x437;&#x430;&#x43F;&#x443;&#x449;&#x435;&#x43D;, &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x44F; green, &#x43D;&#x43E; tenant-&#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440; &#x43F;&#x440;&#x43E;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x435;&#x442; &#x447;&#x443;&#x436;&#x43E;&#x439; payload &#x438;&#x43B;&#x438; &#x43D;&#x43E;&#x432;&#x44B;&#x435; embeddings &#x43D;&#x435; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x44E;&#x442; &#x441; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x43C; &#x438;&#x43D;&#x434;&#x435;&#x43A;&#x441;&#x43E;&#x43C;. Snapshot &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x43F;&#x443;&#x442;&#x438; &#x2014; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x438; &#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438; &#x43D;&#x430; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x43C; &#x443;&#x437;&#x43B;&#x435;. &#x41D;&#x438;&#x436;&#x435; &#x2014; production-runbook, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x434;&#x43E;&#x432;&#x43E;&#x434;&#x438;&#x442; &#x43A;&#x43E;&#x43F;&#x438;&#x44E; &#x434;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;&#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x447;&#x435;&#x441;&#x442;&#x43D;&#x43E; &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; backup, &#x440;&#x435;&#x43F;&#x43B;&#x438;&#x43A;&#x430;&#x446;&#x438;&#x44F; &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x430;.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-hero-1244fae2.webp" alt="Qdrant backup &#x438; restore &#x434;&#x43B;&#x44F; RAG: snapshots &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x430; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x441;&#x442;&#x438;"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="snapshot-is-not-backup">Snapshot Qdrant &#x2014; &#x43D;&#x435; &#x432;&#x441;&#x44F; &#x441;&#x442;&#x440;&#x430;&#x442;&#x435;&#x433;&#x438;&#x44F; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;</h2>
<p>&#x423; snapshot &#x435;&#x441;&#x442;&#x44C; &#x441;&#x438;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x430;: &#x43E;&#x43D; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x435;&#x439; &#x438; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x44B;&#x43C; &#x438;&#x43D;&#x434;&#x435;&#x43A;&#x441;&#x43E;&#x43C;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43D;&#x435; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x437;&#x430;&#x43D;&#x43E;&#x432;&#x43E; &#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x44C; HNSW, &#x430; &#x44D;&#x442;&#x43E; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x43E; &#x43D;&#x430; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; RAG-&#x431;&#x430;&#x437;&#x435;. &#x41D;&#x43E; &#x430;&#x440;&#x445;&#x438;&#x432; &#x43E;&#x442;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x441;&#x44F; &#x43A; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x439; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438; &#x438; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x43C;&#x443; &#x443;&#x437;&#x43B;&#x443;. &#x41E;&#x43D; &#x43D;&#x435; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; collection aliases, &#x43D;&#x435; &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x431;&#x430;&#x43B;&#x430;&#x43D;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x449;&#x438;&#x43A;, API-&#x43A;&#x43B;&#x44E;&#x447;&#x438;, DNS, &#x43E;&#x431;&#x44A;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x438; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442;&#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;.</p><p>&#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; verdict &#x442;&#x430;&#x43A;&#x43E;&#x439;: &#x434;&#x43B;&#x44F; single-node Qdrant snapshot &#x2014; &#x445;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x43C;&#x44B;&#x439; recovery artifact; &#x434;&#x43B;&#x44F; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x451;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43A;&#x43E;&#x43C;&#x43F;&#x43B;&#x435;&#x43A;&#x442; &#x43A;&#x43E;&#x43F;&#x438;&#x439; &#x43F;&#x43E; &#x443;&#x437;&#x43B;&#x430;&#x43C; &#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; runbook; &#x432; Qdrant Cloud &#x434;&#x43B;&#x44F; &#x43F;&#x43E;&#x43B;&#x43D;&#x43E;&#x433;&#x43E; disaster recovery &#x440;&#x430;&#x437;&#x443;&#x43C;&#x43D;&#x435;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x44C; backups. &#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; <a href="https://qdrant.tech/documentation/operations/snapshots/?ref=kingservers.com">snapshots</a> &#x438; cloud backups. &#x42D;&#x442;&#x43E; &#x442;&#x430; &#x436;&#x435; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430;, &#x447;&#x442;&#x43E; &#x43F;&#x43E;&#x434;&#x440;&#x43E;&#x431;&#x43D;&#x43E; &#x440;&#x430;&#x437;&#x43E;&#x431;&#x440;&#x430;&#x43D;&#x430; &#x432; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B;&#x435; KingServers <a href="https://kingservers.com/blog/backup-vs-snapshot-raznitsa/">&#xAB;Backup vs Snapshot&#xBB;</a>.</p><p>Disqualifier &#x432;&#x430;&#x436;&#x435;&#x43D; &#x441;&#x440;&#x430;&#x437;&#x443;: snapshot &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x43D;&#x443;&#x44E; embedding-&#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C;, &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; chunking &#x438;&#x43B;&#x438; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x445; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x43E;&#x432;. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x432;&#x435;&#x43A;&#x442;&#x43E;&#x440;&#x44B; &#x444;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;, &#x43D;&#x43E; retrieval &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x43D;&#x435; &#x442;&#x435; &#x444;&#x440;&#x430;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x44B;, &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x432;&#x44B;&#x448;&#x435; storage layer. &#x41D;&#x435; &#x43F;&#x43E;&#x43A;&#x443;&#x43F;&#x430;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x434;&#x43E; &#x442;&#x43E;&#x433;&#x43E;, &#x43A;&#x430;&#x43A; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;&#x437;&#x43E;&#x432;&#x430;&#x43B;&#x438; &#x441;&#x43B;&#x43E;&#x439; &#x43E;&#x442;&#x43A;&#x430;&#x437;&#x430;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-01-4748186a.webp" class="kg-image" alt="Qdrant backup &#x438; restore &#x434;&#x43B;&#x44F; RAG: snapshots &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x430; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-01-4748186a.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-01-4748186a.webp 1000w, https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-01-4748186a.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="choose-rpo-rto">&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; RPO &#x438; RTO, &#x430; &#x43D;&#x435; &#x441; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B; curl</h2>
<p>RPO &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;, &#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x43E; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x442;&#x44C;. RTO &#x2014; &#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x438; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x431;&#x435;&#x437; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x438;&#x441;&#x43A;&#x430;. &#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x442;&#x430;&#x43B;&#x43E;&#x433;&#x430;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x438;&#x43D;&#x434;&#x435;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x435;&#x442;&#x441;&#x44F; &#x438;&#x437; PostgreSQL &#x438;&#x43B;&#x438; object storage, RPO Qdrant &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43C;&#x44F;&#x433;&#x447;&#x435;: &#x438;&#x441;&#x442;&#x43E;&#x447;&#x43D;&#x438;&#x43A;&#x43E;&#x43C; &#x438;&#x441;&#x442;&#x438;&#x43D;&#x44B; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x43D;&#x430;&#x44F; &#x431;&#x430;&#x437;&#x430;. &#x414;&#x43B;&#x44F; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x43E;&#x439; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438; &#x430;&#x441;&#x441;&#x438;&#x441;&#x442;&#x435;&#x43D;&#x442;&#x430; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x447;&#x430;&#x441;&#x43E;&#x432; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x443;&#x436;&#x435; &#x431;&#x438;&#x437;&#x43D;&#x435;&#x441;-&#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x43E;&#x43C;.</p><p>&#x421;&#x43E;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; resource budget &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;: &#x43E;&#x431;&#x44A;&#x451;&#x43C; snapshot, &#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x43D;&#x43E;&#x435; &#x43C;&#x435;&#x441;&#x442;&#x43E; &#x43D;&#x430; target, &#x43F;&#x440;&#x43E;&#x43F;&#x443;&#x441;&#x43A;&#x43D;&#x443;&#x44E; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43C;&#x435;&#x436;&#x434;&#x443; failure domains, RAM &#x434;&#x43B;&#x44F; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x438;&#x44F; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x43E;&#x432; &#x438; &#x43E;&#x43A;&#x43D;&#x43E;, &#x432; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x43C; GPU-&#x438;&#x43D;&#x444;&#x435;&#x440;&#x435;&#x43D;&#x441; &#x431;&#x443;&#x434;&#x435;&#x442; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x442;&#x44C; &#x43D;&#x435;&#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x43A;&#x441;&#x442;. &#x41F;&#x43E; &#x430;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; Qdrant target &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x438; &#x438;&#x43B;&#x438; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x442;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x434;&#x438;&#x441;&#x43A;&#x43E;&#x432;&#x43E;&#x435; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x440;&#x430;&#x43D;&#x441;&#x442;&#x432;&#x43E;: &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x442; &#x430;&#x440;&#x445;&#x438;&#x432; &#x438; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x430;&#x44F; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x44F;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x44D;&#x442;&#x43E; &#x43D;&#x430; &#x441;&#x432;&#x43E;&#x435;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; &#x438; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x43C; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x435;, &#x430; &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x447;&#x443;&#x436;&#x443;&#x44E; &#x43E;&#x446;&#x435;&#x43D;&#x43A;&#x443;.</p><p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;: snapshot &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x44B;&#x435; &#x448;&#x435;&#x441;&#x442;&#x44C; &#x447;&#x430;&#x441;&#x43E;&#x432;, &#x43D;&#x43E; &#x432;&#x44B;&#x433;&#x440;&#x443;&#x436;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x441; &#x443;&#x437;&#x43B;&#x430; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x440;&#x430;&#x437; &#x432; &#x441;&#x443;&#x442;&#x43A;&#x438;. &#x424;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; RPO &#x440;&#x430;&#x432;&#x435;&#x43D; &#x43D;&#x435; &#x448;&#x435;&#x441;&#x442;&#x438; &#x447;&#x430;&#x441;&#x430;&#x43C;, &#x430; &#x432;&#x43E;&#x437;&#x440;&#x430;&#x441;&#x442;&#x443; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x435;&#x439; &#x43A;&#x43E;&#x43F;&#x438;&#x438;, &#x43F;&#x435;&#x440;&#x435;&#x436;&#x438;&#x432;&#x448;&#x435;&#x439; &#x43E;&#x442;&#x43A;&#x430;&#x437; &#x443;&#x437;&#x43B;&#x430;. Owner &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x443;&#x43C;&#x435;&#x442;&#x44C; &#x43D;&#x430;&#x437;&#x432;&#x430;&#x442;&#x44C; &#x44D;&#x442;&#x443; &#x434;&#x430;&#x442;&#x443; &#x431;&#x435;&#x437; &#x432;&#x445;&#x43E;&#x434;&#x430; &#x43D;&#x430; &#x443;&#x436;&#x435; &#x443;&#x43C;&#x435;&#x440;&#x448;&#x438;&#x439; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;. &#x411;&#x43E;&#x43B;&#x435;&#x435; &#x448;&#x438;&#x440;&#x43E;&#x43A;&#x438;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441; &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x43E; &#x441;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; &#x441; <a href="https://kingservers.com/blog/disaster-recovery-planning-rezervnoe-kopirovanie-vosstanovlenie/">&#x43F;&#x43B;&#x430;&#x43D;&#x43E;&#x43C; Disaster Recovery</a>.</p>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-sel-qdr7a2x"><h3>&#x41A;&#x430;&#x43A;&#x43E;&#x439; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43D;&#x443;&#x436;&#x435;&#x43D;</h3>
<label>&#x421;&#x446;&#x435;&#x43D;&#x430;&#x440;&#x438;&#x439;</label><select data-s><option value="collection">&#x41F;&#x43E;&#x432;&#x440;&#x435;&#x436;&#x434;&#x435;&#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x430; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x44F;</option><option value="cluster">&#x41F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D; &#x432;&#x435;&#x441;&#x44C; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;</option><option value="node">&#x412;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x44B;&#x43F;&#x430;&#x43B; &#x43E;&#x434;&#x438;&#x43D; &#x443;&#x437;&#x435;&#x43B;</option><option value="migration">&#x41D;&#x443;&#x436;&#x43D;&#x430; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44F;</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-qdr7a2x');if(!r)return;var m={"collection":"Collection snapshot подходит, если сохранены совместимая версия и копии всех нужных узлов.","cluster":"Для полного отказа нужен проверенный cluster backup или полный комплект snapshot плюс отдельно сохранённая конфигурация и процедура сборки.","node":"Сначала используйте репликацию и штатное восстановление shard; snapshot не должен подменять отказоустойчивость.","migration":"Snapshot быстрее переносит готовый индекс, но изменение shard topology удобнее выполнять через перенос записей или новую коллекцию."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-02-00b47f83.webp" class="kg-image" alt="Qdrant backup &#x438; restore &#x434;&#x43B;&#x44F; RAG: snapshots &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x430; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-02-00b47f83.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-02-00b47f83.webp 1000w, https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-02-00b47f83.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="inventory-and-baseline">&#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; baseline &#x434;&#x43E; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x44F; snapshot</h2>
<p>&#x414;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x439; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x438;&#x434;&#x435;&#x43D;&#x442;&#x438;&#x447;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x440;&#x435;&#x434;&#x44B;: &#x442;&#x43E;&#x447;&#x43D;&#x443;&#x44E; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44E; Qdrant, &#x440;&#x435;&#x436;&#x438;&#x43C; single-node &#x438;&#x43B;&#x438; cluster, &#x441;&#x43F;&#x438;&#x441;&#x43E;&#x43A; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x439; &#x438; aliases, vector size &#x438; distance, shard_number, replication_factor, write_consistency_factor, quantization &#x438; on_disk &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x44B;. Snapshot, &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x439; Qdrant 1.18.1, &#x43F;&#x43E; &#x442;&#x435;&#x43A;&#x443;&#x449;&#x435;&#x43C;&#x443; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x443; &#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x438; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x430;&#x432;&#x43B;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x442;&#x443; &#x436;&#x435; minor-&#x432;&#x435;&#x442;&#x43A;&#x443; &#x43D;&#x435; &#x43D;&#x438;&#x436;&#x435; patch-&#x432;&#x435;&#x440;&#x441;&#x438;&#x438; &#x438;&#x441;&#x442;&#x43E;&#x447;&#x43D;&#x438;&#x43A;&#x430; &#x43B;&#x438;&#x431;&#x43E; &#x432; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x443;&#x44E; minor-&#x432;&#x435;&#x442;&#x43A;&#x443;. &#x414;&#x43B;&#x44F; 1.18.1 &#x44D;&#x442;&#x43E; 1.18.1+ &#x438;&#x43B;&#x438; 1.19.x; &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x432; &#x432;&#x435;&#x447;&#x43D;&#x43E;&#x435; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x43E; &#x2014; &#x43F;&#x435;&#x440;&#x435;&#x434; restore &#x441;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435;&#x441;&#x44C; &#x441; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x435;&#x439; &#x432;&#x430;&#x448;&#x435;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438;.</p><p>&#x421;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; data baseline &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43E;&#x442; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;: &#x447;&#x438;&#x441;&#x43B;&#x43E; points, &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x43D;&#x44B;&#x445; IDs &#x441; payload, &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;&#x44B; &#x434;&#x435;&#x441;&#x44F;&#x442;&#x438;-&#x43F;&#x44F;&#x442;&#x438;&#x434;&#x435;&#x441;&#x44F;&#x442;&#x438; golden queries &#x438; &#x43D;&#x435;&#x433;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x439; &#x43D;&#x430;&#x431;&#x43E;&#x440;. Golden query &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442; &#x438;&#x43B;&#x438; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x439; &#x43D;&#x430;&#x431;&#x43E;&#x440; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x43E;&#x432;; negative control &#x2014; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D; &#x43E;&#x442;&#x441;&#x435;&#x43A;&#x430;&#x442;&#x44C;&#x441;&#x44F; tenant/filter &#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439;. &#x422;&#x430;&#x43A; &#x432;&#x44B; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; &#xAB;&#x430;&#x440;&#x445;&#x438;&#x432; &#x440;&#x430;&#x441;&#x43F;&#x430;&#x43A;&#x43E;&#x432;&#x430;&#x43B;&#x441;&#x44F;&#xBB; &#x43E;&#x442; &#xAB;RAG &#x441;&#x43D;&#x43E;&#x432;&#x430; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#xBB;.</p><p>&#x41D;&#x430;&#x43A;&#x43E;&#x43D;&#x435;&#x446;, &#x437;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; owner &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; gate. Platform team &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; &#x443;&#x437;&#x43B;&#x44B; &#x438; &#x434;&#x438;&#x441;&#x43A;&#x438;, database owner &#x2014; &#x437;&#x430; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438; &#x438; aliases, ML/RAG owner &#x2014; &#x437;&#x430; embedding identity &#x438; retrieval outcome. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x438;&#x43D; &#x447;&#x435;&#x43B;&#x43E;&#x432;&#x435;&#x43A; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; &#x432;&#x441;&#x451; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; &#x431;&#x443;&#x43C;&#x430;&#x433;&#x435;, &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430; &#x442;&#x440;&#x438; &#x441;&#x43B;&#x43E;&#x44F; &#x441;&#x43D;&#x43E;&#x432;&#x430; &#x441;&#x43E;&#x43B;&#x44C;&#x44E;&#x442;&#x441;&#x44F; &#x432; &#x43E;&#x434;&#x43D;&#x443; &#x444;&#x440;&#x430;&#x437;&#x443; &#xAB;Qdrant &#x43F;&#x43E;&#x434;&#x43D;&#x44F;&#x43B;&#x441;&#x44F;&#xBB;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">qdrant-baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>curl -fsS http://127.0.0.1:6333/\ncurl -fsS http://127.0.0.1:6333/collections/knowledge\ncurl -fsS &apos;http://127.0.0.1:6333/collections/knowledge/points/count?exact=true&apos;</code></pre>
<div class="ks-canonical-code-block__caption">&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x444;&#x438;&#x43A;&#x441;&#x430;&#x446;&#x438;&#x44F; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; &#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438;</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-03-5bac9ea4.webp" class="kg-image" alt="Qdrant backup &#x438; restore &#x434;&#x43B;&#x44F; RAG: snapshots &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x430; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-03-5bac9ea4.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-03-5bac9ea4.webp 1000w, https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-03-5bac9ea4.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="create-and-export">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; snapshot &#x438; &#x441;&#x440;&#x430;&#x437;&#x443; &#x432;&#x44B;&#x43D;&#x435;&#x441;&#x438;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x438;&#x437; failure domain</h2>
<p>Collection snapshot &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442;&#x441;&#x44F; API-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x43C; &#x43A; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x43C;&#x443; &#x443;&#x437;&#x43B;&#x443;. &#x41E;&#x442;&#x432;&#x435;&#x442; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x438;&#x43C;&#x44F; &#x444;&#x430;&#x439;&#x43B;&#x430;; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x444;&#x430;&#x439;&#x43B; &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x441;&#x43A;&#x430;&#x447;&#x430;&#x442;&#x44C;, &#x43F;&#x43E;&#x441;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; checksum &#x438; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x432; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435;. &#x41A;&#x43E;&#x43F;&#x438;&#x44F; &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; NVMe &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x435;&#x442; &#x43E;&#x442; &#x43D;&#x435;&#x443;&#x434;&#x430;&#x447;&#x43D;&#x43E;&#x433;&#x43E; UPDATE, &#x43D;&#x43E; &#x43D;&#x435; &#x43E;&#x442; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; &#x434;&#x438;&#x441;&#x43A;&#x430;, &#x443;&#x437;&#x43B;&#x430; &#x438;&#x43B;&#x438; &#x441;&#x442;&#x43E;&#x439;&#x43A;&#x438;. &#x41E;&#x431;&#x44A;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435;, &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; backup-&#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x438;&#x43B;&#x438; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; &#x440;&#x435;&#x433;&#x438;&#x43E;&#x43D; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x43F;&#x43E; &#x432;&#x430;&#x448;&#x435;&#x43C;&#x443; threat model.</p><p>&#x41D;&#x435; &#x441;&#x447;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; HTTP 200 &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E;&#x43C; backup. &#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; evidence bundle &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; JSON-&#x43E;&#x442;&#x432;&#x435;&#x442; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x44F;, &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440; &#x444;&#x430;&#x439;&#x43B;&#x430;, SHA-256, &#x432;&#x435;&#x440;&#x441;&#x438;&#x44E; Qdrant, collection config, timestamp &#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x44F; &#x430;&#x440;&#x445;&#x438;&#x432;&#x430; &#x438;&#x437; &#x446;&#x435;&#x43B;&#x435;&#x432;&#x43E;&#x433;&#x43E; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x430;. &#x428;&#x438;&#x444;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x438; retention &#x437;&#x430;&#x434;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x432;&#x43D;&#x435; Qdrant, &#x430; &#x43A;&#x43B;&#x44E;&#x447; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43D;&#x430;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x44C;&#x441;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432; &#x442;&#x43E;&#x43C; &#x436;&#x435; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;.</p><p>&#x414;&#x43B;&#x44F; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x445; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x439; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x430; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; I/O-&#x43A;&#x432;&#x43E;&#x442;&#x430;: snapshot &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x44B;&#x442;&#x435;&#x441;&#x43D;&#x438;&#x442;&#x44C; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x435; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x44B; &#x438;&#x43B;&#x438; &#x437;&#x430;&#x431;&#x438;&#x442;&#x44C; &#x434;&#x438;&#x441;&#x43A; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x43C;&#x438; &#x444;&#x430;&#x439;&#x43B;&#x430;&#x43C;&#x438;. Qdrant &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; &#x443;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; snapshots_path &#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x434;&#x43B;&#x44F; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x445; &#x444;&#x430;&#x439;&#x43B;&#x43E;&#x432;. &#x415;&#x441;&#x43B;&#x438; storage budget &#x43D;&#x435; &#x432;&#x44B;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x438; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x435; &#x430;&#x440;&#x445;&#x438;&#x432;&#x430;, &#x44D;&#x442;&#x43E; &#x443;&#x436;&#x435; qualifying condition &#x434;&#x43B;&#x44F; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; backup path &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x437;&#x43B;&#x430;, &#x430; &#x43D;&#x435; &#x43F;&#x43E;&#x432;&#x43E;&#x434; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x442;&#x44C; cron &#x447;&#x430;&#x449;&#x435;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">create-snapshot.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>QDRANT=http://127.0.0.1:6333\nCOLLECTION=knowledge\nSNAPSHOT=$(curl -fsS -X POST &quot;$QDRANT/collections/$COLLECTION/snapshots&quot; | jq -r &apos;.result.name&apos;)\ncurl -fsS -o &quot;$SNAPSHOT&quot; &quot;$QDRANT/collections/$COLLECTION/snapshots/$SNAPSHOT&quot;\nsha256sum &quot;$SNAPSHOT&quot; &gt; &quot;$SNAPSHOT.sha256&quot;\nsha256sum -c &quot;$SNAPSHOT.sha256&quot;</code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x435;, &#x441;&#x43A;&#x430;&#x447;&#x438;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; checksum</div>
</div>
<div class="ks-widget" id="ks-tab-rpo9k4m"><h3>&#x427;&#x442;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43A;&#x430;&#x436;&#x434;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430;</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="infra">Infrastructure</button><button type="button" class="tab-btn" data-t="data">Data</button><button type="button" class="tab-btn" data-t="app">Application</button></div><div class="panel on" data-p="infra">&#x41A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x44F; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x430;, shards &#x438; replicas &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;, &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x438; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x432;&#x435;&#x43A;&#x442;&#x43E;&#x440;&#x43E;&#x432; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x44E;&#x442;.</div><div class="panel" data-p="data">&#x41A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; point IDs, payload &#x438; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x435;&#x439; &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x442; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x43E;&#x439; &#x442;&#x43E;&#x447;&#x43A;&#x435; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;.</div><div class="panel" data-p="app">&#x424;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x435; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x44B;, &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x44B; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x44E;&#x442;, &#x430; &#x437;&#x430;&#x432;&#x435;&#x434;&#x43E;&#x43C;&#x43E; &#x43D;&#x435;&#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442; &#x43D;&#x435; &#x43F;&#x43E;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x432; top-k.</div>
<script>(function(){var r=document.getElementById('ks-tab-rpo9k4m');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-04-3595c319.webp" class="kg-image" alt="Qdrant backup &#x438; restore &#x434;&#x43B;&#x44F; RAG: snapshots &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x430; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-04-3595c319.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-04-3595c319.webp 1000w, https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-04-3595c319.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="distributed-cluster">&#x412; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x451;&#x43D;&#x43D;&#x43E;&#x43C; Qdrant &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43A;&#x430;&#x436;&#x434;&#x44B;&#x439; &#x443;&#x437;&#x435;&#x43B;</h2>
<p>&#x412; cluster mode &#x43E;&#x434;&#x43D;&#x430; collection snapshot &#x441;&#x43E;&#x434;&#x435;&#x440;&#x436;&#x438;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;, &#x440;&#x430;&#x437;&#x43C;&#x435;&#x449;&#x451;&#x43D;&#x43D;&#x44B;&#x435; &#x43D;&#x430; &#x443;&#x437;&#x43B;&#x435;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x435;&#x451; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43B;. &#x417;&#x43D;&#x430;&#x447;&#x438;&#x442;, &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43A; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E;&#x43C;&#x443; endpoint &#x43D;&#x435; &#x434;&#x430;&#x451;&#x442; &#x43F;&#x43E;&#x43B;&#x43D;&#x443;&#x44E; &#x43A;&#x43E;&#x43F;&#x438;&#x44E; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x451;&#x43D;&#x43D;&#x43E;&#x439; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438;. Runbook &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D; &#x43F;&#x435;&#x440;&#x435;&#x447;&#x438;&#x441;&#x43B;&#x438;&#x442;&#x44C; peers, &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x438;&#x442;&#x44C; snapshot &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C; &#x443;&#x437;&#x43B;&#x435; &#x438; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x442;&#x44C; &#x444;&#x430;&#x439;&#x43B;&#x44B; &#x43E;&#x431;&#x449;&#x438;&#x43C; manifest: cluster ID, peer ID, collection, shard inventory, &#x432;&#x435;&#x440;&#x441;&#x438;&#x44F;, &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x438; checksum.</p><p>&#x420;&#x435;&#x43F;&#x43B;&#x438;&#x43A;&#x430;&#x446;&#x438;&#x44F; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x43E;&#x43C; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x43E;&#x439; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x43E;&#x441;&#x442;&#x438;. &#x41F;&#x440;&#x438; &#x43A;&#x440;&#x430;&#x442;&#x43A;&#x43E;&#x43C; &#x432;&#x44B;&#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x438; &#x443;&#x437;&#x43B;&#x430; Qdrant &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x43F;&#x443;&#x449;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x438; &#x447;&#x435;&#x440;&#x435;&#x437; WAL delta; &#x435;&#x441;&#x43B;&#x438; &#x440;&#x430;&#x437;&#x43D;&#x438;&#x446;&#x430; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x430;, &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x435;&#x43D; fallback &#x43A; &#x43F;&#x43E;&#x43B;&#x43D;&#x43E;&#x43C;&#x443; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x443; records. Snapshot transfer &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x44B;&#x439; &#x438;&#x43D;&#x434;&#x435;&#x43A;&#x441; &#x438; quantized data, &#x43D;&#x43E; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x43C;&#x435;&#x441;&#x442;&#x430;. &#x42D;&#x442;&#x438; &#x43C;&#x435;&#x442;&#x43E;&#x434;&#x44B; &#x440;&#x435;&#x448;&#x430;&#x44E;&#x442; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; replica &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; &#x436;&#x438;&#x432;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x430;, &#x442;&#x43E;&#x433;&#x434;&#x430; &#x43A;&#x430;&#x43A; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; snapshot &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43F;&#x440;&#x43E;&#x442;&#x438;&#x432; &#x443;&#x434;&#x430;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438;, &#x43F;&#x43E;&#x432;&#x440;&#x435;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x438;&#x43B;&#x438; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; failure domain.</p><p>&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43B;&#x43E;&#x432;&#x443;&#x448;&#x43A;&#x430;: &#x442;&#x440;&#x438; &#x443;&#x437;&#x43B;&#x430; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x449;&#x435;&#x43D;&#x44B; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x435; &#x438;&#x43B;&#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x43C; &#x442;&#x43E;&#x43C;&#x435;. &#x424;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; replication_factor &#x440;&#x430;&#x432;&#x435;&#x43D; &#x442;&#x440;&#x451;&#x43C;, &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; failure domain &#x43E;&#x434;&#x438;&#x43D;. &#x41F;&#x435;&#x440;&#x435;&#x434; &#x43F;&#x43E;&#x43A;&#x443;&#x43F;&#x43A;&#x43E;&#x439; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435;&#x433;&#x43E; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x430; &#x43D;&#x430;&#x440;&#x438;&#x441;&#x443;&#x439;&#x442;&#x435; physical placement: &#x43F;&#x438;&#x442;&#x430;&#x43D;&#x438;&#x435;, &#x433;&#x438;&#x43F;&#x435;&#x440;&#x432;&#x438;&#x437;&#x43E;&#x440;, NVMe, &#x441;&#x442;&#x43E;&#x439;&#x43A;&#x430;, &#x440;&#x435;&#x433;&#x438;&#x43E;&#x43D;. &#x412;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x430;&#x44F; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x430; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x430; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x43D;&#x435; &#xAB;&#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x432;&#x435;&#x43A;&#x442;&#x43E;&#x440;&#x43E;&#x432;&#xBB;, &#x430; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x435;&#x43C; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x449;&#x435;&#x43D;&#x438;&#x44F;, I/O budget &#x438; &#x43E;&#x43A;&#x43D;&#x430; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;. &#x414;&#x43B;&#x44F; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x430; backend &#x43F;&#x440;&#x438;&#x433;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x435;&#x43D;&#x438;&#x435; <a href="https://kingservers.com/blog/ceph-vs-minio-vs-nas-storage-backend/">Ceph, MinIO &#x438; NAS</a>.</p>
<div class="ks-widget" id="ks-chk-bak3n8p"><h3>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; snapshot &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x430;</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x44B; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44F; Qdrant &#x438; collection config</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> Snapshot &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D; &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C; &#x443;&#x437;&#x43B;&#x435; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x451;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x430;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x424;&#x430;&#x439;&#x43B; &#x432;&#x44B;&#x43D;&#x435;&#x441;&#x435;&#x43D; &#x438;&#x437; failure domain &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x430;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x44B; checksum &#x438; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x44F;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x44B; aliases &#x438; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x44F;&#x44F; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x41D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x44B; RPO, retention &#x438; owner &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;</label><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-bak3n8p');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-05-c343e81b.webp" class="kg-image" alt="Qdrant backup &#x438; restore &#x434;&#x43B;&#x44F; RAG: snapshots &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x430; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-05-c343e81b.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-05-c343e81b.webp 1000w, https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-05-c343e81b.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="restore-isolated">&#x412;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x430;&#x432;&#x43B;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x432; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x435; &#x43E;&#x43A;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x438;&#x435;</h2>
<p>&#x41D;&#x438;&#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x43D;&#x43E;&#x432;&#x44B;&#x439; runbook &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C; restore &#x43F;&#x43E;&#x432;&#x435;&#x440;&#x445; production. &#x41F;&#x43E;&#x434;&#x43D;&#x438;&#x43C;&#x438;&#x442;&#x435; target &#x442;&#x43E;&#x439; &#x436;&#x435; &#x438;&#x43B;&#x438; &#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438;, &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x44C;&#x442;&#x435; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x438; &#x443;&#x431;&#x435;&#x434;&#x438;&#x442;&#x435;&#x441;&#x44C;, &#x447;&#x442;&#x43E; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E; &#x43F;&#x438;&#x441;&#x430;&#x442;&#x44C; &#x442;&#x443;&#x434;&#x430; &#x434;&#x43E; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438;. &#x414;&#x43B;&#x44F; &#x43D;&#x43E;&#x432;&#x43E;&#x439; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438; &#x43E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; API &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; recover &#x43F;&#x43E; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x43E;&#x43C;&#x443; URL, file URI &#x438;&#x43B;&#x438; &#x437;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x443; &#x444;&#x430;&#x439;&#x43B;&#x430;. &#x412; Qdrant Cloud outbound URL restore &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x43C;&#x44B;&#x439; upload &#x438;&#x43B;&#x438; cloud backup flow.</p><p>&#x414;&#x43B;&#x44F; &#x43F;&#x443;&#x441;&#x442;&#x43E;&#x439; target-&#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438; &#x437;&#x430;&#x434;&#x430;&#x432;&#x430;&#x439;&#x442;&#x435; priority=snapshot. &#x41E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x43E; &#x443;&#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x43D;&#x438;&#x44E; priority=replica &#x43F;&#x440;&#x435;&#x434;&#x43F;&#x43E;&#x447;&#x438;&#x442;&#x430;&#x435;&#x442; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x435;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;, &#x438; &#x432; &#x43D;&#x43E;&#x432;&#x43E;&#x43C; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435; &#x44D;&#x442;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x442;&#x44C; &#x43F;&#x443;&#x441;&#x442;&#x43E;&#x439; &#x438;&#x441;&#x442;&#x43E;&#x447;&#x43D;&#x438;&#x43A;. &#x420;&#x435;&#x436;&#x438;&#x43C; no_sync &#x43F;&#x440;&#x435;&#x434;&#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D; &#x434;&#x43B;&#x44F; &#x441;&#x43F;&#x435;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; &#x440;&#x443;&#x447;&#x43D;&#x44B;&#x445; &#x441;&#x446;&#x435;&#x43D;&#x430;&#x440;&#x438;&#x435;&#x432;; &#x431;&#x435;&#x437; &#x442;&#x43E;&#x447;&#x43D;&#x43E;&#x433;&#x43E; shard map &#x43E;&#x43D; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x443; &#x432; &#x441;&#x43B;&#x43E;&#x43C;&#x430;&#x43D;&#x43D;&#x43E;&#x43C; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x438;. &#x42D;&#x442;&#x43E; &#x43D;&#x435; &#xAB;&#x431;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; restore&#xBB;, &#x430; &#x438;&#x43D;&#x441;&#x442;&#x440;&#x443;&#x43C;&#x435;&#x43D;&#x442; &#x434;&#x43B;&#x44F; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x430;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x441;&#x438;&#x43D;&#x445;&#x440;&#x43E;&#x43D;&#x438;&#x437;&#x430;&#x446;&#x438;&#x435;&#x439; &#x441;&#x430;&#x43C;.</p><p>&#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430; &#x434;&#x43E;&#x436;&#x434;&#x438;&#x442;&#x435;&#x441;&#x44C; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x44F;, &#x43D;&#x43E; &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; alias. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x43D;&#x44B;&#x439; gate: collection status green, &#x432;&#x441;&#x435; shards active, replica count &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x43F;&#x43B;&#x430;&#x43D;&#x443;, vector configuration &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x43B;&#x430;. &#x417;&#x430;&#x442;&#x435;&#x43C; data gate: count, &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; IDs &#x438; payload. &#x422;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43D;&#x438;&#x445; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; application gate. &#x41F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; &#x432;&#x430;&#x436;&#x435;&#x43D;: &#x435;&#x441;&#x43B;&#x438; point &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442;, &#x43E;&#x431;&#x441;&#x443;&#x436;&#x434;&#x430;&#x442;&#x44C; &#x43A;&#x430;&#x447;&#x435;&#x441;&#x442;&#x432;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; LLM &#x440;&#x430;&#x43D;&#x43E;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">recover-snapshot.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>curl -fsS -X PUT &apos;http://restore-qdrant:6333/collections/knowledge_restore/snapshots/recover&apos; \\\n  -H &apos;Content-Type: application/json&apos; \\\n  -d &apos;{&quot;location&quot;:&quot;file:///qdrant/snapshots/knowledge.snapshot&quot;,&quot;priority&quot;:&quot;snapshot&quot;}&apos;\n\ncurl -fsS http://restore-qdrant:6333/collections/knowledge_restore</code></pre>
<div class="ks-canonical-code-block__caption">&#x412;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x43E;&#x432;&#x43E;&#x439; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438; &#x441; &#x43F;&#x440;&#x438;&#x43E;&#x440;&#x438;&#x442;&#x435;&#x442;&#x43E;&#x43C; snapshot</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-06-4a7f6dbd.webp" class="kg-image" alt="Qdrant backup &#x438; restore &#x434;&#x43B;&#x44F; RAG: snapshots &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x430; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-06-4a7f6dbd.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-06-4a7f6dbd.webp 1000w, https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-06-4a7f6dbd.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="application-proof">&#x414;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x430; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435; RAG-&#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;</h2>
<p>&#x417;&#x435;&#x43B;&#x451;&#x43D;&#x430;&#x44F; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x44F; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x435;&#x442; storage mechanism, &#x43D;&#x43E; &#x43D;&#x435; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;. &#x417;&#x430;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x442;&#x435; golden queries &#x442;&#x435;&#x43C; &#x436;&#x435; embedding pipeline &#x438; &#x442;&#x435;&#x43C;&#x438; &#x436;&#x435; search parameters, &#x447;&#x442;&#x43E; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; production: vector name, limit, filters, score threshold, hybrid dense/sparse fusion. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; top-1. &#x414;&#x43B;&#x44F; RAG &#x432;&#x430;&#x436;&#x43D;&#x44B; presence &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x433;&#x43E; &#x438;&#x441;&#x442;&#x43E;&#x447;&#x43D;&#x438;&#x43A;&#x430; &#x432; top-k, &#x441;&#x43E;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x435; tenant boundaries &#x438; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x43E;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x441; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x44B;&#x43C;&#x438; citations.</p><p>&#x414;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443;. &#x41D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43E;&#x442; tenant A &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442; tenant B, &#x443;&#x434;&#x430;&#x43B;&#x451;&#x43D;&#x43D;&#x44B;&#x439; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442; &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x43D;&#x43E;&#x432;&#x430; &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x442;&#x44C;&#x441;&#x44F;, &#x430; &#x437;&#x430;&#x432;&#x435;&#x434;&#x43E;&#x43C;&#x43E; &#x43D;&#x435;&#x440;&#x435;&#x43B;&#x435;&#x432;&#x430;&#x43D;&#x442;&#x43D;&#x44B;&#x439; corpus &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43F;&#x440;&#x43E;&#x439;&#x442;&#x438; threshold. &#x418;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; negative control &#x43B;&#x43E;&#x432;&#x438;&#x442; &#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x439; restore: &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;, latency &#x43F;&#x440;&#x438;&#x435;&#x43C;&#x43B;&#x435;&#x43C;&#x430;, &#x43D;&#x43E; &#x441;&#x442;&#x430;&#x440;&#x430;&#x44F; payload-&#x441;&#x445;&#x435;&#x43C;&#x430; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x43B;&#x430; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430;.</p><p>&#x41C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x434;&#x435;&#x440;&#x436;&#x438;&#x442;&#x435; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;: infrastructure &#x2014; shard state, disk &#x438; process errors; retrieval &#x2014; latency, empty result rate, expected-document hit rate; application &#x2014; &#x434;&#x43E;&#x43B;&#x44F; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x445; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432;, &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x441;&#x44B;&#x43B;&#x43E;&#x43A; &#x438; cancellations. &#x41D;&#x435; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x439;&#x442;&#x435;, &#x447;&#x442;&#x43E; snapshot &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x442;&#x43E;&#x447;&#x43A;&#x438; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x44F;. &#x415;&#x441;&#x43B;&#x438; ingestion &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x43B;&#x441;&#x44F;, &#x43E;&#x442;&#x441;&#x442;&#x430;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x442;&#x44C;&#x441;&#x44F; &#x43A;&#x430;&#x43A; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x438;&#x43C;&#x44B;&#x439; RPO gap, &#x430; &#x43D;&#x435; &#x43A;&#x430;&#x43A; &#x441;&#x44E;&#x440;&#x43F;&#x440;&#x438;&#x437; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x435;&#x439;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">rag-recovery-gates.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>./rag_probe --collection knowledge_restore --suite golden.json --expect-source\n./rag_probe --collection knowledge_restore --suite tenant-boundary.json --expect-deny\n./rag_probe --collection knowledge_restore --suite deleted-docs.json --expect-absent</code></pre>
<div class="ks-canonical-code-block__caption">&#x41A;&#x430;&#x440;&#x43A;&#x430;&#x441; &#x43F;&#x43E;&#x437;&#x438;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x439; &#x438; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; application-&#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438;</div>
</div>
<div class="ks-widget" id="ks-sel-pri5t1v"><h3>&#x41A;&#x430;&#x43A; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x442;&#x44C; recovery priority</h3><label>&#x421;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x446;&#x435;&#x43B;&#x435;&#x432;&#x43E;&#x439; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438;</label><select data-s><option value="empty">&#x41D;&#x43E;&#x432;&#x430;&#x44F; &#x438;&#x43B;&#x438; &#x43F;&#x443;&#x441;&#x442;&#x430;&#x44F;</option><option value="live">&#x415;&#x441;&#x442;&#x44C; &#x430;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; replicas</option><option value="manual">&#x420;&#x443;&#x447;&#x43D;&#x43E;&#x435; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; shards</option></select><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-pri5t1v');if(!r)return;var m={"empty":"Обычно нужен priority=snapshot: источником истины становится копия. Сначала подтвердите версионную совместимость.","live":"Начните с replica: существующие данные имеют приоритет. Snapshot не должен незаметно откатывать живые записи.","manual":"no_sync оставьте только процедуре с явным shard map и оператором: ошибочное применение способно оставить кластер в неконсистентном состоянии."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-07-338f18df.webp" class="kg-image" alt="Qdrant backup &#x438; restore &#x434;&#x43B;&#x44F; RAG: snapshots &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x430; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-07-338f18df.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-07-338f18df.webp 1000w, https://kingservers.com/blog/content/images/2026/10/qdrant-snapshot-restore-rag-disaster-recovery-inline-07-338f18df.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="cutover-rollback">&#x41F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x447;&#x435;&#x440;&#x435;&#x437; alias &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x439;&#x442;&#x435; rollback</h2>
<p>&#x411;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x439; cutover &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43E;&#x434;&#x438;&#x43D; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x44B;&#x439; &#x443;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;, &#x430; &#x43D;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44E; &#x434;&#x435;&#x441;&#x44F;&#x442;&#x43A;&#x430; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x43E;&#x432;. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; alias, &#x43F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x44C;&#x442;&#x435; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x44E; &#x43F;&#x43E;&#x434; &#x43D;&#x43E;&#x432;&#x44B;&#x43C; &#x438;&#x43C;&#x435;&#x43D;&#x435;&#x43C;, &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x438;&#x442;&#x435; gates, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x430;&#x442;&#x43E;&#x43C;&#x430;&#x440;&#x43D;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x435; alias. &#x421;&#x442;&#x430;&#x440;&#x443;&#x44E; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x44E; &#x43D;&#x435; &#x443;&#x434;&#x430;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x434;&#x43E; &#x43E;&#x43A;&#x43E;&#x43D;&#x447;&#x430;&#x43D;&#x438;&#x44F; observation window &#x438; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x44F;, &#x447;&#x442;&#x43E; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x438; &#x438;&#x434;&#x443;&#x442; &#x432; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; target.</p><p>Canary &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; &#x43C;&#x430;&#x43B;&#x443;&#x44E; &#x434;&#x43E;&#x43B;&#x44E; read-only &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432; &#x43D;&#x430; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x44E;. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x435; query IDs, embedding hash &#x438; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x44B;; &#x438;&#x43D;&#x430;&#x447;&#x435; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x438;&#x435; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;&#x43E;&#x432; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x43F;&#x440;&#x438;&#x43F;&#x438;&#x441;&#x430;&#x442;&#x44C; restore. Stop condition &#x437;&#x430;&#x434;&#x430;&#x439;&#x442;&#x435; &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435;: &#x440;&#x43E;&#x441;&#x442; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x43A;, &#x43D;&#x430;&#x440;&#x443;&#x448;&#x435;&#x43D;&#x438;&#x435; tenant filter, &#x43D;&#x435;&#x43E;&#x436;&#x438;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x439; empty result &#x438;&#x43B;&#x438; &#x43D;&#x435;&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x430;&#x44F; &#x441;&#x445;&#x435;&#x43C;&#x430; payload &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442; alias &#x43D;&#x430; baseline.</p><p>Rollback &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x442;&#x44C; &#x442;&#x435; &#x436;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430; &#x432; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x43E;&#x43C; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43A;&#x435;: application probe &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442;&#x430; alias, data probe &#x43D;&#x430; baseline &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430;, &#x447;&#x442;&#x43E; writer &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; &#x43D;&#x435; &#x43F;&#x438;&#x448;&#x435;&#x442; &#x432; rejected target. &#x415;&#x441;&#x43B;&#x438; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x443;&#x43C;&#x435;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; alias &#x432;&#x43F;&#x435;&#x440;&#x451;&#x434;, &#x43D;&#x43E; &#x43D;&#x435; &#x440;&#x435;&#x43F;&#x435;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43B;&#x430; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x43E;&#x435; &#x434;&#x432;&#x438;&#x436;&#x435;&#x43D;&#x438;&#x435;, &#x44D;&#x442;&#x43E; &#x435;&#x449;&#x451; &#x43D;&#x435; recovery plan.</p>
<div class="ks-widget" id="ks-chk-cut8e6r"><h3>Gate &#x43F;&#x435;&#x440;&#x435;&#x434; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x435;&#x43C; RAG-&#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430;</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x412;&#x441;&#x435; shards active, replication &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x43F;&#x43B;&#x430;&#x43D;&#x443;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> Point IDs &#x438; payload &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x43A;&#x438; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x43B;&#x438;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> Golden queries &#x432;&#x435;&#x440;&#x43D;&#x443;&#x43B;&#x438; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x435; &#x438;&#x441;&#x442;&#x43E;&#x447;&#x43D;&#x438;&#x43A;&#x438;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> Negative control &#x43D;&#x435; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x43B; &#x437;&#x430;&#x43F;&#x440;&#x435;&#x449;&#x451;&#x43D;&#x43D;&#x44B;&#x439; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x44B; latency, error rate &#x438; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x44B; payload</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> Alias switch &#x438; rollback &#x43E;&#x442;&#x440;&#x435;&#x43F;&#x435;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x44B;</label><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-cut8e6r');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><h2 id="schedule-and-game-day">&#x410;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x437;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43A;&#x43E;&#x43F;&#x438;&#x438;, &#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; restore &#x432;&#x440;&#x443;&#x447;&#x43D;&#x443;&#x44E; &#x438; &#x43D;&#x430; game day</h2>
<p>&#x410;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; snapshot &#x43F;&#x43E; &#x440;&#x430;&#x441;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x438;&#x44E;, &#x432;&#x44B;&#x433;&#x440;&#x443;&#x436;&#x430;&#x442;&#x44C; &#x435;&#x433;&#x43E;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x442;&#x44C; checksum, &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; retention &#x438; &#x441;&#x43E;&#x43E;&#x431;&#x449;&#x430;&#x442;&#x44C; &#x432;&#x43E;&#x437;&#x440;&#x430;&#x441;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x435;&#x439; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;&#x439; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x439; &#x43A;&#x43E;&#x43F;&#x438;&#x438;. &#x410;&#x43B;&#x435;&#x440;&#x442; &#xAB;job failed&#xBB; &#x441;&#x43B;&#x430;&#x431;&#x435;&#x435;, &#x447;&#x435;&#x43C; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x430; backup_age_seconds: cron &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;, &#x43F;&#x43E;&#x43A;&#x430; upload &#x433;&#x43E;&#x434;&#x430;&#x43C;&#x438; &#x43F;&#x438;&#x448;&#x435;&#x442; &#x432; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; bucket. &#x414;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; capacity alert &#x43D;&#x430; snapshots_path &#x438; target storage.</p>
<p>&#x420;&#x430;&#x437; &#x432; &#x43A;&#x432;&#x430;&#x440;&#x442;&#x430;&#x43B; &#x438;&#x43B;&#x438; &#x441; &#x447;&#x430;&#x441;&#x442;&#x43E;&#x442;&#x43E;&#x439;, &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x435;&#x439; &#x440;&#x438;&#x441;&#x43A;&#x443;, &#x43F;&#x440;&#x43E;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435; restore drill &#x43D;&#x430; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x435;. &#x417;&#x430;&#x441;&#x435;&#x43A;&#x430;&#x439;&#x442;&#x435; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; RTO-&#x444;&#x430;&#x437;&#x44B;: &#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43A;&#x430; &#x430;&#x440;&#x445;&#x438;&#x432;&#x430;, &#x440;&#x430;&#x441;&#x43F;&#x430;&#x43A;&#x43E;&#x432;&#x43A;&#x430;, &#x441;&#x442;&#x430;&#x440;&#x442; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438;, data validation, application probes &#x438; cutover preparation. &#x42D;&#x442;&#x438; &#x447;&#x438;&#x441;&#x43B;&#x430; &#x43F;&#x440;&#x438;&#x43D;&#x430;&#x434;&#x43B;&#x435;&#x436;&#x430;&#x442; &#x432;&#x430;&#x448;&#x435;&#x439; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x435;; &#x432; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x435; &#x447;&#x435;&#x441;&#x442;&#x43D;&#x43E; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x442;&#x44C; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x43C;&#x438;&#x43D;&#x443;&#x442;&#x44B;.</p>
<p>Game day &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43D;&#x435; &#x441; &#x443;&#x434;&#x430;&#x43B;&#x435;&#x43D;&#x438;&#x44F; production-&#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438;, &#x430; &#x441; &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435; &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x446;&#x435;&#x43D;&#x430;&#x440;&#x438;&#x44F;. &#x412;&#x44B;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; &#x441;&#x432;&#x435;&#x436;&#x438;&#x439; snapshot, &#x437;&#x430;&#x43F;&#x440;&#x435;&#x442;&#x438;&#x442;&#x435; target &#x438;&#x441;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; &#x431;&#x43E;&#x435;&#x432;&#x43E;&#x43C;&#x443; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44E;, &#x432;&#x44B;&#x434;&#x430;&#x439;&#x442;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x435; credentials &#x438; &#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x44C;&#x442;&#x435; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x442;&#x435;&#x43B;&#x44F;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43D;&#x435; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x43B; backup. &#x415;&#x441;&#x43B;&#x438; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x430;&#x432;&#x442;&#x43E;&#x440; &#x441;&#x43A;&#x440;&#x438;&#x43F;&#x442;&#x430; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;, runbook &#x435;&#x449;&#x451; &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x432;&#x430;&#x435;&#x43C;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x443;&#x434;&#x430;&#x43B;&#x438;&#x442;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43A;&#x43B;&#x44E;&#x447;&#x438; &#x438; &#x441;&#x430;&#x43C; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;&#x44B;&#x439; target &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x43D;&#x43E; retention policy.</p>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x438; &#xAB;&#x43D;&#x435;&#x443;&#x434;&#x43E;&#x431;&#x43D;&#x44B;&#x435;&#xBB; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x44B;: &#x438;&#x441;&#x442;&#x451;&#x43A;&#x448;&#x438;&#x439; API key, &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x439; object storage, &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x43A; &#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x43C;&#x435;&#x441;&#x442;&#x430;, &#x43D;&#x435;&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x443;&#x44E; minor-&#x432;&#x435;&#x440;&#x441;&#x438;&#x44E; &#x438; &#x43F;&#x440;&#x435;&#x440;&#x432;&#x430;&#x43D;&#x43D;&#x443;&#x44E; &#x437;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x443; &#x430;&#x440;&#x445;&#x438;&#x432;&#x430;. &#x41E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x2014; &#x440;&#x430;&#x43D;&#x43D;&#x438;&#x439;, &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x44B;&#x439; &#x43E;&#x442;&#x43A;&#x430;&#x437; &#x431;&#x435;&#x437; &#x447;&#x430;&#x441;&#x442;&#x438;&#x447;&#x43D;&#x43E;&#x433;&#x43E; cutover. &#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x441;&#x431;&#x43E;&#x44F; &#x437;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; owner, &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x439; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431; &#x43E;&#x447;&#x438;&#x441;&#x442;&#x43A;&#x438; &#x438; &#x442;&#x43E;&#x447;&#x43A;&#x443;, &#x441; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x434;&#x443;&#x440;&#x443; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C;. &#x422;&#x430;&#x43A; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x430;&#x44F; &#x43A;&#x43E;&#x43F;&#x438;&#x44F; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x43E;&#x441;&#x442;&#x44C;, &#x430; &#x43D;&#x435; &#x432; &#x444;&#x430;&#x439;&#x43B; &#x441; &#x445;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x43C; &#x438;&#x43C;&#x435;&#x43D;&#x435;&#x43C;.</p>
<p>&#x414;&#x43B;&#x44F; production RAG &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; manifest, &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x449;&#x438;&#x439; snapshot &#x441; embedding model, revision corpus &#x438; &#x441;&#x445;&#x435;&#x43C;&#x43E;&#x439; payload. &#x415;&#x441;&#x43B;&#x438; &#x431;&#x430;&#x437;&#x430; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x43B;&#x430;&#x441;&#x44C;, &#x43D;&#x43E; embedding service &#x443;&#x436;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x448;&#x451;&#x43B; &#x43D;&#x430; &#x434;&#x440;&#x443;&#x433;&#x443;&#x44E; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x438;&#x43B;&#x438; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44E;, &#x43F;&#x43E;&#x438;&#x441;&#x43A; &#x43B;&#x438;&#x431;&#x43E; &#x443;&#x43F;&#x430;&#x434;&#x451;&#x442;, &#x43B;&#x438;&#x431;&#x43E; &#x434;&#x430;&#x441;&#x442; &#x43D;&#x435;&#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x43C;&#x44B;&#x435; &#x43E;&#x446;&#x435;&#x43D;&#x43A;&#x438;. &#x425;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; model identity &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x441; recovery evidence, &#x434;&#x430;&#x436;&#x435; &#x435;&#x441;&#x43B;&#x438; &#x441;&#x430;&#x43C;&#x438; &#x432;&#x435;&#x441;&#x430; &#x436;&#x438;&#x432;&#x443;&#x442; &#x432; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x43C; registry. &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B; &#x441; <code>rag_probe</code> &#x432;&#x44B;&#x448;&#x435; &#x2014; &#x43D;&#x430;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x43A;&#x430;&#x440;&#x43A;&#x430;&#x441; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;&#x43E;&#x433;&#x43E; harness, &#x430; &#x43D;&#x435; &#x448;&#x442;&#x430;&#x442;&#x43D;&#x430;&#x44F; CLI Qdrant; &#x440;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x443;&#x439;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x447;&#x435;&#x440;&#x435;&#x437; &#x43E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; Query API &#x438; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x430; &#x441;&#x432;&#x43E;&#x435;&#x433;&#x43E; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;.</p>
<p>&#x414;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x447;&#x435;&#x43B;&#x43E;&#x432;&#x435;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#x432; &#x438;&#x442;&#x43E;&#x433;&#x43E;&#x432;&#x44B;&#x439; &#x43E;&#x442;&#x447;&#x451;&#x442;: &#x441;&#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43B;&#x438; &#x434;&#x435;&#x436;&#x443;&#x440;&#x43D;&#x44B;&#x439;, &#x43D;&#x435; &#x443;&#x447;&#x430;&#x441;&#x442;&#x432;&#x43E;&#x432;&#x430;&#x432;&#x448;&#x438;&#x439; &#x432; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x435;, &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; &#x43F;&#x43E;&#x438;&#x441;&#x43A; &#x432; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x439; RTO &#x438; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x438;&#x442;&#x44C;, &#x43A;&#x430;&#x43A;&#x438;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D;&#x44B; &#x43F;&#x43E; RPO? &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x443;&#x441;&#x442;&#x43D;&#x44B;&#x445; &#x43F;&#x43E;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x43E;&#x43A;, &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x448;&#x430;&#x433; &#x2014; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x438;&#x442;&#x44C; manifest &#x438; probes, &#x430; &#x43D;&#x435; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x447;&#x430;&#x441;&#x442;&#x43E;&#x442;&#x443; snapshot. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x432;&#x430;&#x436;&#x43D;&#x435;&#x435; &#x43A;&#x43E;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x442;&#x432;&#x430; &#x430;&#x440;&#x445;&#x438;&#x432;&#x43E;&#x432;.</p>
<p>&#x412; &#x436;&#x443;&#x440;&#x43D;&#x430;&#x43B;&#x435; &#x443;&#x447;&#x435;&#x43D;&#x438;&#x439; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x434;&#x430;&#x442;&#x443; snapshot, &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x439; &#x444;&#x430;&#x437;&#x44B;, &#x43E;&#x431;&#x44A;&#x451;&#x43C; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x435;&#x441;&#x451;&#x43D;&#x43D;&#x44B;&#x445; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x438; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x443; &#x43B;&#x44E;&#x431;&#x43E;&#x433;&#x43E; &#x440;&#x443;&#x447;&#x43D;&#x43E;&#x433;&#x43E; &#x448;&#x430;&#x433;&#x430;. &#x41D;&#x430; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x435;&#x43C; game day &#x440;&#x443;&#x447;&#x43D;&#x44B;&#x445; &#x438;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x439; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x441;&#x442;&#x430;&#x442;&#x44C; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;, &#x438;&#x43D;&#x430;&#x447;&#x435; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x43E;&#x442; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x438;&#x43D;&#x436;&#x435;&#x43D;&#x435;&#x440;&#x430;.</p><p>&#x418;&#x442;&#x43E;&#x433; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;&#x439;: &#x445;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x439; Qdrant snapshot &#x2014; &#x44D;&#x442;&#x43E; &#x43D;&#x435; &#x444;&#x430;&#x439;&#x43B;, &#x430; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x43E;&#x442; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x439; &#x442;&#x43E;&#x447;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x434;&#x43E; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; RAG. &#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x446;&#x438;&#x438;, &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; restore, &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; negative control &#x438; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x435; RPO/RTO. &#x415;&#x441;&#x43B;&#x438; &#x434;&#x43B;&#x44F; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; NVMe budget, &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F;, &#x442;&#x43E;&#x433;&#x434;&#x430; VPS &#x438;&#x43B;&#x438; dedicated-&#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x44F;&#x442;&#x441;&#x44F; &#x447;&#x430;&#x441;&#x442;&#x44C;&#x44E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x43E;&#x433;&#x43E; &#x43F;&#x43B;&#x430;&#x43D;&#x430;, &#x430; &#x43D;&#x435; &#x43C;&#x430;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x439; &#x441;&#x442;&#x440;&#x430;&#x445;&#x43E;&#x432;&#x43A;&#x43E;&#x439;.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[Асимметричная маршрутизация Linux для LLM API: ip rule, rp_filter и fwmark]]></title><description><![CDATA[Практический runbook для multihomed Linux gateway: как найти асимметричный путь, проверить ip rule и rp_filter, сохранить fwmark и безопасно провести canary.]]></description><link>https://kingservers.com/blog/linux-policy-routing-llm-api-gateway/</link><guid isPermaLink="false">6acf3833aff2afac25354e1b</guid><category><![CDATA[Сетевые протоколы]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Решения для бизнеса]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 16 Oct 2026 08:09:54 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-hero-6e4809fc.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#quick-verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x437;: &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x438;&#x43D;&#x43E;&#x432;&#x430;&#x442; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x439; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;</a></li>
<li><a href="#path-map">&#x41D;&#x430;&#x440;&#x438;&#x441;&#x443;&#x439;&#x442;&#x435; effective path, &#x430; &#x43D;&#x435; &#x436;&#x435;&#x43B;&#x430;&#x435;&#x43C;&#x443;&#x44E; &#x430;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x443;</a></li>
<li><a href="#rpdb-tables">&#x41A;&#x430;&#x43A; Linux &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x443; &#x438; next hop</a></li>
<li><a href="#rp-filter">rp_filter: &#x437;&#x430;&#x449;&#x438;&#x442;&#x430; &#x43E;&#x442; spoofing, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x430;&#x44F; &#x440;&#x430;&#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x44E;</a></li>
<li><a href="#marks-state">fwmark &#x438; conntrack: &#x43A;&#x430;&#x43A; &#x43F;&#x43E;&#x43C;&#x43D;&#x438;&#x442;&#x44C; &#x432;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x439; uplink</a></li>
<li><a href="#kubernetes-boundary">Kubernetes &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; owner, &#x43D;&#x43E; &#x43D;&#x435; &#x444;&#x438;&#x437;&#x438;&#x43A;&#x443; &#x43F;&#x443;&#x442;&#x438;</a></li>
<li><a href="#evidence-ladder">Evidence ladder: &#x43E;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430; &#x43A; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x443; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;</a></li>
<li><a href="#canary-rollout">Canary &#x438; rollback &#x431;&#x435;&#x437; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;</a></li>
<li><a href="#observability">&#x427;&#x442;&#x43E; &#x43C;&#x43E;&#x43D;&#x438;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;</a></li>
<li><a href="#platform-choice">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; VPS &#x438;&#x43B;&#x438; dedicated edge</a></li>
<li><a href="#conclusion">&#x418;&#x442;&#x43E;&#x433;: &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x44F; &#x2014; &#x43D;&#x435; &#x446;&#x435;&#x43B;&#x44C;, &#x446;&#x435;&#x43B;&#x44C; &#x2014; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; path contract</a></li>
</ul></div>

</div>LLM API &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; uplink, &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; &#x2014; &#x438; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x44E;&#x442; &#x43F;&#x440;&#x43E;&#x43F;&#x430;&#x434;&#x430;&#x442;&#x44C;, &#x445;&#x43E;&#x442;&#x44F; proxy &#x438; GPU &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x44F;&#x442; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x43C;&#x438;. &#x412; multihomed Linux gateway &#x442;&#x430;&#x43A;&#x43E;&#x439; &#x441;&#x431;&#x43E;&#x439; &#x447;&#x430;&#x441;&#x442;&#x43E; &#x440;&#x43E;&#x436;&#x434;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x435; &#x432; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x438;, &#x430; &#x43C;&#x435;&#x436;&#x434;&#x443; RPDB, reverse path validation &#x438; stateful firewall. &#x420;&#x430;&#x437;&#x431;&#x435;&#x440;&#x451;&#x43C;, &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;, &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x44C; policy routing &#x431;&#x435;&#x437; &#x433;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x437;&#x430;&#x449;&#x438;&#x442;&#x44B; &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x441;&#x442;&#x438; A/B/A canary. &#x426;&#x435;&#x43B;&#x44C; &#x2014; &#x43D;&#x435; &#x438;&#x434;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x44F;, &#x430; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x430;&#x43A;&#x442; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x430; &#x438; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x439; rollback.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-hero-6e4809fc.webp" alt="&#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; Linux &#x434;&#x43B;&#x44F; LLM API: ip rule, rp_filter &#x438; fwmark"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="quick-verdict">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x437;: &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x438;&#x43D;&#x43E;&#x432;&#x430;&#x442; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x439; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;</h2>

<p>&#x413;&#x43B;&#x430;&#x432;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x438;&#x437;&#x43D;&#x430;&#x43A; &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x438; &#x43F;&#x440;&#x43E;&#x441;&#x442;: SYN &#x438;&#x43B;&#x438; HTTP-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; &#x43E;&#x434;&#x438;&#x43D; uplink, &#x430; Linux &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x434;&#x43B;&#x44F; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439;. &#x418;&#x43D;&#x442;&#x435;&#x440;&#x43D;&#x435;&#x442; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x435;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x43F;&#x443;&#x442;&#x438; &#x442;&#x443;&#x434;&#x430; &#x438; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x43E;, &#x43D;&#x43E; &#x432; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; gateway &#x43C;&#x435;&#x436;&#x434;&#x443; &#x43D;&#x438;&#x43C;&#x438; &#x441;&#x442;&#x43E;&#x44F;&#x442; reverse path validation, stateful firewall, NAT, &#x431;&#x430;&#x43B;&#x430;&#x43D;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x449;&#x438;&#x43A; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x439;&#x434;&#x435;&#x440;&#x430; &#x438; &#x430;&#x43D;&#x442;&#x438;&#x441;&#x43F;&#x443;&#x444;&#x438;&#x43D;&#x433;. &#x41B;&#x44E;&#x431;&#x43E;&#x439; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x435;&#x446; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x442;&#x431;&#x440;&#x43E;&#x441;&#x438;&#x442;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442;, &#x445;&#x43E;&#x442;&#x44F; LLM API &#x438; GPU &#x43E;&#x431;&#x441;&#x43B;&#x443;&#x436;&#x438;&#x432;&#x430;&#x44E;&#x442; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B;.</p>
<p>&#x41F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; default &#x2014; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x438; &#x43D;&#x435; &#x432;&#x44B;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44E; &#x43D;&#x430;&#x443;&#x433;&#x430;&#x434;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x444;&#x430;&#x43A;&#x442;&#x430;: &#x43D;&#x430; &#x43A;&#x430;&#x43A;&#x43E;&#x43C; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x435; &#x432;&#x438;&#x434;&#x435;&#x43D; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439; &#x43F;&#x430;&#x43A;&#x435;&#x442;; &#x43A;&#x430;&#x43A;&#x43E;&#x435; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; RPDB/FIB; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x43B;&#x438; source validation; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x43B;&#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x43D;&#x430; &#x43D;&#x43E;&#x432;&#x43E;&#x43C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x438;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x438;&#x43D; &#x444;&#x430;&#x43A;&#x442; &#x43D;&#x435;&#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x435;&#x43D;, &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; timeout &#x438;&#x43B;&#x438; &#x43A;&#x43E;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x442;&#x432;&#x430; proxy workers &#x43B;&#x438;&#x448;&#x44C; &#x440;&#x430;&#x441;&#x442;&#x44F;&#x433;&#x438;&#x432;&#x430;&#x435;&#x442; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;.</p>
<p>&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x439; &#x43A;&#x435;&#x439;&#x441;: &#x443; gateway &#x434;&#x432;&#x430; &#x43F;&#x443;&#x431;&#x43B;&#x438;&#x447;&#x43D;&#x44B;&#x445; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430;, &#x43D;&#x43E; &#x432; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x435; <code>main</code> &#x43E;&#x434;&#x438;&#x43D; preferred default route. &#x417;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43A; &#x430;&#x434;&#x440;&#x435;&#x441;&#x443; uplink B &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;, &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x441; &#x442;&#x435;&#x43C; &#x436;&#x435; source IP, &#x43E;&#x434;&#x43D;&#x430;&#x43A;&#x43E; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x434;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x447;&#x435;&#x440;&#x435;&#x437; A. &#x41E;&#x442;&#x432;&#x435;&#x442; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x442;&#x44C;&#x441;&#x44F; &#x443; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x439;&#x434;&#x435;&#x440;&#x430; &#x438;&#x437;-&#x437;&#x430; source filtering &#x438;&#x43B;&#x438; &#x440;&#x430;&#x43D;&#x44C;&#x448;&#x435; &#x2014; &#x43D;&#x430; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; <code>rp_filter</code>. &#x421;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x43F;&#x43B;&#x430;&#x432;&#x430;&#x44E;&#x449;&#x438;&#x439;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443; &#x447;&#x442;&#x43E; &#x434;&#x43B;&#x44F; &#x447;&#x430;&#x441;&#x442;&#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x432; best path &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442;.</p>
<p>&#x417;&#x434;&#x435;&#x441;&#x44C; &#x43C;&#x44B; &#x43D;&#x435; &#x441;&#x442;&#x440;&#x43E;&#x438;&#x43C; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; BGP-&#x441;&#x445;&#x435;&#x43C;&#x443;. &#x417;&#x430;&#x434;&#x430;&#x447;&#x430; &#x443;&#x436;&#x435;: &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x44C; owner &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x438; &#x43D;&#x430; multihomed Linux gateway, &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x44C; policy routing &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; A/B/A canary. &#x412; Kubernetes &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x432;&#x44B;&#x44F;&#x441;&#x43D;&#x438;&#x442;&#x435;, &#x433;&#x434;&#x435; &#x436;&#x438;&#x432;&#x443;&#x442; &#x430;&#x434;&#x440;&#x435;&#x441;, NAT &#x438; route decision: &#x43D;&#x430; node, host-network proxy, &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x43C; &#x431;&#x430;&#x43B;&#x430;&#x43D;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x449;&#x438;&#x43A;&#x435; &#x438;&#x43B;&#x438; &#x432; CNI dataplane.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-01-60e832c6.webp" class="kg-image" alt="&#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; Linux &#x434;&#x43B;&#x44F; LLM API: ip rule, rp_filter &#x438; fwmark" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/linux-policy-routing-llm-gateway-inline-01-60e832c6.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/linux-policy-routing-llm-gateway-inline-01-60e832c6.webp 1000w, https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-01-60e832c6.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="path-map">&#x41D;&#x430;&#x440;&#x438;&#x441;&#x443;&#x439;&#x442;&#x435; effective path, &#x430; &#x43D;&#x435; &#x436;&#x435;&#x43B;&#x430;&#x435;&#x43C;&#x443;&#x44E; &#x430;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x443;</h2>

<p>&#x412;&#x43E;&#x437;&#x44C;&#x43C;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x443; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x441;&#x441;&#x438;&#x44E; &#x438; &#x440;&#x430;&#x437;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435; &#x435;&#x451; &#x43F;&#x43E; hop: client &#x2192; provider edge &#x2192; NIC gateway &#x2192; nftables/conntrack &#x2192; proxy &#x2192; backend &#x2192; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;. &#x41D;&#x435; &#x43F;&#x43E;&#x434;&#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x44D;&#x442;&#x443; &#x43A;&#x430;&#x440;&#x442;&#x443; &#x434;&#x438;&#x430;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x43E;&#x439; &#x438;&#x437; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; failover, &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x438; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430; &#x438;&#x43B;&#x438; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; CNI &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; owner route decision &#x447;&#x430;&#x441;&#x442;&#x43E; &#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x435; &#x442;&#x430;&#x43C;, &#x433;&#x434;&#x435; &#x435;&#x433;&#x43E; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x442; &#x434;&#x435;&#x436;&#x443;&#x440;&#x43D;&#x44B;&#x439;.</p>
<p>&#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; evidence &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43D;&#x430; &#x43E;&#x431;&#x43E;&#x438;&#x445; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x445; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430;&#x445;. &#x415;&#x441;&#x43B;&#x438; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439; SYN &#x432;&#x438;&#x434;&#x435;&#x43D; &#x43D;&#x430; <code>wan_b</code>, &#x430; SYN-ACK &#x443;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; <code>wan_a</code>, &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x443;&#x436;&#x435; &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;&#x43E;: &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x43D;&#x438;&#x436;&#x435; L7. &#x415;&#x441;&#x43B;&#x438; SYN-ACK &#x43D;&#x435; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x438;&#x433;&#x434;&#x435;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43A;&#x443;, firewall, listen socket &#x438; source validation. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x430; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x432;&#x438;&#x434;&#x43D;&#x44B; &#x43D;&#x430; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x435;, &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x442;&#x43E;&#x447;&#x43A;&#x443; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x43A; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x439;&#x434;&#x435;&#x440;&#x443; &#x438;&#x43B;&#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x443;.</p>
<p>&#x414;&#x43B;&#x44F; LLM streaming &#x435;&#x441;&#x442;&#x44C; &#x43B;&#x43E;&#x432;&#x443;&#x448;&#x43A;&#x430;. &#x423;&#x436;&#x435; &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; HTTP/2, WebSocket &#x438;&#x43B;&#x438; SSE-&#x441;&#x435;&#x430;&#x43D;&#x441; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x442;&#x44C; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x442;&#x44C; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x441;&#x43C;&#x435;&#x43D;&#x44B; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x430;, &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x43F;&#x43E;&#x434;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x430;&#x434;&#x430;&#x44E;&#x442;. &#x418; &#x43D;&#x430;&#x43E;&#x431;&#x43E;&#x440;&#x43E;&#x442;, &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; health check &#x437;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x439;, &#x430; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x439; stream &#x43E;&#x431;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x438; state timeout. Baseline &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; fresh connection, &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x439; &#x431;&#x430;&#x439;&#x442;, &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x444;&#x440;&#x430;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x43E;&#x432; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; &#x438; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x435; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x438;&#x435;.</p>
<p>&#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x44F;, 5-tuple, &#x432;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;, source address &#x438; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; uplink. &#x41F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E; &#x441;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43E; <a href="https://kingservers.com/blog/proxy-protocol-real-client-ip-llm-api/">PROXY protocol &#x438; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; IP &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;</a>: &#x430;&#x434;&#x440;&#x435;&#x441; &#x432; L7-&#x437;&#x430;&#x433;&#x43E;&#x43B;&#x43E;&#x432;&#x43A;&#x435; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; peer, &#x443;&#x432;&#x438;&#x434;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x44F;&#x434;&#x440;&#x43E;&#x43C;.</p>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-chk-pth7a2q"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432; &#x43B;&#x438; evidence baseline?</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x439; 5-tuple</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x421;&#x43D;&#x44F;&#x442;&#x44B; ingress &#x438; egress &#x43D;&#x430; &#x43E;&#x431;&#x43E;&#x438;&#x445; uplink</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D; fresh connection &#x431;&#x435;&#x437; reuse</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x417;&#x430;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x44B; source IP &#x438; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x439; next hop</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x415;&#x441;&#x442;&#x44C; application outcome, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; ping</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-pth7a2q');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-02-95c3de2b.webp" class="kg-image" alt="&#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; Linux &#x434;&#x43B;&#x44F; LLM API: ip rule, rp_filter &#x438; fwmark" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/linux-policy-routing-llm-gateway-inline-02-95c3de2b.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/linux-policy-routing-llm-gateway-inline-02-95c3de2b.webp 1000w, https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-02-95c3de2b.webp 1376w" sizes="(min-width: 720px) 720px"></figure><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">collect-routing-baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>ip -br -4 address
ip -4 rule show
ip -4 route show table all
ip -4 route get 192.0.2.44 from 203.0.113.10
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.wan_a.rp_filter
sysctl net.ipv4.conf.wan_b.rp_filter
tcpdump -ni wan_a &apos;host 192.0.2.44 and tcp port 443&apos;
tcpdump -ni wan_b &apos;host 192.0.2.44 and tcp port 443&apos;</code></pre>
<div class="ks-canonical-code-block__caption">Read-only baseline &#x43F;&#x435;&#x440;&#x435;&#x434; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x43C;&#x438;</div>
</div>
<h2 id="rpdb-tables">&#x41A;&#x430;&#x43A; Linux &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x443; &#x438; next hop</h2>

<p>&#x41E;&#x431;&#x44B;&#x447;&#x43D;&#x430;&#x44F; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x430; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#xAB;&#x43A;&#x443;&#x434;&#x430; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43A; destination&#xBB;. Policy routing &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43F;&#x440;&#x435;&#x434;&#x44B;&#x434;&#x443;&#x449;&#x438;&#x439; &#x443;&#x440;&#x43E;&#x432;&#x435;&#x43D;&#x44C;: &#x43A;&#x430;&#x43A;&#x443;&#x44E; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x443; &#x441;&#x43F;&#x440;&#x43E;&#x441;&#x438;&#x442;&#x44C;. &#x41F;&#x43E; <a href="https://man7.org/linux/man-pages/man8/ip-rule.8.html?ref=kingservers.com">ip-rule(8)</a>, RPDB &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; rules; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x43E; priority &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x438;&#x439; &#x43F;&#x440;&#x438;&#x43E;&#x440;&#x438;&#x442;&#x435;&#x442;. &#x421;&#x435;&#x43B;&#x435;&#x43A;&#x442;&#x43E;&#x440; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x443;&#x447;&#x438;&#x442;&#x44B;&#x432;&#x430;&#x442;&#x44C; source prefix, incoming interface, <code>fwmark</code>, &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B; &#x438; &#x43F;&#x43E;&#x440;&#x442;&#x44B;.</p>
<p>&#x41F;&#x43E; &#x443;&#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x43D;&#x438;&#x44E; Linux &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; rules &#x434;&#x43B;&#x44F; <code>local</code>, <code>main</code> &#x438; <code>default</code>. &#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x432;&#x442;&#x43E;&#x440;&#x443;&#x44E; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x443;, &#x43D;&#x43E; &#x437;&#x430;&#x431;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x443;&#x43D;&#x438;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; priority, connected route &#x438;&#x43B;&#x438; &#x44F;&#x432;&#x43D;&#x44B;&#x439; source. <code>ip route show table 200</code> &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x435;&#x442;&#x44C; &#x443;&#x431;&#x435;&#x434;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;, &#x430; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; lookup &#x434;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x437;&#x430;&#x43A;&#x430;&#x43D;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; <code>main</code>.</p>
<p>&#x418;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; <code>ip route get</code>, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; <code>show</code>. &#x420;&#x443;&#x43A;&#x43E;&#x432;&#x43E;&#x434;&#x441;&#x442;&#x432;&#x43E; <a href="https://man7.org/linux/man-pages/man8/ip-route.8.html?ref=kingservers.com">ip-route(8)</a> &#x43F;&#x43E;&#x44F;&#x441;&#x43D;&#x44F;&#x435;&#x442;: <code>get</code> &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x430;&#x435;&#x442; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x442;&#x430;&#x43A;, &#x43A;&#x430;&#x43A; &#x431;&#x443;&#x434;&#x442;&#x43E; &#x44F;&#x434;&#x440;&#x43E; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442;. &#x41F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x432;&#x430;&#x439;&#x442;&#x435; destination, source, mark &#x438; &#x43F;&#x440;&#x438; &#x43D;&#x435;&#x43E;&#x431;&#x445;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x438; <code>iif</code>. &#x422;&#x430;&#x43A; &#x444;&#x440;&#x430;&#x437;&#x430; &#xAB;&#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x44B; &#x432;&#x440;&#x43E;&#x434;&#x435; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x435;&#xBB; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x43E;&#x435; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435;.</p>
<p>&#x414;&#x43B;&#x44F; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x442;&#x435;&#x440;&#x43C;&#x438;&#x43D;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; TLS &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;&#x439; &#x448;&#x430;&#x431;&#x43B;&#x43E;&#x43D; &#x2014; source-based rule: &#x43E;&#x442;&#x432;&#x435;&#x442;&#x44B; &#x441; &#x43F;&#x443;&#x431;&#x43B;&#x438;&#x447;&#x43D;&#x43E;&#x433;&#x43E; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430; B &#x438;&#x449;&#x443;&#x442; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x432; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x435; B. &#x414;&#x43B;&#x44F; &#x442;&#x440;&#x430;&#x43D;&#x437;&#x438;&#x442;&#x43D;&#x43E;&#x433;&#x43E; proxy &#x438;&#x43B;&#x438; NAT &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x43C;&#x430;&#x43B;&#x43E;: &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x439; source &#x43D;&#x430; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x43E;&#x43C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x435; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439;, &#x430; ingress &#x43F;&#x440;&#x438;&#x434;&#x451;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x43C;&#x43D;&#x438;&#x442;&#x44C; &#x447;&#x435;&#x440;&#x435;&#x437; mark &#x438; conntrack. &#x41D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x434;&#x432;&#x430; &#x43A;&#x435;&#x439;&#x441;&#x430; &#x432; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; change.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">source-policy-routing.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>ip route replace 198.51.100.0/24 dev wan_a src 198.51.100.10 table 100
ip route replace default via 198.51.100.1 dev wan_a table 100
ip rule add priority 100 from 198.51.100.10/32 lookup 100

ip route replace 203.0.113.0/24 dev wan_b src 203.0.113.10 table 200
ip route replace default via 203.0.113.1 dev wan_b table 200
ip rule add priority 110 from 203.0.113.10/32 lookup 200

ip route get 192.0.2.44 from 203.0.113.10</code></pre>
<div class="ks-canonical-code-block__caption">&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x44B; &#x434;&#x43B;&#x44F; &#x434;&#x432;&#x443;&#x445; &#x43F;&#x443;&#x431;&#x43B;&#x438;&#x447;&#x43D;&#x44B;&#x445; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x432;</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-03-b644268c.webp" class="kg-image" alt="&#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; Linux &#x434;&#x43B;&#x44F; LLM API: ip rule, rp_filter &#x438; fwmark" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/linux-policy-routing-llm-gateway-inline-03-b644268c.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/linux-policy-routing-llm-gateway-inline-03-b644268c.webp 1000w, https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-03-b644268c.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="rp-filter">rp_filter: &#x437;&#x430;&#x449;&#x438;&#x442;&#x430; &#x43E;&#x442; spoofing, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x430;&#x44F; &#x440;&#x430;&#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x44E;</h2>

<p><code>rp_filter</code> &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x438;&#x436;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; source &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x435;&#x433;&#x43E; IPv4-&#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;. Strict mode 1 &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442;, &#x447;&#x442;&#x43E;&#x431;&#x44B; &#x432;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x43B; &#x441; &#x43B;&#x443;&#x447;&#x448;&#x438;&#x43C; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x43C; &#x43F;&#x443;&#x442;&#x451;&#x43C;. Loose mode 2 &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x430; &#x43A; source &#x447;&#x435;&#x440;&#x435;&#x437; &#x43B;&#x44E;&#x431;&#x43E;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;. &#x417;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; 0 &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443;. &#x41E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x43E; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x430; &#x43C;&#x430;&#x43A;&#x441;&#x438;&#x43C;&#x443;&#x43C;&#x430; &#x43C;&#x435;&#x436;&#x434;&#x443; <code>conf/all</code> &#x438; <code>conf/interface</code> &#x43F;&#x440;&#x438;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x44B; &#x432; <a href="https://docs.kernel.org/6.18/networking/ip-sysctl.html?ref=kingservers.com">&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; Linux kernel</a>.</p>
<p>&#x41E;&#x442;&#x441;&#x44E;&#x434;&#x430; &#x447;&#x430;&#x441;&#x442;&#x430;&#x44F; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430;: &#x438;&#x43D;&#x436;&#x435;&#x43D;&#x435;&#x440; &#x432;&#x44B;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; <code>wan_b.rp_filter=0</code>, &#x43D;&#x43E; <code>all.rp_filter=1</code> &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; effective strict mode. &#x412;&#x442;&#x43E;&#x440;&#x430;&#x44F; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x2014; &#x433;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x432;&#x44B;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443;, &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x437;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x439; &#x442;&#x435;&#x441;&#x442; &#x438; &#x43E;&#x431;&#x44A;&#x44F;&#x432;&#x438;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443; &#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x43E;&#x439;. &#x422;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x430; &#x441;&#x432;&#x44F;&#x437;&#x44C; &#x441; reverse-path validation, &#x43D;&#x43E; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43D;&#x430; trust boundary.</p>
<p><a href="https://www.rfc-editor.org/info/rfc3704/?ref=kingservers.com">RFC 3704</a> &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x44F;&#x435;&#x442; trade-off: strict RPF &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x434;&#x43B;&#x44F; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x443;&#x442;&#x438;, &#x430; &#x43F;&#x440;&#x438; &#x43D;&#x435;&#x438;&#x437;&#x431;&#x435;&#x436;&#x43D;&#x43E;&#x439; &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x438; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; loose RPF &#x438;&#x43B;&#x438; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; &#x444;&#x438;&#x43B;&#x44C;&#x442;&#x440;. Loose mode &#x43D;&#x435; &#x440;&#x430;&#x432;&#x43D;&#x43E;&#x446;&#x435;&#x43D;&#x435;&#x43D;: &#x43E;&#x43D; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x43D;&#x430;&#x43B;&#x438;&#x447;&#x438;&#x435; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x430;, &#x43D;&#x43E; &#x43D;&#x435; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;. &#x41D;&#x443;&#x436;&#x43D;&#x44B; ingress ACL, anti-spoofing &#x443; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x439;&#x434;&#x435;&#x440;&#x430; &#x438; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C; martian drops.</p>
<p>&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x43E;&#x447;&#x438;&#x43D;&#x438;&#x442;&#x435; RPDB, &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x447;&#x435;&#x440;&#x435;&#x437; &#x442;&#x43E;&#x442; &#x436;&#x435; uplink. &#x41F;&#x435;&#x440;&#x435;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; multihomed interface &#x432; loose mode &#x43B;&#x438;&#x448;&#x44C; &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x44F; &#x437;&#x430;&#x434;&#x443;&#x43C;&#x430;&#x43D;&#x430;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x43B;&#x438; &#x43B;&#x438; &#x432;&#x44B; effective &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x437;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438; sysctl-&#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x435;&#x439; &#x434;&#x438;&#x441;&#x442;&#x440;&#x438;&#x431;&#x443;&#x442;&#x438;&#x432;&#x430;?</p>
<div class="ks-widget" id="ks-sel-rpf8m4k"><h3>&#x41A;&#x430;&#x43A;&#x43E;&#x439; &#x440;&#x435;&#x436;&#x438;&#x43C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x43C;?</h3><label>&#x421;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x441;&#x446;&#x435;&#x43D;&#x430;&#x440;&#x438;&#x439;</label><select data-s><option value="single">&#x41E;&#x434;&#x438;&#x43D; uplink, &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; edge</option><option value="multi">&#x414;&#x432;&#x430; uplink, &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x430; &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x44F;</option><option value="mark">&#x41C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x43F;&#x43E; fwmark</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-rpf8m4k');if(!r)return;var m={"single":"Начните со strict mode и проверьте корректность основной FIB.","multi":"Сначала докажите асимметрию; затем оцените loose mode вместе с ingress ACL.","mark":"Проверьте src_valid_mark и симметричное восстановление mark, прежде чем менять rp_filter."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">rp-filter-audit.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.wan_a.rp_filter
sysctl net.ipv4.conf.wan_b.rp_filter
sysctl net.ipv4.conf.all.src_valid_mark
sysctl net.ipv4.conf.wan_a.src_valid_mark
sysctl net.ipv4.conf.wan_b.src_valid_mark
nstat -az | grep -E &apos;IPReversePathFilter|InNoRoutes|InDiscards&apos;
journalctl -k --since &apos;-15 min&apos; | grep -Ei &apos;martian|reverse path&apos;</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; effective source validation</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-04-27684d69.webp" class="kg-image" alt="&#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; Linux &#x434;&#x43B;&#x44F; LLM API: ip rule, rp_filter &#x438; fwmark" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/linux-policy-routing-llm-gateway-inline-04-27684d69.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/linux-policy-routing-llm-gateway-inline-04-27684d69.webp 1000w, https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-04-27684d69.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="marks-state">fwmark &#x438; conntrack: &#x43A;&#x430;&#x43A; &#x43F;&#x43E;&#x43C;&#x43D;&#x438;&#x442;&#x44C; &#x432;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x439; uplink</h2>

<p>&#x41A;&#x43E;&#x433;&#x434;&#x430; gateway &#x43F;&#x435;&#x440;&#x435;&#x441;&#x44B;&#x43B;&#x430;&#x435;&#x442; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;, source-based rule &#x447;&#x430;&#x441;&#x442;&#x43E; &#x43D;&#x435; &#x432;&#x44B;&#x440;&#x430;&#x436;&#x430;&#x435;&#x442; &#x43D;&#x443;&#x436;&#x43D;&#x443;&#x44E; &#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x443;. &#x422;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x438;&#x43D;&#x43E;&#x435;: &#xAB;&#x43E;&#x442;&#x432;&#x435;&#x442; &#x44D;&#x442;&#x43E;&#x439; &#x441;&#x435;&#x441;&#x441;&#x438;&#x438; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x443;&#x439;&#x442;&#x438; &#x442;&#x435;&#x43C; uplink, &#x447;&#x435;&#x440;&#x435;&#x437; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43E;&#x43D;&#x430; &#x43F;&#x440;&#x438;&#x448;&#x43B;&#x430;&#xBB;. &#x41D;&#x43E;&#x432;&#x44B;&#x439; ingress flow &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; <code>ct mark</code>, &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x430;&#x432;&#x43B;&#x438;&#x432;&#x430;&#x44E;&#x442; &#x435;&#x451; &#x432; packet mark, &#x430; <code>ip rule fwmark</code> &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x443;. Mark &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x43A;&#x441;&#x442; &#x43C;&#x435;&#x436;&#x434;&#x443; netfilter &#x438; RPDB.</p>
<p>&#x41F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; hooks &#x43A;&#x440;&#x438;&#x442;&#x438;&#x447;&#x435;&#x43D;. Mark &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x430;&#x432;&#x43B;&#x438;&#x432;&#x430;&#x44E;&#x442; &#x434;&#x43E; route lookup &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;. &#x414;&#x43B;&#x44F; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; nftables chain &#x441; hook <code>output</code> &#x438; type <code>route</code> &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; lookup; &#x434;&#x43B;&#x44F; forwarded traffic mark &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x430;&#x432;&#x43B;&#x438;&#x432;&#x430;&#x44E;&#x442; &#x432; prerouting. &#x421;&#x445;&#x435;&#x43C;&#x430; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; &#x442;&#x43E;&#x433;&#x43E;, &#x433;&#x434;&#x435; &#x437;&#x430;&#x43A;&#x430;&#x43D;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; TLS &#x438; &#x433;&#x434;&#x435; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; NAT.</p>
<p><code>src_valid_mark=1</code> &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; fwmark &#x432; reverse-path lookup. &#x42D;&#x442;&#x43E; &#x43D;&#x443;&#x436;&#x43D;&#x43E;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x434;&#x43D;&#x430; mark-&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x430; &#x443;&#x447;&#x430;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x432; &#x43E;&#x431;&#x43E;&#x438;&#x445; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;&#x445; &#x438; strict source validation &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x432;&#x438;&#x434;&#x435;&#x442;&#x44C; &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x443;&#x44E; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x443;. &#x41D;&#x435; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; &#xAB;&#x43D;&#x430; &#x432;&#x441;&#x44F;&#x43A;&#x438;&#x439; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#xBB;: &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; <code>ip route get ... mark ...</code>, &#x438;&#x43D;&#x430;&#x447;&#x435; &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x435;&#x449;&#x451; &#x43E;&#x434;&#x43D;&#x430; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x430;&#x44F; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C;.</p>
<p>Conntrack &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; &#x432;&#x44B;&#x431;&#x43E;&#x440; &#x43F;&#x443;&#x442;&#x438;, &#x43D;&#x43E; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44C;&#x435; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;. &#x417;&#x430;&#x43F;&#x438;&#x441;&#x44C; <code>ESTABLISHED</code> &#x43D;&#x435; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B;. &#x414;&#x43B;&#x44F; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; stream &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x443;: mark &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x430;, route &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x43B;, &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x443;&#x448;&#x451;&#x43B;, remote peer &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x43B; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x435;&#x43D;&#x438;&#x435;, application SLO &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x451;&#x43D;.</p>
<div class="ks-widget" id="ks-tab-mrk3d9p"><h3>&#x413;&#x434;&#x435; &#x438;&#x441;&#x43A;&#x430;&#x442;&#x44C; owner mark?</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="local">Local proxy</button><button type="button" class="tab-btn" data-t="forward">Forward/NAT</button><button type="button" class="tab-btn" data-t="cni">Kubernetes CNI</button></div><div class="panel on" data-p="local">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; output route chain, socket source address &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x43D;&#x44B;&#x439; lookup &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; mark.</div><div class="panel" data-p="forward">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; prerouting, ct mark &#x434;&#x43E; DNAT/SNAT &#x438; fwmark rule &#x434;&#x43B;&#x44F; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;.</div><div class="panel" data-p="cni">&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x432;&#x44B;&#x44F;&#x441;&#x43D;&#x438;&#x442;&#x435;, &#x43D;&#x435; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x435;&#x442; &#x43B;&#x438; mark &#x441;&#x430;&#x43C; CNI. &#x41F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x435; &#x431;&#x438;&#x442;&#x44B; &#x438; priority &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x43A;&#x43E;&#x43D;&#x444;&#x43B;&#x438;&#x43A;&#x442;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x441; dataplane.</div><script>(function(){var r=document.getElementById('ks-tab-mrk3d9p');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">nftables-route-mark.nft</span></div>
<pre class="ks-canonical-code-block__pre"><code>table inet route_policy {
  chain prerouting {
    type filter hook prerouting priority mangle; policy accept;
    iifname &quot;wan_b&quot; ct state new ct mark set 0x2
    ct mark != 0 meta mark set ct mark
  }
  chain output {
    type route hook output priority mangle; policy accept;
    ct mark != 0 meta mark set ct mark
  }
}
ip rule add priority 90 fwmark 0x2/0xff lookup 200
ip route get 192.0.2.44 from 203.0.113.10 mark 0x2</code></pre>
<div class="ks-canonical-code-block__caption">&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x448;&#x430;&#x431;&#x43B;&#x43E;&#x43D; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; ingress path</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-05-14340623.webp" class="kg-image" alt="&#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; Linux &#x434;&#x43B;&#x44F; LLM API: ip rule, rp_filter &#x438; fwmark" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/linux-policy-routing-llm-gateway-inline-05-14340623.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/linux-policy-routing-llm-gateway-inline-05-14340623.webp 1000w, https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-05-14340623.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="kubernetes-boundary">Kubernetes &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; owner, &#x43D;&#x43E; &#x43D;&#x435; &#x444;&#x438;&#x437;&#x438;&#x43A;&#x443; &#x43F;&#x443;&#x442;&#x438;</h2>

<p>&#x412; Kubernetes &#x442;&#x43E;&#x442; &#x436;&#x435; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x432;&#x43E;&#x437;&#x43D;&#x438;&#x43A;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x441;&#x43B;&#x43E;&#x44F;&#x445;. Service &#x441; <code>externalTrafficPolicy: Local</code> &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442; client source IP &#x438; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; nodes &#x441; local endpoint, &#x43D;&#x43E; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x439; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; node network stack &#x438;&#x43B;&#x438; CNI. Host-network ingress, eBPF dataplane &#x438; iptables kube-proxy &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x44E;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x439; evidence.</p>
<p>&#x41D;&#x435; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x441; &#x43C;&#x430;&#x441;&#x441;&#x43E;&#x432;&#x43E;&#x433;&#x43E; sysctl change. &#x412;&#x44B;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; &#x430;&#x434;&#x440;&#x435;&#x441;, &#x43E;&#x434;&#x43D;&#x443; node &#x438; &#x43E;&#x434;&#x438;&#x43D; endpoint; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435;, &#x433;&#x434;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x432;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x432; physical NIC, &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43B;&#x438; &#x432; pod namespace &#x438; &#x43A;&#x430;&#x43A;&#x43E;&#x439; peer &#x432;&#x438;&#x434;&#x438;&#x442; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; node &#x441; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; endpoint &#x438; node &#x431;&#x435;&#x437; &#x43D;&#x435;&#x433;&#x43E; &#x43A;&#x430;&#x43A; negative control. &#x420;&#x430;&#x437;&#x431;&#x43E;&#x440; <a href="https://kingservers.com/blog/metallb-bgp-llm-api-ecmp-failover/">MetalLB, BGP &#x438; ECMP</a> &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x443;&#x440;&#x43E;&#x432;&#x43D;&#x435;&#x43C; &#x432;&#x44B;&#x448;&#x435;: route advertisement &#x43D;&#x435; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x43E;&#x433;&#x43E; FIB.</p>
<p>&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; &#x43D;&#x430; CNI marks &#x438; rules. Dataplane &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x434;&#x438;&#x430;&#x43F;&#x430;&#x437;&#x43E;&#x43D;&#x44B; fwmark, &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x435; RPDB priorities &#x438; tables. &#x421;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x44B;&#x439; <code>0x2</code> &#x438;&#x437; &#x43B;&#x430;&#x431;&#x43E;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x438;&#x438; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x43A;&#x43E;&#x43D;&#x444;&#x43B;&#x438;&#x43A;&#x442;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x441; production policy. &#x42D;&#x43A;&#x441;&#x43F;&#x43E;&#x440;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; state &#x434;&#x43E; canary, &#x43D;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x439; mark &#x438; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43C;&#x430;&#x441;&#x43A;&#x443;, &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x443;&#x44E; &#x441; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x435;&#x439; &#x432;&#x430;&#x448;&#x435;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; CNI.</p>
<p>&#x421;&#x432;&#x44F;&#x437;&#x44C; &#x441; AI &#x437;&#x434;&#x435;&#x441;&#x44C; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x430;&#x44F;. &#x41E;&#x434;&#x438;&#x43D; streaming request &#x443;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; connection &#x434;&#x43E;&#x43B;&#x44C;&#x448;&#x435; REST-&#x432;&#x44B;&#x437;&#x43E;&#x432;&#x430;; &#x43F;&#x43E;&#x441;&#x43B;&#x435; route churn &#x441;&#x442;&#x430;&#x440;&#x44B;&#x435; &#x438; &#x43D;&#x43E;&#x432;&#x44B;&#x435; sessions &#x432;&#x435;&#x434;&#x443;&#x442; &#x441;&#x435;&#x431;&#x44F; &#x43F;&#x43E;-&#x440;&#x430;&#x437;&#x43D;&#x43E;&#x43C;&#x443;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;, streaming response &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440; &#x43F;&#x43E;&#x441;&#x43B;&#x435; drain. &#x417;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x439; readiness probe &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x443;&#x441;&#x442;&#x43E;&#x439;&#x447;&#x438;&#x432;&#x44B;&#x439; inference path.</p><h2 id="evidence-ladder">Evidence ladder: &#x43E;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430; &#x43A; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x443; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;</h2>

<p>&#x425;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x439; runbook &#x43D;&#x435; &#x43F;&#x440;&#x44B;&#x433;&#x430;&#x435;&#x442; &#x43E;&#x442; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x43A; sysctl. Gate 1 &#x2014; ingress: SYN &#x43F;&#x440;&#x438;&#x448;&#x451;&#x43B; &#x43D;&#x430; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;. Gate 2 &#x2014; policy: <code>ip rule</code> &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43B;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x443;&#x44E; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x443;, &#x430; <code>ip route get</code> &#x432;&#x435;&#x440;&#x43D;&#x443;&#x43B; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; device, gateway &#x438; source. Gate 3 &#x2014; state: firewall, conntrack &#x438; source validation &#x43D;&#x435; &#x443;&#x43D;&#x438;&#x447;&#x442;&#x43E;&#x436;&#x438;&#x43B;&#x438; &#x43F;&#x430;&#x43A;&#x435;&#x442;. Gate 4 &#x2014; outcome: &#x43D;&#x43E;&#x432;&#x44B;&#x439; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; &#x43F;&#x440;&#x438;&#x43A;&#x43B;&#x430;&#x434;&#x43D;&#x43E;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442;.</p>
<p>&#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; gate &#x43D;&#x443;&#x436;&#x435;&#x43D; negative control. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x439; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x439; prefix, &#x432;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x43F;&#x443;&#x431;&#x43B;&#x438;&#x447;&#x43D;&#x44B;&#x439; &#x430;&#x434;&#x440;&#x435;&#x441; &#x438;&#x43B;&#x438; baseline &#x447;&#x435;&#x440;&#x435;&#x437; &#x43E;&#x434;&#x438;&#x43D; uplink. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x430; &#x43F;&#x443;&#x442;&#x438; &#x43B;&#x43E;&#x43C;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x43E;, &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x44F; &#x43D;&#x435; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x44F;&#x435;&#x442; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x435;&#x442; &#x437;&#x430; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x43C; B, &#x43D;&#x43E; &#x43D;&#x435; &#x437;&#x430; node, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; policy &#x438; upstream. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x435;&#x442; &#x437;&#x430; node &#x43F;&#x440;&#x438; &#x43B;&#x44E;&#x431;&#x43E;&#x43C; &#x430;&#x434;&#x440;&#x435;&#x441;&#x435;, owner, &#x432;&#x435;&#x440;&#x43E;&#x44F;&#x442;&#x43D;&#x43E;, &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x435;&#x43D;.</p>
<p>&#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; capture &#x431;&#x43B;&#x438;&#x436;&#x435; &#x43A; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x43B;&#x443;. &#x417;&#x430;&#x445;&#x432;&#x430;&#x442; &#x43D;&#x430; <code>any</code> &#x443;&#x434;&#x43E;&#x431;&#x435;&#x43D; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430;, &#x43D;&#x43E; &#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x438; offload-&#x430;&#x433;&#x440;&#x435;&#x433;&#x430;&#x446;&#x438;&#x44E;. &#x41D;&#x443;&#x436;&#x43D;&#x44B; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; interface captures &#x441; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x43C; filter. &#x41C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43E; <a href="https://kingservers.com/blog/rss-rps-irq-affinity-llm-api-gateway/">RSS, RPS &#x438; IRQ affinity</a> &#x43F;&#x43E;&#x43C;&#x43E;&#x436;&#x435;&#x442;, &#x435;&#x441;&#x43B;&#x438; &#x43F;&#x443;&#x442;&#x44C; &#x432;&#x435;&#x440;&#x435;&#x43D;, &#x430; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D;&#x44B; &#x441; RX queue &#x438;&#x43B;&#x438; CPU; &#x44D;&#x442;&#x43E; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x439; &#x43A;&#x43B;&#x430;&#x441;&#x441; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;.</p>
<p>&#x41D;&#x435; &#x434;&#x43E;&#x431;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435;&#x441;&#x44C; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x438; &#x43B;&#x44E;&#x431;&#x43E;&#x439; &#x446;&#x435;&#x43D;&#x43E;&#x439;. &#x418;&#x43D;&#x43E;&#x433;&#x434;&#x430; requirement &#x2014; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x442;&#x44C; &#x447;&#x435;&#x440;&#x435;&#x437; &#x43B;&#x44E;&#x431;&#x43E;&#x439; edge &#x438; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x442;&#x44C; &#x447;&#x435;&#x440;&#x435;&#x437; preferred egress. &#x422;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442;&#x441;&#x44F; contract: upstream &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; source prefix, stateful middleboxes &#x432;&#x438;&#x434;&#x44F;&#x442; &#x43E;&#x431;&#x435; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x44B; &#x43B;&#x438;&#x431;&#x43E; &#x43D;&#x435; &#x437;&#x430;&#x432;&#x438;&#x441;&#x44F;&#x442; &#x43E;&#x442; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F;, &#x430; ingress filtering &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x43C;.</p>
<div class="ks-widget" id="ks-sel-evd5x8n"><h3>&#x413;&#x434;&#x435; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x438;&#x442;&#x44C; &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435;?</h3><label>&#x41F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x439; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x44B;&#x439; &#x444;&#x430;&#x43A;&#x442;</label><select data-s><option value="ingress">&#x41F;&#x430;&#x43A;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x448;&#x451;&#x43B; &#x43D;&#x430; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; NIC</option><option value="route">RPDB &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43B;&#x430; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; route</option><option value="egress">&#x41E;&#x442;&#x432;&#x435;&#x442; &#x432;&#x44B;&#x448;&#x435;&#x43B; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; uplink</option><option value="app">Fresh client &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; &#x43E;&#x442;&#x432;&#x435;&#x442;</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-evd5x8n');if(!r)return;var m={"ingress":"Следующий owner — RPDB/FIB и source validation на gateway.","route":"Следующий owner — netfilter/conntrack и фактический egress capture.","egress":"Проверяйте upstream filtering, return reachability и remote capture.","app":"Повторите A/B/A и проверьте SLO под контролируемой нагрузкой."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><h2 id="canary-rollout">Canary &#x438; rollback &#x431;&#x435;&#x437; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;</h2>

<p>Canary &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; owner. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x438;&#x442;&#x44C; table, &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; <code>rp_filter</code>, &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; CNI &#x438; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x435;&#x441;&#x442;&#x438; VIP, &#x437;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43D;&#x435; &#x43E;&#x431;&#x44A;&#x44F;&#x441;&#x43D;&#x438;&#x442; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x443;. &#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x439; rule &#x434;&#x43B;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; source address &#x438;&#x43B;&#x438; fwmark, &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x44C;&#x442;&#x435; synthetic traffic &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; baseline &#x447;&#x435;&#x440;&#x435;&#x437; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;.</p>
<p>&#x41F;&#x435;&#x440;&#x435;&#x434; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x437;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; <code>ip rule save</code>, &#x437;&#x430;&#x442;&#x440;&#x43E;&#x43D;&#x443;&#x442;&#x44B;&#x435; tables, nftables ruleset &#x438; sysctl. &#x41D;&#x43E; rollback &#x2014; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x443;&#x434;&#x430;&#x43B;&#x435;&#x43D;&#x438;&#x435;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442;&#x430; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x435; &#x436;&#x435; probes: route lookup, capture &#x43D;&#x430; interfaces, fresh application request. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x43D;&#x435; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x43B;&#x441;&#x44F; &#x432; A/B/A, &#x441;&#x432;&#x44F;&#x437;&#x44C; &#x432;&#x435;&#x440;&#x43E;&#x44F;&#x442;&#x43D;&#x430;, &#x43D;&#x43E; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x430;.</p>
<p>Stop condition &#x437;&#x430;&#x434;&#x430;&#x439;&#x442;&#x435; &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435;: connection errors, &#x43D;&#x435;&#x43E;&#x436;&#x438;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x439; egress, &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; client response, martian drops &#x438;&#x43B;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x43B;&#x438;&#x43A;&#x442; mark. &#x41D;&#x435; &#x436;&#x434;&#x438;&#x442;&#x435; &#x43C;&#x430;&#x441;&#x441;&#x43E;&#x432;&#x43E;&#x433;&#x43E; SLO breach. &#x414;&#x43B;&#x44F; streaming API canary &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; handshake, &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; token, &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; chunks &#x438; normal close; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; production prompts &#x441; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x43C;&#x438;.</p>
<p>&#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x445;&#x430; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x435; configuration &#x432; network manager &#x438;&#x43B;&#x438; automation. &#x420;&#x443;&#x447;&#x43D;&#x44B;&#x435; <code>ip rule add</code> &#x438;&#x441;&#x447;&#x435;&#x437;&#x43D;&#x443;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435; reboot &#x438;&#x43B;&#x438; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x44F; namespace. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; cold boot, failover &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; uplink &#x438; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442; primary path. &#x421;&#x430;&#x43C;&#x44B;&#x439; &#x43D;&#x435;&#x43F;&#x440;&#x438;&#x44F;&#x442;&#x43D;&#x44B;&#x439; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442; &#x2014; &#x441;&#x445;&#x435;&#x43C;&#x430; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x440;&#x443;&#x447;&#x43D;&#x43E;&#x433;&#x43E; &#x432;&#x43C;&#x435;&#x448;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430;, &#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x438; &#x43F;&#x43B;&#x430;&#x43D;&#x43E;&#x432;&#x43E;&#x43C; &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x438;.</p>
<div class="ks-widget" id="ks-chk-can4v6r"><h3>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x43F;&#x435;&#x440;&#x435;&#x434; rollout</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x418;&#x437;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x438;&#x43D; owner &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x430;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x451;&#x43D; baseline &#x438; negative control</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x417;&#x430;&#x434;&#x430;&#x43D; stop condition</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x44B; fresh &#x438; streaming connections</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> Rollback &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x435;&#x442; &#x442;&#x435; &#x436;&#x435; probes</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x41A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x43F;&#x435;&#x440;&#x435;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; reboot/failover</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-can4v6r');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-06-e5059e7a.webp" class="kg-image" alt="&#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; Linux &#x434;&#x43B;&#x44F; LLM API: ip rule, rp_filter &#x438; fwmark" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/linux-policy-routing-llm-gateway-inline-06-e5059e7a.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/linux-policy-routing-llm-gateway-inline-06-e5059e7a.webp 1000w, https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-06-e5059e7a.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="observability">&#x427;&#x442;&#x43E; &#x43C;&#x43E;&#x43D;&#x438;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;</h2>

<p>&#x41C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; canary &#x438; &#x441;&#x43D;&#x43E;&#x432;&#x430; &#x441;&#x43B;&#x43E;&#x43C;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435; DHCP renewal, cloud-init, network manager reload &#x438;&#x43B;&#x438; &#x441;&#x43C;&#x435;&#x43D;&#x44B; BGP next hop. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; effective state, &#x430; &#x43D;&#x435; &#x444;&#x430;&#x439;&#x43B; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;. &#x421;&#x43E;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; snapshot rules &#x438; tables &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; change event; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; priority, default route, preferred source &#x438; fwmark masks.</p>
<p>&#x41F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B; counters nftables rules, martian logs &#x432; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x440;&#x435;&#x436;&#x438;&#x43C;&#x435;, conntrack insert/drop, interface drops &#x438; &#x434;&#x43E;&#x43B;&#x44F; &#x43D;&#x43E;&#x432;&#x44B;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x431;&#x435;&#x437; application response. &#x41C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x435;&#x43C; &#x438; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x43C;. &#x420;&#x43E;&#x441;&#x442; <code>InDiscards</code> &#x431;&#x435;&#x437; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; flow &#x2014; &#x441;&#x43B;&#x430;&#x431;&#x43E;&#x435; evidence; capture &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; SYN &#x438; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E; SYN-ACK &#x441;&#x438;&#x43B;&#x44C;&#x43D;&#x435;&#x435;.</p>
<p>&#x41D;&#x430; L7 &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44F;&#x439;&#x442;&#x435; connect failure, TLS failure, time to first byte, &#x43C;&#x435;&#x436;&#x444;&#x440;&#x430;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x43D;&#x44B;&#x439; timeout &#x438; premature close. &#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; path &#x447;&#x430;&#x449;&#x435; &#x43F;&#x43E;&#x440;&#x430;&#x436;&#x430;&#x435;&#x442; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x438;&#x43B;&#x438; state transition, &#x442;&#x43E;&#x433;&#x434;&#x430; &#x43A;&#x430;&#x43A; inference queue &#x443;&#x445;&#x443;&#x434;&#x448;&#x430;&#x435;&#x442; time to first token &#x43F;&#x440;&#x438; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x43E;&#x43C; transport. Routing change &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442; backend queue, proxy buffering, retry storm &#x438;&#x43B;&#x438; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x43D;&#x44B;&#x439; GPU.</p>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; dual-stack &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;. IPv4 <code>rp_filter</code> &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x433;&#x43E;&#x432;&#x43E;&#x440;&#x438;&#x442; &#x43E; IPv6 path. Happy Eyeballs &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43C;&#x430;&#x441;&#x43A;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x43E;&#x442;&#x43A;&#x430;&#x437; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x441;&#x435;&#x43C;&#x44C;&#x438; fallback-&#x43E;&#x43C;; &#x43F;&#x43E;&#x434;&#x440;&#x43E;&#x431;&#x43D;&#x44B;&#x439; &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434; &#x435;&#x441;&#x442;&#x44C; &#x432; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x435; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/ipv6-happy-eyeballs-llm-api-runbook/">IPv6 &#x438; Happy Eyeballs</a>.</p>
<div class="ks-widget" id="ks-tab-obs2h7c"><h3>&#x41A;&#x430;&#x43A; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x43F;&#x43E;&#x441;&#x43B;&#x435; fix?</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="connect">Connect</button><button type="button" class="tab-btn" data-t="first">&#x41F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x442;&#x43E;&#x43A;&#x435;&#x43D;</button><button type="button" class="tab-btn" data-t="stream">&#x414;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x439; stream</button></div><div class="panel on" data-p="connect">&#x421;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; ingress, RPDB, source validation, SYN/SYN-ACK &#x438; upstream filtering.</div><div class="panel" data-p="first">&#x41F;&#x440;&#x438; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x43E;&#x43C; handshake &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; TLS, proxy admission &#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; inference.</div><div class="panel" data-p="stream">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; path churn, state timeout, buffering &#x438; close/retry policy.</div><script>(function(){var r=document.getElementById('ks-tab-obs2h7c');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><h2 id="platform-choice">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; VPS &#x438;&#x43B;&#x438; dedicated edge</h2>

<p>Procurement default &#x43A;&#x43E;&#x43D;&#x441;&#x435;&#x440;&#x432;&#x430;&#x442;&#x438;&#x432;&#x435;&#x43D;: &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x443;, &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D; control gap. &#x41E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x43D;&#x44B;&#x439; priority &#x432; RPDB &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x43E; &#x43B;&#x43E;&#x43C;&#x430;&#x435;&#x442; VM &#x438; dedicated server. Loose <code>rp_filter</code> &#x431;&#x435;&#x437; ingress policy &#x43D;&#x435; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x435;&#x435; &#x43E;&#x442; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; CPU.</p>
<p>VPS &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; software edge &#x441; &#x434;&#x432;&#x443;&#x43C;&#x44F; &#x43B;&#x43E;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x43C;&#x438; uplink, &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x439; &#x41E;&#x421; &#x438; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B;&#x43C; change window, &#x430; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; NIC ownership &#x43D;&#x435; &#x43A;&#x440;&#x438;&#x442;&#x438;&#x447;&#x435;&#x43D;. Dedicated edge &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x442; NIC, queue/NUMA placement, driver/firmware, upstream sessions &#x438; failure domain. Managed load balancer &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x447;&#x430;&#x441;&#x442;&#x44C; on-call, &#x43D;&#x43E; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; packet evidence.</p>
<p>&#x426;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x2014; &#x43D;&#x435; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x435; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x439; latency. &#x42D;&#x442;&#x43E; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x44C; route tables, sysctl, firewall, telemetry &#x438; rollback &#x437;&#x430; &#x43E;&#x434;&#x43D;&#x438;&#x43C; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x435;&#x43C;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; reboot/failover &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C; baseline &#x43C;&#x435;&#x436;&#x434;&#x443; &#x443;&#x437;&#x43B;&#x430;&#x43C;&#x438;. &#x415;&#x441;&#x43B;&#x438; workload &#x443;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; inference queue, &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; scheduler &#x438;&#x43B;&#x438; capacity. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x432; route ownership, &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; edge &#x441;&#x43E;&#x43A;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x44B;&#x445; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43D;&#x438;&#x43A;&#x43E;&#x432;.</p>
<p>&#x41E;&#x431;&#x449;&#x438;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x43A;&#x441;&#x442; &#x430;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x44B; &#x435;&#x441;&#x442;&#x44C; &#x432; &#x440;&#x443;&#x43A;&#x43E;&#x432;&#x43E;&#x434;&#x441;&#x442;&#x432;&#x435; &#x43F;&#x43E; <a href="https://kingservers.com/blog/private-ai-api-analog-openai-na-svoih-serverah/">Private AI API &#x43D;&#x430; &#x441;&#x432;&#x43E;&#x438;&#x445; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x430;&#x445;</a>. &#x41E;&#x43D;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442;, &#x433;&#x434;&#x435; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x442;&#x44C; gateway &#x438; observability; &#x44D;&#x442;&#x43E;&#x442; runbook &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x443;&#x437;&#x43A;&#x438;&#x439; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#x2014; &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;.</p>
<div class="ks-widget" id="ks-sel-buy9k3s"><h3>&#x41A;&#x430;&#x43A;&#x43E;&#x439; edge &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x43C;&#x443; gap?</h3><label>&#x422;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435;</label><select data-s><option value="none">&#x41C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x435;&#x43D; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</option><option value="vps">&#x41D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; software control plane</option><option value="dedicated">&#x41D;&#x443;&#x436;&#x435;&#x43D; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; NIC, driver &#x438; failure domain</option><option value="managed">&#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x43D;&#x435; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x430; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x442;&#x44C; dataplane</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-buy9k3s');if(!r)return;var m={"none":"Исправьте policy и автоматизацию; новая платформа не требуется.","vps":"Рассмотрите VPS edge с versioned config, canary и независимым rollback.","dedicated":"Dedicated edge оправдан контролем hardware path, а не обещанием ускорения.","managed":"Сравните managed LB по packet evidence, policy lifecycle и ответственности за rollback."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-07-0fe57b90.webp" class="kg-image" alt="&#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; Linux &#x434;&#x43B;&#x44F; LLM API: ip rule, rp_filter &#x438; fwmark" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/linux-policy-routing-llm-gateway-inline-07-0fe57b90.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/linux-policy-routing-llm-gateway-inline-07-0fe57b90.webp 1000w, https://kingservers.com/blog/content/images/2026/10/linux-policy-routing-llm-gateway-inline-07-0fe57b90.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="conclusion">&#x418;&#x442;&#x43E;&#x433;: &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x44F; &#x2014; &#x43D;&#x435; &#x446;&#x435;&#x43B;&#x44C;, &#x446;&#x435;&#x43B;&#x44C; &#x2014; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; path contract</h2>

<p>&#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x441;&#x430;&#x43C;&#x430; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x43D;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430;. &#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F;, &#x43A;&#x43E;&#x433;&#x434;&#x430; Linux, firewall, provider filtering &#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;-&#x440;&#x430;&#x437;&#x43D;&#x43E;&#x43C;&#x443; &#x43F;&#x43E;&#x43D;&#x438;&#x43C;&#x430;&#x44E;&#x442; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;. &#x418;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; flow: ingress interface &#x2192; RPDB/FIB &#x2192; source validation &#x438; state &#x2192; application outcome.</p>
<p>&#x414;&#x43B;&#x44F; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; proxy &#x447;&#x430;&#x441;&#x442;&#x43E; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E; source-based tables &#x441; &#x44F;&#x432;&#x43D;&#x44B;&#x43C;&#x438; priorities. &#x414;&#x43B;&#x44F; forwarded/NAT path &#x43F;&#x43E;&#x43D;&#x430;&#x434;&#x43E;&#x431;&#x438;&#x442;&#x441;&#x44F; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x435; mark &#x432; conntrack &#x438; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x434;&#x43E; route lookup. <code>rp_filter</code> &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; &#x43A;&#x430;&#x43A; &#x447;&#x430;&#x441;&#x442;&#x44C; threat model: strict &#x434;&#x43B;&#x44F; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x43E;&#x433;&#x43E; edge, loose &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x439; &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x438; &#x441; &#x43A;&#x43E;&#x43C;&#x43F;&#x435;&#x43D;&#x441;&#x438;&#x440;&#x443;&#x44E;&#x449;&#x435;&#x439; ingress-&#x437;&#x430;&#x449;&#x438;&#x442;&#x43E;&#x439;.</p>
<p>&#x421;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x448;&#x430;&#x433; &#x2014; &#x432;&#x437;&#x44F;&#x442;&#x44C; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x43D;&#x44B;&#x439; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x439; &#x430;&#x434;&#x440;&#x435;&#x441;, &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x44C; baseline, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x441;&#x442;&#x438; A/B/A canary &#x438; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x430;&#x442;&#x44C; owner &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x44F;. &#x415;&#x441;&#x43B;&#x438; control gap &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x432; &#x43E;&#x431;&#x449;&#x435;&#x439; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;, &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441; gateway &#x43D;&#x430; VPS &#x438;&#x43B;&#x438; dedicated edge &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x438;&#x43D;&#x436;&#x435;&#x43D;&#x435;&#x440;&#x43D;&#x44B;&#x43C; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x441; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x43E;&#x439; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43E;&#x439;, &#x430; &#x43D;&#x435; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x43E;&#x439; &#x43F;&#x43E;&#x43F;&#x44B;&#x442;&#x43A;&#x43E;&#x439; &#x443;&#x433;&#x430;&#x434;&#x430;&#x442;&#x44C;.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[SYN cookies и SYNPROXY для LLM API gateway: диагностика SYN flood без ложной уверенности]]></title><description><![CDATA[Практический runbook по SYN cookies и nftables SYNPROXY: как отличить SYN flood от легальной перегрузки, собрать evidence, провести canary и не сломать LLM API.]]></description><link>https://kingservers.com/blog/syn-cookies-synproxy-llm-api-gateway/</link><guid isPermaLink="false">6ad08955aff2afac25354e31</guid><category><![CDATA[Сетевые протоколы]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 16 Oct 2026 08:09:37 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-hero-1f3d17c1.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#symptoms-not-verdict">SYN flood &#x438;&#x43B;&#x438; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x430;&#x44F; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430;: &#x43D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;&#x430;, &#x430; &#x43D;&#x435; &#x441; &#x43D;&#x430;&#x437;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x430;&#x442;&#x430;&#x43A;&#x438;</a></li>
<li><a href="#tcp-queues">&#x414;&#x432;&#x435; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; Linux TCP, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x442;&#x44C;</a></li>
<li><a href="#evidence-bundle">Evidence bundle: &#x447;&#x442;&#x43E; &#x441;&#x43E;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; sysctl</a></li>
<li><a href="#syncookies">SYN cookies: &#x430;&#x432;&#x430;&#x440;&#x438;&#x439;&#x43D;&#x44B;&#x439; fallback &#x441; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43E;&#x431;&#x43B;&#x430;&#x441;&#x442;&#x44C;&#x44E; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x44F;</a></li>
<li><a href="#synproxy">SYNPROXY &#x432; nftables: &#x432;&#x44B;&#x43D;&#x435;&#x441;&#x442;&#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443; handshake &#x43D;&#x430; edge</a></li>
<li><a href="#choose-mechanism">Backlog, cookies &#x438;&#x43B;&#x438; SYNPROXY: &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x43E; owner &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x44B;</a></li>
<li><a href="#canary-rollout">Canary &#x431;&#x435;&#x437; &#x441;&#x430;&#x43C;&#x43E;&#x43E;&#x431;&#x43C;&#x430;&#x43D;&#x430;: A/B/A &#x43D;&#x430; &#x441;&#x432;&#x435;&#x436;&#x438;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x445;</a></li>
<li><a href="#observability">&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;: &#x441;&#x432;&#x44F;&#x437;&#x430;&#x442;&#x44C; packets, kernel &#x438; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x442;&#x43E;&#x43A;&#x435;&#x43D;</a></li>
<li><a href="#failure-modes">&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442; &#x437;&#x430;&#x449;&#x438;&#x442;&#x443; &#x432; &#x43D;&#x43E;&#x432;&#x44B;&#x439; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;</a></li>
<li><a href="#production-checklist">Production checklist &#x438; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x43D;&#x43E;&#x433;&#x43E; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x44F;</a></li>
<li><a href="#conclusion">&#x418;&#x442;&#x43E;&#x433;: &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x439;&#x442;&#x435; handshake, &#x43D;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;</a></li>
</ul></div>

</div>GPU &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x44E;&#x442;, health check &#x437;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x439;, &#x441;&#x442;&#x430;&#x440;&#x44B;&#x435; streaming-&#x441;&#x435;&#x441;&#x441;&#x438;&#x438; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x44E;&#x442; &#x2014; &#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x44B; &#x43D;&#x435; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x434;&#x430;&#x436;&#x435; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x44C; TCP-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;. &#x412; &#x442;&#x430;&#x43A;&#x43E;&#x439; &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442; &#x441;&#x43E;&#x43E;&#x431;&#x449;&#x435;&#x43D;&#x438;&#x435; possible SYN flooding &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x437;&#x430; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x44B;&#x439; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x437; &#x438; &#x43D;&#x430;&#x447;&#x430;&#x442;&#x44C; &#x43A;&#x440;&#x443;&#x442;&#x438;&#x442;&#x44C; sysctl &#x432;&#x441;&#x43B;&#x435;&#x43F;&#x443;&#x44E;. &#x41D;&#x43E; SYN cookies, accept queue &#x438; SYNPROXY &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x44E;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43A;&#x438; &#x43F;&#x443;&#x442;&#x438;, &#x430; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442; &#x43E;&#x442;&#x43A;&#x430;&#x437; &#x43D;&#x430; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x441;&#x43B;&#x43E;&#x439;. &#x420;&#x430;&#x437;&#x431;&#x435;&#x440;&#x451;&#x43C; evidence-first runbook: &#x43E;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430; SYN &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430; LLM, &#x441; canary, &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F;&#x43C;&#x438; &#x438; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x43C; rollback.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-hero-1f3d17c1.webp" alt="SYN cookies &#x438; SYNPROXY &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; SYN flood &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x443;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="symptoms-not-verdict">SYN flood &#x438;&#x43B;&#x438; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x430;&#x44F; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430;: &#x43D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;&#x430;, &#x430; &#x43D;&#x435; &#x441; &#x43D;&#x430;&#x437;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x430;&#x442;&#x430;&#x43A;&#x438;</h2>
<p>&#x423; LLM API gateway &#x435;&#x441;&#x442;&#x44C; &#x43D;&#x435;&#x43F;&#x440;&#x438;&#x44F;&#x442;&#x43D;&#x44B;&#x439; &#x440;&#x435;&#x436;&#x438;&#x43C; &#x43E;&#x442;&#x43A;&#x430;&#x437;&#x430;: GPU &#x437;&#x430;&#x43D;&#x44F;&#x442;&#x44B; &#x43D;&#x435; &#x43F;&#x43E;&#x43B;&#x43D;&#x43E;&#x441;&#x442;&#x44C;&#x44E;, &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441; inference &#x436;&#x438;&#x432;, health check &#x437;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x439;, &#x43D;&#x43E; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x44B; &#x432;&#x43D;&#x435;&#x437;&#x430;&#x43F;&#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x44E;&#x442; timeout &#x435;&#x449;&#x451; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; HTTP-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430;. &#x41D;&#x430; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x435; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x440;&#x438; &#x44D;&#x442;&#x43E;&#x43C; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43D;&#x435; &#x431;&#x44B;&#x442;&#x44C; &#x432;&#x441;&#x43F;&#x43B;&#x435;&#x441;&#x43A;&#x430; 5xx &#x2014; TCP-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x43D;&#x435; &#x434;&#x43E;&#x448;&#x43B;&#x43E; &#x434;&#x43E; accept(). &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x432;&#x438;&#x434;&#x438;&#x442; &#x441;&#x43E;&#x43E;&#x431;&#x449;&#x435;&#x43D;&#x438;&#x44F; &#x43E; possible SYN flooding &#x438; &#x441;&#x440;&#x430;&#x437;&#x443; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; &#x432;&#x441;&#x451;, &#x447;&#x442;&#x43E; &#x437;&#x432;&#x443;&#x447;&#x438;&#x442; &#x43A;&#x430;&#x43A; &#x437;&#x430;&#x449;&#x438;&#x442;&#x430;. &#x42D;&#x442;&#x43E; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x430;&#x44F; &#x440;&#x435;&#x430;&#x43A;&#x446;&#x438;&#x44F;, &#x43D;&#x43E; &#x43E;&#x43D;&#x430; &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x43C;&#x430;&#x441;&#x43A;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43D;&#x430;&#x441;&#x442;&#x43E;&#x44F;&#x449;&#x443;&#x44E; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x443;.</p>
<p>&#x41E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x439; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x434;&#x430;&#x44E;&#x442; &#x43A;&#x430;&#x43A; &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x443;&#x43C; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x430;: &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x43D;&#x44B;&#x439; SYN backlog, &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; accept loop, &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43D;&#x43D;&#x44B;&#x439; conntrack, &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; CPU. &#x41D;&#x430;&#x441;&#x442;&#x43E;&#x44F;&#x449;&#x438;&#x439; spoofed SYN flood &#x2014; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43E;&#x434;&#x438;&#x43D; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x439; verdict &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x437;&#x432;&#x443;&#x447;&#x430;&#x442;&#x44C; &#x43D;&#x435; &#xAB;&#x43D;&#x430;&#x441; &#x430;&#x442;&#x430;&#x43A;&#x443;&#x44E;&#x442;&#xBB;, &#x430; &#x442;&#x43E;&#x447;&#x43D;&#x435;&#x435;: &#xAB;&#x43D;&#x430; &#x442;&#x430;&#x43A;&#x43E;&#x43C;-&#x442;&#x43E; listener &#x440;&#x430;&#x441;&#x442;&#x443;&#x442; half-open &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B;, &#x44F;&#x434;&#x440;&#x43E; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; cookies, &#x430; &#x434;&#x43E;&#x43B;&#x44F; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x445; fresh connections &#x43F;&#x430;&#x434;&#x430;&#x435;&#x442;&#xBB;.</p>
<p>&#x414;&#x43B;&#x44F; LLM-&#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x430; &#x44D;&#x442;&#x43E; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x430;&#x436;&#x43D;&#x43E;. &#x414;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x435; streaming-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x43C;&#x438;, &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x443;&#x436;&#x435; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x44F;&#x442; handshake. &#x421;&#x440;&#x435;&#x434;&#x43D;&#x44F;&#x44F; &#x437;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430; GPU &#x438; latency &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x445; &#x441;&#x435;&#x441;&#x441;&#x438;&#x439; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x44E;&#x442; false green. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x43D;&#x43E;&#x432;&#x44B;&#x439; connection path: &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x2192; edge &#x2192; handshake &#x2192; accept &#x2192; TLS/HTTP &#x2192; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438; &#x2192; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x442;&#x43E;&#x43A;&#x435;&#x43D;.</p>
<p>&#x413;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x430;: &#x434;&#x430;&#x43B;&#x435;&#x435; &#x440;&#x435;&#x447;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43E; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x435; &#x438; &#x437;&#x430;&#x449;&#x438;&#x442;&#x435; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x44B;. &#x413;&#x435;&#x43D;&#x435;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x430;&#x442;&#x430;&#x43A;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x438;&#x437; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x43D;&#x435;&#x442;&#x430; &#x43D;&#x435; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442;&#x441;&#x44F;; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x433;&#x43E; canary &#x438;&#x437; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x43E;&#x439; &#x441;&#x435;&#x442;&#x438; &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x451;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; baseline.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-01-9289a752.webp" class="kg-image" alt="SYN cookies &#x438; SYNPROXY &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; SYN flood &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x443;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-01-9289a752.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-01-9289a752.webp 1000w, https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-01-9289a752.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="tcp-queues">&#x414;&#x432;&#x435; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; Linux TCP, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x442;&#x44C;</h2>
<p>&#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x435;&#x433;&#x43E; SYN &#x44F;&#x434;&#x440;&#x43E; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; request socket &#x438; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x451;&#x43D;&#x43D;&#x44B;&#x439; handshake &#x432; SYN backlog. &#x415;&#x433;&#x43E; &#x432;&#x435;&#x440;&#x445;&#x43D;&#x44F;&#x44F; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D;&#x430; &#x441; <code>net.ipv4.tcp_max_syn_backlog</code> &#x438; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x43D;&#x430; listener. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x444;&#x438;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; ACK &#x43F;&#x43E;&#x43B;&#x43D;&#x43E;&#x441;&#x442;&#x44C;&#x44E; &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x432; accept queue &#x438; &#x436;&#x434;&#x451;&#x442;, &#x43F;&#x43E;&#x43A;&#x430; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441; &#x432;&#x44B;&#x437;&#x43E;&#x432;&#x435;&#x442; accept(). &#x410;&#x440;&#x433;&#x443;&#x43C;&#x435;&#x43D;&#x442; <code>listen(backlog)</code> &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; <code>net.core.somaxconn</code>; &#x432; Linux 5.4 &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; somaxconn &#x43F;&#x43E; &#x443;&#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x43D;&#x438;&#x44E; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x43B;&#x438; &#x441; 128 &#x434;&#x43E; 4096, &#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x438;&#x442;&#x44C; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x438;&#x439; backlog.</p>
<p>&#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x446;&#x438;&#x43F;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;. &#x420;&#x43E;&#x441;&#x442; SYN_RECV &#x43F;&#x440;&#x438; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; accept queue &#x443;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443; handshake &#x438;&#x43B;&#x438; &#x432;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430;. &#x420;&#x43E;&#x441;&#x442; <code>ListenOverflows</code>/<code>ListenDrops</code> &#x43F;&#x440;&#x438; &#x437;&#x430;&#x43D;&#x44F;&#x442;&#x44B;&#x445; workers &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; &#x43F;&#x43E;&#x445;&#x43E;&#x436; &#x43D;&#x430; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; userspace accept. &#x41F;&#x440;&#x43E;&#x441;&#x442;&#x43E;&#x435; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x431;&#x43E;&#x438;&#x445; &#x43B;&#x438;&#x43C;&#x438;&#x442;&#x43E;&#x432; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x451;&#x43C;&#x43A;&#x43E;&#x441;&#x442;&#x44C; &#x431;&#x443;&#x444;&#x435;&#x440;&#x430;, &#x43D;&#x43E; &#x43D;&#x435; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x44F;&#x435;&#x442; CPU, &#x43D;&#x435; &#x447;&#x438;&#x43D;&#x438;&#x442; single listener &#x438; &#x43D;&#x435; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x430;&#x435;&#x442; conntrack.</p>
<p>&#x41F;&#x440;&#x435;&#x434;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x442;&#x443;&#x440;&#x43D;&#x438;&#x43A;&#x435;&#x442; &#x438; &#x437;&#x430;&#x43B; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x43D;&#x438;&#x44F;. SYN backlog &#x2014; &#x43B;&#x44E;&#x434;&#x438;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x435;&#x449;&#x451; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x44E;&#x442; &#x431;&#x438;&#x43B;&#x435;&#x442; &#x443; &#x442;&#x443;&#x440;&#x43D;&#x438;&#x43A;&#x435;&#x442;&#x430;. Accept queue &#x2014; &#x443;&#x436;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x43E;&#x441;&#x435;&#x442;&#x438;&#x442;&#x435;&#x43B;&#x438;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x445; &#x43D;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x432;&#x430;&#x435;&#x442; &#x437;&#x430;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x441;&#x43E;&#x442;&#x440;&#x443;&#x434;&#x43D;&#x438;&#x43A;. &#x420;&#x430;&#x441;&#x448;&#x438;&#x440;&#x438;&#x442;&#x44C; &#x437;&#x430;&#x43B; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E; &#x43F;&#x440;&#x438; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x43E;&#x43C; &#x432;&#x441;&#x43F;&#x43B;&#x435;&#x441;&#x43A;&#x435;, &#x43D;&#x43E; &#x431;&#x435;&#x441;&#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;, &#x435;&#x441;&#x43B;&#x438; &#x441;&#x43E;&#x442;&#x440;&#x443;&#x434;&#x43D;&#x438;&#x43A; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x43B;&#x441;&#x44F;.</p>
<p>&#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; <a href="https://man7.org/linux/man-pages/man2/listen.2.html?ref=kingservers.com">man-pages &#x434;&#x43B;&#x44F; listen(2)</a> &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x44E;&#x442; &#x44D;&#x442;&#x443; &#x441;&#x435;&#x43C;&#x430;&#x43D;&#x442;&#x438;&#x43A;&#x443;, &#x430; <a href="https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html?ref=kingservers.com">&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x44F;&#x434;&#x440;&#x430; &#x43F;&#x43E; IP sysctl</a> &#x43F;&#x440;&#x435;&#x434;&#x443;&#x43F;&#x440;&#x435;&#x436;&#x434;&#x430;&#x435;&#x442;: syncookies &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x434;&#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x44B; &#x434;&#x43B;&#x44F; &#x43B;&#x435;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x43B;&#x435;&#x433;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;.</p>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-sel-syn7a2q"><h3>&#x41A;&#x430;&#x43A;&#x443;&#x44E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x439;?</h3>
<label>&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;</label><select data-s><option value="new">&#x41D;&#x43E;&#x432;&#x44B;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x437;&#x430;&#x432;&#x438;&#x441;&#x430;&#x44E;&#x442; &#x434;&#x43E; TLS</option><option value="accept">Handshake &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442;, &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x437;&#x434;&#x43D;&#x43E;</option><option value="stream">&#x421;&#x442;&#x430;&#x440;&#x44B;&#x435; streams &#x436;&#x438;&#x432;&#x44B;, &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x43F;&#x430;&#x434;&#x430;&#x44E;&#x442;</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-syn7a2q');if(!r)return;var m={"new":"Снимите SYN_RECV, SyncookiesSent и пакетный trace на edge; пока не меняйте application timeout.","accept":"Сопоставьте ListenOverflows/ListenDrops с accept rate, worker saturation и backlog приложения.","stream":"Проверяйте fresh connection path отдельно: средние метрики существующих streams скрывают отказ входа."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-02-5d568796.webp" class="kg-image" alt="SYN cookies &#x438; SYNPROXY &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; SYN flood &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x443;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-02-5d568796.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-02-5d568796.webp 1000w, https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-02-5d568796.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="evidence-bundle">Evidence bundle: &#x447;&#x442;&#x43E; &#x441;&#x43E;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; sysctl</h2>
<p>&#x414;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x43E;&#x432; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x443; &#x438; &#x442;&#x443; &#x436;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x442;&#x43E;&#x447;&#x43A;&#x443; &#x43D;&#x430; edge &#x438; &#x432; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x438;. &#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; bundle &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; sysctl, &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; listener, &#x43A;&#x43E;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x442;&#x432;&#x43E; SYN_RECV, &#x434;&#x435;&#x43B;&#x44C;&#x442;&#x44B; TcpExt counters, packet capture &#x441; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x43C; snaplen &#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x441;&#x432;&#x435;&#x436;&#x435;&#x433;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x43E;&#x433;&#x43E; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430;. &#x421;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x432; baseline, &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;&#x430; &#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;.</p>
<p><code>TcpExtSyncookiesSent</code> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x435; cookies, <code>SyncookiesRecv</code> &#x2014; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x44B; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x432; &#x43D;&#x430; &#x43D;&#x438;&#x445;, &#x430; <code>SyncookiesFailed</code> &#x2014; &#x43D;&#x435;&#x432;&#x430;&#x43B;&#x438;&#x434;&#x43D;&#x43E;&#x435; &#x434;&#x435;&#x43A;&#x43E;&#x434;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; MSS. &#x421;&#x430;&#x43C;&#x438; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; cookies &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x442; &#x430;&#x442;&#x430;&#x43A;&#x443;: &#x43E;&#x43D;&#x438; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x442;, &#x447;&#x442;&#x43E; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; listener &#x434;&#x43E;&#x448;&#x451;&#x43B; &#x434;&#x43E; fallback. <code>ListenOverflows</code> &#x438; <code>ListenDrops</code> &#x43E;&#x442;&#x43D;&#x43E;&#x441;&#x44F;&#x442;&#x441;&#x44F; &#x43A; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430;&#x43C; &#x43F;&#x440;&#x438; &#x43F;&#x43E;&#x43C;&#x435;&#x449;&#x435;&#x43D;&#x438;&#x438; &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x432; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;; &#x438;&#x445; &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x43A;&#x430;&#x43A; &#x434;&#x435;&#x43B;&#x44C;&#x442;&#x443;, &#x430; &#x43D;&#x435; &#x43A;&#x430;&#x43A; &#x43D;&#x430;&#x43A;&#x43E;&#x43F;&#x438;&#x432;&#x448;&#x435;&#x435;&#x441;&#x44F; &#x437;&#x430; &#x43C;&#x435;&#x441;&#x44F;&#x446;&#x44B; &#x447;&#x438;&#x441;&#x43B;&#x43E;.</p>
<p>&#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x43D;&#x438;&#x436;&#x435; &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;. &#x417;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x439;&#x442;&#x435; &#x435;&#x451; &#x432; effective network namespace gateway: host, container &#x438;&#x43B;&#x438; pod &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x432;&#x438;&#x434;&#x435;&#x442;&#x44C; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; counters. &#x415;&#x441;&#x43B;&#x438; nftables/conntrack &#x441;&#x442;&#x43E;&#x44F;&#x442; &#x43D;&#x430; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; edge, &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; evidence &#x438; &#x442;&#x430;&#x43C;, &#x438; &#x43D;&#x430; backend.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">collect-syn-evidence.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>date -Is
uname -r
sysctl net.ipv4.tcp_syncookies net.ipv4.tcp_max_syn_backlog net.core.somaxconn
ss -lntp
ss -n state syn-recv &apos;( sport = :443 )&apos;
nstat -az | grep -E &apos;TcpExt(Syncookies|Listen|TCPReqQFull|TCPSynRetrans)&apos;
timeout 20 tcpdump -ni any -s 128 -w /tmp/syn-evidence.pcap &apos;tcp port 443 and (tcp[tcpflags] &amp; (tcp-syn|tcp-ack) != 0)&apos;</code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; TCP listener &#x438; kernel counters &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</div>
</div>
<p>&#x414;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; application probe: DNS lookup, TCP connect, TLS handshake, HTTP status &#x438; time to first token &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; timestamps. &#x418;&#x43D;&#x430;&#x447;&#x435; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435; packet counters &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x437;&#x430; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; LLM API.</p><h2 id="syncookies">SYN cookies: &#x430;&#x432;&#x430;&#x440;&#x438;&#x439;&#x43D;&#x44B;&#x439; fallback &#x441; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43E;&#x431;&#x43B;&#x430;&#x441;&#x442;&#x44C;&#x44E; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x44F;</h2>
<p>&#x41F;&#x440;&#x438; <code>net.ipv4.tcp_syncookies=1</code> Linux &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; SYN cookies, &#x43A;&#x43E;&#x433;&#x434;&#x430; SYN backlog &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;, &#x435;&#x441;&#x43B;&#x438; &#x44F;&#x434;&#x440;&#x43E; &#x441;&#x43E;&#x431;&#x440;&#x430;&#x43D;&#x43E; &#x441; <code>CONFIG_SYN_COOKIES</code>. &#x412;&#x43C;&#x435;&#x441;&#x442;&#x43E; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x43E;&#x43B;&#x43D;&#x43E;&#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; request state &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x43A;&#x43E;&#x434;&#x438;&#x440;&#x443;&#x435;&#x442; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x43E;&#x432; &#x432; sequence number SYN-ACK &#x438; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x430;&#x432;&#x43B;&#x438;&#x432;&#x430;&#x435;&#x442; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x433;&#x43E; ACK. &#x42D;&#x442;&#x43E; &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x436;&#x438;&#x442;&#x44C; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; half-open &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x441; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x438;&#x43C; &#x440;&#x430;&#x441;&#x445;&#x43E;&#x434;&#x43E;&#x43C; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438; &#x43D;&#x430; backlog.</p>
<p>&#x41D;&#x43E; cookie &#x43D;&#x435; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; CPU, &#x43D;&#x435; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x44F;&#x435;&#x442; accept loop &#x438; &#x43D;&#x435; &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x435;&#x442; L7. &#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x44F;&#x434;&#x440;&#x430; &#x43D;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; fallback facility &#x438; &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x437;&#x430;&#x43F;&#x440;&#x435;&#x449;&#x430;&#x435;&#x442; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x435;&#x433;&#x43E; &#x43A;&#x430;&#x43A; tuning &#x434;&#x43B;&#x44F; &#x43B;&#x435;&#x433;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;. &#x412; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x445; &#x440;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F;&#x445; cookies &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x43B;&#x438; TCP options; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x44F;&#x434;&#x440;&#x430; &#x443;&#x43C;&#x435;&#x44E;&#x442; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435;, &#x43D;&#x43E; &#x432;&#x44B;&#x431;&#x43E;&#x440; MSS &#x438; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43D;&#x438;&#x439; &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43D;&#x430; &#x432;&#x430;&#x448;&#x435;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; &#x438; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x43E;&#x43C; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x435;.</p>
<p>&#x417;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; <code>2</code> &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; &#x431;&#x435;&#x437;&#x443;&#x441;&#x43B;&#x43E;&#x432;&#x43D;&#x443;&#x44E; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x44E; cookies &#x438; &#x43F;&#x440;&#x435;&#x434;&#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x43E; &#x434;&#x43B;&#x44F; &#x442;&#x435;&#x441;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;&#x430;. &#x42D;&#x442;&#x43E; &#x43D;&#x435; production default. &#x415;&#x441;&#x43B;&#x438; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; &#x435;&#x433;&#x43E; &#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x43E;, &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B; &#x43E; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x438; backlog &#x438; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x443;&#x445;&#x443;&#x434;&#x448;&#x435;&#x43D;&#x438;&#x435; path &#x437;&#x430; &#x43D;&#x43E;&#x440;&#x43C;&#x443;.</p>
<p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43A;&#x440;&#x438;&#x442;&#x435;&#x440;&#x438;&#x439;: cookies &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439; SYN rate &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x44B;&#x448;&#x435; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x43E;&#x441;&#x442;&#x438; listener &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x451;&#x43D;&#x43D;&#x44B;&#x435; handshake, &#x430; established path &#x43F;&#x43E;&#x441;&#x43B;&#x435; ACK &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x43C;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x440;&#x430;&#x441;&#x442;&#x443;&#x442; ListenDrops, CPU softirq, TLS latency &#x438; queue &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;, &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x448;&#x438;&#x440;&#x435;.</p>
<div class="ks-widget" id="ks-tab-cookie8"><h3>&#x427;&#x442;&#x43E; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x440;&#x43E;&#x441;&#x442; counters</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="sent">Sent</button><button type="button" class="tab-btn" data-t="recv">Recv</button><button type="button" class="tab-btn" data-t="failed">Failed</button></div>
<div class="panel on" data-p="sent">Backlog &#x432;&#x43E;&#x448;&#x451;&#x43B; &#x432; cookie fallback. &#x42D;&#x442;&#x43E; &#x442;&#x440;&#x438;&#x433;&#x433;&#x435;&#x440; &#x434;&#x43B;&#x44F; &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F;, &#x430; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x430;&#x442;&#x430;&#x43A;&#x438;.</div><div class="panel" data-p="recv">&#x41A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x44B; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x438;&#x43B;&#x438; cookie handshake. &#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x434;&#x43E;&#x43B;&#x44E; &#x441; fresh connection success.</div><div class="panel" data-p="failed">&#x42F;&#x434;&#x440;&#x43E; &#x43D;&#x435; &#x441;&#x43C;&#x43E;&#x433;&#x43B;&#x43E; &#x432;&#x430;&#x43B;&#x438;&#x434;&#x43D;&#x43E; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; MSS &#x438;&#x437; cookie. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; path &#x438; &#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C;.</div>
<script>(function(){var r=document.getElementById('ks-tab-cookie8');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-03-d67a8554.webp" class="kg-image" alt="SYN cookies &#x438; SYNPROXY &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; SYN flood &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x443;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-03-d67a8554.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-03-d67a8554.webp 1000w, https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-03-d67a8554.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="synproxy">SYNPROXY &#x432; nftables: &#x432;&#x44B;&#x43D;&#x435;&#x441;&#x442;&#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443; handshake &#x43D;&#x430; edge</h2>
<p>SYNPROXY &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430; initial SYN &#x432; netfilter context &#x438; &#x43F;&#x440;&#x43E;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x435;&#x442; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43A; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C;&#x443; listener &#x438;&#x43B;&#x438; backend &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x433;&#x43E; ACK. Backend &#x43D;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; half-open state &#x434;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x43D;&#x435;&#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;. &#x412; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x438;&#x435; &#x43E;&#x442; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x445; cookies &#x43D;&#x430; endpoint, &#x437;&#x434;&#x435;&#x441;&#x44C; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x430; edge. &#x42D;&#x442;&#x43E; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x44B; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x445;&#x43E;&#x442;&#x438;&#x442;&#x435; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x43E;&#x439; L7 gateway &#x438; &#x435;&#x433;&#x43E; conntrack/accept path.</p>
<p>&#x426;&#x435;&#x43D;&#x430; &#x2014; &#x43D;&#x43E;&#x432;&#x430;&#x44F; stateful dependency. SYNPROXY &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; connection tracking, &#x43F;&#x435;&#x440;&#x435;&#x432;&#x43E;&#x434;&#x438;&#x442; sequence numbers &#x438; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43E;&#x431;&#x44A;&#x44F;&#x432;&#x43B;&#x44F;&#x442;&#x44C; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x443; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x44B;, &#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x435; &#x441; backend: MSS, window scale, SACK &#x438; timestamps. &#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x432; MSS &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x430; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x442;&#x44C; PMTU-&#x43F;&#x43E;&#x434;&#x43E;&#x431;&#x43D;&#x44B;&#x435; black holes; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; wscale &#x2014; &#x441;&#x442;&#x440;&#x430;&#x43D;&#x43D;&#x443;&#x44E; &#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x443;&#x436;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;&#x433;&#x43E; handshake. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x44B; &#x43D;&#x435; &#x443;&#x433;&#x430;&#x434;&#x44B;&#x432;&#x430;&#x44E;&#x442;. &#x418;&#x445; &#x441;&#x43D;&#x438;&#x43C;&#x430;&#x44E;&#x442; &#x441; SYN-ACK backend &#x438;&#x437; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x439; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;&#x43E;&#x439; &#x442;&#x43E;&#x447;&#x43A;&#x438;.</p>
<p>&#x410;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <a href="https://netfilter.org/projects/nftables/manpage.html?ref=kingservers.com">manpage nftables</a> &#x443;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; statement <code>synproxy</code> &#x441;&#x430;&#x43C; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x435;&#x442; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x443; &#x43A;&#x430;&#x43A; drop-verdict &#x441; &#x43F;&#x43E;&#x431;&#x43E;&#x447;&#x43D;&#x44B;&#x43C; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;&#x43E;&#x43C;, &#x430; sequence translation &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; conntrack. &#x42D;&#x442;&#x43E; &#x432;&#x43B;&#x438;&#x44F;&#x435;&#x442; &#x43D;&#x430; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; chains &#x438; &#x43F;&#x440;&#x438;&#x43E;&#x440;&#x438;&#x442;&#x435;&#x442;&#x44B;: &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x439; accept &#x432; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; base chain &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E; &#x43E;&#x431;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x44C; &#x437;&#x430;&#x434;&#x443;&#x43C;&#x430;&#x43D;&#x43D;&#x44B;&#x439; path.</p>
<p>&#x41D;&#x438;&#x436;&#x435; &#x2014; &#x43B;&#x430;&#x431;&#x43E;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x43D;&#x44B;&#x439; &#x43A;&#x430;&#x440;&#x43A;&#x430;&#x441;, &#x43D;&#x435; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x430;&#x44F; &#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x430;. &#x410;&#x434;&#x440;&#x435;&#x441;&#x430;, &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x44B;, hook priority &#x438; backend options &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x432;&#x430;&#x448;&#x435;&#x439; &#x442;&#x43E;&#x43F;&#x43E;&#x43B;&#x43E;&#x433;&#x438;&#x438;. &#x417;&#x430;&#x433;&#x440;&#x443;&#x436;&#x430;&#x439;&#x442;&#x435; ruleset &#x447;&#x435;&#x440;&#x435;&#x437; <code>nft -c</code> &#x438; out-of-band &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">synproxy-lab.nft</span></div>
<pre class="ks-canonical-code-block__pre"><code>table inet llm_synproxy {
  chain raw_prerouting {
    type filter hook prerouting priority raw; policy accept;
    tcp dport 443 tcp flags syn notrack
  }

  chain input {
    type filter hook input priority filter; policy accept;
    ct state invalid,untracked tcp dport 443 synproxy mss 1460 wscale 7 timestamp sack-perm
    ct state invalid drop
  }
}</code></pre>
<div class="ks-canonical-code-block__caption">&#x41B;&#x430;&#x431;&#x43E;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x43D;&#x44B;&#x439; skeleton SYNPROXY; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x44B; MSS/wscale &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44C;&#x442;&#x435;</div>
</div>
<style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">synproxy-check.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>nft -c -f synproxy-lab.nft
nft list ruleset
conntrack -S
nstat -az | grep -E &apos;TcpExt(Syncookies|Listen|TCPReqQFull)&apos;</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x441;&#x438;&#x43D;&#x442;&#x430;&#x43A;&#x441;&#x438;&#x441;&#x430; &#x438; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x437;&#x430; ruleset</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-04-dc09f23c.webp" class="kg-image" alt="SYN cookies &#x438; SYNPROXY &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; SYN flood &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x443;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-04-dc09f23c.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-04-dc09f23c.webp 1000w, https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-04-dc09f23c.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="choose-mechanism">Backlog, cookies &#x438;&#x43B;&#x438; SYNPROXY: &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x43E; owner &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x44B;</h2>
<p>&#x423;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; <code>tcp_max_syn_backlog</code> &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;&#x43E;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x441;&#x43F;&#x43B;&#x435;&#x441;&#x43A; &#x43B;&#x435;&#x433;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439;, &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439;, &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; &#x440;&#x430;&#x441;&#x441;&#x447;&#x438;&#x442;&#x430;&#x43D;&#x430;, &#x430; listener &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43D;&#x435;&#x433;&#x43E; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x440;&#x430;&#x437;&#x433;&#x440;&#x435;&#x431;&#x430;&#x435;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;. &#x41E;&#x434;&#x438;&#x43D; request socket SYN_RECV &#x440;&#x430;&#x441;&#x445;&#x43E;&#x434;&#x443;&#x435;&#x442; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C;; &#x44F;&#x434;&#x440;&#x43E; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43E;&#x440;&#x438;&#x435;&#x43D;&#x442;&#x438;&#x440; &#x43E;&#x43A;&#x43E;&#x43B;&#x43E; 304 &#x431;&#x430;&#x439;&#x442;, &#x43D;&#x43E; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x431;&#x44E;&#x434;&#x436;&#x435;&#x442; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; slab, conntrack, packet queues &#x438; namespace overhead. &#x41B;&#x438;&#x43C;&#x438;&#x442; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x442;&#x44C; &#x438;&#x437; &#x447;&#x443;&#x436;&#x43E;&#x433;&#x43E; &#x440;&#x435;&#x446;&#x435;&#x43F;&#x442;&#x430;.</p>
<p>Cookies &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x44E;&#x442; owner &#x43D;&#x430; backend kernel &#x438; &#x434;&#x430;&#x44E;&#x442; &#x430;&#x432;&#x430;&#x440;&#x438;&#x439;&#x43D;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x430;&#x441; &#x431;&#x435;&#x437; &#x43F;&#x440;&#x435;&#x434;&#x432;&#x430;&#x440;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; state &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x44B;&#x439; SYN. SYNPROXY &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; edge owner &#x438; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x441;&#x43C;&#x44B;&#x441;&#x43B;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x44B; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x442;&#x44C; conntrack capacity, nftables lifecycle, &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440;&#x430;&#x43C;&#x438; TCP options, observability &#x438; failover. Managed L4 DDoS/LB &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x449;&#x435;, &#x435;&#x441;&#x43B;&#x438; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x435; &#x43D;&#x435; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x439; stateful control plane.</p>
<p>Default &#x434;&#x43B;&#x44F; buyer decision: &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x443; &#x434;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; handshake bottleneck. Dedicated edge &#x446;&#x435;&#x43D;&#x435;&#x43D; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x44B;&#x43C;&#x438; NIC queues, kernel/nftables version, &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; failure domain &#x438; change window. &#x41D;&#x43E; &#x43D;&#x43E;&#x432;&#x43E;&#x435; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; accept loop, retry storm, &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; MSS, proxy buffering &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; GPU inference.</p>
<p>&#x42D;&#x442;&#x43E;&#x442; &#x43F;&#x440;&#x438;&#x43D;&#x446;&#x438;&#x43F; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x435;&#x442; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B;&#x44B; KingServers &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/so-reuseport-llm-api-gateway-ebpf/">SO_REUSEPORT &#x438; accept-&#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438;</a>, <a href="https://kingservers.com/blog/tls-handshake-storm-llm-api-gateway/">TLS handshake storm</a> &#x438; <a href="https://kingservers.com/blog/rss-rps-irq-affinity-llm-api-gateway/">RSS/RPS/IRQ affinity</a>: &#x43A;&#x430;&#x436;&#x434;&#x44B;&#x439; &#x438;&#x437; &#x43D;&#x438;&#x445; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; &#x441;&#x432;&#x43E;&#x439; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43E;&#x43A; path.</p>
<div class="ks-widget" id="ks-chk-owner4"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43B;&#x438; &#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x44C; handshake &#x43D;&#x430; edge?</h3>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x415;&#x441;&#x442;&#x44C; packet-level evidence SYN bottleneck</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> MSS &#x438; window scale backend &#x438;&#x437;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x44B;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> Conntrack &#x438;&#x43C;&#x435;&#x435;&#x442; capacity &#x438; &#x430;&#x43B;&#x435;&#x440;&#x442;&#x44B;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x415;&#x441;&#x442;&#x44C; out-of-band &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> Canary &#x438; rollback &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x44E;&#x442; fresh connections</label><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-owner4');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><h2 id="canary-rollout">Canary &#x431;&#x435;&#x437; &#x441;&#x430;&#x43C;&#x43E;&#x43E;&#x431;&#x43C;&#x430;&#x43D;&#x430;: A/B/A &#x43D;&#x430; &#x441;&#x432;&#x435;&#x436;&#x438;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;&#x445;</h2>
<p>Rollout &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; edge IP, &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; listener &#x438;&#x43B;&#x438; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; &#x434;&#x43E;&#x43B;&#x438; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; synthetic traffic. Baseline A &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; &#x441;&#x43D;&#x44F;&#x442; &#x442;&#x435;&#x43C;&#x438; &#x436;&#x435; probes, &#x447;&#x442;&#x43E; &#x438; canary B: SYN/SYN-ACK/ACK, TcpExt deltas, conntrack, accept counters, TLS success, HTTP status, TTFT &#x438; &#x434;&#x43E;&#x43B;&#x44F; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x451;&#x43D;&#x43D;&#x44B;&#x445; streams. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x437;&#x430; &#x447;&#x430;&#x441; &#x440;&#x430;&#x437;&#x43C;&#x43E;&#x435;&#x442; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; &#x43E;&#x442;&#x43A;&#x430;&#x437;.</p>
<p>Healthy negative control &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;. &#x41E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x431;&#x435;&#x437; flood-like burst &#x447;&#x435;&#x440;&#x435;&#x437; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x451;&#x43D;&#x43D;&#x44B;&#x439; path. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; SYNPROXY &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; TCP connect time &#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; negotiated window &#x443; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x445; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x432;, &#x44D;&#x442;&#x43E; regression, &#x434;&#x430;&#x436;&#x435; &#x435;&#x441;&#x43B;&#x438; backend SYN_RECV &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x438;&#x43B;&#x441;&#x44F;. &#x414;&#x440;&#x443;&#x433;&#x43E;&#x439; negative control &#x2014; &#x43F;&#x440;&#x44F;&#x43C;&#x43E;&#x439; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44B;&#x439; backend path &#x438;&#x437; management &#x441;&#x435;&#x442;&#x438;: &#x43E;&#x43D; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; edge &#x43E;&#x442; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;.</p>
<p>&#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; B &#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435;&#x441;&#x44C; &#x43A; A. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x43D;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x430;: &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;, &#x437;&#x430;&#x43A;&#x43E;&#x43D;&#x447;&#x438;&#x43B;&#x441;&#x44F; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; burst &#x438;&#x43B;&#x438; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x438;&#x43B;&#x430;&#x441;&#x44C; queue &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; B. &#x422;&#x430;&#x43A;&#x43E;&#x439; A/B/A &#x43A;&#x430;&#x436;&#x435;&#x442;&#x441;&#x44F; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x43C;, &#x437;&#x430;&#x442;&#x43E; &#x441;&#x43F;&#x430;&#x441;&#x430;&#x435;&#x442; &#x43E;&#x442; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x441;&#x43F;&#x435;&#x445;&#x430; &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430;.</p>
<p>&#x41F;&#x435;&#x440;&#x435;&#x434; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; atomic ruleset, sysctl snapshot &#x438; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x443; rollback. &#x41D;&#x435; &#x443;&#x434;&#x430;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x439; path &#x440;&#x430;&#x43D;&#x44C;&#x448;&#x435;, &#x447;&#x435;&#x43C; established streaming sessions &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E; drain. &#x414;&#x43B;&#x44F; LLM API &#x43E;&#x431;&#x440;&#x44B;&#x432; &#x447;&#x435;&#x440;&#x435;&#x437; &#x434;&#x432;&#x430;&#x434;&#x446;&#x430;&#x442;&#x44C; &#x43C;&#x438;&#x43D;&#x443;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#xAB;&#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;&#x433;&#x43E;&#xBB; handshake &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x435;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x443;, &#x447;&#x435;&#x43C; &#x43B;&#x438;&#x448;&#x43D;&#x438;&#x435; &#x43C;&#x438;&#x43B;&#x43B;&#x438;&#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434;&#x44B; canary.</p>
<div class="ks-widget" id="ks-tab-canary5"><h3>&#x41A;&#x430;&#x43A;&#x438;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x44B; &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x439; &#x444;&#x430;&#x437;&#x435;</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="a1">A baseline</button><button type="button" class="tab-btn" data-t="b">B canary</button><button type="button" class="tab-btn" data-t="a2">A rollback</button></div>
<div class="panel on" data-p="a1">&#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; packet trace, kernel deltas &#x438; fresh-connection outcome &#x434;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F;.</div><div class="panel" data-p="b">&#x41C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; owner; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x438; LLM outcome, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; SYN_RECV.</div><div class="panel" data-p="a2">&#x41F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x435; &#x436;&#x435; probes. &#x412;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;&#x430; &#x443;&#x441;&#x438;&#x43B;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x432;&#x44F;&#x437;&#x44C;.</div>
<script>(function(){var r=document.getElementById('ks-tab-canary5');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-05-9a9283b1.webp" class="kg-image" alt="SYN cookies &#x438; SYNPROXY &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; SYN flood &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x443;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-05-9a9283b1.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-05-9a9283b1.webp 1000w, https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-05-9a9283b1.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="observability">&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;: &#x441;&#x432;&#x44F;&#x437;&#x430;&#x442;&#x44C; packets, kernel &#x438; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x442;&#x43E;&#x43A;&#x435;&#x43D;</h2>
<p>&#x41E;&#x434;&#x438;&#x43D; counter &#x43D;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#xAB;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; &#x43E;&#x442;&#x432;&#x435;&#x442;?&#xBB;. &#x41F;&#x43E;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x442;&#x435; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B;&#x445; evidence gate. Packet gate &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x435; SYN, &#x43E;&#x442;&#x432;&#x435;&#x442;&#x44B; SYN-ACK &#x438; &#x444;&#x438;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; ACK. Kernel gate &#x2014; SYN_RECV, cookies, listen drops, conntrack &#x438; softirq. Application gate &#x2014; accept rate, TLS/HTTP errors, active streams &#x438; queueing gateway. LLM gate &#x2014; admitted requests, &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; scheduler, TTFT &#x438; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;&#x435; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435;.</p>
<p>&#x410;&#x43B;&#x435;&#x440;&#x442; &#x43D;&#x430; &#x430;&#x431;&#x441;&#x43E;&#x43B;&#x44E;&#x442;&#x43D;&#x44B;&#x439; <code>SyncookiesSent</code> &#x431;&#x443;&#x434;&#x435;&#x442; &#x448;&#x443;&#x43C;&#x435;&#x442;&#x44C; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x437;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438; &#x438;&#x43B;&#x438; &#x43D;&#x435; &#x448;&#x443;&#x43C;&#x435;&#x442;&#x44C; &#x43C;&#x435;&#x441;&#x44F;&#x446;&#x430;&#x43C;&#x438; &#x438;&#x437;-&#x437;&#x430; &#x43D;&#x430;&#x43A;&#x43E;&#x43F;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F;. &#x418;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; rate/delta &#x438; &#x43F;&#x440;&#x438;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x43A; fresh connection success. &#x422;&#x43E; &#x436;&#x435; &#x43E;&#x442;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x441;&#x44F; &#x43A; ListenDrops. &#x414;&#x43B;&#x44F; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x438;&#x445; listeners &#x441;&#x43E;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; socket-level backlog &#x447;&#x435;&#x440;&#x435;&#x437; <code>ss</code> &#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430;, &#x438;&#x43D;&#x430;&#x447;&#x435; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x43D;&#x44B;&#x439; total &#x441;&#x43A;&#x440;&#x43E;&#x435;&#x442; &#x43E;&#x434;&#x438;&#x43D; &#x433;&#x43E;&#x440;&#x44F;&#x447;&#x438;&#x439; &#x43F;&#x43E;&#x440;&#x442;.</p>
<p>&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43C;&#x430;&#x440;&#x43A;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43C;&#x435;&#x441;&#x442;&#x43E; TLS termination. &#x415;&#x441;&#x43B;&#x438; SYNPROXY &#x441;&#x442;&#x43E;&#x438;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x434; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x43C; L4 load balancer, backend &#x432;&#x438;&#x434;&#x438;&#x442; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43E;&#x442; LB, &#x430; &#x43D;&#x435; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x445; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x432;; packet &#x438; application identity &#x440;&#x430;&#x441;&#x445;&#x43E;&#x434;&#x44F;&#x442;&#x441;&#x44F;. &#x415;&#x441;&#x43B;&#x438; TLS termination &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; edge, CPU handshake storm &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x441;&#x442;&#x430;&#x442;&#x44C; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x43C; bottleneck &#x441;&#x440;&#x430;&#x437;&#x443; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;&#x433;&#x43E; SYN mitigation.</p>
<p>&#x41D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x44D;&#x442;&#x43E;&#x442; runbook &#x441; L7 abuse. Rate limits &#x438; quotas &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x44E;&#x442; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x438;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x43F;&#x43E;&#x441;&#x43B;&#x435; HTTP parsing; SYNPROXY &#x43D;&#x435; &#x437;&#x43D;&#x430;&#x435;&#x442; tenant, token budget &#x438;&#x43B;&#x438; &#x441;&#x442;&#x43E;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; prompt. &#x421;&#x43B;&#x43E;&#x439; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x442;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x437;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x440;&#x438;&#x441;&#x43A;.</p>
<div class="ks-widget" id="ks-sel-gate9x"><h3>&#x413;&#x434;&#x435; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x43B;&#x43E;&#x441;&#x44C; &#x43D;&#x43E;&#x432;&#x43E;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;?</h3>
<label>&#x41F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x435;&#x435; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x43E;&#x435; &#x441;&#x43E;&#x431;&#x44B;&#x442;&#x438;&#x435;</label><select data-s><option value="syn">&#x412;&#x438;&#x434;&#x435;&#x43D; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x439; SYN</option><option value="ack">&#x415;&#x441;&#x442;&#x44C; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; handshake, &#x43D;&#x435;&#x442; accept</option><option value="http">HTTP &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;, &#x43D;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-gate9x');if(!r)return;var m={"syn":"Проверяйте route/firewall, SYN-ACK egress и backlog/cookie state.","ack":"Проверяйте accept queue, workers, listener ownership и ListenDrops.","http":"SYN-защита уже не главный owner: смотрите gateway buffering, scheduler и GPU queue."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-06-2df1bb32.webp" class="kg-image" alt="SYN cookies &#x438; SYNPROXY &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; SYN flood &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x443;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-06-2df1bb32.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-06-2df1bb32.webp 1000w, https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-06-2df1bb32.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="failure-modes">&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442; &#x437;&#x430;&#x449;&#x438;&#x442;&#x443; &#x432; &#x43D;&#x43E;&#x432;&#x44B;&#x439; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;</h2>
<p>&#x41F;&#x435;&#x440;&#x432;&#x430;&#x44F; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x2014; &#x441;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x441;&#x442;&#x440;&#x43E;&#x43A;&#x443; SYN flood &#x432; kernel log &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x44B;&#x43C; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E;&#x43C; &#x437;&#x43B;&#x43E;&#x43D;&#x430;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430;. &#x41B;&#x435;&#x433;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; reconnect storm &#x43F;&#x43E;&#x441;&#x43B;&#x435; DNS failover &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x43F;&#x43E;&#x445;&#x43E;&#x436;&#x435;. &#x412;&#x442;&#x43E;&#x440;&#x430;&#x44F; &#x2014; &#x43F;&#x43E;&#x434;&#x43D;&#x44F;&#x442;&#x44C; <code>tcp_max_syn_backlog</code> &#x431;&#x435;&#x437; memory budget &#x438; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x437;&#x430; softirq: &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x438; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x441;&#x43C;&#x435;&#x449;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x434;&#x430;&#x43B;&#x44C;&#x448;&#x435; &#x43F;&#x43E; path.</p>
<p>&#x422;&#x440;&#x435;&#x442;&#x44C;&#x44F; &#x2014; &#x43A;&#x43E;&#x43F;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; MSS 1460 &#x438; wscale 7 &#x438;&#x437; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;&#x430;. Tunnel, VLAN, IPv6 &#x438; provider edge &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; effective MTU; backend &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x431;&#x44A;&#x44F;&#x432;&#x43B;&#x44F;&#x442;&#x44C; &#x434;&#x440;&#x443;&#x433;&#x438;&#x435; options. &#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x430;&#x44F; &#x2014; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; SYNPROXY &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x438; &#x430;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x43E;&#x433;&#x43E; path. Stateful translation &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x432;&#x438;&#x434;&#x435;&#x442;&#x44C; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x435; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;; ECMP &#x438;&#x43B;&#x438; policy routing &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x440;&#x430;&#x437;&#x440;&#x443;&#x448;&#x438;&#x442;&#x44C; &#x43F;&#x440;&#x435;&#x434;&#x43F;&#x43E;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;.</p>
<p>&#x41F;&#x44F;&#x442;&#x430;&#x44F; &#x2014; &#x437;&#x430;&#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x440;&#x43E; persistence. &#x420;&#x443;&#x447;&#x43D;&#x43E;&#x439; <code>nft add rule</code> &#x438;&#x441;&#x447;&#x435;&#x437;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435; reboot &#x438;&#x43B;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x43B;&#x438;&#x43A;&#x442;&#x443;&#x435;&#x442; &#x441; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;-&#x43C;&#x435;&#x43D;&#x435;&#x434;&#x436;&#x43C;&#x435;&#x43D;&#x442;&#x43E;&#x43C;. Ruleset &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x438;&#x43C;&#x435;&#x442;&#x44C; owner, version, review, atomic deploy &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x44B;&#x439; restore. &#x41C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/nftables-sets-dinamicheskie-spiski-ip/">nftables sets</a> &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x434;&#x43B;&#x44F; &#x43E;&#x440;&#x433;&#x430;&#x43D;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x43C;&#x44B;&#x445; &#x441;&#x43F;&#x438;&#x441;&#x43A;&#x43E;&#x432;, &#x43D;&#x43E; sets &#x441;&#x430;&#x43C;&#x438; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x43D;&#x435; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; handshake validation.</p>
<p>&#x428;&#x435;&#x441;&#x442;&#x430;&#x44F; &#x2014; &#x43E;&#x431;&#x44A;&#x44F;&#x432;&#x438;&#x442;&#x44C; &#x443;&#x441;&#x43F;&#x435;&#x445; &#x43F;&#x43E; &#x441;&#x43D;&#x438;&#x436;&#x435;&#x43D;&#x438;&#x44E; SYN_RECV. &#x415;&#x441;&#x43B;&#x438; TTFT &#x443;&#x445;&#x443;&#x434;&#x448;&#x438;&#x43B;&#x441;&#x44F;, established sessions &#x440;&#x432;&#x443;&#x442;&#x441;&#x44F;, &#x430; retry rate &#x432;&#x44B;&#x440;&#x43E;&#x441;, &#x432;&#x44B; &#x43B;&#x438;&#x448;&#x44C; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x435;&#x441;&#x43B;&#x438; bottleneck. &#x412; production &#x438;&#x442;&#x43E;&#x433; &#x432;&#x441;&#x435;&#x433;&#x434;&#x430; application outcome &#x43D;&#x430; &#x441;&#x432;&#x435;&#x436;&#x435;&#x43C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x438; &#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x43D;&#x43E;&#x433;&#x43E; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430;.</p><h2 id="production-checklist">Production checklist &#x438; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x43D;&#x43E;&#x433;&#x43E; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x44F;</h2>
<p>&#x41F;&#x435;&#x440;&#x435;&#x434; rollout &#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x44C;&#x442;&#x435; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x435;&#x432;: &#x441;&#x435;&#x442;&#x44C; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; ingress &#x438; symmetric path, platform team &#x2014; &#x437;&#x430; nftables/conntrack lifecycle, &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; gateway &#x2014; &#x437;&#x430; listener &#x438; TLS, inference team &#x2014; &#x437;&#x430; admission &#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;. &#x41E;&#x434;&#x438;&#x43D; &#x447;&#x435;&#x43B;&#x43E;&#x432;&#x435;&#x43A; &#x43D;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x442;&#x44C; &#x432;&#x441;&#x435;&#x43C;, &#x43D;&#x43E; incident commander &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x438;&#x434;&#x435;&#x442;&#x44C; &#x43A;&#x430;&#x440;&#x442;&#x443; owner&#x2019;&#x43E;&#x432;.</p>
<p>&#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; stop conditions &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435;: &#x440;&#x43E;&#x441;&#x442; connect errors &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x43E;&#x433;&#x43E; canary, &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F; management access, conntrack pressure, &#x43D;&#x430;&#x440;&#x443;&#x448;&#x435;&#x43D;&#x438;&#x435; MSS/PMTU, &#x440;&#x43E;&#x441;&#x442; CPU edge &#x438;&#x43B;&#x438; &#x434;&#x435;&#x433;&#x440;&#x430;&#x434;&#x430;&#x446;&#x438;&#x44F; TTFT. &#x410;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; rollback &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E; &#x443;&#x441;&#x442;&#x43E;&#x439;&#x447;&#x438;&#x432;&#x43E;&#x43C;&#x443; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B;&#x443;; &#x43E;&#x434;&#x438;&#x43D;&#x43E;&#x447;&#x43D;&#x44B;&#x439; packet loss &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x442;&#x44C; oscillation.</p>
<p>&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43E;, &#x447;&#x442;&#x43E; bottleneck &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43D;&#x430; shared network edge &#x438; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x435; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; kernel, NIC, conntrack &#x438; change window, &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; VPS &#x438;&#x43B;&#x438; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; gateway &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442;&#x44B; &#x43F;&#x43E; failure domain, &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x443; &#x43A; packet capture, &#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; kernel, capacity headroom &#x438; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x438; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;. &#x41E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x435; &#xAB;&#x431;&#x443;&#x434;&#x435;&#x442; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435;&#xBB; &#x431;&#x435;&#x437; canary &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x441;&#x442;&#x43E;&#x438;&#x442;.</p>
<p>&#x415;&#x441;&#x43B;&#x438; bottleneck &#x432; accept loop, &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x44C;&#x442;&#x435; workers, <code>SO_REUSEPORT</code> &#x438; drain. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x432; TLS, &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; resumption/keepalive &#x438; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; reconnect. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43D;&#x430; GPU, SYNPROXY &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x43F;&#x443;&#x442;&#x44C; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438; &#x430;&#x43A;&#x43A;&#x443;&#x440;&#x430;&#x442;&#x43D;&#x435;&#x435;. &#x418;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x430; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; control gap, &#x430; &#x43D;&#x435; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-07-1ac50852.webp" class="kg-image" alt="SYN cookies &#x438; SYNPROXY &#x434;&#x43B;&#x44F; LLM API gateway: &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; SYN flood &#x431;&#x435;&#x437; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x443;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-07-1ac50852.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-07-1ac50852.webp 1000w, https://kingservers.com/blog/content/images/2026/10/syn-cookies-synproxy-llm-api-gateway-inline-07-1ac50852.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="conclusion">&#x418;&#x442;&#x43E;&#x433;: &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x439;&#x442;&#x435; handshake, &#x43D;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;</h2>
<p>SYN cookies &#x438; SYNPROXY &#x440;&#x435;&#x448;&#x430;&#x44E;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438;. Cookies &#x2014; &#x430;&#x432;&#x430;&#x440;&#x438;&#x439;&#x43D;&#x44B;&#x439; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; endpoint kernel &#x43F;&#x440;&#x438; &#x43F;&#x435;&#x440;&#x435;&#x43F;&#x43E;&#x43B;&#x43D;&#x435;&#x43D;&#x438;&#x438; SYN backlog. SYNPROXY &#x2014; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; handshake &#x43D;&#x430; stateful edge &#x441; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x446;&#x435;&#x43D;&#x43E;&#x439; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x44F;. &#x41D;&#x438; &#x43E;&#x434;&#x438;&#x43D; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442; &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; accept, TLS storm, retry loop &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; inference.</p>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; evidence bundle: packet trace, TcpExt deltas, &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x434;&#x432;&#x443;&#x445; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439; &#x438; fresh-connection probe &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; owner &#x447;&#x435;&#x440;&#x435;&#x437; A/B/A canary &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x442;&#x435; &#x436;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; rollback. &#x422;&#x430;&#x43A;&#x43E;&#x439; &#x43F;&#x43E;&#x440;&#x44F;&#x434;&#x43E;&#x43A; &#x43D;&#x435;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x442;&#x440;&#x43E;&#x436;&#x435; &#x43F;&#x440;&#x438;&#x432;&#x44B;&#x447;&#x43D;&#x43E;&#x433;&#x43E; &#xAB;&#x43F;&#x43E;&#x434;&#x43D;&#x44F;&#x442;&#x44C; sysctl&#xBB;, &#x437;&#x430;&#x442;&#x43E; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x436;&#x438;&#x432;&#x451;&#x442; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;.</p>
<p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x448;&#x430;&#x433; &#x2014; &#x441;&#x435;&#x433;&#x43E;&#x434;&#x43D;&#x44F; &#x441;&#x43D;&#x44F;&#x442;&#x44C; baseline &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; production listener &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x439;: sysctl, <code>ss</code>, <code>nstat</code> &#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x442;&#x441;&#x44F; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; control gap &#x43D;&#x430; edge, &#x435;&#x433;&#x43E; &#x443;&#x436;&#x435; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43E;&#x431;&#x441;&#x443;&#x436;&#x434;&#x430;&#x442;&#x44C; &#x43A;&#x430;&#x43A; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; VPS, dedicated gateway &#x438;&#x43B;&#x438; managed L4-&#x437;&#x430;&#x449;&#x438;&#x442;&#x443; &#x441; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x44B;&#x43C; owner &#x438; rollback.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[SPIFFE/SPIRE для LLM inference в Kubernetes: workload identity и mTLS без статических секретов]]></title><description><![CDATA[Production-runbook по SPIFFE/SPIRE для LLM inference в Kubernetes: trust domain, attestation, X509-SVID, mTLS, canary, federation и rollback.]]></description><link>https://kingservers.com/blog/spiffe-spire-workload-identity-llm-kubernetes/</link><guid isPermaLink="false">6ad1da16aff2afac25354e45</guid><category><![CDATA[Безопасность]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Fri, 16 Oct 2026 08:09:14 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-hero-cc152975.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#verdict">&#x41A;&#x43E;&#x433;&#x434;&#x430; SPIFFE/SPIRE &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43D;&#x443;&#x436;&#x435;&#x43D; LLM-&#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x435;</a></li>
<li><a href="#trust-model">Trust domain, SPIFFE ID &#x438; SVID: &#x447;&#x442;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43C;&#x44B; &#x434;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;</a></li>
<li><a href="#deploy">&#x410;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x430; SPIRE &#x432; Kubernetes &#x431;&#x435;&#x437; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x43E;&#x439; &#x43C;&#x430;&#x433;&#x438;&#x438;</a></li>
<li><a href="#registration">Registration entries &#x438; attestation: &#x43F;&#x440;&#x438;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x43C; identity &#x43A; workload</a></li>
<li><a href="#delivery">Workload API, CSI &#x438; SDS: &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; SVID &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44E;</a></li>
<li><a href="#mtls">mTLS &#x434;&#x43B;&#x44F; LLM inference: authentication &#x435;&#x449;&#x451; &#x43D;&#x435; authorization</a></li>
<li><a href="#evidence">&#x427;&#x435;&#x442;&#x44B;&#x440;&#x435; evidence gate: &#x43E;&#x442; &#x443;&#x437;&#x43B;&#x430; &#x434;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;</a></li>
<li><a href="#rollout">Canary &#x438; rollback: &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x43C; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; owner &#x437;&#x430; &#x440;&#x430;&#x437;</a></li>
<li><a href="#federation">Federation &#x43C;&#x435;&#x436;&#x434;&#x443; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x430;&#x43C;&#x438;: &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x434;&#x438;&#x43D; trust domain &#x443;&#x436;&#x435; &#x43C;&#x435;&#x448;&#x430;&#x435;&#x442;</a></li>
<li><a href="#operations">&#x42D;&#x43A;&#x441;&#x43F;&#x43B;&#x443;&#x430;&#x442;&#x430;&#x446;&#x438;&#x44F;: &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438;, &#x440;&#x43E;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x439; &#x438; &#x442;&#x438;&#x43F;&#x43E;&#x432;&#x44B;&#x435; &#x43E;&#x442;&#x43A;&#x430;&#x437;&#x44B;</a></li>
<li><a href="#decision">&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x43C;&#x430;&#x442;&#x440;&#x438;&#x446;&#x430; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x430; &#x438; &#x43F;&#x43B;&#x430;&#x43D; &#x432;&#x43D;&#x435;&#x434;&#x440;&#x435;&#x43D;&#x438;&#x44F;</a></li>
</ul></div>

</div>LLM-&#x441;&#x435;&#x440;&#x432;&#x438;&#x441; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442;, &#x441;&#x435;&#x442;&#x44C; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x430;, &#x441;&#x435;&#x440;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442; &#x432;&#x430;&#x43B;&#x438;&#x434;&#x435;&#x43D; &#x2014; &#x43D;&#x43E; &#x432;&#x44B; &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x43D;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C;, &#x43A;&#x430;&#x43A;&#x43E;&#x439; workload &#x441;&#x434;&#x435;&#x43B;&#x430;&#x43B; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;. &#x412; Kubernetes IP &#x438; pod &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435;, &#x447;&#x435;&#x43C; &#x440;&#x443;&#x447;&#x43D;&#x44B;&#x435; credentials, &#x430; &#x43E;&#x431;&#x449;&#x438;&#x439; ServiceAccount &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; mTLS &#x432; &#x444;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C;. SPIFFE/SPIRE &#x440;&#x435;&#x448;&#x430;&#x435;&#x442; &#x44D;&#x442;&#x443; &#x437;&#x430;&#x434;&#x430;&#x447;&#x443; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x440;&#x438; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x430;&#x442;&#x442;&#x435;&#x441;&#x442;&#x430;&#x446;&#x438;&#x438;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x435; peer identity &#x438; application gate. &#x41D;&#x438;&#x436;&#x435; &#x2014; production-runbook &#x441; negative controls, canary &#x438; rollback.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-hero-cc152975.webp" alt="SPIFFE/SPIRE &#x434;&#x43B;&#x44F; LLM inference &#x432; Kubernetes: workload identity &#x438; mTLS &#x431;&#x435;&#x437; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x441;&#x435;&#x43A;&#x440;&#x435;&#x442;&#x43E;&#x432;"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="verdict">&#x41A;&#x43E;&#x433;&#x434;&#x430; SPIFFE/SPIRE &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43D;&#x443;&#x436;&#x435;&#x43D; LLM-&#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x435;</h2>
<p>&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; &#x432;&#x435;&#x440;&#x434;&#x438;&#x43A;&#x442;: SPIFFE/SPIRE &#x441;&#x442;&#x43E;&#x438;&#x442; &#x432;&#x43D;&#x435;&#x434;&#x440;&#x44F;&#x442;&#x44C;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x439; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x443;&#x436;&#x435; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E; &#x438; &#x432;&#x430;&#x43C; &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x442;&#x44C; &#x43D;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#xAB;&#x43A;&#x430;&#x43A;&#x43E;&#x439; workload &#x432;&#x44B;&#x437;&#x432;&#x430;&#x43B; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C;&#xBB;. &#x42D;&#x442;&#x43E; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x43E; &#x432; Kubernetes-&#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;, &#x433;&#x434;&#x435; gateway, RAG-&#x43E;&#x440;&#x43A;&#x435;&#x441;&#x442;&#x440;&#x430;&#x442;&#x43E;&#x440;, vector database &#x438; inference-&#x441;&#x435;&#x440;&#x432;&#x438;&#x441; &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x44E;&#x442;&#x441;&#x44F; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;, &#x430; IP-&#x430;&#x434;&#x440;&#x435;&#x441; &#x43F;&#x43E;&#x434;&#x430; &#x436;&#x438;&#x432;&#x451;&#x442; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;, &#x447;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442;, &#x432;&#x44B;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x432;&#x440;&#x443;&#x447;&#x43D;&#x443;&#x44E;.</p>
<p>SPIFFE &#x437;&#x430;&#x434;&#x430;&#x451;&#x442; &#x444;&#x43E;&#x440;&#x43C;&#x430;&#x442; &#x438;&#x434;&#x435;&#x43D;&#x442;&#x438;&#x447;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x438; API &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x443;&#x434;&#x43E;&#x441;&#x442;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x438;&#x439;, &#x430; SPIRE &#x440;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x443;&#x435;&#x442; control plane: &#x430;&#x442;&#x442;&#x435;&#x441;&#x442;&#x443;&#x435;&#x442; &#x443;&#x437;&#x43B;&#x44B; &#x438; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x44B;, &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; selectors &#x441; registration entries &#x438; &#x432;&#x44B;&#x434;&#x430;&#x451;&#x442; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x43E;&#x436;&#x438;&#x432;&#x443;&#x449;&#x438;&#x435; SVID. &#x412; &#x430;&#x43A;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; &#x43D;&#x430; &#x434;&#x430;&#x442;&#x443; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430; &#x440;&#x435;&#x43B;&#x438;&#x437;&#x43D;&#x43E;&#x43C; &#x440;&#x44F;&#x434;&#x443; SPIRE &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x435;&#x439; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x435;&#x439; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; 1.15.3; &#x43F;&#x435;&#x440;&#x435;&#x434; production-rollout &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x441;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; release notes &#x438; &#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; chart &#x441; &#x432;&#x430;&#x448;&#x435;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x435;&#x439; Kubernetes. &#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; Kubernetes quickstart &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D; &#x430;&#x432;&#x442;&#x43E;&#x440;&#x430;&#x43C;&#x438; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x438; &#x43D;&#x430; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44F;&#x445; 1.29&#x2013;1.34, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x437;&#x430; &#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x430;&#x43C;&#x438; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x434;&#x438;&#x430;&#x43F;&#x430;&#x437;&#x43E;&#x43D;&#x430; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; compatibility test.</p>
<p>&#x41D;&#x435; &#x43F;&#x443;&#x442;&#x430;&#x439;&#x442;&#x435; &#x44D;&#x442;&#x43E; &#x441; &#xAB;&#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; service mesh&#xBB;. Mesh &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x43B;&#x44F;&#x442;&#x44C; workload identity, &#x43D;&#x43E; &#x43D;&#x435; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C; &#x434;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x44F;. &#x423; KingServers &#x443;&#x436;&#x435; &#x435;&#x441;&#x442;&#x44C; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <a href="https://kingservers.com/blog/service-mesh-dlya-mikroservisov/">&#x43E;&#x431;&#x437;&#x43E;&#x440; service mesh</a>; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x437;&#x430;&#x434;&#x430;&#x447;&#x430; &#x443;&#x436;&#x435;: &#x43F;&#x43E;&#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x44C; evidence chain &#x43E;&#x442; Kubernetes ServiceAccount &#x434;&#x43E; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;&#x433;&#x43E; LLM-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430; &#x438; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E; &#x43E;&#x442;&#x43A;&#x430;&#x442;&#x438;&#x442;&#x44C; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;.</p>
<p>&#x415;&#x441;&#x442;&#x44C; &#x438; &#x447;&#x435;&#x441;&#x442;&#x43D;&#x44B;&#x439; disqualifier. &#x415;&#x441;&#x43B;&#x438; &#x443; &#x432;&#x430;&#x441; &#x43E;&#x434;&#x438;&#x43D; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;, &#x43E;&#x434;&#x438;&#x43D; namespace &#x438; &#x43D;&#x435;&#x442; &#x442;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x442;&#x44C; &#x432;&#x44B;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x449;&#x438;&#x435; workload, SPIRE &#x434;&#x43E;&#x431;&#x430;&#x432;&#x438;&#x442; control plane, state, &#x43C;&#x43E;&#x43D;&#x438;&#x442;&#x43E;&#x440;&#x438;&#x43D;&#x433; &#x438; on-call &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x431;&#x435;&#x437; &#x441;&#x43E;&#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x43D;&#x43E;&#x439; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x44B;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; threat model &#x438; owner, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; &#x442;&#x435;&#x445;&#x43D;&#x43E;&#x43B;&#x43E;&#x433;&#x438;&#x44E;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-01-0ce26cf3.webp" class="kg-image" alt="SPIFFE/SPIRE &#x434;&#x43B;&#x44F; LLM inference &#x432; Kubernetes: workload identity &#x438; mTLS &#x431;&#x435;&#x437; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x441;&#x435;&#x43A;&#x440;&#x435;&#x442;&#x43E;&#x432;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/spiffe-spire-llm-kubernetes-inline-01-0ce26cf3.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/spiffe-spire-llm-kubernetes-inline-01-0ce26cf3.webp 1000w, https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-01-0ce26cf3.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="trust-model">Trust domain, SPIFFE ID &#x438; SVID: &#x447;&#x442;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43C;&#x44B; &#x434;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;</h2>
<p>Trust domain &#x2014; &#x430;&#x434;&#x43C;&#x438;&#x43D;&#x438;&#x441;&#x442;&#x440;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x430;&#x44F; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x434;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x44F;, &#x430; &#x43D;&#x435; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x44B;&#x439; DNS-&#x441;&#x443;&#x444;&#x444;&#x438;&#x43A;&#x441;. &#x418;&#x434;&#x435;&#x43D;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442;&#x43E;&#x440; &#x432;&#x438;&#x434;&#x430; <code>spiffe://ai.example/ns/inference/sa/model-gateway</code> &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x44B;&#x440;&#x430;&#x436;&#x430;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; &#x440;&#x43E;&#x43B;&#x44C; workload, &#x430; &#x43D;&#x435; &#x438;&#x43C;&#x44F; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x434;&#x430;. &#x422;&#x43E;&#x433;&#x434;&#x430; replica replacement &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; policy, &#x43D;&#x43E; &#x447;&#x443;&#x436;&#x43E;&#x439; ServiceAccount &#x43D;&#x435; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;.</p>
<p>X509-SVID &#x441;&#x43E;&#x434;&#x435;&#x440;&#x436;&#x438;&#x442; SPIFFE ID &#x432; URI SAN &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E; bundle &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E; trust domain. &#x412;&#x430;&#x436;&#x43D;&#x43E; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C; &#x43F;&#x430;&#x440;&#x443; &#xAB;trust domain &#x2192; bundle&#xBB;: &#x43E;&#x431;&#x44A;&#x435;&#x434;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x432;&#x441;&#x435; &#x43A;&#x43E;&#x440;&#x43D;&#x438; &#x432; &#x43E;&#x434;&#x438;&#x43D; &#x431;&#x435;&#x437;&#x44B;&#x43C;&#x44F;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x43B; &#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443; &#x447;&#x442;&#x43E; &#x43E;&#x434;&#x438;&#x43D; &#x434;&#x43E;&#x43C;&#x435;&#x43D; &#x442;&#x43E;&#x433;&#x434;&#x430; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43D;&#x430;&#x447;&#x430;&#x442;&#x44C; &#x432;&#x44B;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; &#x438;&#x434;&#x435;&#x43D;&#x442;&#x438;&#x447;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x437;&#x430; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439;. &#x42D;&#x442;&#x43E; &#x442;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x43B;&#x435;&#x43D;&#x43E; &#x432; <a href="https://spiffe.io/docs/latest/spiffe-specs/spiffe_trust_domain_and_bundle/?ref=kingservers.com">SPIFFE Trust Domain and Bundle</a>.</p>
<p>&#x414;&#x43B;&#x44F; LLM-&#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x44B; &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x43E; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; &#x440;&#x43E;&#x43B;&#x438;: gateway &#x432;&#x44B;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; inference, RAG worker &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; vector storage, telemetry collector &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438;, batch evaluator &#x445;&#x43E;&#x434;&#x438;&#x442; &#x432; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; endpoint. &#x41D;&#x435; &#x432;&#x44B;&#x434;&#x430;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x443; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; identity &#x432;&#x441;&#x435;&#x43C;&#x443; namespace. &#x420;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x441;&#x431;&#x43E;&#x439; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x43F;&#x440;&#x43E;&#x437;&#x430;&#x438;&#x447;&#x43D;&#x43E;: &#x43D;&#x43E;&#x432;&#x44B;&#x439; debug-&#x43F;&#x43E;&#x434; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x44E;&#x442; &#x43F;&#x43E;&#x434; &#x43E;&#x431;&#x449;&#x438;&#x43C; ServiceAccount, &#x438; &#x43E;&#x43D; &#x43D;&#x435;&#x43E;&#x436;&#x438;&#x434;&#x430;&#x43D;&#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; model endpoint. Negative control &#x441; &#xAB;&#x447;&#x443;&#x436;&#x438;&#x43C;&#xBB; ServiceAccount &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x437;&#x430;&#x43A;&#x43E;&#x43D;&#x447;&#x438;&#x442;&#x44C;&#x441;&#x44F; &#x43E;&#x442;&#x43A;&#x430;&#x437;&#x43E;&#x43C; mTLS &#x438;&#x43B;&#x438; authorization policy, &#x430; &#x43D;&#x435; HTTP 200.</p>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-tab-a7m2q9x"><h3>&#x41A;&#x430;&#x43A;&#x443;&#x44E; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443; &#x438;&#x434;&#x435;&#x43D;&#x442;&#x438;&#x447;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x442;&#x44C;</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="one">&#x41E;&#x434;&#x438;&#x43D; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;</button><button type="button" class="tab-btn" data-t="multi">&#x41D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432;</button><button type="button" class="tab-btn" data-t="legacy">Legacy-&#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;</button></div>
<div class="panel on" data-p="one">&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; trust domain &#x438; SPIFFE ID &#x43F;&#x43E; namespace + ServiceAccount. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; negative control &#x434;&#x43E; federation.</div>
<div class="panel" data-p="multi">&#x420;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x430;&#x434;&#x43C;&#x438;&#x43D;&#x438;&#x441;&#x442;&#x440;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x435; owners &#x43B;&#x443;&#x447;&#x448;&#x435; &#x43E;&#x444;&#x43E;&#x440;&#x43C;&#x438;&#x442;&#x44C; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;&#x438; trust domain &#x438; &#x44F;&#x432;&#x43D;&#x43E;&#x439; federation, &#x430; &#x43D;&#x435; &#x43E;&#x431;&#x449;&#x438;&#x43C; root bundle.</div>
<div class="panel" data-p="legacy">&#x41E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x430;&#x434;&#x430;&#x43F;&#x442;&#x435;&#x440; &#x438;&#x43B;&#x438; proxy, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; SVID &#x447;&#x435;&#x440;&#x435;&#x437; Workload API; &#x43D;&#x435; &#x43A;&#x43E;&#x43F;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; private key &#x432; Kubernetes Secret.</div>
<script>(function(){var r=document.getElementById('ks-tab-a7m2q9x');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-02-b21de381.webp" class="kg-image" alt="SPIFFE/SPIRE &#x434;&#x43B;&#x44F; LLM inference &#x432; Kubernetes: workload identity &#x438; mTLS &#x431;&#x435;&#x437; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x441;&#x435;&#x43A;&#x440;&#x435;&#x442;&#x43E;&#x432;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/spiffe-spire-llm-kubernetes-inline-02-b21de381.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/spiffe-spire-llm-kubernetes-inline-02-b21de381.webp 1000w, https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-02-b21de381.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="deploy">&#x410;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x430; SPIRE &#x432; Kubernetes &#x431;&#x435;&#x437; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x43E;&#x439; &#x43C;&#x430;&#x433;&#x438;&#x438;</h2>
<p>&#x411;&#x430;&#x437;&#x43E;&#x432;&#x430;&#x44F; &#x442;&#x43E;&#x43F;&#x43E;&#x43B;&#x43E;&#x433;&#x438;&#x44F; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x438;&#x442; &#x438;&#x437; SPIRE Server, SPIRE Agent &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C; worker node &#x438; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x430; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43A;&#x438; Workload API workload. Server &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; registration entries &#x438; &#x43F;&#x43E;&#x434;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; SVID; Agent &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; node attestation, &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x44B;&#x435; entries, &#x430; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x430;&#x442;&#x442;&#x435;&#x441;&#x442;&#x443;&#x435;&#x442; &#x432;&#x44B;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x449;&#x438;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;. &#x421;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x43D;&#x43E; <a href="https://spiffe.io/docs/latest/spire-about/spire-concepts/?ref=kingservers.com">SPIRE Concepts</a>, Agent &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; PID &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; Unix-&#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430; &#x438; &#x447;&#x435;&#x440;&#x435;&#x437; workload attestor &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; Kubernetes selectors, &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x44F; namespace &#x438; ServiceAccount.</p>
<p>&#x414;&#x43B;&#x44F; production Kubernetes &#x43E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; hardened Helm stack &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; Server, Agent, Controller Manager, OIDC Discovery Provider &#x438; CSI Driver. &#x41D;&#x435; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; &#x432;&#x441;&#x451; &#x43C;&#x430;&#x448;&#x438;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;: JWT-SVID &#x438; OIDC bridge &#x43D;&#x443;&#x436;&#x43D;&#x44B; &#x43D;&#x435; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C;&#x443;. &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; datastore, &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x43E;&#x435; &#x43A;&#x43E;&#x43F;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; Server state, anti-affinity &#x438; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x438; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x43E;&#x441;&#x442;&#x438; signer. Agent &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; DaemonSet, &#x43D;&#x43E; &#x435;&#x433;&#x43E; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; hostPath socket &#x438; kubelet API &#x2014; &#x447;&#x430;&#x441;&#x442;&#x44C; security boundary, &#x430; &#x43D;&#x435; &#x442;&#x435;&#x445;&#x43D;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x43C;&#x435;&#x43B;&#x43E;&#x447;&#x44C;.</p>
<p>&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x440;&#x430;&#x437;&#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; control plane &#x431;&#x435;&#x437; &#x43F;&#x435;&#x440;&#x435;&#x432;&#x43E;&#x434;&#x430; application traffic. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; health, readiness, server quorum, node attestation &#x438; &#x43D;&#x430;&#x43B;&#x438;&#x447;&#x438;&#x435; Agent &#x43D;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x445; GPU-&#x443;&#x437;&#x43B;&#x430;&#x445;. &#x415;&#x441;&#x43B;&#x438; GPU node tainted, DaemonSet &#x431;&#x435;&#x437; &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x435;&#x433;&#x43E; toleration &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43A;&#x440;&#x438;&#x442;&#x438;&#x447;&#x43D;&#x44B;&#x435; inference-&#x43F;&#x43E;&#x434;&#x44B; &#x431;&#x435;&#x437; Workload API. &#x417;&#x43D;&#x430;&#x43A;&#x43E;&#x43C;&#x43E;? Control plane &#x444;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x437;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x439;, &#x430; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x439; &#x443;&#x437;&#x435;&#x43B; &#x432;&#x44B;&#x43F;&#x430;&#x43B; &#x438;&#x437; identity coverage.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">spire-preflight.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>kubectl -n spire get pods -o wide
kubectl -n spire get statefulset,daemonset
kubectl -n spire logs statefulset/spire-server --tail=100
kubectl -n spire get pods -l app.kubernetes.io/name=spire-agent   -o custom-columns=NAME:.metadata.name,NODE:.spec.nodeName,READY:.status.containerStatuses[0].ready</code></pre>
<div class="ks-canonical-code-block__caption">&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; preflight SPIRE-&#x43A;&#x43E;&#x43C;&#x43F;&#x43E;&#x43D;&#x435;&#x43D;&#x442;&#x43E;&#x432;</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-03-b0f3dd54.webp" class="kg-image" alt="SPIFFE/SPIRE &#x434;&#x43B;&#x44F; LLM inference &#x432; Kubernetes: workload identity &#x438; mTLS &#x431;&#x435;&#x437; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x441;&#x435;&#x43A;&#x440;&#x435;&#x442;&#x43E;&#x432;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/spiffe-spire-llm-kubernetes-inline-03-b0f3dd54.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/spiffe-spire-llm-kubernetes-inline-03-b0f3dd54.webp 1000w, https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-03-b0f3dd54.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="registration">Registration entries &#x438; attestation: &#x43F;&#x440;&#x438;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x43C; identity &#x43A; workload</h2>
<p>Registration entry &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; SPIFFE ID, parent ID &#x430;&#x433;&#x435;&#x43D;&#x442;&#x430; &#x438; selectors. &#x414;&#x43B;&#x44F; Kubernetes &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x430;&#x44F; &#x43F;&#x430;&#x440;&#x430; selectors &#x2014; namespace &#x438; ServiceAccount. &#x414;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; pod label &#x43C;&#x43E;&#x436;&#x43D;&#x43E;, &#x43D;&#x43E; &#x442;&#x43E;&#x433;&#x434;&#x430; &#x436;&#x438;&#x437;&#x43D;&#x435;&#x43D;&#x43D;&#x44B;&#x439; &#x446;&#x438;&#x43A;&#x43B; label &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x447;&#x430;&#x441;&#x442;&#x44C;&#x44E; security policy: &#x43A;&#x442;&#x43E; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x43F;&#x440;&#x430;&#x432;&#x43E; &#x435;&#x433;&#x43E; &#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43B;&#x438; admission policy, &#x447;&#x442;&#x43E; &#x441;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x438; rename?</p>
<p>&#x41D;&#x435; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x432;&#x430;&#x439;&#x442;&#x435; entry &#x43F;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x446;&#x438;&#x43F;&#x443; &#xAB;&#x43F;&#x43E;&#x43A;&#x430; &#x437;&#x430;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x43B;&#x43E;&#xBB;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x432;&#x44B;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x443;: caller, callee, &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x44B;&#x439; &#x43C;&#x435;&#x442;&#x43E;&#x434; &#x438;&#x43B;&#x438; endpoint, &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; SPIFFE ID, selectors, owner. &#x414;&#x43B;&#x44F; model gateway &#x44D;&#x442;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; <code>ns:ai-serving</code> &#x438; <code>sa:model-gateway</code>. RAG worker &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x434;&#x440;&#x443;&#x433;&#x443;&#x44E; identity, &#x434;&#x430;&#x436;&#x435; &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x430; &#x432;&#x44B;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x442; &#x43E;&#x434;&#x438;&#x43D; inference endpoint. &#x422;&#x430;&#x43A; authorization layer &#x441;&#x43C;&#x43E;&#x436;&#x435;&#x442; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x442;&#x44C; online traffic &#x438; batch.</p>
<p>Kubernetes projected ServiceAccount token &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x434;&#x43B;&#x44F; attestation: &#x43E;&#x43D; &#x438;&#x43C;&#x435;&#x435;&#x442; audience &#x438; &#x441;&#x440;&#x43E;&#x43A; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x44F;, &#x430; kubelet &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x435;&#x433;&#x43E;. &#x412;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; projection &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x430; &#x441; Kubernetes 1.20; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x438;&#x43B;&#x438; &#x438;&#x43D;&#x442;&#x435;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x447;&#x438;&#x442;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x440;&#x43E;&#x442;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x44B;&#x439; token. &#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; Kubernetes &#x43F;&#x43E;&#x434;&#x447;&#x451;&#x440;&#x43A;&#x438;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; token bound &#x43A; Pod/ServiceAccount &#x438; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x435;&#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x443;&#x434;&#x430;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x43E;&#x431;&#x44A;&#x435;&#x43A;&#x442;&#x430;. &#x42D;&#x442;&#x43E; &#x43B;&#x443;&#x447;&#x448;&#x435; &#x434;&#x43E;&#x43B;&#x433;&#x43E;&#x436;&#x438;&#x432;&#x443;&#x449;&#x435;&#x433;&#x43E; Secret, &#x43D;&#x43E; audience &#x438; issuer &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x43D;&#x430;&#x434;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x442;&#x44C;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">register-model-gateway.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>kubectl exec -n spire statefulset/spire-server --   /opt/spire/bin/spire-server entry create   -spiffeID spiffe://ai.example/ns/ai-serving/sa/model-gateway   -parentID spiffe://ai.example/spire/agent/k8s_psat/cluster-a/REPLACE_NODE_UID   -selector k8s:ns:ai-serving   -selector k8s:sa:model-gateway

kubectl exec -n spire statefulset/spire-server --   /opt/spire/bin/spire-server entry show</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440; registration entry &#x434;&#x43B;&#x44F; model gateway</div>
</div>
<div class="ks-widget" id="ks-chk-b4r8n2v"><h3>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; registration entry &#x43F;&#x435;&#x440;&#x435;&#x434; rollout</h3>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> SPIFFE ID &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x440;&#x43E;&#x43B;&#x44C;, &#x430; &#x43D;&#x435; &#x438;&#x43C;&#x44F; &#x43F;&#x43E;&#x434;&#x430;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> Namespace &#x438; ServiceAccount &#x43F;&#x440;&#x438;&#x43D;&#x430;&#x434;&#x43B;&#x435;&#x436;&#x430;&#x442; &#x43E;&#x434;&#x43D;&#x43E;&#x43C;&#x443; owner</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> Parent ID &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x435; &#x443;&#x437;&#x43B;&#x44B;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x427;&#x443;&#x436;&#x43E;&#x439; ServiceAccount &#x43F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x43B;&#x435;&#x43D; &#x43A;&#x430;&#x43A; negative control</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x418;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; labels &#x437;&#x430;&#x449;&#x438;&#x449;&#x435;&#x43D;&#x44B; admission policy</label>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-b4r8n2v');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-04-022e7e29.webp" class="kg-image" alt="SPIFFE/SPIRE &#x434;&#x43B;&#x44F; LLM inference &#x432; Kubernetes: workload identity &#x438; mTLS &#x431;&#x435;&#x437; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x441;&#x435;&#x43A;&#x440;&#x435;&#x442;&#x43E;&#x432;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/spiffe-spire-llm-kubernetes-inline-04-022e7e29.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/spiffe-spire-llm-kubernetes-inline-04-022e7e29.webp 1000w, https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-04-022e7e29.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="delivery">Workload API, CSI &#x438; SDS: &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; SVID &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44E;</h2>
<p>&#x415;&#x441;&#x442;&#x44C; &#x442;&#x440;&#x438; &#x442;&#x438;&#x43F;&#x43E;&#x432;&#x44B;&#x445; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x438;&#x442;&#x435;&#x43B;&#x44F;. SPIFFE-aware &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x434;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43A; Workload API &#x438; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; X509-SVID &#x43F;&#x43B;&#x44E;&#x441; bundles. Proxy &#x432;&#x440;&#x43E;&#x434;&#x435; Envoy &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x442;&#x44C; &#x441;&#x435;&#x43A;&#x440;&#x435;&#x442;&#x44B; &#x447;&#x435;&#x440;&#x435;&#x437; SDS. Legacy-&#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x438;&#x43D;&#x43E;&#x433;&#x434;&#x430; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x444;&#x430;&#x439;&#x43B;&#x44B; &#x441;&#x435;&#x440;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442;&#x430; &#x438; &#x43A;&#x43B;&#x44E;&#x447;&#x430;; &#x434;&#x43B;&#x44F; &#x43D;&#x435;&#x433;&#x43E; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x44E;&#x442; CSI &#x438;&#x43B;&#x438; &#x432;&#x441;&#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;, &#x43D;&#x43E; &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x443;&#x44E; reload-&#x441;&#x435;&#x43C;&#x430;&#x43D;&#x442;&#x438;&#x43A;&#x443;.</p>
<p><a href="https://spiffe.io/docs/latest/spiffe-specs/spiffe_workload_api/?ref=kingservers.com">SPIFFE Workload API</a> &#x441;&#x442;&#x440;&#x438;&#x43C;&#x438;&#x442; &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; credential &#x431;&#x435;&#x437; &#x440;&#x435;&#x441;&#x442;&#x430;&#x440;&#x442;&#x430;. &#x42D;&#x442;&#x43E; &#x432;&#x430;&#x436;&#x43D;&#x435;&#x435; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x43E;&#x433;&#x43E; TTL: &#x435;&#x441;&#x43B;&#x438; &#x431;&#x438;&#x431;&#x43B;&#x438;&#x43E;&#x442;&#x435;&#x43A;&#x430; &#x43F;&#x440;&#x43E;&#x447;&#x438;&#x442;&#x430;&#x43B;&#x430; &#x441;&#x435;&#x440;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442; &#x43E;&#x434;&#x438;&#x43D; &#x440;&#x430;&#x437; &#x43F;&#x440;&#x438; &#x441;&#x442;&#x430;&#x440;&#x442;&#x435;, &#x440;&#x43E;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x442;&#x438;&#x442;&#x441;&#x44F; &#x432; &#x43E;&#x442;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x43D;&#x44B;&#x439; outage. &#x414;&#x43B;&#x44F; Envoy SDS &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x43D;&#x43E;&#x432;&#x44B;&#x439; secret &#x431;&#x435;&#x437; redeploy, &#x43D;&#x43E; listener &#x438;&#x43B;&#x438; upstream cluster &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x43E;&#x441;&#x442;&#x438; SDS &#x438; &#x432;&#x430;&#x43B;&#x438;&#x434;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;. &#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; expiration SVID, &#x43D;&#x43E; &#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x435;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;&#x435; &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;.</p>
<p>CSI socket &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x43C;&#x43E;&#x43D;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x432;&#x43E; &#x432;&#x441;&#x435; pod &#xAB;&#x434;&#x43B;&#x44F; &#x443;&#x434;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x430;&#xBB;. &#x414;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; Workload API &#x434;&#x430;&#x451;&#x442; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x438;&#x442;&#x44C; identity, &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x443;&#x44E; selectors &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430;; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x432; isolation &#x438;&#x43B;&#x438; selectors &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x435;&#x442; blast radius. &#x412; threat model &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x440;&#x430;&#x441;&#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; privileged pod, hostPID &#x438; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; hostPath.</p>
<div class="ks-widget" id="ks-sel-c9p3t6k"><h3>&#x41A;&#x430;&#x43A; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; workload identity</h3>
<label>&#x422;&#x438;&#x43F; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x438;&#x442;&#x435;&#x43B;&#x44F;</label><select data-s><option value="native">SPIFFE-aware &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;</option><option value="envoy">Envoy &#x438;&#x43B;&#x438; gateway</option><option value="legacy">Legacy TLS-&#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-c9p3t6k');if(!r)return;var m={"native":"Используйте Workload API и streaming update; тестируйте ротацию без рестарта.","envoy":"Используйте SDS через локальный Unix socket и наблюдайте warming/listener state.","legacy":"Допустим CSI или адаптер, но reload сертификата и защита key-файла становятся обязательными gates."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><h2 id="mtls">mTLS &#x434;&#x43B;&#x44F; LLM inference: authentication &#x435;&#x449;&#x451; &#x43D;&#x435; authorization</h2>
<p>&#x423;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; X509-SVID &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#xAB;&#x43A;&#x442;&#x43E; &#x43F;&#x43E;&#x434;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x43B;&#x441;&#x44F;&#xBB;, &#x43D;&#x43E; &#x43D;&#x435; &#xAB;&#x447;&#x442;&#x43E; &#x435;&#x43C;&#x443; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x435;&#x43D;&#x43E;&#xBB;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; TLS handshake gateway &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; SPIFFE ID &#x441; policy: model-gateway &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x432;&#x44B;&#x437;&#x432;&#x430;&#x442;&#x44C; streaming inference, evaluator &#x2014; batch endpoint, telemetry collector &#x2014; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; metrics. &#x418;&#x43D;&#x430;&#x447;&#x435; &#x432;&#x44B; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x43E;&#x431;&#x449;&#x438;&#x439; &#x441;&#x435;&#x440;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442; &#x43E;&#x431;&#x449;&#x438;&#x43C; allow rule.</p>
<p>&#x414;&#x43B;&#x44F; streaming LLM &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x430;&#x436;&#x43D;&#x43E; &#x43D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x442;&#x44C; identity rollout &#x441; timeout, retry &#x438; buffering. &#x414;&#x43B;&#x438;&#x43D;&#x43D;&#x43E;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x442;&#x44C; &#x436;&#x438;&#x442;&#x44C; &#x43D;&#x430; &#x441;&#x442;&#x430;&#x440;&#x43E;&#x43C; SVID &#x434;&#x43E; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x438;&#x44F;, &#x445;&#x43E;&#x442;&#x44F; &#x43D;&#x43E;&#x432;&#x44B;&#x439; &#x443;&#x436;&#x435; &#x432;&#x44B;&#x434;&#x430;&#x43D;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x438; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x435; connections. &#x41C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/http2-goaway-grpc-keepalive-llm-gateway/">HTTP/2 GOAWAY &#x438; gRPC keepalive</a> &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; graceful drain &#x43E;&#x442; identity failure.</p>
<p>Application gate &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44F;&#x442;&#x44C; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; TLS. &#x41E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; &#x434;&#x435;&#x442;&#x435;&#x440;&#x43C;&#x438;&#x43D;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; inference-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;, &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435; first token &#x438; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435; stream, &#x430; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x441; &#x447;&#x443;&#x436;&#x43E;&#x439; identity. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x430; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x44F;&#x442;, &#x43A;&#x440;&#x438;&#x43F;&#x442;&#x43E;&#x433;&#x440;&#x430;&#x444;&#x438;&#x44F; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442;, &#x43D;&#x43E; authorization &#x43D;&#x435;&#x442;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x430; &#x43F;&#x430;&#x434;&#x430;&#x44E;&#x442;, &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; bundle, SAN &#x438; time sync, &#x430; &#x43D;&#x435; GPU utilization.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">verify-svid.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>openssl x509 -in /run/spiffe/svid.pem -noout   -subject -issuer -dates -ext subjectAltName

openssl verify -CAfile /run/spiffe/bundle.pem /run/spiffe/svid.pem

# &#x412;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x438;&#x437; canary workload &#x441; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x43C; ServiceAccount
curl --cert /run/spiffe/svid.pem --key /run/spiffe/svid-key.pem   --cacert /run/spiffe/bundle.pem   https://model-gateway.ai-serving.svc/v1/models</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; URI SAN &#x438; &#x441;&#x440;&#x43E;&#x43A;&#x430; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x44F; X509-SVID</div>
</div>
<div class="ks-widget" id="ks-tab-d2w7h5s"><h3>&#x413;&#x434;&#x435; &#x438;&#x441;&#x43A;&#x430;&#x442;&#x44C; &#x43E;&#x442;&#x43A;&#x430;&#x437; mTLS</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="id">Identity</button><button type="button" class="tab-btn" data-t="trust">Trust</button><button type="button" class="tab-btn" data-t="app">&#x41F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;</button></div>
<div class="panel on" data-p="id">&#x421;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; URI SAN, selectors &#x438; ServiceAccount canary-&#x43F;&#x43E;&#x434;&#x430;. &#x41D;&#x435; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43F;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x438; Deployment.</div>
<div class="panel" data-p="trust">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x441;&#x43E;&#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; trust domain &#x438; bundle, &#x447;&#x430;&#x441;&#x44B; &#x443;&#x437;&#x43B;&#x43E;&#x432; &#x438; &#x43D;&#x430;&#x43B;&#x438;&#x447;&#x438;&#x435; &#x43D;&#x43E;&#x432;&#x43E;&#x439; signing key &#x434;&#x43E; &#x440;&#x43E;&#x442;&#x430;&#x446;&#x438;&#x438;.</div>
<div class="panel" data-p="app">&#x41F;&#x43E;&#x441;&#x43B;&#x435; handshake &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; authorization verdict &#x438; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; LLM stream. TLS 200 &#x431;&#x435;&#x437; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x445;.</div>
<script>(function(){var r=document.getElementById('ks-tab-d2w7h5s');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-05-4d322b15.webp" class="kg-image" alt="SPIFFE/SPIRE &#x434;&#x43B;&#x44F; LLM inference &#x432; Kubernetes: workload identity &#x438; mTLS &#x431;&#x435;&#x437; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x441;&#x435;&#x43A;&#x440;&#x435;&#x442;&#x43E;&#x432;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/spiffe-spire-llm-kubernetes-inline-05-4d322b15.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/spiffe-spire-llm-kubernetes-inline-05-4d322b15.webp 1000w, https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-05-4d322b15.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="evidence">&#x427;&#x435;&#x442;&#x44B;&#x440;&#x435; evidence gate: &#x43E;&#x442; &#x443;&#x437;&#x43B;&#x430; &#x434;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438;</h2>
<p>&#x427;&#x442;&#x43E;&#x431;&#x44B; &#x43D;&#x435; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; false green, &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443; &#x43D;&#x430; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B;&#x445; gate. &#x41F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x2014; node attestation: Agent &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x434;&#x43E;&#x43F;&#x443;&#x449;&#x435;&#x43D; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x43C; Server &#x438; &#x432;&#x438;&#x434;&#x435;&#x43D; &#x43D;&#x430; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x43C; GPU-&#x443;&#x437;&#x43B;&#x435;. &#x412;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x2014; workload selectors: &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; PID/Pod &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x435;&#x43D; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x439; entry. &#x422;&#x440;&#x435;&#x442;&#x438;&#x439; &#x2014; credential path: &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; SVID &#x438; bundle, peer &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x43B; SPIFFE ID, &#x440;&#x43E;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43E;&#x448;&#x43B;&#x430; &#x431;&#x435;&#x437; &#x440;&#x435;&#x441;&#x442;&#x430;&#x440;&#x442;&#x430;. &#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x44B;&#x439; &#x2014; application outcome: &#x430;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x437;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x438;&#x43B;&#x441;&#x44F;, &#x43D;&#x435;&#x430;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x437;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x431;&#x44B;&#x43B; &#x43E;&#x442;&#x43A;&#x43B;&#x43E;&#x43D;&#x451;&#x43D;, latency &#x438; error rate &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x438;&#x441;&#x44C; &#x432; &#x431;&#x44E;&#x434;&#x436;&#x435;&#x442;&#x435;.</p>
<p>&#x41D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x441;&#x43B;&#x43E;&#x44F;&#x43C;&#x438;. &#x41D;&#x430;&#x43B;&#x438;&#x447;&#x438;&#x435; SVID &#x43D;&#x430; &#x434;&#x438;&#x441;&#x43A;&#x435; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; Envoy &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; &#x435;&#x433;&#x43E;. &#x423;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x439; handshake &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; policy &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x43B;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x439; URI SAN. HTTP 200 &#x43E;&#x442; health endpoint &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; streaming route &#x432;&#x438;&#x434;&#x438;&#x442; GPU backend. &#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; gate &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x443;, timestamp, node, pod UID &#x438; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;.</p>
<p>NetworkPolicy &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x441;&#x43B;&#x43E;&#x435;&#x43C;. SPIFFE identity &#x43D;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x435;&#x449;&#x430;&#x435;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442;, &#x430; policy &#x441;&#x435;&#x442;&#x438; &#x43D;&#x435; &#x443;&#x434;&#x43E;&#x441;&#x442;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x432;&#x44B;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x449;&#x438;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;. &#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; default-deny &#x438; negative controls &#x440;&#x430;&#x437;&#x43E;&#x431;&#x440;&#x430;&#x43D;&#x44B; &#x432; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B;&#x435; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/kubernetes-networkpolicy-llm-inference-default-deny/">Kubernetes NetworkPolicy &#x434;&#x43B;&#x44F; LLM inference</a>. &#x42D;&#x442;&#x438; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x44B; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x44E;&#x442; &#x434;&#x440;&#x443;&#x433; &#x434;&#x440;&#x443;&#x433;&#x430;, &#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x44E;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; owners &#x438; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; rollback.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">evidence-bundle.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>date -u
kubectl get pod -n ai-serving -l app=model-gateway -o wide
kubectl get pod -n ai-serving -l app=model-gateway   -o jsonpath=&apos;{range .items[*]}{.metadata.uid}{&quot; &quot;}{.spec.serviceAccountName}{&quot;\n&quot;}{end}&apos;
kubectl -n spire logs daemonset/spire-agent --since=10m |   grep -E &apos;attest|selector|SVID|error&apos;
kubectl -n ai-serving logs deploy/model-gateway --since=10m |   grep -E &apos;spiffe|tls|denied|upstream&apos;</code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x431;&#x43E;&#x440; &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; evidence bundle</div>
</div>
<h2 id="rollout">Canary &#x438; rollback: &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x43C; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; owner &#x437;&#x430; &#x440;&#x430;&#x437;</h2>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x43F;&#x430;&#x440;&#x44B; caller&#x2013;callee &#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; route. Baseline &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x448;&#x442;&#x430;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;, &#x43E;&#x442;&#x43A;&#x430;&#x437; negative-control &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;, &#x442;&#x435;&#x43A;&#x443;&#x449;&#x438;&#x439; error rate &#x438; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x434;&#x43E;&#x43B;&#x433;&#x43E;&#x433;&#x43E; stream. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x435; SVID &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43B;&#x44F; canary replica &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; hostname, &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; retries, proxy version &#x438; NetworkPolicy.</p>
<p>A/B/A &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x435;&#x435; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x43E;&#x433;&#x43E; dashboard. &#x412; A &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;. &#x412; B canary &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; SPIFFE identity &#x438; &#x432;&#x44B;&#x434;&#x430;&#x451;&#x442; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; application outcome. &#x412; &#x444;&#x438;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; A &#x432;&#x44B; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x435; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x439; credential path &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x435;&#x442;&#x435; &#x442;&#x435; &#x436;&#x435; probes. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x43D;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x438;&#x43B;&#x438; &#x438;&#x441;&#x447;&#x435;&#x437;&#x430;&#x435;&#x442; &#x43D;&#x435;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x43E;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x430;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x441;&#x43D;&#x43E;&#x432;&#x430; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; B &#x438; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43B;&#x44E;.</p>
<p>Rollback &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x43C;, &#x43F;&#x43E;&#x43A;&#x430; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x443;&#x441;&#x442;&#x430;&#x432;&#x448;&#x430;&#x44F;: &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; route weight, &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; &#x43F;&#x440;&#x435;&#x434;&#x44B;&#x434;&#x443;&#x449;&#x443;&#x44E; TLS policy, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x439; Secret &#x438; &#x443;&#x434;&#x430;&#x43B;&#x438;&#x442;&#x44C; canary entry. &#x41D;&#x43E; &#x43D;&#x435; &#x434;&#x435;&#x440;&#x436;&#x438;&#x442;&#x435; &#x43E;&#x431;&#x449;&#x438;&#x439; static certificate &#x431;&#x435;&#x441;&#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x43E; &#xAB;&#x43D;&#x430; &#x432;&#x441;&#x44F;&#x43A;&#x438;&#x439; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#xBB; &#x2014; &#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x44C;&#x442;&#x435; &#x441;&#x440;&#x43E;&#x43A; &#x443;&#x434;&#x430;&#x43B;&#x435;&#x43D;&#x438;&#x44F;. &#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x439; &#x444;&#x430;&#x437;&#x44B; &#x437;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; stop condition: &#x440;&#x43E;&#x441;&#x442; handshake failures, &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x43E;&#x441;&#x442;&#x44C; Workload API, SVID &#x431;&#x43B;&#x438;&#x436;&#x435; &#x43A; expiry &#x431;&#x435;&#x437; update &#x438;&#x43B;&#x438; &#x443;&#x445;&#x443;&#x434;&#x448;&#x435;&#x43D;&#x438;&#x435; application SLO.</p>
<div class="ks-widget" id="ks-chk-e5k1u8m"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432; &#x43B;&#x438; canary workload identity</h3>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> Baseline &#x441;&#x43D;&#x44F;&#x442; &#x434;&#x43B;&#x44F; &#x43D;&#x43E;&#x432;&#x43E;&#x433;&#x43E; &#x438; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> Negative control &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; ServiceAccount</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x420;&#x43E;&#x442;&#x430;&#x446;&#x438;&#x44F; SVID &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x430; &#x431;&#x435;&#x437; &#x440;&#x435;&#x441;&#x442;&#x430;&#x440;&#x442;&#x430;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> Stop conditions &#x43F;&#x440;&#x438;&#x432;&#x44F;&#x437;&#x430;&#x43D;&#x44B; &#x43A; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x430;&#x43C; &#x438; &#x43B;&#x43E;&#x433;&#x430;&#x43C;</label>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> Rollback &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x435;&#x442; &#x442;&#x435; &#x436;&#x435; identity &#x438; application probes</label>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-e5k1u8m');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-06-22a267df.webp" class="kg-image" alt="SPIFFE/SPIRE &#x434;&#x43B;&#x44F; LLM inference &#x432; Kubernetes: workload identity &#x438; mTLS &#x431;&#x435;&#x437; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x441;&#x435;&#x43A;&#x440;&#x435;&#x442;&#x43E;&#x432;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/spiffe-spire-llm-kubernetes-inline-06-22a267df.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/spiffe-spire-llm-kubernetes-inline-06-22a267df.webp 1000w, https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-06-22a267df.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="federation">Federation &#x43C;&#x435;&#x436;&#x434;&#x443; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x430;&#x43C;&#x438;: &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x434;&#x438;&#x43D; trust domain &#x443;&#x436;&#x435; &#x43C;&#x435;&#x448;&#x430;&#x435;&#x442;</h2>
<p>Federation &#x43D;&#x443;&#x436;&#x43D;&#x430;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x434;&#x432;&#x430; &#x430;&#x434;&#x43C;&#x438;&#x43D;&#x438;&#x441;&#x442;&#x440;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x43E; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B;&#x445; trust domain &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x430;&#x443;&#x442;&#x435;&#x43D;&#x442;&#x438;&#x444;&#x438;&#x446;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; workload &#x434;&#x440;&#x443;&#x433; &#x434;&#x440;&#x443;&#x433;&#x430;. &#x41D;&#x430;&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;, edge gateway &#x432; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435; &#x432;&#x44B;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; GPU inference &#x432; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x43C;, &#x430; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x44E;&#x442; signer, entries &#x438; release windows. &#x421;&#x43B;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x438;&#x445; &#x432; &#x43E;&#x434;&#x438;&#x43D; root &#x43F;&#x440;&#x43E;&#x449;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; incident review: &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x438;&#x441;&#x447;&#x435;&#x437;&#x430;&#x435;&#x442;.</p>
<p>SPIFFE Federation &#x43E;&#x431;&#x43C;&#x435;&#x43D;&#x438;&#x432;&#x430;&#x435;&#x442; bundles &#x447;&#x435;&#x440;&#x435;&#x437; bundle endpoints. &#x41E;&#x442;&#x43D;&#x43E;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x43D;&#x435;&#x435;; &#x434;&#x43B;&#x44F; &#x432;&#x437;&#x430;&#x438;&#x43C;&#x43D;&#x43E;&#x439; &#x430;&#x443;&#x442;&#x435;&#x43D;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x446;&#x438;&#x438; &#x442;&#x440;&#x435;&#x431;&#x443;&#x44E;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x43D;&#x43E;&#x448;&#x435;&#x43D;&#x438;&#x44F; &#x432; &#x43E;&#x431;&#x435; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x44B;. &#x41A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D; &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x442;&#x44C; endpoint, profile &#x438; trust domain, &#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x435; signing keys &#x43F;&#x443;&#x431;&#x43B;&#x438;&#x43A;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435;. &#x421;&#x43F;&#x435;&#x446;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x446;&#x438;&#x44F; &#x440;&#x435;&#x43A;&#x43E;&#x43C;&#x435;&#x43D;&#x434;&#x443;&#x435;&#x442; &#x434;&#x430;&#x442;&#x44C; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x442;&#x435;&#x43B;&#x44F;&#x43C; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; refresh intervals &#x434;&#x43E; &#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x432;&#x44B;&#x434;&#x430;&#x447;&#x438; SVID &#x43D;&#x43E;&#x432;&#x44B;&#x43C; &#x43A;&#x43B;&#x44E;&#x447;&#x43E;&#x43C;.</p>
<p>&#x41D;&#x435; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x441; federation. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; identity path &#x432; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x435;, &#x437;&#x430;&#x442;&#x435;&#x43C; bundle retrieval, &#x437;&#x430;&#x442;&#x435;&#x43C; server authentication, &#x437;&#x430;&#x442;&#x435;&#x43C; cross-domain application request. Negative control &#x2014; SPIFFE ID &#x438;&#x437; &#x442;&#x440;&#x435;&#x442;&#x44C;&#x435;&#x433;&#x43E; &#x438;&#x43B;&#x438; &#x43D;&#x435;&#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; domain. Long chains &#x434;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x44F; &#x443;&#x441;&#x43B;&#x43E;&#x436;&#x43D;&#x44F;&#x44E;&#x442; &#x430;&#x43D;&#x430;&#x43B;&#x438;&#x437; &#x43A;&#x43E;&#x43C;&#x43F;&#x440;&#x43E;&#x43C;&#x435;&#x442;&#x430;&#x446;&#x438;&#x438;; &#x43E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <a href="https://spiffe.io/docs/latest/spiffe-specs/spiffe_federation/?ref=kingservers.com">SPIFFE Federation spec</a> &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x43F;&#x440;&#x435;&#x434;&#x443;&#x43F;&#x440;&#x435;&#x436;&#x434;&#x430;&#x435;&#x442; &#x43E;&#x431; &#x44D;&#x442;&#x43E;&#x43C;.</p>
<div class="ks-widget" id="ks-sel-f8z4c1p"><h3>&#x41D;&#x443;&#x436;&#x43D;&#x430; &#x43B;&#x438; &#x432;&#x430;&#x43C; federation &#x441;&#x435;&#x439;&#x447;&#x430;&#x441;</h3>
<label>&#x421;&#x446;&#x435;&#x43D;&#x430;&#x440;&#x438;&#x439;</label><select data-s><option value="same">&#x41E;&#x434;&#x438;&#x43D; owner &#x438; &#x43E;&#x434;&#x438;&#x43D; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;</option><option value="two">&#x414;&#x432;&#x430; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B;&#x445; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x430;</option><option value="vendor">&#x412;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; &#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x449;&#x438;&#x43A;</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-f8z4c1p');if(!r)return;var m={"same":"Оставьте один trust domain: federation пока добавит операции без новой границы.","two":"Рассмотрите два trust domain и двусторонние relationships после локального canary.","vendor":"Начните с контракта SPIFFE ID, endpoint ownership и incident process; не импортируйте bundle без проверки административной границы."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-07-1398a118.webp" class="kg-image" alt="SPIFFE/SPIRE &#x434;&#x43B;&#x44F; LLM inference &#x432; Kubernetes: workload identity &#x438; mTLS &#x431;&#x435;&#x437; &#x441;&#x442;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x441;&#x435;&#x43A;&#x440;&#x435;&#x442;&#x43E;&#x432;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/spiffe-spire-llm-kubernetes-inline-07-1398a118.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/spiffe-spire-llm-kubernetes-inline-07-1398a118.webp 1000w, https://kingservers.com/blog/content/images/2026/10/spiffe-spire-llm-kubernetes-inline-07-1398a118.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="operations">&#x42D;&#x43A;&#x441;&#x43F;&#x43B;&#x443;&#x430;&#x442;&#x430;&#x446;&#x438;&#x44F;: &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438;, &#x440;&#x43E;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x439; &#x438; &#x442;&#x438;&#x43F;&#x43E;&#x432;&#x44B;&#x435; &#x43E;&#x442;&#x43A;&#x430;&#x437;&#x44B;</h2>
<p>&#x423; SPIRE &#x435;&#x441;&#x442;&#x44C; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x439; SLO. &#x421;&#x43B;&#x435;&#x434;&#x438;&#x442;&#x435; &#x437;&#x430; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x43E;&#x441;&#x442;&#x44C;&#x44E; node attestation, &#x447;&#x438;&#x441;&#x43B;&#x43E;&#x43C; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x445; agents, &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430;&#x43C;&#x438; Workload API, &#x432;&#x43E;&#x437;&#x440;&#x430;&#x441;&#x442;&#x43E;&#x43C; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x435;&#x433;&#x43E; SVID update, &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x435;&#x43C; &#x434;&#x43E; expiry, &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;&#x43C; datastore &#x438; refresh federated bundles. &#x41C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x430; &#xAB;Server pod Ready&#xBB; &#x43D;&#x435; &#x43B;&#x43E;&#x432;&#x438;&#x442; Agent, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43B; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; kubelet &#x438;&#x43B;&#x438; &#x43D;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; entry cache.</p>
<p>&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; failure drill &#x2014; &#x440;&#x43E;&#x442;&#x430;&#x446;&#x438;&#x44F; signing key. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x439; &#x43A;&#x43B;&#x44E;&#x447; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x432; bundle, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432;&#x44B;&#x434;&#x430;&#x447;&#x430; SVID, &#x43F;&#x43E;&#x434;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x438;&#x43C;, &#x438; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x441;&#x442;&#x435;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x445; SVID &#x43F;&#x440;&#x435;&#x436;&#x43D;&#x438;&#x439; &#x43A;&#x43B;&#x44E;&#x447; &#x443;&#x434;&#x430;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F;. &#x415;&#x441;&#x43B;&#x438; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x43A;&#x43B;&#x44E;&#x447; &#x440;&#x430;&#x43D;&#x43E;, &#x432;&#x44B; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x435; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x43E;&#x447;&#x43D;&#x44B;&#x435; handshake failures: &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x44B; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x44E;&#x442;, &#x441;&#x442;&#x430;&#x440;&#x44B;&#x435; long-lived &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x44B; &#x43F;&#x430;&#x434;&#x430;&#x44E;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435; reconnect. Time sync &#x43D;&#x430; nodes &#x438; proxies &#x442;&#x43E;&#x436;&#x435; &#x432;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x432; identity SLO.</p>
<p>DNS &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; bootstrap-&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C;&#x44E; &#x434;&#x43B;&#x44F; Server, federation endpoint &#x438; application peers. &#x41D;&#x435; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; certificate error &#x43A;&#x430;&#x43A; DNS &#x438; &#x43D;&#x430;&#x43E;&#x431;&#x43E;&#x440;&#x43E;&#x442;. &#x414;&#x43B;&#x44F; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x44D;&#x448;&#x430; &#x438; node-dependent path &#x43F;&#x440;&#x438;&#x433;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; runbook &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/nodelocal-dnscache-coredns-llm-inference-kubernetes/">NodeLocal DNSCache</a>.</p>
<p>Capacity &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x437;&#x436;&#x435;. &#x412;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x443;&#x437;&#x43B;&#x44B; &#x438;&#x43B;&#x438; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x434;&#x430;&#x44E;&#x442; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F; &#x43D;&#x430;&#x434; NIC, kernel, HSM/KMS integration, datastore latency &#x438; maintenance window. &#x41D;&#x43E; &#x43D;&#x43E;&#x432;&#x43E;&#x435; &#x436;&#x435;&#x43B;&#x435;&#x437;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x448;&#x438;&#x440;&#x43E;&#x43A;&#x438;&#x439; selector, &#x43E;&#x431;&#x449;&#x438;&#x439; ServiceAccount, &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; trust bundle &#x438;&#x43B;&#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x435; &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x447;&#x438;&#x442;&#x44B;&#x432;&#x430;&#x435;&#x442; credential. &#x418;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x43D;&#x44B;&#x439; &#x430;&#x43F;&#x433;&#x440;&#x435;&#x439;&#x434; &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; resource &#x438;&#x43B;&#x438; control gap, &#x430; &#x43D;&#x435; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x43E; &#x43D;&#x435;&#x433;&#x43E;.</p><h2 id="decision">&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x43C;&#x430;&#x442;&#x440;&#x438;&#x446;&#x430; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x430; &#x438; &#x43F;&#x43B;&#x430;&#x43D; &#x432;&#x43D;&#x435;&#x434;&#x440;&#x435;&#x43D;&#x438;&#x44F;</h2>
<p>&#x412;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; SPIFFE-aware library, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x44B; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x442;&#x435; &#x43A;&#x43E;&#x434; &#x438; &#x445;&#x43E;&#x442;&#x438;&#x442;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x442;&#x44C; peer ID &#x43D;&#x435;&#x43F;&#x43E;&#x441;&#x440;&#x435;&#x434;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E; &#x432; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x438;. &#x412;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x439;&#x442;&#x435; Envoy/SDS, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B; &#x443;&#x436;&#x435; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; proxy &#x438; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x430; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x442;&#x44C; &#x435;&#x433;&#x43E; lifecycle. CSI &#x438;&#x43B;&#x438; &#x444;&#x430;&#x439;&#x43B;&#x43E;&#x432;&#x44B;&#x439; &#x430;&#x434;&#x430;&#x43F;&#x442;&#x435;&#x440; &#x2014; &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x439; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442; &#x434;&#x43B;&#x44F; legacy, &#x43D;&#x43E; &#x43E;&#x43D; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442; &#x440;&#x438;&#x441;&#x43A; &#x432; permissions &#x438; reload. Service mesh &#x443;&#x43C;&#x435;&#x441;&#x442;&#x435;&#x43D;, &#x435;&#x441;&#x43B;&#x438; &#x43F;&#x43E;&#x43C;&#x438;&#x43C;&#x43E; identity &#x43D;&#x443;&#x436;&#x43D;&#x44B; routing, telemetry &#x438; policy &#x43D;&#x430; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x43C; &#x447;&#x438;&#x441;&#x43B;&#x435; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x43E;&#x432;; &#x434;&#x43B;&#x44F; &#x43F;&#x430;&#x440;&#x44B; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x43E;&#x432; &#x43E;&#x43D; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x438;&#x437;&#x431;&#x44B;&#x442;&#x43E;&#x447;&#x435;&#x43D;.</p>
<p>&#x41F;&#x43B;&#x430;&#x43D; &#x43D;&#x430; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; sprint: &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x442;&#x44C; trust domain &#x438; &#x43F;&#x44F;&#x442;&#x44C;&#x2013;&#x434;&#x435;&#x441;&#x44F;&#x442;&#x44C; SPIFFE ID, &#x440;&#x430;&#x437;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; Server/Agent &#x431;&#x435;&#x437; &#x432;&#x43B;&#x438;&#x44F;&#x43D;&#x438;&#x44F; &#x43D;&#x430; traffic, &#x441;&#x43E;&#x437;&#x434;&#x430;&#x442;&#x44C; &#x43E;&#x434;&#x43D;&#x443; entry, &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; SVID, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; authorized &#x438; unauthorized handshake, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x441;&#x442;&#x438; rotation drill, &#x437;&#x430;&#x442;&#x435;&#x43C; canary application request. &#x422;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x445;&#x432;&#x430;&#x442;. &#x414;&#x43B;&#x44F; &#x43E;&#x431;&#x449;&#x435;&#x439; &#x430;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x44B; serving &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x441;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C;&#x441;&#x44F; &#x441; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B;&#x43E;&#x43C; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/kubernetes-dlya-ai-inference-kserve-gpu-autoscaling/">Kubernetes &#x434;&#x43B;&#x44F; AI inference</a>, &#x43D;&#x43E; identity policy &#x434;&#x435;&#x440;&#x436;&#x438;&#x442;&#x435; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x430;&#x440;&#x442;&#x435;&#x444;&#x430;&#x43A;&#x442;&#x43E;&#x43C;.</p>
<p>&#x418;&#x442;&#x43E;&#x433; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;&#x439;: &#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; SPIFFE/SPIRE &#x43D;&#x435; &#x432; &#x442;&#x43E;&#x43C;, &#x447;&#x442;&#x43E; &#x441;&#x435;&#x440;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442;&#x44B; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x44F;&#x442;&#x441;&#x44F; &#xAB;&#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x43C;&#x438;&#xBB;. &#x426;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x432; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x43E;&#x439; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x435; node &#x2192; selectors &#x2192; SVID &#x2192; peer policy &#x2192; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; LLM-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430;. &#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x441;&#x432;&#x44F;&#x437;&#x438;, &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; negative control &#x438; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; rollback. &#x41A;&#x43E;&#x433;&#x434;&#x430; &#x44D;&#x442;&#x43E;&#x442; &#x43F;&#x443;&#x442;&#x44C; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x434;&#x435;&#x436;&#x443;&#x440;&#x43D;&#x44B;&#x43C; &#x438;&#x43D;&#x436;&#x435;&#x43D;&#x435;&#x440;&#x43E;&#x43C; &#x431;&#x435;&#x437; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x438; &#x430;&#x432;&#x442;&#x43E;&#x440;&#x430; &#x441;&#x445;&#x435;&#x43C;&#x44B;, &#x443; &#x432;&#x430;&#x441; &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x43B;&#x430;&#x441;&#x44C; workload identity, &#x430; &#x43D;&#x435; &#x435;&#x449;&#x451; &#x43E;&#x434;&#x438;&#x43D; &#x441;&#x435;&#x440;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442;&#x43D;&#x44B;&#x439; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[TCP_USER_TIMEOUT для LLM streaming: как обнаружить half-open соединения]]></title><description><![CDATA[Production-runbook по TCP_USER_TIMEOUT для LLM streaming: evidence по unacked и retransmissions, Linux socket option, canary, negative control и rollback.]]></description><link>https://kingservers.com/blog/tcp-user-timeout-llm-streaming/</link><guid isPermaLink="false">6ac9f4f8aff2afac25354de0</guid><category><![CDATA[Сетевые протоколы]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Mon, 12 Oct 2026 08:42:28 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-hero-7306ccd0.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#symptom">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#xAB;&#x437;&#x430;&#x432;&#x438;&#x441;&#x448;&#x438;&#x439;&#xBB; LLM-&#x441;&#x442;&#x440;&#x438;&#x43C; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x436;&#x438;&#x432;&#x44B;&#x43C; TCP-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C;</a></li>
<li><a href="#timeout-layers">&#x427;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x442;&#x430;&#x439;&#x43C;&#x435;&#x440;&#x430;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x442;&#x44C;</a></li>
<li><a href="#kernel-mechanics">&#x427;&#x442;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; TCP_USER_TIMEOUT &#x432; Linux</a></li>
<li><a href="#evidence">Evidence gate: &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; unacked path, &#x430; &#x43D;&#x435; &#x433;&#x430;&#x434;&#x430;&#x442;&#x44C; &#x43F;&#x43E; latency</a></li>
<li><a href="#baseline">Baseline &#x434;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F;: owner, SLO &#x438; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x435; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x44B;</a></li>
<li><a href="#canary">Canary: positive gate, negative control &#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x444;&#x430;&#x43A;&#x442;</a></li>
<li><a href="#proxy-boundaries">&#x41F;&#x43E;&#x447;&#x435;&#x43C;&#x443; proxy timeout &#x438; retries &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x44C; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;</a></li>
<li><a href="#rollout">Rollout &#x43F;&#x43E; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44F;&#x43C; &#x43F;&#x443;&#x442;&#x438;, &#x430; &#x43D;&#x435; &#x43E;&#x434;&#x43D;&#x438;&#x43C; &#x447;&#x438;&#x441;&#x43B;&#x43E;&#x43C; &#x43D;&#x430; &#x432;&#x435;&#x441;&#x44C; &#x444;&#x43B;&#x43E;&#x442;</a></li>
<li><a href="#decision">Decision helper: &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x442;&#x430;&#x439;&#x43C;&#x435;&#x440;, &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x438;&#x43B;&#x438; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;</a></li>
<li><a href="#mistakes">&#x427;&#x430;&#x441;&#x442;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x438; stop conditions</a></li>
<li><a href="#conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: &#x442;&#x430;&#x439;&#x43C;&#x430;&#x443;&#x442; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x442;&#x44C; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E; &#x431;&#x435;&#x441;&#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x443;&#x44E; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x443;</a></li>
</ul></div>

</div>&#x41A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x443;&#x436;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x43B; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x442;&#x44C; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B;, &#x43D;&#x43E; gateway &#x432;&#x441;&#x451; &#x435;&#x449;&#x451; &#x441;&#x447;&#x438;&#x442;&#x430;&#x435;&#x442; TCP-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x436;&#x438;&#x432;&#x44B;&#x43C;, &#x430; GPU &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x434;&#x43E;&#x440;&#x43E;&#x433;&#x443;&#x44E; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x44E;. &#x422;&#x430;&#x43A;&#x43E;&#x439; half-open path &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442;&#x441;&#x44F; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435;&#x43C; proxy timeout &#x438; &#x43D;&#x435; &#x432;&#x441;&#x435;&#x433;&#x434;&#x430; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; keepalive &#x432;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x44F;. &#x420;&#x430;&#x437;&#x431;&#x435;&#x440;&#x451;&#x43C;, &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x43D;&#x435;&#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x44B;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43D;&#x430; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x43C; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x435;, &#x437;&#x430;&#x434;&#x430;&#x442;&#x44C; TCP_USER_TIMEOUT &#x432; Linux &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x441;&#x442;&#x438; canary &#x441; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x435;&#x43C;. &#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x430; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; evidence gate: &#x435;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x432; GPU-&#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x438;&#x43B;&#x438; application deadline, &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x442;&#x430;&#x439;&#x43C;&#x435;&#x440; &#x43D;&#x435; &#x43F;&#x43E;&#x43C;&#x43E;&#x436;&#x435;&#x442;.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-hero-7306ccd0.webp" alt="TCP_USER_TIMEOUT &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x442;&#x44C; half-open &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="symptom">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#xAB;&#x437;&#x430;&#x432;&#x438;&#x441;&#x448;&#x438;&#x439;&#xBB; LLM-&#x441;&#x442;&#x440;&#x438;&#x43C; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x436;&#x438;&#x432;&#x44B;&#x43C; TCP-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C;</h2>
<p>&#x41A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x43B; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x442;&#x44C; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B;, &#x43D;&#x43E; API gateway &#x432;&#x441;&#x451; &#x435;&#x449;&#x451; &#x434;&#x435;&#x440;&#x436;&#x438;&#x442; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;, GPU &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x441;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C;, &#x430; &#x432; &#x43B;&#x43E;&#x433;&#x430;&#x445; &#x43D;&#x435;&#x442; &#x43D;&#x438; FIN, &#x43D;&#x438; RST. &#x427;&#x435;&#x440;&#x435;&#x437; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43C;&#x438;&#x43D;&#x443;&#x442; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C; &#x443;&#x436;&#x435; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x43B; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;, &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x441;&#x442;&#x430;&#x43B;&#x430; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x435;&#x435;, &#x430; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x439; inference &#x432;&#x441;&#x451; &#x435;&#x449;&#x451; &#x440;&#x430;&#x441;&#x445;&#x43E;&#x434;&#x443;&#x435;&#x442; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; &#x438; &#x432;&#x44B;&#x447;&#x438;&#x441;&#x43B;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x44F;. &#x42D;&#x442;&#x43E; &#x442;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x439; &#x440;&#x430;&#x437;&#x440;&#x44B;&#x432; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;&#x43C; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;&#x43C; TCP: &#x434;&#x43B;&#x44F; &#x44F;&#x434;&#x440;&#x430; &#x441;&#x43E;&#x43A;&#x435;&#x442; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; ESTABLISHED, &#x445;&#x43E;&#x442;&#x44F; end-to-end &#x43F;&#x443;&#x442;&#x44C; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x438;&#x441;&#x447;&#x435;&#x437;.</p><p>&#x423;&#x433;&#x43E;&#x43B; &#x44D;&#x442;&#x43E;&#x439; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x438; &#x443;&#x437;&#x43A;&#x438;&#x439;: &#x43C;&#x44B; &#x440;&#x430;&#x437;&#x431;&#x438;&#x440;&#x430;&#x435;&#x43C; <code>TCP_USER_TIMEOUT</code> &#x432; Linux &#x438; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x442;&#x43E;&#x442; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43D;&#x435; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x44E;&#x442;&#x441;&#x44F; ACK &#x43B;&#x438;&#x431;&#x43E; &#x43D;&#x435; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x43D;&#x44B; &#x438;&#x437;-&#x437;&#x430; &#x43D;&#x443;&#x43B;&#x435;&#x432;&#x43E;&#x433;&#x43E; &#x43E;&#x43A;&#x43D;&#x430;. &#x42D;&#x442;&#x43E; &#x43D;&#x435; &#x43D;&#x43E;&#x432;&#x430;&#x44F; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44F; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B;&#x430; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/http2-goaway-grpc-keepalive-llm-gateway/">HTTP/2 GOAWAY &#x438; gRPC keepalive</a>, &#x43D;&#x435; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439; &#x438;&#x437; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x438; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/bbr-fq-llm-streaming-network-runbook/">BBR &#x438; fq</a> &#x438; &#x43D;&#x435; &#x43E;&#x431;&#x449;&#x438;&#x439; proxy tuning. &#x41D;&#x430;&#x448;&#x430; &#x437;&#x430;&#x434;&#x430;&#x447;&#x430; &#x2014; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; half-open path, &#x432;&#x44B;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443; fail-fast &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C; &#x435;&#x451; canary &#x431;&#x435;&#x437; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x439; &#xAB;&#x443;&#x441;&#x43A;&#x43E;&#x440;&#x438;&#x442;&#x44C; LLM&#xBB;.</p><p>&#x421;&#x440;&#x430;&#x437;&#x443; &#x43E;&#x431;&#x43E;&#x437;&#x43D;&#x430;&#x447;&#x438;&#x43C; disqualifier. &#x415;&#x441;&#x43B;&#x438; &#x441;&#x43E;&#x43A;&#x435;&#x442; &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442;, <code>unacked</code> &#x43D;&#x435; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;, &#x430; backend &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x434;&#x43E;&#x43B;&#x433;&#x43E; &#x444;&#x43E;&#x440;&#x43C;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x442;&#x43E;&#x43A;&#x435;&#x43D;, TCP_USER_TIMEOUT &#x43D;&#x435; &#x43F;&#x43E;&#x43C;&#x43E;&#x436;&#x435;&#x442;. &#x422;&#x43E; &#x436;&#x435; &#x432;&#x435;&#x440;&#x43D;&#x43E;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x443; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x44E;&#x442; buffering, application deadline, &#x438;&#x441;&#x447;&#x435;&#x440;&#x43F;&#x430;&#x43D;&#x43D;&#x430;&#x44F; GPU-&#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x438;&#x43B;&#x438; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x43D;&#x44B;&#x435; retries. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x430; &#x430;&#x442;&#x440;&#x438;&#x431;&#x443;&#x446;&#x438;&#x44F;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430;.</p>
<p>&#x425;&#x430;&#x440;&#x430;&#x43A;&#x442;&#x435;&#x440;&#x43D;&#x44B;&#x439; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;: &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C; &#x435;&#x434;&#x435;&#x442; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x441;&#x435;&#x442;&#x44F;&#x43C;&#x438;, NAT-&#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x438;&#x441;&#x447;&#x435;&#x437;&#x430;&#x435;&#x442;, &#x43D;&#x43E; gateway &#x443;&#x436;&#x435; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x43D;&#x443;&#x44E; &#x43F;&#x43E;&#x440;&#x446;&#x438;&#x44E; SSE-&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;. Backend &#x43D;&#x435; &#x437;&#x43D;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D;; TCP &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x435;&#x442; &#x441;&#x435;&#x433;&#x43C;&#x435;&#x43D;&#x442;&#x44B;, &#x430; &#x431;&#x438;&#x437;&#x43D;&#x435;&#x441;-&#x442;&#x430;&#x439;&#x43C;&#x435;&#x440; &#x432; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x435; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x435;&#x442; &#x43D;&#x43E;&#x432;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;. &#x411;&#x435;&#x437; &#x441;&#x432;&#x44F;&#x437;&#x438; &#x43C;&#x435;&#x436;&#x434;&#x443; socket tuple, request_id &#x438; generation_id &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x432;&#x438;&#x434;&#x438;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x440;&#x43E;&#x441;&#x442; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438; &#x438; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x43D;&#x43E; &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x442; GPU. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x435;&#x440;&#x432;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x446;&#x435;&#x43B;&#x44C; &#x2014; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x443;&#x44E; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x443;, &#x430; &#x43D;&#x435; &#x43F;&#x43E;&#x434;&#x43E;&#x431;&#x440;&#x430;&#x442;&#x44C; &#xAB;&#x43C;&#x430;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435;&#xBB; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x43C;&#x438;&#x43B;&#x43B;&#x438;&#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-01-55dff0a2.webp" class="kg-image" alt="TCP_USER_TIMEOUT &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x442;&#x44C; half-open &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-user-timeout-llm-streaming-inline-01-55dff0a2.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-user-timeout-llm-streaming-inline-01-55dff0a2.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-01-55dff0a2.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="timeout-layers">&#x427;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x442;&#x430;&#x439;&#x43C;&#x435;&#x440;&#x430;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x442;&#x44C;</h2>
<p>&#x423; production-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430; &#x43A;&#x430;&#x43A; &#x43C;&#x438;&#x43D;&#x438;&#x43C;&#x443;&#x43C; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x447;&#x430;&#x441;&#x43E;&#x432;&#x449;&#x438;&#x43A;&#x430;. Application deadline &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; &#x431;&#x438;&#x437;&#x43D;&#x435;&#x441;-&#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443;: &#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C; &#x433;&#x43E;&#x442;&#x43E;&#x432; &#x436;&#x434;&#x430;&#x442;&#x44C; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x438;&#x43B;&#x438; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x442;&#x43E;&#x43A;&#x435;&#x43D;. Proxy read timeout &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43F;&#x430;&#x443;&#x437;&#x443; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x44F;. TCP keepalive &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x434;&#x430;&#x432;&#x43D;&#x43E; &#x431;&#x435;&#x437;&#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x43F;&#x443;&#x442;&#x44C; &#x441;&#x43F;&#x435;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;&#x438; &#x43F;&#x440;&#x43E;&#x431;&#x430;&#x43C;&#x438;. TCP_USER_TIMEOUT &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; &#x432;&#x440;&#x435;&#x43C;&#x44F;, &#x432; &#x442;&#x435;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x433;&#x43E; &#x443;&#x436;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43E;&#x441;&#x442;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x43D;&#x435;&#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x44B;&#x43C;&#x438; &#x438;&#x43B;&#x438; &#x437;&#x430;&#x441;&#x442;&#x440;&#x435;&#x432;&#x430;&#x44E;&#x442; &#x43F;&#x440;&#x438; zero window.</p><p>&#x421;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x43D;&#x43E; <a href="https://man7.org/linux/man-pages/man7/tcp.7.html?ref=kingservers.com">Linux tcp(7)</a>, &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x437;&#x430;&#x434;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x432; &#x43C;&#x438;&#x43B;&#x43B;&#x438;&#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434;&#x430;&#x445;, &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x432; &#x441;&#x438;&#x43D;&#x445;&#x440;&#x43E;&#x43D;&#x438;&#x437;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F;&#x445; TCP &#x438; &#x43F;&#x440;&#x438; &#x438;&#x441;&#x442;&#x435;&#x447;&#x435;&#x43D;&#x438;&#x438; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44E; <code>ETIMEDOUT</code>. &#x41F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442; retransmission &#x438; &#x43D;&#x435; &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43A;&#x443; keepalive-&#x43F;&#x440;&#x43E;&#x431;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D; <code>SO_KEEPALIVE</code>, &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; TCP_USER_TIMEOUT &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; keepalive failure.</p><p>&#x423; NGINX <a href="https://nginx.org/en/docs/http/ngx_http_proxy_module.html?ref=kingservers.com#proxy_read_timeout">proxy_read_timeout</a> &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x434;&#x432;&#x443;&#x43C;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;&#x438; &#x447;&#x442;&#x435;&#x43D;&#x438;&#x44F;&#x43C;&#x438; &#x43E;&#x442; upstream, &#x430; &#x43D;&#x435; &#x434;&#x43B;&#x44F; &#x432;&#x441;&#x435;&#x433;&#x43E; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; &#x441; &#x440;&#x435;&#x434;&#x43A;&#x438;&#x43C;&#x438; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;&#x43C;&#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x443;&#x43F;&#x430;&#x441;&#x442;&#x44C; &#x43F;&#x43E; read timeout &#x43F;&#x440;&#x438; &#x43F;&#x43E;&#x43B;&#x43D;&#x43E;&#x441;&#x442;&#x44C;&#x44E; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x43E;&#x43C; TCP, &#x430; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; &#x441; unacked &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x43C;&#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x434;&#x43E;&#x43B;&#x433;&#x43E; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x436;&#x438;&#x432;&#x44B;&#x43C; &#x43D;&#x435;&#x441;&#x43C;&#x43E;&#x442;&#x440;&#x44F; &#x43D;&#x430; &#x449;&#x435;&#x434;&#x440;&#x44B;&#x439; proxy timeout. &#x412; runbook &#x44D;&#x442;&#x438; &#x441;&#x438;&#x433;&#x43D;&#x430;&#x43B;&#x44B; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C;&#x441;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;.</p><style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-tab-tcp7a9b"><h3>&#x41A;&#x430;&#x43A;&#x43E;&#x439; &#x442;&#x430;&#x439;&#x43C;&#x435;&#x440; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="ack">&#x415;&#x441;&#x442;&#x44C; unacked</button><button type="button" class="tab-btn" data-t="idle">&#x41D;&#x435;&#x442; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</button><button type="button" class="tab-btn" data-t="app">&#x418;&#x441;&#x442;&#x451;&#x43A; SLO</button></div><div class="panel on" data-p="ack">&#x420;&#x430;&#x441;&#x442;&#x443;&#x442; retransmissions &#x438; &#x43D;&#x435;&#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x44B;&#x435; &#x431;&#x430;&#x439;&#x442;&#x44B;: &#x438;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x443;&#x439;&#x442;&#x435; TCP path &#x438; TCP_USER_TIMEOUT.</div><div class="panel" data-p="idle">&#x41D;&#x435;&#x442; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x445; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; idle/read timeout, heartbeat &#x438; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x438;.</div><div class="panel" data-p="app">&#x41F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x434;&#x435;&#x434;&#x43B;&#x430;&#x439;&#x43D; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x438;&#x442;&#x44C; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E; &#x43E;&#x442; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430;.</div><script>(function(){var r=document.getElementById('ks-tab-tcp7a9b');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div>
<p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E; &#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x438;&#x442;&#x44C; owner &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C;&#x443; &#x442;&#x430;&#x439;&#x43C;&#x435;&#x440;&#x443;. Product/application owner &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; deadline &#x438; &#x441;&#x435;&#x43C;&#x430;&#x43D;&#x442;&#x438;&#x43A;&#x443; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x44B;; platform owner &#x2014; &#x437;&#x430; proxy timeouts, retries &#x438; connection pool; network owner &#x2014; &#x437;&#x430; &#x43F;&#x443;&#x442;&#x44C; &#x438; packet evidence; runtime owner &#x2014; &#x437;&#x430; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x435; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430; &#x438; effective options. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x438;&#x43D; &#x438; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442; &#x434;&#x432;&#x435; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B;, rollback &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x43E;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x43C;. &#x41A;&#x430;&#x440;&#x442;&#x430; ownership &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x431;&#x44B;&#x442;&#x44C; &#x447;&#x430;&#x441;&#x442;&#x44C;&#x44E; change request &#x438; incident timeline.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-02-4d9d1f31.webp" class="kg-image" alt="TCP_USER_TIMEOUT &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x442;&#x44C; half-open &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-user-timeout-llm-streaming-inline-02-4d9d1f31.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-user-timeout-llm-streaming-inline-02-4d9d1f31.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-02-4d9d1f31.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="kernel-mechanics">&#x427;&#x442;&#x43E; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; TCP_USER_TIMEOUT &#x432; Linux</h2>
<p>&#x41B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; socket option &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x431;&#x435;&#x437;&#x437;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x43E;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x43C;&#x438;&#x43B;&#x43B;&#x438;&#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434;. &#x41D;&#x43E;&#x43B;&#x44C; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x44F;. &#x41E;&#x43F;&#x446;&#x438;&#x44F; &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x43B;&#x430;&#x441;&#x44C; &#x432; Linux 2.6.37 &#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x443;&#x441;&#x442;&#x430;&#x43D;&#x430;&#x432;&#x43B;&#x438;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x432; &#x43B;&#x44E;&#x431;&#x43E;&#x439; &#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442; &#x436;&#x438;&#x437;&#x43D;&#x438; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;, &#x445;&#x43E;&#x442;&#x44F; &#x432;&#x43B;&#x438;&#x44F;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; &#x441;&#x438;&#x43D;&#x445;&#x440;&#x43E;&#x43D;&#x438;&#x437;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F;. &#x415;&#x441;&#x43B;&#x438; &#x437;&#x430;&#x434;&#x430;&#x442;&#x44C; &#x435;&#x451; &#x43D;&#x430; listening socket, &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44B;&#x435; &#x447;&#x435;&#x440;&#x435;&#x437; <code>accept()</code> &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x44B; &#x43D;&#x430;&#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x442; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x2014; &#x44D;&#x442;&#x43E; &#x443;&#x434;&#x43E;&#x431;&#x43D;&#x43E; &#x434;&#x43B;&#x44F; gateway, &#x43D;&#x43E; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; blast radius &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438;.</p><p>&#x412;&#x430;&#x436;&#x43D;&#x43E; &#x43D;&#x435; &#x43F;&#x443;&#x442;&#x430;&#x442;&#x44C; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; socket option &#x441; TCP User Timeout Option &#x438;&#x437; <a href="https://www.rfc-editor.org/rfc/rfc5482?ref=kingservers.com">RFC 5482</a>. RFC &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x43E;&#x43E;&#x431;&#x449;&#x438;&#x442;&#x44C; peer &#x440;&#x435;&#x43A;&#x43E;&#x43C;&#x435;&#x43D;&#x434;&#x443;&#x435;&#x43C;&#x44B;&#x439; timeout, &#x43D;&#x43E; &#x44D;&#x442;&#x43E; &#x43D;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x434;&#x432;&#x443;&#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x43D;&#x435;&#x435; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x448;&#x435;&#x43D;&#x438;&#x435;. &#x412; Linux &#x43F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; <code>setsockopt(TCP_USER_TIMEOUT)</code> &#x43F;&#x440;&#x435;&#x436;&#x434;&#x435; &#x432;&#x441;&#x435;&#x433;&#x43E; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F;: &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441; &#x441;&#x430;&#x43C; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442;, &#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x433;&#x43E;&#x442;&#x43E;&#x432; &#x434;&#x435;&#x440;&#x436;&#x430;&#x442;&#x44C; &#x43D;&#x435;&#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x451;&#x43D;&#x43D;&#x44B;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;.</p><p>&#x421;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E; &#x43D;&#x430; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x43E;&#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x430;&#x43D;&#x43D;&#x44B;&#x445;, &#x43C;&#x43E;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; &#x438; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;&#x43D;&#x44B;&#x445; &#x43F;&#x443;&#x442;&#x44F;&#x445;: ACK &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x439;&#x442;&#x438; &#x43F;&#x43E;&#x437;&#x436;&#x435; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x43E;&#x439; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x44B;, &#x438; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x43E;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x431;&#x443;&#x434;&#x435;&#x442; &#x43E;&#x431;&#x43E;&#x440;&#x432;&#x430;&#x43D;&#x43E;. &#x421;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x438; &#x437;&#x430;&#x43D;&#x44F;&#x442;&#x44B;&#x439; inference &#x434;&#x43E;&#x43B;&#x44C;&#x448;&#x435;, &#x447;&#x435;&#x43C; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44E;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x44B;&#x432;&#x43E;&#x434;&#x44F;&#x442; &#x438;&#x437; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x43E;&#x433;&#x43E; deadline, &#x438;&#x437;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; RTT/RTO, &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x433;&#x43E; recovery window &#x438; retry budget, &#x430; &#x43D;&#x435; &#x43A;&#x43E;&#x43F;&#x438;&#x440;&#x443;&#x44E;&#x442; &#x438;&#x437; &#x447;&#x443;&#x436;&#x43E;&#x433;&#x43E; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x444;&#x430;&#x439;&#x43B;&#x430;.</p>
<p>&#x41D;&#x443;&#x43B;&#x435;&#x432;&#x430;&#x44F; receive window &#x2014; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x432;&#x430;&#x436;&#x43D;&#x44B;&#x439; &#x441;&#x446;&#x435;&#x43D;&#x430;&#x440;&#x438;&#x439;. Peer &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x43C; &#x438; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x442;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B;, &#x43D;&#x43E; &#x441;&#x43E;&#x43E;&#x431;&#x449;&#x438;&#x442;&#x44C;, &#x447;&#x442;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43D;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x430; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x435; &#x431;&#x443;&#x434;&#x435;&#x442; &#x43D;&#x430;&#x43A;&#x430;&#x43F;&#x43B;&#x438;&#x432;&#x430;&#x442;&#x44C; buffered data. Linux &#x443;&#x447;&#x438;&#x442;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x438; &#x44D;&#x442;&#x443; &#x441;&#x438;&#x442;&#x443;&#x430;&#x446;&#x438;&#x44E;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; packet trace &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; window advertisements: &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x435;&#x441;&#x441;&#x430; &#x43D;&#x435; &#x432;&#x441;&#x435;&#x433;&#x434;&#x430; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x430;. &#x421;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x430;&#x433;&#x440;&#x435;&#x441;&#x441;&#x438;&#x432;&#x43D;&#x44B;&#x439; timeout &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x43E;&#x431;&#x43E;&#x440;&#x432;&#x430;&#x442;&#x44C; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E;, &#x43D;&#x43E; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x442;&#x440;&#x435;&#x431;&#x438;&#x442;&#x435;&#x43B;&#x44F;.</p>
<p>&#x421;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x43D;&#x44B;&#x439; default &#x442;&#x43E;&#x436;&#x435; &#x432;&#x430;&#x436;&#x43D;&#x43E; &#x43F;&#x43E;&#x43D;&#x438;&#x43C;&#x430;&#x442;&#x44C;, &#x43D;&#x43E; &#x43D;&#x435; &#x43F;&#x43E;&#x434;&#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x438;&#x43C; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x435;&#x43D;&#x438;&#x435;. <code>tcp_retries2</code> &#x437;&#x430;&#x434;&#x430;&#x451;&#x442; &#x447;&#x438;&#x441;&#x43B;&#x43E; retransmission-&#x43C;&#x43E;&#x43C;&#x435;&#x43D;&#x442;&#x43E;&#x432; &#x434;&#x43B;&#x44F; &#x436;&#x438;&#x432;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;, &#x43F;&#x440;&#x438;&#x447;&#x451;&#x43C; effective wall-clock &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; RTO &#x438; backoff; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x44F;&#x434;&#x440;&#x430; &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x43F;&#x440;&#x435;&#x434;&#x443;&#x43F;&#x440;&#x435;&#x436;&#x434;&#x430;&#x435;&#x442; &#x43E; &#x441;&#x432;&#x44F;&#x437;&#x438; &#x441; <code>tcp_rto_max_ms</code>. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x447;&#x451;&#x442; &#xAB;15 &#x440;&#x435;&#x442;&#x440;&#x430;&#x435;&#x432; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x441;&#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E;-&#x442;&#x43E; &#x43C;&#x438;&#x43D;&#x443;&#x442;&#xBB; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x44C; &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x44B;&#x439; production path. Per-socket timeout &#x432;&#x44B;&#x440;&#x430;&#x436;&#x430;&#x435;&#x442; &#x431;&#x438;&#x437;&#x43D;&#x435;&#x441;-&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x43D;&#x43E;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x442;&#x43E;&#x447;&#x43D;&#x435;&#x435;, &#x43D;&#x43E; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43B;&#x44F; outstanding data &#x438; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432; &#x440;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x430;&#x44F; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x442;&#x430;&#x432;&#x438;&#x442; option.</p><p>&#x412;&#x435;&#x440;&#x441;&#x438;&#x43E;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x442;&#x430;&#x442;&#x443;&#x441; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x435;&#x43D;: TCP_USER_TIMEOUT &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x432; Linux &#x43C;&#x43D;&#x43E;&#x433;&#x43E; &#x43B;&#x435;&#x442;, &#x43E;&#x434;&#x43D;&#x430;&#x43A;&#x43E; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x430; &#x432; &#x44F;&#x437;&#x44B;&#x43A;&#x43E;&#x432;&#x43E;&#x43C; runtime, reverse proxy &#x438;&#x43B;&#x438; service mesh &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44E; &#x438; effective state &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x439; &#x441;&#x431;&#x43E;&#x440;&#x43A;&#x438;. &#x41D;&#x430;&#x43B;&#x438;&#x447;&#x438;&#x435; &#x43F;&#x43E;&#x445;&#x43E;&#x436;&#x435;&#x433;&#x43E; &#x43F;&#x43E;&#x43B;&#x44F; &#x432; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438; &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x43E;&#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43A; &#x43D;&#x443;&#x436;&#x43D;&#x43E;&#x43C;&#x443; &#x43F;&#x43B;&#x435;&#x447;&#x443; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;; source code, getsockopt, eBPF trace &#x438;&#x43B;&#x438; controlled failure &#x434;&#x430;&#x44E;&#x442; &#x431;&#x43E;&#x43B;&#x435;&#x435; &#x441;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">python</span><span class="ks-canonical-code-block__filename">tcp_user_timeout.py</span></div>
<pre class="ks-canonical-code-block__pre"><code>import socket

def connect_with_user_timeout(host: str, port: int, timeout_ms: int):
    sock = socket.create_connection((host, port), timeout=5)
    sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_USER_TIMEOUT, timeout_ms)
    actual = sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_USER_TIMEOUT)
    if actual != timeout_ms:
        sock.close()
        raise RuntimeError(f&quot;TCP_USER_TIMEOUT mismatch: {actual}&quot;)
    return sock</code></pre>
<div class="ks-canonical-code-block__caption">&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; Linux-only baseline: &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x44C; &#x438; &#x43F;&#x440;&#x43E;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; effective socket option</div>
</div>
<h2 id="evidence">Evidence gate: &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; unacked path, &#x430; &#x43D;&#x435; &#x433;&#x430;&#x434;&#x430;&#x442;&#x44C; &#x43F;&#x43E; latency</h2>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x438; stable identity &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430;. &#x41D;&#x443;&#x436;&#x43D;&#x44B; namespace, PID, &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x438; &#x443;&#x434;&#x430;&#x43B;&#x451;&#x43D;&#x43D;&#x44B;&#x439; &#x430;&#x434;&#x440;&#x435;&#x441;, transport protocol &#x438; &#x440;&#x43E;&#x43B;&#x44C;: client-facing socket &#x438;&#x43B;&#x438; upstream &#x43A; inference backend. &#x421;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; &#xAB;&#x43D;&#x430; &#x443;&#x437;&#x43B;&#x435; &#x43C;&#x43D;&#x43E;&#x433;&#x43E; retransmissions&#xBB; &#x441;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x448;&#x438;&#x440;&#x43E;&#x43A;&#x438;&#x439;: &#x43E;&#x43D; &#x43D;&#x435; &#x433;&#x43E;&#x432;&#x43E;&#x440;&#x438;&#x442;, &#x437;&#x430;&#x442;&#x440;&#x43E;&#x43D;&#x443;&#x442; &#x43B;&#x438; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44F; &#x438; &#x43A;&#x430;&#x43A;&#x43E;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x435;&#x442; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x43E;&#x43C;.</p><p><code>ss -tinp</code> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43D;&#x43D;&#x443;&#x44E; TCP-&#x438;&#x43D;&#x444;&#x43E;&#x440;&#x43C;&#x430;&#x446;&#x438;&#x44E;, &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x44F; retransmission timer, congestion state &#x438; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A;&#x438; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430;. &#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x435;&#x451; &#x441;&#x435;&#x440;&#x438;&#x435;&#x439;, &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443; &#x447;&#x442;&#x43E; &#x43E;&#x434;&#x438;&#x43D; &#x43A;&#x430;&#x434;&#x440; &#x43D;&#x435; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x442; &#x43A;&#x440;&#x430;&#x442;&#x43A;&#x438;&#x439; loss &#x43E;&#x442; &#x443;&#x441;&#x442;&#x43E;&#x439;&#x447;&#x438;&#x432;&#x43E;&#x433;&#x43E; black hole. &#x420;&#x44F;&#x434;&#x43E;&#x43C; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x439;&#x442;&#x435; <code>nstat</code>, packet capture &#x43D;&#x430; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x43E;&#x43C; canary-&#x43F;&#x443;&#x442;&#x438; &#x438; application trace: &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;, &#x43C;&#x435;&#x436;&#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x43F;&#x430;&#x443;&#x437;&#x44B;, &#x441;&#x442;&#x430;&#x442;&#x443;&#x441; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x438;&#x43B; &#x43B;&#x438; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;.</p><p>Infrastructure gate &#x441;&#x447;&#x438;&#x442;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x43E;&#x439;&#x434;&#x435;&#x43D;&#x43D;&#x44B;&#x43C;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x438; &#x442;&#x43E;&#x43C; &#x436;&#x435; tuple &#x432;&#x438;&#x434;&#x43D;&#x44B; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;, &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; ACK &#x438; &#x440;&#x43E;&#x441;&#x442; retransmission/&#x432;&#x43E;&#x437;&#x440;&#x430;&#x441;&#x442;&#x430; unacked &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F;. Application gate &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442;, &#x447;&#x442;&#x43E;&#x431;&#x44B; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x44D;&#x442;&#x43E;&#x442; request_id &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x43B; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B;, &#x43D;&#x43E; backend &#x435;&#x449;&#x451; &#x43D;&#x435; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x443;. &#x41E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x2014; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x435;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x447;&#x435;&#x440;&#x435;&#x437; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x439; path &#x441; &#x442;&#x435;&#x43C; &#x436;&#x435; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x435;&#x43C; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430;.</p><div class="ks-widget" id="ks-sel-evid3n7"><h3>&#x41A;&#x443;&#x434;&#x430; &#x438;&#x434;&#x442;&#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x441;&#x43D;&#x438;&#x43C;&#x43A;&#x430;</h3><label>&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x435; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;</label><select data-s><option value="unacked">Unacked &#x438; retrans &#x440;&#x430;&#x441;&#x442;&#x443;&#x442;</option><option value="quiet">&#x421;&#x43E;&#x43A;&#x435;&#x442; &#x442;&#x438;&#x445;&#x438;&#x439;, unacked &#x43D;&#x435;&#x442;</option><option value="gpu">TCP &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x435;&#x43D;, TTFT &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-evid3n7');if(!r)return;var m={"unacked":"Локализуйте loss, zero window или исчезнувший peer; только здесь уместен TCP_USER_TIMEOUT.","quiet":"Проверьте application deadline, proxy_read_timeout и heartbeat: TCP нечего подтверждать.","gpu":"Ищите очередь scheduler, KV cache pressure и backend saturation; сетевой таймер не лечит GPU."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;. &#x414;&#x43B;&#x44F; client-facing SSE gateway &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x443;&#x44E; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; ACK loss &#x432;&#x438;&#x434;&#x435;&#x43D; &#x43D;&#x430; gateway. &#x414;&#x43B;&#x44F; upstream RPC &#x440;&#x43E;&#x43B;&#x438; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x442;&#x44C;&#x441;&#x44F;: gateway &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; request, &#x430; backend &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x439; stream. &#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; evidence &#x43D;&#x430; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x435;, &#x443; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x435;&#x441;&#x442;&#x44C; outstanding data. &#x421;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x434;&#x432;&#x443;&#x445; &#x43A;&#x43E;&#x43D;&#x446;&#x43E;&#x432; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x438;&#x442;&#x44C; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;, middlebox &#x438; &#x438;&#x441;&#x447;&#x435;&#x437;&#x43D;&#x443;&#x432;&#x448;&#x438;&#x439; peer, &#x43D;&#x43E; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x443; &#x43D;&#x435; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; per-socket proof.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">observe-tcp.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code># &#x412;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x432; effective network namespace &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430; gateway
ss -tinp &apos;( dport = :443 or sport = :443 )&apos;
nstat -az | grep -E &apos;TcpRetransSegs|TcpTimeouts|TcpExtTCPAbortOnTimeout&apos;

# &#x41F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x441;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; &#x438; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; tuple &#x441; request_id &#x432; access/trace log
date -Ins
ss -tinp dst 203.0.113.10:443</code></pre>
<div class="ks-canonical-code-block__caption">Kernel evidence &#x434;&#x43B;&#x44F; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430;; &#x430;&#x434;&#x440;&#x435;&#x441; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x43D;&#x430; canary peer</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-03-3d620b3a.webp" class="kg-image" alt="TCP_USER_TIMEOUT &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x442;&#x44C; half-open &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-user-timeout-llm-streaming-inline-03-3d620b3a.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-user-timeout-llm-streaming-inline-03-3d620b3a.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-03-3d620b3a.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="baseline">Baseline &#x434;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F;: owner, SLO &#x438; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x435; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x44B;</h2>
<p>&#x414;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x439; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; versioned evidence bundle. &#x412; &#x43D;&#x435;&#x433;&#x43E; &#x432;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44F; &#x44F;&#x434;&#x440;&#x430;, iproute2, runtime gateway, &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x44F; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430;, effective network namespace, &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; keepalive, application deadline, proxy timeout &#x438; retry policy. &#x42D;&#x442;&#x43E; &#x437;&#x430;&#x449;&#x438;&#x449;&#x430;&#x435;&#x442; &#x43E;&#x442; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;: &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x434;&#x435;&#x43F;&#x43B;&#x43E;&#x44F; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; socket option &#x447;&#x430;&#x441;&#x442;&#x43E; &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x431;&#x438;&#x431;&#x43B;&#x438;&#x43E;&#x442;&#x435;&#x43A;&#x430;, &#x43E;&#x431;&#x440;&#x430;&#x437;, &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x438;&#x43B;&#x438; &#x43F;&#x443;&#x43B; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439;.</p><p>&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x437;&#x430;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; &#x442;&#x440;&#x438; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x44B;. &#x41F;&#x435;&#x440;&#x432;&#x430;&#x44F; &#x2014; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; deadline: &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43D;&#x435;&#x451; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x443;&#x436;&#x435; &#x43D;&#x435; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x431;&#x438;&#x437;&#x43D;&#x435;&#x441;-&#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;. &#x412;&#x442;&#x43E;&#x440;&#x430;&#x44F; &#x2014; server cancellation window: &#x43A;&#x43E;&#x433;&#x434;&#x430; backend &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E; &#x43F;&#x440;&#x435;&#x43A;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x44E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; disconnect. &#x422;&#x440;&#x435;&#x442;&#x44C;&#x44F; &#x2014; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; network recovery window &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x432;. TCP_USER_TIMEOUT &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x43E;&#x432;&#x44B;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x441; &#x43D;&#x438;&#x43C;&#x438;, &#x43D;&#x43E; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x444;&#x43E;&#x440;&#x43C;&#x443;&#x43B;&#x44B; &#x43D;&#x435;&#x442;: &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44C; &#x43A;&#x43E;&#x440;&#x43F;&#x43E;&#x440;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x439; LAN, &#x43C;&#x435;&#x436;&#x440;&#x435;&#x433;&#x438;&#x43E;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; WAN &#x438; &#x43C;&#x43E;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F;.</p><p>&#x41D;&#x435; &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x441; &#x433;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; <code>net.ipv4.tcp_retries2</code>. &#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; <a href="https://docs.kernel.org/networking/ip-sysctl.html?ref=kingservers.com">Linux IP sysctl</a> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x44D;&#x442;&#x43E;&#x442; &#x43F;&#x430;&#x440;&#x430;&#x43C;&#x435;&#x442;&#x440; &#x432;&#x43B;&#x438;&#x44F;&#x435;&#x442; &#x43D;&#x430; &#x436;&#x438;&#x432;&#x44B;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x432;&#x43E; &#x432;&#x441;&#x435;&#x439; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x435; &#x438; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D; &#x441; RTO. &#x414;&#x43B;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x44B; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x435;&#x435; per-socket option &#x43D;&#x430; canary-&#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x435;: blast radius &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;, owner &#x43E;&#x447;&#x435;&#x432;&#x438;&#x434;&#x435;&#x43D;, rollback &#x43D;&#x435; &#x437;&#x430;&#x442;&#x440;&#x430;&#x433;&#x438;&#x432;&#x430;&#x435;&#x442; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x435; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x44B;.</p><div class="ks-widget" id="ks-chk-base5q2"><h3>&#x413;&#x43E;&#x442;&#x43E;&#x432; &#x43B;&#x438; baseline &#x43A; canary</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x44B; &#x44F;&#x434;&#x440;&#x43E;, runtime &#x438; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x435;&#x446; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x44B; peer, RTT, retrans &#x438; unacked</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x415;&#x441;&#x442;&#x44C; TTFT, inter-token gap &#x438; error rate</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x41E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x451;&#x43D; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; deadline</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x41F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x44B; positive &#x438; negative control</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> Rollback &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x439; socket profile</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-base5q2');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div>
<p>Baseline &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43E;&#x445;&#x432;&#x430;&#x442;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x445;&#x43E;&#x442;&#x44F; &#x431;&#x44B; &#x43E;&#x434;&#x43D;&#x43E; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x438; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x438;&#x43A;. &#x422;&#x430;&#x439;&#x43C;&#x435;&#x440;, &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x43E; &#x441;&#x43F;&#x43E;&#x43A;&#x43E;&#x439;&#x43D;&#x43E;&#x439; &#x43B;&#x430;&#x431;&#x43E;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x438;&#x438;, &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x431;&#x440;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x440;&#x438; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x439; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x432; &#x447;&#x430;&#x441; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;. &#x412;&#x43C;&#x435;&#x441;&#x442;&#x43E; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x435;&#x433;&#x43E; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x44F;: RTT/RTO, &#x434;&#x43B;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; unacked &#x44D;&#x43F;&#x438;&#x437;&#x43E;&#x434;&#x43E;&#x432;, inter-token gaps &#x438; cancellation latency. &#x417;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; socket option &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43A;&#x430;&#x43A; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x443; &#x434;&#x43B;&#x44F; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; path class, &#x430; &#x43D;&#x435; &#x43A;&#x430;&#x43A; &#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x44B;&#x439; &#x441;&#x442;&#x430;&#x43D;&#x434;&#x430;&#x440;&#x442; &#x432;&#x441;&#x435;&#x439; &#x43A;&#x43E;&#x43C;&#x43F;&#x430;&#x43D;&#x438;&#x438;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-04-6521a963.webp" class="kg-image" alt="TCP_USER_TIMEOUT &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x442;&#x44C; half-open &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-user-timeout-llm-streaming-inline-04-6521a963.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-user-timeout-llm-streaming-inline-04-6521a963.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-04-6521a963.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="canary">Canary: positive gate, negative control &#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x444;&#x430;&#x43A;&#x442;</h2>
<p>Canary &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x44C; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x439; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;. &#x41E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x435; &#xAB;&#x432;&#x44B;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; backend&#xBB; &#x447;&#x430;&#x441;&#x442;&#x43E; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; FIN/RST &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x441;&#x43E;&#x432;&#x441;&#x435;&#x43C; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; failure mode. &#x41D;&#x443;&#x436;&#x435;&#x43D; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; client/gateway pair, &#x433;&#x434;&#x435; firewall &#x438;&#x43B;&#x438; traffic control &#x43E;&#x442;&#x431;&#x440;&#x430;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; return ACK path &#x434;&#x43B;&#x44F; &#x443;&#x436;&#x435; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430;. &#x41D;&#x438;&#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x435; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x442;&#x430;&#x43A;&#x43E;&#x439; &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442; &#x43A; production-&#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x443; &#x438;&#x43B;&#x438; &#x43E;&#x431;&#x449;&#x435;&#x43C;&#x443; namespace.</p><p>Positive gate: &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; unacked &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x43A;&#x435;&#x442; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x43C; &#x43E;&#x43A;&#x43D;&#x435;, &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x443;&#x44E; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x443;, request cancellation &#x434;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x434;&#x43E; backend, &#x430; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440; &#x43D;&#x435; &#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x431;&#x435;&#x437; idempotency/budget &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438;. Negative control: &#x442;&#x43E;&#x442; &#x436;&#x435; canary &#x432;&#x44B;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x443;&#x44E; &#x43F;&#x430;&#x443;&#x437;&#x443; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x438; &#x431;&#x435;&#x437; unacked &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x438; &#x43D;&#x435; &#x440;&#x432;&#x451;&#x442; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432; &#x43D;&#x435;&#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43D;&#x435;&#x442;.</p><p>&#x41A;&#x43E;&#x43D;&#x442;&#x440;&#x444;&#x430;&#x43A;&#x442; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x435;&#x43D;. &#x423;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; fault injection &#x438; &#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; socket profile &#x43A; baseline, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;. &#x415;&#x441;&#x43B;&#x438; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E; &#x442;&#x430;&#x439;&#x43C;&#x430;&#x443;&#x442;&#x443; &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x43E;&#x441;&#x44C;, &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x43D;&#x435; &#x432; TCP_USER_TIMEOUT &#x438;&#x43B;&#x438; &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x439;. &#x415;&#x441;&#x43B;&#x438; kernel counter &#x443;&#x43B;&#x443;&#x447;&#x448;&#x438;&#x43B;&#x441;&#x44F;, &#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; completion rate &#x43D;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B;&#x441;&#x44F;, &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;, &#x430; &#x43D;&#x435; &#x43A;&#x43E;&#x43C;&#x43C;&#x435;&#x440;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;.</p><div class="ks-widget" id="ks-tab-can8r4m"><h3>&#x427;&#x442;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; canary</h3><div class="tabs"><button type="button" class="tab-btn on" data-t="pos">Positive gate</button><button type="button" class="tab-btn" data-t="neg">Negative control</button><button type="button" class="tab-btn" data-t="rb">Rollback</button></div><div class="panel on" data-p="pos">&#x41F;&#x440;&#x438; &#x438;&#x441;&#x43A;&#x443;&#x441;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; ACK black hole &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x43C; &#x43E;&#x43A;&#x43D;&#x435;, &#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; ETIMEDOUT.</div><div class="panel" data-p="neg">Idle-&#x43F;&#x430;&#x443;&#x437;&#x430; &#x431;&#x435;&#x437; unacked &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x43E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x43D;&#x43E; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x438;&#x437;-&#x437;&#x430; TCP_USER_TIMEOUT.</div><div class="panel" data-p="rb">&#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442;&#x430; baseline &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x442;&#x435; &#x436;&#x435; kernel &#x438; application probes; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x438;&#x441;&#x447;&#x435;&#x437;&#x43D;&#x443;&#x442;&#x44C;.</div><script>(function(){var r=document.getElementById('ks-tab-can8r4m');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div>
<p>Fault injection &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; &#x443;&#x437;&#x43A;&#x438;&#x43C; &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C;&#x44B;&#x43C;. &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x43E;, namespace, interface, tuple &#x438; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430;; &#x432;&#x442;&#x43E;&#x440;&#x44B;&#x43C; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x43E;&#x43C; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435;, &#x447;&#x442;&#x43E; production route &#x43D;&#x435; &#x437;&#x430;&#x442;&#x440;&#x43E;&#x43D;&#x443;&#x442;. &#x41F;&#x435;&#x440;&#x435;&#x434; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x43C; &#x443;&#x431;&#x435;&#x434;&#x438;&#x442;&#x435;&#x441;&#x44C;, &#x447;&#x442;&#x43E; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x441;&#x438;&#x43D;&#x442;&#x435;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x438; &#x43D;&#x435; &#x441;&#x43E;&#x434;&#x435;&#x440;&#x436;&#x438;&#x442; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x445; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x442;&#x435;&#x441;&#x442;&#x430; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x438;&#x435; qdisc/firewall rule, &#x43F;&#x443;&#x441;&#x442;&#x43E;&#x439; &#x441;&#x43F;&#x438;&#x441;&#x43E;&#x43A; canary-&#x441;&#x43E;&#x43A;&#x435;&#x442;&#x43E;&#x432; &#x438; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A; &#x43A; baseline. &#x42D;&#x442;&#x438; &#x448;&#x430;&#x433;&#x438; &#x434;&#x435;&#x43B;&#x430;&#x44E;&#x442; &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442; &#x44D;&#x43A;&#x441;&#x43F;&#x43B;&#x443;&#x430;&#x442;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x43E; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x43C;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">canary-blackhole.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code># &#x422;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x432; &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435; &#x43F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x43C; canary namespace.
# veth-canary &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43E;&#x431;&#x441;&#x43B;&#x443;&#x436;&#x438;&#x432;&#x430;&#x442;&#x44C; production-&#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;.
ip netns exec ks-canary tc qdisc replace dev veth-canary root netem loss 100%

# &#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x439;&#x442;&#x435; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; &#x438; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x439;&#x442;&#x435; ETIMEDOUT &#x432; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x438;.
ip netns exec ks-canary ss -tinp

# Rollback fault injection.
ip netns exec ks-canary tc qdisc del dev veth-canary root</code></pre>
<div class="ks-canonical-code-block__caption">Fault injection &#x438; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; rollback &#x432; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x43C; namespace</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-05-da73e5b9.webp" class="kg-image" alt="TCP_USER_TIMEOUT &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x442;&#x44C; half-open &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-user-timeout-llm-streaming-inline-05-da73e5b9.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-user-timeout-llm-streaming-inline-05-da73e5b9.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-05-da73e5b9.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="proxy-boundaries">&#x41F;&#x43E;&#x447;&#x435;&#x43C;&#x443; proxy timeout &#x438; retries &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x44C; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;</h2>
<p>&#x414;&#x430;&#x436;&#x435; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; socket timeout &#x431;&#x435;&#x441;&#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D;, &#x435;&#x441;&#x43B;&#x438; &#x432;&#x435;&#x440;&#x445;&#x43D;&#x438;&#x439; &#x441;&#x43B;&#x43E;&#x439; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x435;&#x433;&#x43E; &#x432; retry storm. &#x414;&#x43B;&#x44F; streaming-&#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x447;&#x430;&#x441;&#x442;&#x438;&#x447;&#x43D;&#x43E;&#x439; &#x432;&#x44B;&#x434;&#x430;&#x447;&#x438; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432; &#x447;&#x430;&#x441;&#x442;&#x43E; &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x43C;: &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x443;&#x436;&#x435; &#x443;&#x432;&#x438;&#x434;&#x435;&#x43B; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x442;&#x435;&#x43A;&#x441;&#x442;&#x430;, &#x430; &#x43D;&#x43E;&#x432;&#x44B;&#x439; backend &#x441;&#x43D;&#x43E;&#x432;&#x430; &#x440;&#x430;&#x441;&#x445;&#x43E;&#x434;&#x443;&#x435;&#x442; GPU. Gateway &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x437;&#x43D;&#x430;&#x442;&#x44C;, &#x431;&#x44B;&#x43B; &#x43B;&#x438; response body &#x43D;&#x430;&#x447;&#x430;&#x442;, &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43B;&#x438; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x446;&#x438;&#x44F; idempotency key &#x438; &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x441;&#x44F; &#x43B;&#x438; retry budget.</p><p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x43E;&#x431;&#x430; &#x43F;&#x43B;&#x435;&#x447;&#x430; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;: client &#x2192; gateway &#x438; gateway &#x2192; inference backend. TCP_USER_TIMEOUT &#x43D;&#x430; upstream socket &#x43D;&#x435; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x43C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C;, &#x430; &#x43E;&#x43F;&#x446;&#x438;&#x44F; &#x43D;&#x430; client-facing socket &#x43D;&#x435; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x437;&#x430;&#x432;&#x438;&#x441;&#x448;&#x438;&#x439; backend request &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;. &#x41C;&#x435;&#x436;&#x434;&#x443; &#x43D;&#x438;&#x43C;&#x438; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x44F;&#x432;&#x43D;&#x44B;&#x439; cancellation path. &#x412; &#x43F;&#x440;&#x43E;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x43C; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x435; gateway &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x438;&#x442; &#x43E;&#x434;&#x438;&#x43D; &#x441;&#x43E;&#x43A;&#x435;&#x442;, &#x43D;&#x43E; GPU &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x438;&#x442; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x44E;, &#x438; capacity &#x43D;&#x435; &#x432;&#x435;&#x440;&#x43D;&#x451;&#x442;&#x441;&#x44F;.</p><p>&#x421;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x439; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B; &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/envoy-llm-overload-circuit-breaker-runbook/">Envoy &#x43F;&#x43E;&#x434; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439; LLM API</a> &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x434;&#x43B;&#x44F; circuit breakers &#x438; backpressure; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x436;&#x435; stop condition &#x434;&#x440;&#x443;&#x433;&#x430;&#x44F;: &#x43D;&#x435; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x439;&#x442;&#x435; rollout, &#x43F;&#x43E;&#x43A;&#x430; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430; transport layer &#x43D;&#x435; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D;&#x430; &#x441; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x43E;&#x439; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; inference &#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x43C; outcome. &#x41D;&#x43E;&#x432;&#x44B;&#x439; &#x442;&#x430;&#x439;&#x43C;&#x430;&#x443;&#x442; &#x431;&#x435;&#x437; cancellation &#x438; observability &#x43B;&#x438;&#x448;&#x44C; &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44E; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x44B; &#x431;&#x44B;&#x441;&#x442;&#x440;&#x435;&#x435;.</p>
<p>&#x41E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B; &#x43F;&#x440;&#x43E;&#x43C;&#x435;&#x436;&#x443;&#x442;&#x43E;&#x447;&#x43D;&#x44B;&#x435; connection pools. &#x41D;&#x43E;&#x432;&#x44B;&#x439; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x434;&#x430;&#x432;&#x43D;&#x43E; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x44B;&#x439; upstream socket &#x441; &#x434;&#x440;&#x443;&#x433;&#x438;&#x43C; effective profile, &#x430; &#x43F;&#x43E;&#x441;&#x43B;&#x435; reload &#x447;&#x430;&#x441;&#x442;&#x44C; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x441;&#x442;&#x430;&#x440;&#x43E;&#x43C; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x438;. &#x412; canary &#x43F;&#x43E;&#x43C;&#x435;&#x447;&#x430;&#x439;&#x442;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x438; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x44F; &#x438; &#x43F;&#x440;&#x438;&#x43D;&#x443;&#x434;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x43F;&#x443;&#x43B;&#x44B;, &#x438;&#x43D;&#x430;&#x447;&#x435; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x430;&#x435;&#x442; baseline &#x438; treatment. &#x41F;&#x43E;&#x441;&#x43B;&#x435; rollout &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44E; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430;, &#x43D;&#x43E; &#x438; option &#x43D;&#x430; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x430;&#x445;.</p><h2 id="rollout">Rollout &#x43F;&#x43E; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44F;&#x43C; &#x43F;&#x443;&#x442;&#x438;, &#x430; &#x43D;&#x435; &#x43E;&#x434;&#x43D;&#x438;&#x43C; &#x447;&#x438;&#x441;&#x43B;&#x43E;&#x43C; &#x43D;&#x430; &#x432;&#x435;&#x441;&#x44C; &#x444;&#x43B;&#x43E;&#x442;</h2>
<p>&#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x43F;&#x43E; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x43A;&#x43B;&#x430;&#x441;&#x441;&#x430;&#x43C;: &#x432;&#x43D;&#x443;&#x442;&#x440;&#x435;&#x43D;&#x43D;&#x438;&#x439; east-west, &#x43A;&#x43E;&#x440;&#x43F;&#x43E;&#x440;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x439; VPN, &#x43C;&#x435;&#x436;&#x440;&#x435;&#x433;&#x438;&#x43E;&#x43D;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; WAN, &#x43F;&#x443;&#x431;&#x43B;&#x438;&#x447;&#x43D;&#x44B;&#x439; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x43D;&#x435;&#x442; &#x438; &#x43C;&#x43E;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x44B;. &#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43A;&#x43B;&#x430;&#x441;&#x441;&#x430;, &#x433;&#x434;&#x435; RTT &#x438; ownership &#x43D;&#x430;&#x438;&#x431;&#x43E;&#x43B;&#x435;&#x435; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;. &#x41E;&#x434;&#x438;&#x43D; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x43D;&#x442; canary &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439; &#x43D;&#x430; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; gateway &#x43B;&#x443;&#x447;&#x448;&#x435;, &#x447;&#x435;&#x43C; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x43D;&#x44B;&#x439; sysctl &#x43D;&#x430; &#x432;&#x441;&#x451;&#x43C; &#x43F;&#x443;&#x43B;&#x435;: &#x432;&#x44B; &#x432;&#x438;&#x434;&#x438;&#x442;&#x435; effective option &#x438; &#x43C;&#x43E;&#x436;&#x435;&#x442;&#x435; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44C; &#x431;&#x435;&#x437; &#x440;&#x435;&#x441;&#x442;&#x430;&#x440;&#x442;&#x430; &#x432;&#x441;&#x435;&#x439; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x44B;.</p><p>&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x447;&#x438;&#x441;&#x43B;&#x43E; <code>ETIMEDOUT</code>. &#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43D;&#x430;&#x431;&#x43E;&#x440; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442; completion rate, user cancellations, TTFT, inter-token gap, retransmissions, unacked duration, backend cancellation latency, &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x43D;&#x44B;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x438; GPU active time &#x43F;&#x43E;&#x441;&#x43B;&#x435; client disconnect. Stop condition: &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x434;&#x43E;&#x43B;&#x44F; &#x43B;&#x43E;&#x436;&#x43D;&#x44B;&#x445; abort &#x43D;&#x430; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x43E;&#x43C; path, &#x443;&#x445;&#x443;&#x434;&#x448;&#x430;&#x435;&#x442;&#x441;&#x44F; completion rate &#x43B;&#x438;&#x431;&#x43E; retries &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x44E;&#x442; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; GPU-&#x440;&#x430;&#x431;&#x43E;&#x442;&#x44B;, &#x447;&#x435;&#x43C; &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x436;&#x434;&#x430;&#x435;&#x442; fail-fast.</p><p>&#x41D;&#x430; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x435; &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; network edge &#x43F;&#x440;&#x43E;&#x449;&#x435; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x44C; kernel/runtime profile, &#x43F;&#x440;&#x43E;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x44C; controlled fault injection &#x438; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C; packet evidence. &#x41D;&#x43E; dedicated-&#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x430; &#x2014; &#x43D;&#x435; &#x43B;&#x435;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x441;&#x430;&#x43C;&#x430; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435;. &#x41E;&#x43D;&#x430; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x430; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; path proof, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x438;&#x442; &#x432; ownership &#x43D;&#x430;&#x434; &#x44F;&#x434;&#x440;&#x43E;&#x43C;, &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x43E;&#x43C;, rollout window &#x438; rollback. &#x41E;&#x448;&#x438;&#x431;&#x43E;&#x447;&#x43D;&#x44B;&#x439; application deadline, stale connection pool &#x438;&#x43B;&#x438; backend queue &#x43D;&#x43E;&#x432;&#x44B;&#x439; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;.</p><div class="ks-widget" id="ks-chk-roll6v1"><h3>&#x423;&#x441;&#x43B;&#x43E;&#x432;&#x438;&#x44F; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43D;&#x438;&#x44F; rollout</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> Canary &#x43D;&#x435; &#x443;&#x445;&#x443;&#x434;&#x448;&#x430;&#x435;&#x442; completion rate</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x41E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x440;&#x438; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x43C; ACK failure</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x41C;&#x43E;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x438; &#x434;&#x430;&#x43B;&#x44C;&#x43D;&#x438;&#x435; &#x43F;&#x443;&#x442;&#x438; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x44B; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> Retry budget &#x43D;&#x435; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x43D;&#x443;&#x44E; GPU-&#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x443;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> On-call &#x432;&#x438;&#x434;&#x438;&#x442; timeout source &#x438; socket owner</label><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-chk-roll6v1');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div>
<p>&#x420;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x439;&#x442;&#x435; rollout &#x441;&#x442;&#x443;&#x43F;&#x435;&#x43D;&#x44F;&#x43C;&#x438; &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x44F;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; synthetic traffic, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x435;&#x43D;&#x43D;&#x438;&#x435; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x44B;, &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x43D;&#x442; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x433;&#x43E; path class. &#x41D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x439; &#x441;&#x442;&#x443;&#x43F;&#x435;&#x43D;&#x438; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;, &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C;, &#x43B;&#x438;&#x43C;&#x438;&#x442; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432; &#x438; retry policy. &#x418;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x438; &#x438;&#x43B;&#x438; batching &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441; network profile &#x440;&#x430;&#x437;&#x440;&#x443;&#x448;&#x430;&#x435;&#x442; &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442;. &#x420;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43E; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43D;&#x438;&#x438; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; owner &#x43F;&#x43E; &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x43D;&#x44B;&#x43C; stop conditions, &#x430; &#x43D;&#x435; &#x43F;&#x43E; &#x432;&#x438;&#x437;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C;&#x443; &#x432;&#x43F;&#x435;&#x447;&#x430;&#x442;&#x43B;&#x435;&#x43D;&#x438;&#x44E; &#x43E;&#x442; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430;.</p>
<p>&#x414;&#x43B;&#x44F; on-call &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; timeout source &#x432; structured log: application deadline, proxy read timeout, TCP user timeout, peer reset &#x438;&#x43B;&#x438; client cancel. &#x41B;&#x43E;&#x433; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x43E;&#x434;&#x435;&#x440;&#x436;&#x430;&#x442;&#x44C; request_id, generation_id, socket tuple &#x438; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x443;&#x436;&#x435; &#x432;&#x44B;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x43E;&#x432;, &#x43D;&#x43E; &#x43D;&#x435; prompt &#x438; &#x43D;&#x435; &#x447;&#x443;&#x432;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;. &#x422;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x434;&#x438;&#x43D; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x438;&#x442; &#x43D;&#x430; &#x434;&#x432;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;&#x430;: &#x43E;&#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x438;&#x43B;&#x438; &#x43B;&#x438; &#x43C;&#x44B; &#x431;&#x435;&#x441;&#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x443;&#x44E; capacity &#x438; &#x43D;&#x435; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x43B;&#x438; &#x43B;&#x438; &#x434;&#x43E;&#x43B;&#x44E; &#x43E;&#x431;&#x440;&#x44B;&#x432;&#x43E;&#x432; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x445; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432;. &#x411;&#x435;&#x437; &#x442;&#x430;&#x43A;&#x43E;&#x433;&#x43E; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x440;&#x43E;&#x441;&#x442; ETIMEDOUT &#x43F;&#x43E;&#x441;&#x43B;&#x435; rollout &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;, &#x43D;&#x43E; &#x441;&#x430;&#x43C; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x433;&#x43E;&#x432;&#x43E;&#x440;&#x438;&#x442; &#x43E; &#x43A;&#x430;&#x447;&#x435;&#x441;&#x442;&#x432;&#x435; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x44F;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">python</span><span class="ks-canonical-code-block__filename">rollout_profile.py</span></div>
<pre class="ks-canonical-code-block__pre"><code># &#x41F;&#x441;&#x435;&#x432;&#x434;&#x43E;&#x43A;&#x43E;&#x434; rollout-&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x438;: &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x438;&#x437; versioned profile.
profile = path_profile(request.client_class)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_USER_TIMEOUT, profile.user_timeout_ms)

metrics.label(
    path_class=profile.name,
    socket_owner=&quot;llm-gateway&quot;,
    timeout_source=&quot;tcp_user_timeout&quot;,
).observe(1)</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x438;&#x43D;&#x446;&#x438;&#x43F;: versioned path profile &#x438; &#x44F;&#x432;&#x43D;&#x430;&#x44F; telemetry dimension</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-06-728b68c9.webp" class="kg-image" alt="TCP_USER_TIMEOUT &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x442;&#x44C; half-open &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-user-timeout-llm-streaming-inline-06-728b68c9.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-user-timeout-llm-streaming-inline-06-728b68c9.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-06-728b68c9.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="decision">Decision helper: &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x442;&#x430;&#x439;&#x43C;&#x435;&#x440;, &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x438;&#x43B;&#x438; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;</h2>
<p>&#x415;&#x441;&#x43B;&#x438; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x44B; &#x43D;&#x435; &#x438;&#x434;&#x443;&#x442;, &#x43D;&#x43E; <code>unacked=0</code> &#x438; retransmissions &#x43D;&#x435; &#x440;&#x430;&#x441;&#x442;&#x443;&#x442;, TCP_USER_TIMEOUT &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x435;&#x439; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x43E;&#x439;. &#x421;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; GPU scheduler, batching, KV cache pressure, proxy buffering &#x438; application heartbeat. &#x415;&#x441;&#x43B;&#x438; unacked &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x435;, &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; next hop, MTU, firewall &#x438; connection tracking, &#x43F;&#x440;&#x435;&#x436;&#x434;&#x435; &#x447;&#x435;&#x43C; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;.</p><p>&#x415;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x439; ACK failure &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x43D;&#x430; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;&#x445; &#x437;&#x430; &#x43E;&#x434;&#x43D;&#x438;&#x43C; gateway, per-socket timeout &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x440;&#x430;&#x437;&#x443;&#x43C;&#x43D;&#x43E;&#x439; &#x437;&#x430;&#x449;&#x438;&#x442;&#x43E;&#x439; capacity. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x437;&#x430;&#x434;&#x430;&#x439;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x432; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x438;, &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435; effective state &#x447;&#x435;&#x440;&#x435;&#x437; <code>getsockopt</code>, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x432;&#x44F;&#x436;&#x438;&#x442;&#x435; ETIMEDOUT &#x441; cancellation. &#x415;&#x441;&#x43B;&#x438; runtime &#x43D;&#x435; &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; socket option, &#x440;&#x430;&#x441;&#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; sidecar &#x438;&#x43B;&#x438; gateway, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x435;&#x442; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x43E;&#x43C;; &#x43D;&#x435; &#x438;&#x43C;&#x438;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x447;&#x440;&#x435;&#x437;&#x43C;&#x435;&#x440;&#x43D;&#x43E; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x43C; proxy timeout.</p><p>Procurement default &#x43F;&#x440;&#x43E;&#x441;&#x442;: &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x443; &#x434;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; TCP-path failure. VPS &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x434;&#x43B;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x433;&#x43E; edge &#x441; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x43C; blast radius; dedicated gateway &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; kernel profile, capture, routing ownership &#x438; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x435; &#x43E;&#x43A;&#x43D;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x439;. &#x420;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x438; &#x438; SLO, &#x430; &#x43D;&#x435; &#x43F;&#x43E; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x44E; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x439; latency.</p><div class="ks-widget" id="ks-sel-dec4x8p"><h3>&#x41D;&#x443;&#x436;&#x435;&#x43D; &#x43B;&#x438; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x443;&#x440;</h3><label>&#x427;&#x442;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43B; canary</label><select data-s><option value="app">&#x41F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x432; deadline &#x438;&#x43B;&#x438; retry</option><option value="path">&#x41F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x432; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x43E;&#x43C; TCP path</option><option value="wan">&#x41F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43D;&#x430; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x43C; WAN</option></select><div class="out" data-o></div><script>(function(){var r=document.getElementById('ks-sel-dec4x8p');if(!r)return;var m={"app":"Сначала исправьте приложение и idempotency. Новый сервер не устранит ошибочную политику повторов.","path":"Выделенный gateway полезен, если нужны контроль ядра, rollout окна, трассировка и быстрый rollback.","wan":"Сравните маршруты и операторов; перенос compute не поможет без доказанного изменения проблемного участка."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div>
<p>&#x41F;&#x440;&#x438; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43F;&#x43B;&#x43E;&#x449;&#x430;&#x434;&#x43A;&#x438; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x44B;. &#x412; managed gateway &#x447;&#x430;&#x441;&#x442;&#x44C; socket options &#x438;&#x43B;&#x438; packet capture &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x430;; &#x43D;&#x430; VPS &#x432;&#x44B; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x435; &#x433;&#x43E;&#x441;&#x442;&#x435;&#x432;&#x44B;&#x43C; &#x44F;&#x434;&#x440;&#x43E;&#x43C;, &#x43D;&#x43E; &#x43D;&#x435; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x43C; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x43E;&#x43C;; &#x43D;&#x430; dedicated edge &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; NIC/kernel profile &#x438; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; drain. &#x41D;&#x438; &#x43E;&#x434;&#x438;&#x43D; &#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442; &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43B;&#x443;&#x447;&#x448;&#x438;&#x439; outcome &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;. &#x41F;&#x43E;&#x43A;&#x443;&#x43F;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x43A;&#x440;&#x438;&#x442;&#x435;&#x440;&#x438;&#x439; &#x2014; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x43B;&#x438; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x443;&#x440; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x438; canary, &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; evidence &#x438; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x44C; rollback &#x432; &#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x430;&#x445; &#x432;&#x430;&#x448;&#x435;&#x433;&#x43E; SLO.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-07-2dcee19e.webp" class="kg-image" alt="TCP_USER_TIMEOUT &#x434;&#x43B;&#x44F; LLM streaming: &#x43A;&#x430;&#x43A; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x442;&#x44C; half-open &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/tcp-user-timeout-llm-streaming-inline-07-2dcee19e.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/tcp-user-timeout-llm-streaming-inline-07-2dcee19e.webp 1000w, https://kingservers.com/blog/content/images/2026/10/tcp-user-timeout-llm-streaming-inline-07-2dcee19e.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="mistakes">&#x427;&#x430;&#x441;&#x442;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x438; stop conditions</h2>
<p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 1: &#x441;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x43B;&#x44E;&#x431;&#x43E;&#x439; &#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x449;&#x438;&#x439; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; half-open.</strong> &#x41F;&#x43E;&#x43A;&#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x435; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x43E; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435;, ACK &#x43D;&#x435;&#x447;&#x435;&#x433;&#x43E; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x442;&#x44C;. &#x41D;&#x443;&#x436;&#x43D;&#x44B; unacked/retrans evidence &#x438; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; tuple.</p><p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 2: &#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; timeout &#x43A;&#x43E;&#x440;&#x43E;&#x447;&#x435; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; recovery window.</strong> &#x41C;&#x43E;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; handover, &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x439; queueing &#x438; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x438;&#x439; RTT &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x432; &#x43B;&#x43E;&#x436;&#x43D;&#x44B;&#x435; abort. Canary &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; &#x445;&#x443;&#x434;&#x448;&#x438;&#x435; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x442;&#x438;&#x43C;&#x44B;&#x435;, &#x43D;&#x43E; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44B;&#x435; &#x43F;&#x443;&#x442;&#x438;.</p><p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 3: &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x433;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; sysctl &#x440;&#x430;&#x434;&#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x430;.</strong> &#x42D;&#x442;&#x43E; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x435;&#x442; blast radius &#x438; &#x443;&#x441;&#x43B;&#x43E;&#x436;&#x43D;&#x44F;&#x435;&#x442; attribution. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; per-socket profile, stable owner &#x438; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x438;&#x43C;&#x44B;&#x439; rollout.</p><p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 4: &#x437;&#x430;&#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x440;&#x43E; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x43D;&#x443;&#x44E; GPU-&#x440;&#x430;&#x431;&#x43E;&#x442;&#x443;.</strong> &#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; ETIMEDOUT &#x43F;&#x43B;&#x44E;&#x441; &#x431;&#x435;&#x437;&#x443;&#x441;&#x43B;&#x43E;&#x432;&#x43D;&#x44B;&#x439; retry &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x443;&#x434;&#x432;&#x43E;&#x438;&#x442;&#x44C; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x443;. &#x41D;&#x443;&#x436;&#x43D;&#x44B; idempotency, retry budget &#x438; &#x437;&#x430;&#x43F;&#x440;&#x435;&#x442; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x430; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x447;&#x430;&#x441;&#x442;&#x438;&#x447;&#x43D;&#x43E;&#x439; &#x432;&#x44B;&#x434;&#x430;&#x447;&#x438;.</p><p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 5: &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x442;&#x44C; kernel improvement &#x437;&#x430; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;.</strong> &#x41C;&#x435;&#x43D;&#x44C;&#x448;&#x435; &#x434;&#x43E;&#x43B;&#x433;&#x43E;&#x436;&#x438;&#x432;&#x443;&#x449;&#x438;&#x445; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x43E;&#x432; &#x2014; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x439; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;, &#x43D;&#x43E; &#x443;&#x441;&#x43F;&#x435;&#x445; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x438; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44F;&#x435;&#x442;&#x441;&#x44F; completion rate, &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x43E;&#x439; backend &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x451;&#x43D;&#x43D;&#x44B;&#x43C; SLO. &#x415;&#x441;&#x43B;&#x438; application outcome &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;, &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x434;&#x430;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x443; &#x43A;&#x430;&#x43A; &#x443;&#x441;&#x43A;&#x43E;&#x440;&#x435;&#x43D;&#x438;&#x435;.</p><p>&#x41E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x435; rollout, &#x435;&#x441;&#x43B;&#x438; &#x43D;&#x435;&#x442; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F;, fault injection &#x437;&#x430;&#x442;&#x440;&#x430;&#x433;&#x438;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x431;&#x449;&#x438;&#x439; path, runtime &#x43D;&#x435; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x435;&#x442; effective option, &#x43E;&#x442;&#x441;&#x443;&#x442;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; backend cancellation &#x43B;&#x438;&#x431;&#x43E; observability &#x43D;&#x435; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x442; application, proxy &#x438; kernel timeout. &#x42D;&#x442;&#x438; &#x443;&#x441;&#x43B;&#x43E;&#x432;&#x438;&#x44F; &#x432;&#x430;&#x436;&#x43D;&#x435;&#x435; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x43E;&#x433;&#x43E; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430; retransmissions.</p>
<p><strong>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; 6: &#x437;&#x430;&#x431;&#x44B;&#x442;&#x44C; &#x43E; long-poll &#x438; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x445; &#x43F;&#x430;&#x443;&#x437;&#x430;&#x445; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;&#x43C;&#x438;.</strong> TCP_USER_TIMEOUT &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x438;&#x43C;&#x438;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; heartbeat. &#x415;&#x441;&#x43B;&#x438; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44E; &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x43E;&#x431;&#x43D;&#x430;&#x440;&#x443;&#x436;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x43B;&#x43E;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#xAB;&#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x449;&#x438;&#x439;&#xBB; stream &#x431;&#x435;&#x437; outstanding data, &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; heartbeat &#x438;&#x43B;&#x438; application deadline. &#x421;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x44D;&#x442;&#x438;&#x445; &#x437;&#x430;&#x434;&#x430;&#x447; &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442; &#x43D;&#x435;&#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x438;&#x43C;&#x44B;&#x43C;: &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x439; ETIMEDOUT &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x44E;&#x442; &#x442;&#x440;&#x430;&#x43A;&#x442;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x438; &#x43A;&#x430;&#x43A; network failure, &#x438; &#x43A;&#x430;&#x43A; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x433;&#x435;&#x43D;&#x435;&#x440;&#x430;&#x446;&#x438;&#x44E;.</p><h2 id="conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: &#x442;&#x430;&#x439;&#x43C;&#x430;&#x443;&#x442; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x442;&#x44C; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E; &#x431;&#x435;&#x441;&#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x443;&#x44E; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x443;</h2>
<p>TCP_USER_TIMEOUT &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x434;&#x43B;&#x44F; LLM streaming &#x43D;&#x435; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#xAB;TCP &#x441;&#x43B;&#x438;&#x448;&#x43A;&#x43E;&#x43C; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439;&#xBB;, &#x430; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#x436;&#x438;&#x432;&#x43E;&#x439; &#x441; &#x442;&#x43E;&#x447;&#x43A;&#x438; &#x437;&#x440;&#x435;&#x43D;&#x438;&#x44F; &#x44F;&#x434;&#x440;&#x430; &#x441;&#x43E;&#x43A;&#x435;&#x442; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x443;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x443;&#x436;&#x435; &#x431;&#x435;&#x441;&#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x443;&#x44E; inference-&#x440;&#x430;&#x431;&#x43E;&#x442;&#x443;. &#x41F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; runbook &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x434;&#x438;&#x43D; &#x438; &#x442;&#x43E;&#x442; &#x436;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x447;&#x435;&#x440;&#x435;&#x437; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x441;&#x43B;&#x43E;&#x44F;: unacked TCP state, &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x443;&#x44E; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x443; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430;, &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x443; backend &#x438; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x43A;&#x438;&#x439; outcome.</p><p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441;&#x43E; &#x441;&#x43D;&#x438;&#x43C;&#x43A;&#x430; <code>ss -tinp</code> &#x438; application trace, &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; idle &#x43E;&#x442; unacked, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; ACK black hole &#x43D;&#x430; &#x438;&#x437;&#x43E;&#x43B;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x43E;&#x43C; canary. &#x423;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x435; per-socket option, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x447;&#x435;&#x440;&#x435;&#x437; <code>getsockopt</code>, &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435; positive &#x438; negative control, &#x430; &#x43F;&#x43E;&#x441;&#x43B;&#x435; rollback &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x435; &#x436;&#x435; probes. &#x422;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x442;&#x430;&#x43A; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x433;&#x43E;&#x432;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x43E; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;.</p><p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x448;&#x430;&#x433; &#x2014; &#x441;&#x43E;&#x431;&#x440;&#x430;&#x442;&#x44C; baseline &#x434;&#x43B;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; path class &#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; gateway-&#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430;. &#x415;&#x441;&#x43B;&#x438; &#x432;&#x44B;&#x44F;&#x441;&#x43D;&#x438;&#x442;&#x441;&#x44F;, &#x447;&#x442;&#x43E; &#x432;&#x430;&#x43C; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x44B;&#x439; edge &#x441; &#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x43C; kernel profile, &#x442;&#x440;&#x430;&#x441;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x43A;&#x43E;&#x439; &#x438; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x43C; &#x43E;&#x43A;&#x43D;&#x43E;&#x43C; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x439;, &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43F;&#x43E;&#x434;&#x43E;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x43F;&#x43E;&#x434; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x442;&#x440;&#x435;&#x431;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F;. &#x415;&#x441;&#x43B;&#x438; evidence &#x443;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x438;&#x43B;&#x438; GPU queue, &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x44D;&#x442;&#x43E;&#x442; &#x441;&#x43B;&#x43E;&#x439; &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x441;&#x435;&#x442;&#x44C; &#x431;&#x435;&#x437; &#x43B;&#x438;&#x448;&#x43D;&#x435;&#x433;&#x43E; &#x442;&#x44E;&#x43D;&#x438;&#x43D;&#x433;&#x430;.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[RSS, RPS и IRQ affinity для LLM API gateway: как убрать сетевой CPU bottleneck]]></title><description><![CDATA[Production-runbook по RSS, RPS и IRQ affinity для LLM API gateway: диагностика softirq, RX-очередей и NUMA, безопасный canary, метрики и rollback.]]></description><link>https://kingservers.com/blog/rss-rps-irq-affinity-llm-api-gateway/</link><guid isPermaLink="false">6ac8a4fdaff2afac25354dda</guid><category><![CDATA[Инфраструктура]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Mon, 12 Oct 2026 08:42:10 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-hero-5f212fc9.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#symptoms">&#x421;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;&#x44B;: &#x43A;&#x43E;&#x433;&#x434;&#x430; gateway &#x443;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x435; CPU</a></li>
<li><a href="#evidence">Evidence gate: &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; bottleneck &#x434;&#x43E; &#x442;&#x44E;&#x43D;&#x438;&#x43D;&#x433;&#x430;</a></li>
<li><a href="#path">&#x41A;&#x430;&#x43A; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; RSS, IRQ &#x438; softirq</a></li>
<li><a href="#mechanisms">RSS, RPS, RFS &#x438; XPS: &#x447;&#x442;&#x43E; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x442;&#x44C;</a></li>
<li><a href="#numa">NUMA &#x438; CPU locality &#x43D;&#x430; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x435;</a></li>
<li><a href="#metrics">&#x41C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439;: &#x447;&#x442;&#x43E; &#x441;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C;, &#x430; &#x447;&#x435;&#x43C;&#x443; &#x43D;&#x435; &#x432;&#x435;&#x440;&#x438;&#x442;&#x44C;</a></li>
<li><a href="#tuning">&#x411;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x430;&#x44F; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; IRQ affinity &#x438; RSS</a></li>
<li><a href="#rps">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; RPS &#x438; &#x43A;&#x430;&#x43A; &#x43D;&#x435; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x442;&#x44C; IPI storm</a></li>
<li><a href="#canary">Canary: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C; peer, fresh connections &#x438; application outcome</a></li>
<li><a href="#failures">&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x438; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44F; bottleneck</a></li>
<li><a href="#rollback">Rollback &#x438; &#x44D;&#x43A;&#x441;&#x43F;&#x43B;&#x443;&#x430;&#x442;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x44B;&#x439; runbook</a></li>
<li><a href="#conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: &#x43E;&#x43F;&#x442;&#x438;&#x43C;&#x438;&#x437;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;, &#x430; &#x43D;&#x435; &#x437;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x443; CPU</a></li>
</ul></div>

</div>LLM API &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x442;&#x44C; &#x43C;&#x435;&#x434;&#x43B;&#x435;&#x43D;&#x43D;&#x435;&#x435;, &#x445;&#x43E;&#x442;&#x44F; &#x441;&#x443;&#x43C;&#x43C;&#x430;&#x440;&#x43D;&#x44B;&#x439; CPU &#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x435;&#x43D;, &#x430; GPU &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;. &#x41D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x44F;&#x434;&#x440;&#x435; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; softirq, RX-&#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; NIC &#x437;&#x430;&#x431;&#x438;&#x442;&#x430;, &#x438; &#x43D;&#x43E;&#x432;&#x44B;&#x435; streaming-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x44E;&#x442; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x438;&#x439; TTFT. &#x417;&#x434;&#x435;&#x441;&#x44C; &#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E; &#x441;&#x440;&#x430;&#x437;&#x443; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; RPS &#x438;&#x43B;&#x438; &#x440;&#x430;&#x441;&#x43A;&#x438;&#x434;&#x44B;&#x432;&#x430;&#x442;&#x44C; IRQ: &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x438; &#x43F;&#x43E; &#x432;&#x441;&#x435;&#x43C;&#x443; &#x43F;&#x443;&#x442;&#x438; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;. &#x42D;&#x442;&#x43E;&#x442; runbook &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x43A;&#x430;&#x43A; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x442;&#x44C; RSS, MSI-X, NUMA, gateway workers &#x438; application SLO, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x441;&#x442;&#x438; canary &#x438; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E; &#x43E;&#x442;&#x43A;&#x430;&#x442;&#x438;&#x442;&#x44C;&#x441;&#x44F;.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-hero-5f212fc9.webp" alt="RSS, RPS &#x438; IRQ affinity &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; CPU bottleneck"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="symptoms">&#x421;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;&#x44B;: &#x43A;&#x43E;&#x433;&#x434;&#x430; gateway &#x443;&#x43F;&#x438;&#x440;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x435; CPU</h2>
<p>&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x430;&#x44F; &#x430;&#x432;&#x430;&#x440;&#x438;&#x44F; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x43D;&#x435;&#x43B;&#x43E;&#x433;&#x438;&#x447;&#x43D;&#x43E;: &#x441;&#x443;&#x43C;&#x43C;&#x430;&#x440;&#x43D;&#x44B;&#x439; CPU &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x430; &#x434;&#x430;&#x43B;&#x451;&#x43A; &#x43E;&#x442; 100%, GPU backend &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;, &#x430; p99 &#x438; time-to-first-token &#x43D;&#x430; &#x432;&#x445;&#x43E;&#x434;&#x43D;&#x43E;&#x43C; gateway &#x432;&#x43D;&#x435;&#x437;&#x430;&#x43F;&#x43D;&#x43E; &#x440;&#x430;&#x441;&#x442;&#x443;&#x442;. &#x412; <code>top</code> &#x43E;&#x434;&#x43D;&#x43E; &#x438;&#x43B;&#x438; &#x434;&#x432;&#x430; &#x44F;&#x434;&#x440;&#x430; &#x437;&#x430;&#x43D;&#x44F;&#x442;&#x44B; <code>ksoftirqd</code>, &#x432; <code>/proc/interrupts</code> &#x43F;&#x43E;&#x447;&#x442;&#x438; &#x432;&#x435;&#x441;&#x44C; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; NIC &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x43D;&#x430; &#x43E;&#x434;&#x438;&#x43D; CPU, &#x430; &#x441;&#x43E;&#x441;&#x435;&#x434;&#x43D;&#x438;&#x435; &#x44F;&#x434;&#x440;&#x430; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x430;&#x438;&#x432;&#x430;&#x44E;&#x442;. &#x414;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; worker-&#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x43E;&#x432; &#x43D;&#x435; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x430;&#x435;&#x442;: &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x432;&#x441;&#x451; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43F;&#x440;&#x43E;&#x439;&#x442;&#x438; RX queue, IRQ &#x438; network softirq &#x434;&#x43E; &#x442;&#x43E;&#x433;&#x43E;, &#x43A;&#x430;&#x43A; &#x435;&#x433;&#x43E; &#x443;&#x432;&#x438;&#x434;&#x438;&#x442; NGINX, Envoy &#x438;&#x43B;&#x438; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x44B;&#x439; API-&#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;.</p><p>&#x42D;&#x442;&#x43E; &#x432;&#x430;&#x436;&#x43D;&#x43E; &#x43E;&#x442;&#x43B;&#x438;&#x447;&#x430;&#x442;&#x44C; &#x43E;&#x442; accept bottleneck. <a href="https://kingservers.com/blog/so-reuseport-llm-api-gateway-ebpf/">SO_REUSEPORT &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; &#x43D;&#x43E;&#x432;&#x44B;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43C;&#x435;&#x436;&#x434;&#x443; listeners</a>, &#x43D;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43E;&#x448;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x430;&#x43F;&#x43F;&#x430;&#x440;&#x430;&#x442;&#x43D;&#x443;&#x44E; RX-&#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;. &#x418; &#x43D;&#x430;&#x43E;&#x431;&#x43E;&#x440;&#x43E;&#x442;: &#x438;&#x434;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; RSS &#x43D;&#x435; &#x441;&#x43F;&#x430;&#x441;&#x451;&#x442;, &#x435;&#x441;&#x43B;&#x438; TLS handshakes &#x441;&#x44A;&#x435;&#x434;&#x430;&#x44E;&#x442; userspace CPU &#x438;&#x43B;&#x438; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x441;&#x442;&#x43E;&#x44F;&#x442; &#x432; inference queue. &#x41D;&#x430;&#x448;&#x430; &#x437;&#x430;&#x434;&#x430;&#x447;&#x430; &#x2014; &#x43D;&#x430;&#x439;&#x442;&#x438; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x438; &#x43F;&#x43E; &#x43F;&#x443;&#x442;&#x438; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;, &#x430; &#x43D;&#x435; &#x43F;&#x43E;&#x434;&#x43E;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x44B;&#x439; sysctl.</p><p>&#x411;&#x44B;&#x441;&#x442;&#x440;&#x44B;&#x439; &#x43F;&#x440;&#x438;&#x437;&#x43D;&#x430;&#x43A; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x433;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43E;&#x441;&#x430; &#x2014; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43B;&#x44F;&#x446;&#x438;&#x44F; &#x442;&#x440;&#x451;&#x445; &#x440;&#x44F;&#x434;&#x43E;&#x432;: interrupts &#x43E;&#x434;&#x43D;&#x43E;&#x439; RX queue, <code>NET_RX</code> softirq &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; CPU &#x438; &#x443;&#x445;&#x443;&#x434;&#x448;&#x435;&#x43D;&#x438;&#x435; application SLO. &#x41E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x43E;&#x433;&#x43E; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A;&#x430; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E;. &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x43B;&#x438; &#x43B;&#x438; &#x432;&#x44B;, &#x447;&#x442;&#x43E; &#x432;&#x441;&#x43F;&#x43B;&#x435;&#x441;&#x43A; softirq &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x441; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x43E;&#x439; &#x441;&#x432;&#x435;&#x436;&#x438;&#x445; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x439;, &#x430; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E; &#x43E;&#x442;&#x440;&#x430;&#x436;&#x430;&#x435;&#x442; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x443; busy gateway?</p><h2 id="evidence">Evidence gate: &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; bottleneck &#x434;&#x43E; &#x442;&#x44E;&#x43D;&#x438;&#x43D;&#x433;&#x430;</h2>
<p>&#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; baseline &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x43E;&#x439; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;: &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x444;&#x438;&#x43B;&#x44C; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432;, &#x442;&#x435; &#x436;&#x435; TLS-&#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x438;, &#x442;&#x43E;&#x442; &#x436;&#x435; backend &#x438; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x43E; gateway workers. &#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43D;&#x430;&#x431;&#x43E;&#x440; &#x2014; per-CPU utilisation, <code>/proc/interrupts</code>, <code>/proc/softirqs</code>, &#x441;&#x442;&#x430;&#x442;&#x438;&#x441;&#x442;&#x438;&#x43A;&#x430; NIC &#x43F;&#x43E; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44F;&#x43C;, drops, retransmits &#x438; application SLO. &#x414;&#x43B;&#x44F; LLM streaming &#x434;&#x43E;&#x431;&#x430;&#x432;&#x44C;&#x442;&#x435; TTFT, &#x434;&#x43E;&#x43B;&#x44E; &#x43E;&#x431;&#x43E;&#x440;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x445; SSE/gRPC streams &#x438; latency &#x443;&#x436;&#x435; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x445; &#x431;&#x430;&#x439;&#x442;&#x43E;&#x432;: &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x438;&#x451;&#x43C;&#x430; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x43E;&#x432; &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x43C;&#x430;&#x441;&#x43A;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; partial responses.</p><p>&#x412; Linux &#x430;&#x43F;&#x43F;&#x430;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x439; RSS &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; RX queue, IRQ &#x44D;&#x442;&#x43E;&#x439; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x431;&#x443;&#x434;&#x438;&#x442; CPU, &#x430; softirq &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x443; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x433;&#x43E; &#x441;&#x442;&#x435;&#x43A;&#x430;. RPS &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442;&#x44C; protocol processing &#x43D;&#x430; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; CPU &#x43F;&#x43E;&#x437;&#x434;&#x43D;&#x435;&#x435;, &#x443;&#x436;&#x435; &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x43D;&#x43E;. &#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; <a href="https://docs.kernel.org/networking/scaling.html?ref=kingservers.com">&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; Linux &#x43F;&#x43E; scaling</a> &#x43F;&#x43E;&#x434;&#x447;&#x451;&#x440;&#x43A;&#x438;&#x432;&#x430;&#x435;&#x442;: &#x43F;&#x440;&#x438; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x43C; RSS &#x441; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;&#x44E; &#x43D;&#x430; CPU RPS &#x447;&#x430;&#x441;&#x442;&#x43E; &#x438;&#x437;&#x431;&#x44B;&#x442;&#x43E;&#x447;&#x435;&#x43D;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x435; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x43F;&#x443;&#x442;&#x44C;, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43E;&#x434;&#x438;&#x43D; &#x441;&#x43B;&#x43E;&#x439;.</p><p>&#x41D;&#x435;&#x433;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x435;&#x43D;. &#x41D;&#x430;&#x43F;&#x440;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; &#x442;&#x435;&#x441;&#x442; &#x43D;&#x430; &#x442;&#x43E;&#x442; &#x436;&#x435; gateway &#x43F;&#x43E; loopback &#x438;&#x43B;&#x438; &#x43D;&#x430;&#x43F;&#x440;&#x44F;&#x43C;&#x443;&#x44E; &#x43A; userspace listener, &#x435;&#x441;&#x43B;&#x438; &#x430;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x430; &#x438; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x44D;&#x442;&#x43E; &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x44E;&#x442;. &#x415;&#x441;&#x43B;&#x438; &#x437;&#x430;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x430; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F;, NIC steering &#x43D;&#x435; &#x433;&#x43B;&#x430;&#x432;&#x43D;&#x44B;&#x439; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x435;&#x446;. &#x412;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x2014; &#x441;&#x43D;&#x438;&#x437;&#x438;&#x442;&#x44C; packet rate, &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x432; request concurrency: &#x435;&#x441;&#x43B;&#x438; SLO &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x430;&#x432;&#x43B;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; &#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x435;&#x43C; softirq, &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x430; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x441;&#x438;&#x43B;&#x44C;&#x43D;&#x435;&#x435;. &#x42D;&#x442;&#x43E; &#x43D;&#x435; benchmark, &#x430; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">collect-network-baseline.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>#!/usr/bin/env bash
set -euo pipefail
iface=${1:-eth0}
date -Is
ethtool -l &quot;$iface&quot;
ethtool -x &quot;$iface&quot; 2&gt;/dev/null || true
ethtool -S &quot;$iface&quot; | grep -Ei &apos;rx.*(queue|drop|miss|error)|tx.*(queue|drop|error)&apos; || true
grep -E &quot;$iface|CPU&quot; /proc/interrupts
sed -n &apos;1p;/NET_RX/p;/NET_TX/p&apos; /proc/softirqs
nstat -az | grep -E &apos;TcpRetransSegs|IpInDiscards|TcpExtListenDrops&apos; || true</code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x43D;&#x438;&#x43C;&#x43E;&#x43A; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439;, IRQ &#x438; softirq &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x44B;</div>
</div>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-sel-rx9a2qk"><h3>&#x413;&#x434;&#x435; &#x438;&#x441;&#x43A;&#x430;&#x442;&#x44C; &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; bottleneck</h3>
<label>&#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;</label><select data-s><option value="one">&#x41E;&#x434;&#x43D;&#x43E; &#x44F;&#x434;&#x440;&#x43E; &#x432; softirq, &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x43D;&#x44B;</option><option value="all">&#x412;&#x441;&#x435; gateway-&#x44F;&#x434;&#x440;&#x430; &#x437;&#x430;&#x43D;&#x44F;&#x442;&#x44B; userspace</option><option value="gpu">&#x421;&#x435;&#x442;&#x44C; &#x441;&#x43F;&#x43E;&#x43A;&#x43E;&#x439;&#x43D;&#x430;, &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; inference</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-rx9a2qk');if(!r)return;var m={"one":"Проверьте RSS-очереди, IRQ affinity и effective_affinity до настройки RPS.","all":"Сначала отделите TLS/proxy CPU от сетевого softirq; steering может лишь перенести нагрузку.","gpu":"Не трогайте RSS: владелец задержки, вероятно, backend queue или GPU scheduler."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><h2 id="path">&#x41A;&#x430;&#x43A; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442; RSS, IRQ &#x438; softirq</h2>
<p>RSS &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x432; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x43A;&#x430;&#x440;&#x442;&#x435;: NIC &#x432;&#x44B;&#x447;&#x438;&#x441;&#x43B;&#x44F;&#x435;&#x442; hash &#x43F;&#x43E; &#x43F;&#x43E;&#x43B;&#x44F;&#x43C; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x430; &#x438; &#x447;&#x435;&#x440;&#x435;&#x437; indirection table &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; RX queue. &#x423; multi-queue NIC &#x43A;&#x430;&#x436;&#x434;&#x430;&#x44F; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D;&#x430; &#x441; MSI-X interrupt. &#x41A;&#x430;&#x440;&#x442;&#x430; queue &#x2192; IRQ &#x2192; CPU &#x432;&#x438;&#x434;&#x43D;&#x430; &#x43D;&#x435; &#x432; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; &#x444;&#x430;&#x439;&#x43B;&#x435;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x435;&#x451; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x441;&#x43E;&#x431;&#x438;&#x440;&#x430;&#x442;&#x44C;: &#x441;&#x43F;&#x438;&#x441;&#x43E;&#x43A; &#x43A;&#x430;&#x43D;&#x430;&#x43B;&#x43E;&#x432; &#x438;&#x437; <code>ethtool -l</code>, &#x438;&#x43C;&#x435;&#x43D;&#x430; IRQ &#x438;&#x437; <code>/proc/interrupts</code>, &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x430;&#x44F; &#x438; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x430;&#x44F; affinity &#x438;&#x437; <code>/proc/irq/*</code>. &#x418;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; <code>effective_affinity_list</code> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; CPU, &#x43A;&#x43E;&#x433;&#x434;&#x430; interrupt managed.</p><p>&#x41F;&#x43E;&#x441;&#x43B;&#x435; NAPI polling &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43F;&#x43E;&#x43F;&#x430;&#x434;&#x430;&#x435;&#x442; &#x432; protocol processing. &#x415;&#x441;&#x43B;&#x438; <code>rps_cpus</code> &#x440;&#x430;&#x432;&#x435;&#x43D; &#x43D;&#x443;&#x43B;&#x44E;, &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43D;&#x430; interrupting CPU. &#x41F;&#x440;&#x438; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;&#x43D;&#x43E;&#x43C; RPS &#x44F;&#x434;&#x440;&#x43E; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; target CPU &#x43F;&#x43E; flow hash &#x438; &#x441;&#x442;&#x430;&#x432;&#x438;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x432; backlog &#x434;&#x440;&#x443;&#x433;&#x43E;&#x433;&#x43E; CPU, &#x43F;&#x43E;&#x441;&#x44B;&#x43B;&#x430;&#x44F; IPI. &#x42D;&#x442;&#x43E; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x440;&#x430;&#x437;&#x433;&#x440;&#x443;&#x437;&#x438;&#x442;&#x44C; &#x433;&#x43E;&#x440;&#x44F;&#x447;&#x435;&#x435; &#x44F;&#x434;&#x440;&#x43E; &#x43D;&#x430; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C; NIC &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;&#x44E;, &#x43D;&#x43E; &#x446;&#x435;&#x43D;&#x430; &#x2014; &#x43C;&#x435;&#x436;&#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x43E;&#x440;&#x43D;&#x44B;&#x435; &#x43F;&#x440;&#x435;&#x440;&#x44B;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x438; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x430;&#x44F; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F; cache locality.</p><p>&#x423; LLM API &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x438; &#x43D;&#x435;&#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;: &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; health check &#x438; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x439; streaming response &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x439; &#x432;&#x435;&#x441; &#x434;&#x43B;&#x44F; hash, &#x43D;&#x43E; &#x441;&#x43E;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x43D;&#x43E; &#x440;&#x430;&#x437;&#x43D;&#x443;&#x44E; &#x436;&#x438;&#x437;&#x43D;&#x44C; &#x432; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x438;. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x440;&#x430;&#x432;&#x43D;&#x43E;&#x43C;&#x435;&#x440;&#x43D;&#x44B;&#x435; IRQ &#x435;&#x449;&#x451; &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x44E;&#x442; &#x440;&#x430;&#x432;&#x43D;&#x43E;&#x43C;&#x435;&#x440;&#x43D;&#x44B;&#x439; userspace. &#x421;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; queue packets, CPU softirq &#x438; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x435; worker sockets. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x434;&#x438;&#x43D; &#x43E;&#x433;&#x440;&#x43E;&#x43C;&#x43D;&#x44B;&#x439; &#x43F;&#x43E;&#x442;&#x43E;&#x43A; &#x434;&#x43E;&#x43C;&#x438;&#x43D;&#x438;&#x440;&#x443;&#x435;&#x442;, RSS &#x43D;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D; &#x440;&#x430;&#x437;&#x440;&#x435;&#x437;&#x430;&#x442;&#x44C; &#x435;&#x433;&#x43E; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x44F;&#x434;&#x440;&#x430;&#x43C;&#x438;: ordering &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; flow &#x432;&#x430;&#x436;&#x43D;&#x435;&#x435; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x43E;&#x439; &#x434;&#x438;&#x430;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x44B;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-inline-02-0949aeda.webp" class="kg-image" alt="RSS, RPS &#x438; IRQ affinity &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; CPU bottleneck" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/rss-rps-irq-llm-api-gateway-inline-02-0949aeda.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/rss-rps-irq-llm-api-gateway-inline-02-0949aeda.webp 1000w, https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-inline-02-0949aeda.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="mechanisms">RSS, RPS, RFS &#x438; XPS: &#x447;&#x442;&#x43E; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x442;&#x44C;</h2>
<p>&#x41D;&#x430;&#x447;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x432;&#x44B;&#x431;&#x43E;&#x440; &#x43F;&#x440;&#x43E;&#x441;&#x442;. &#x415;&#x441;&#x442;&#x44C; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E; hardware RX queues &#x438; &#x43E;&#x43D;&#x438; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x44B; &#x43F;&#x43E; &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x43C; CPU &#x2014; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x430;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; RSS &#x438; IRQ affinity, &#x43D;&#x435; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; RPS &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x430;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;. &#x41E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439; &#x43C;&#x430;&#x43B;&#x43E; &#x438;&#x43B;&#x438; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; NIC &#x43E;&#x442;&#x434;&#x430;&#x451;&#x442; &#x43E;&#x434;&#x438;&#x43D; receive path &#x2014; &#x43F;&#x440;&#x43E;&#x442;&#x435;&#x441;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; RPS &#x43D;&#x430; CPU &#x442;&#x43E;&#x433;&#x43E; &#x436;&#x435; NUMA node. &#x425;&#x43E;&#x442;&#x438;&#x442;&#x435; &#x43F;&#x440;&#x438;&#x431;&#x43B;&#x438;&#x437;&#x438;&#x442;&#x44C; packet processing &#x43A; &#x43F;&#x43E;&#x442;&#x43E;&#x43A;&#x443; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x2014; &#x440;&#x430;&#x441;&#x441;&#x43C;&#x430;&#x442;&#x440;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; RFS, &#x43D;&#x43E; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; worker placement. &#x414;&#x43B;&#x44F; transmit path &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; XPS; &#x43E;&#x43D; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x438; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; receive bottleneck &#x443;&#x441;&#x442;&#x440;&#x430;&#x43D;&#x451;&#x43D;.</p><p>RFS &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; flow table &#x438; &#x441;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x44F; &#x43E; CPU, &#x43D;&#x430; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x43C; userspace &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; socket. &#x415;&#x441;&#x43B;&#x438; scheduler &#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x43E; &#x43C;&#x438;&#x433;&#x440;&#x438;&#x440;&#x443;&#x435;&#x442; gateway worker, &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x434;&#x432;&#x438;&#x436;&#x443;&#x449;&#x435;&#x439;&#x441;&#x44F; &#x446;&#x435;&#x43B;&#x44C;&#x44E;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x435; &#x438;&#x43B;&#x438; &#x445;&#x43E;&#x442;&#x44F; &#x431;&#x44B; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x439;&#x442;&#x435; worker placement, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43E;&#x446;&#x435;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; RFS. Accelerated RFS &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430; &#x438; NIC, &#x430; &#x442;&#x430;&#x43A;&#x436;&#x435; ntuple filtering; &#x44D;&#x442;&#x43E; capability gate, &#x43D;&#x435; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430;.</p><p>&#x41E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x441;&#x435;&#x440;&#x438;&#x438; &#xAB;&#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x43C; &#x432;&#x441;&#x451;&#xBB; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x43D;&#x435;&#x43F;&#x440;&#x438;&#x44F;&#x442;&#x43D;&#x430;: RSS, RPS, irqbalance &#x438; &#x440;&#x443;&#x447;&#x43D;&#x430;&#x44F; affinity &#x43D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x44E;&#x442; &#x442;&#x44F;&#x43D;&#x443;&#x442;&#x44C; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B; &#x432; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x44B;. &#x418;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43D;&#x438;&#x437;&#x438;&#x442;&#x44C; softirq &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; CPU, &#x43D;&#x43E; &#x43F;&#x43E;&#x434;&#x43D;&#x44F;&#x442;&#x44C; IPI, LLC misses &#x438; latency. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x435; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x444;&#x43E;&#x440;&#x43C;&#x443;&#x43B;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43A;&#x430;&#x43A; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x443;: &#xAB;&#x434;&#x432;&#x435; RX queue &#x441;&#x43A;&#x43E;&#x43D;&#x446;&#x435;&#x43D;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x44B; &#x43D;&#x430; CPU 2; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441; IRQ &#x43D;&#x430; CPU 4 &#x438; 6 &#x442;&#x43E;&#x433;&#x43E; &#x436;&#x435; NUMA node &#x441;&#x43D;&#x438;&#x437;&#x438;&#x442; queue pressure &#x431;&#x435;&#x437; &#x440;&#x43E;&#x441;&#x442;&#x430; retransmits&#xBB;. &#x422;&#x430;&#x43A; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43E;&#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x433;&#x43D;&#x443;&#x442;&#x44C;.</p>
<div class="ks-widget" id="ks-tab-rss7m4c"><h3>RSS, RPS &#x438;&#x43B;&#x438; RFS</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="rss">RSS</button><button type="button" class="tab-btn" data-t="rps">RPS</button><button type="button" class="tab-btn" data-t="rfs">RFS</button></div>
<div class="panel on" data-p="rss">&#x412;&#x44B;&#x431;&#x43E;&#x440; RX-&#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x434;&#x435;&#x43B;&#x430;&#x435;&#x442; NIC. &#x41D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x437;&#x434;&#x435;&#x441;&#x44C;, &#x435;&#x441;&#x43B;&#x438; &#x435;&#x441;&#x442;&#x44C; multi-queue &#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x44B; &#x43D;&#x435;&#x440;&#x430;&#x432;&#x43D;&#x43E;&#x43C;&#x435;&#x440;&#x43D;&#x43E;.</div><div class="panel" data-p="rps">&#x42F;&#x434;&#x440;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441;&#x438;&#x442; protocol processing &#x43D;&#x430; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x439; CPU. &#x41F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x43E;, &#x43A;&#x43E;&#x433;&#x434;&#x430; hardware queues &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x430; &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434;&#x44F;&#x449;&#x438;&#x445; CPU, &#x43D;&#x43E; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; IPI.</div><div class="panel" data-p="rfs">&#x41F;&#x43E;&#x442;&#x43E;&#x43A; &#x442;&#x44F;&#x43D;&#x435;&#x442;&#x441;&#x44F; &#x431;&#x43B;&#x438;&#x436;&#x435; &#x43A; CPU, &#x433;&#x434;&#x435; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x447;&#x438;&#x442;&#x430;&#x435;&#x442; socket. &#x42D;&#x442;&#x43E; &#x43E;&#x43F;&#x442;&#x438;&#x43C;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; locality, &#x430; &#x43D;&#x435; &#x43B;&#x435;&#x43A;&#x430;&#x440;&#x441;&#x442;&#x432;&#x43E; &#x43E;&#x442; &#x43D;&#x435;&#x445;&#x432;&#x430;&#x442;&#x43A;&#x438; capacity.</div>
<script>(function(){var r=document.getElementById('ks-tab-rss7m4c');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><h2 id="numa">NUMA &#x438; CPU locality &#x43D;&#x430; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x435;</h2>
<p>&#x41D;&#x430; &#x434;&#x432;&#x443;&#x445;&#x441;&#x43E;&#x43A;&#x435;&#x442;&#x43D;&#x43E;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x435; &#xAB;&#x440;&#x430;&#x437;&#x43C;&#x430;&#x437;&#x430;&#x442;&#x44C; IRQ &#x43F;&#x43E; &#x432;&#x441;&#x435;&#x43C; &#x44F;&#x434;&#x440;&#x430;&#x43C;&#xBB; &#x447;&#x430;&#x441;&#x442;&#x43E; &#x445;&#x443;&#x436;&#x435;, &#x447;&#x435;&#x43C; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; CPU &#x440;&#x44F;&#x434;&#x43E;&#x43C; &#x441; NIC. PCIe-&#x43A;&#x430;&#x440;&#x442;&#x430; &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x43F;&#x440;&#x438;&#x43D;&#x430;&#x434;&#x43B;&#x435;&#x436;&#x438;&#x442; NUMA node; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x43D;&#x44B;&#x435; buffers &#x438; DMA &#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x431;&#x43B;&#x438;&#x436;&#x435; &#x43A; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x443;&#x437;&#x43B;&#x430;. &#x415;&#x441;&#x43B;&#x438; interrupt &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x438;&#x442; &#x43D;&#x430; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; socket, &#x432;&#x44B; &#x43F;&#x43B;&#x430;&#x442;&#x438;&#x442;&#x435; &#x437;&#x430; interconnect traffic &#x438; cache misses. &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; <code>cat /sys/class/net/eth0/device/numa_node</code> &#x434;&#x430;&#x451;&#x442; &#x441;&#x442;&#x430;&#x440;&#x442;&#x43E;&#x432;&#x443;&#x44E; &#x442;&#x43E;&#x447;&#x43A;&#x443;, &#x430; <code>lscpu -e=CPU,NODE,SOCKET,CORE</code> &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x442;&#x43E;&#x43F;&#x43E;&#x43B;&#x43E;&#x433;&#x438;&#x44E;.</p><p>&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; housekeeping, network path &#x438; application workers &#x43D;&#x430;&#x441;&#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E;, &#x43D;&#x430;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x44D;&#x442;&#x43E; &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x435;&#x442; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430;. &#x41D;&#x435; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43F;&#x43E;&#x43B;&#x43E;&#x432;&#x438;&#x43D;&#x443; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x430; &#xAB;&#x43D;&#x430; &#x432;&#x441;&#x44F;&#x43A;&#x438;&#x439; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#xBB;: &#x443; gateway &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; &#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x44B; &#x43E;&#x442; &#x43E;&#x431;&#x449;&#x438;&#x445; cache &#x438; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x43E;&#x433;&#x43E; &#x447;&#x438;&#x441;&#x43B;&#x430; workers. &#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x43D;&#x44B;&#x439; canary &#x2014; &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x438;&#x442;&#x44C; IRQ &#x434;&#x432;&#x443;&#x445; &#x433;&#x43E;&#x440;&#x44F;&#x447;&#x438;&#x445; RX queues &#x43D;&#x430; &#x441;&#x432;&#x43E;&#x431;&#x43E;&#x434;&#x43D;&#x44B;&#x445; CPU &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; NUMA node &#x438; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; baseline. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x44C; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; softirq, &#x43D;&#x43E; &#x438; TTFT, context switches, LLC misses &#x438; network drops.</p><p>&#x414;&#x43B;&#x44F; shared VM &#x444;&#x438;&#x437;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; NUMA topology &#x438; IRQ routing &#x447;&#x430;&#x441;&#x442;&#x438;&#x447;&#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x430;&#x434;&#x43B;&#x435;&#x436;&#x430;&#x442; &#x433;&#x438;&#x43F;&#x435;&#x440;&#x432;&#x438;&#x437;&#x43E;&#x440;&#x443;. &#x412; &#x44D;&#x442;&#x43E;&#x43C; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x435; &#x440;&#x443;&#x447;&#x43D;&#x430;&#x44F; &#x43C;&#x430;&#x441;&#x43A;&#x430; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; &#x433;&#x43E;&#x441;&#x442;&#x44F; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43D;&#x435;&#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x430; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x438; &#x438;&#x43B;&#x438; reboot. VPS &#x438;&#x43B;&#x438; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; edge &#x434;&#x430;&#x451;&#x442; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F; &#x43D;&#x430;&#x434; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44F;&#x43C;&#x438; kernel, NIC queues &#x438; change window, &#x43D;&#x43E; &#x441;&#x430;&#x43C; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; hash, single-flow hotspot &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; GPU. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; control gap; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x440;&#x435;&#x448;&#x430;&#x439;&#x442;&#x435; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x44B;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">map-nic-numa.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>#!/usr/bin/env bash
set -euo pipefail
iface=${1:-eth0}
echo &quot;NIC NUMA node: $(cat /sys/class/net/$iface/device/numa_node)&quot;
lscpu -e=CPU,NODE,SOCKET,CORE,ONLINE
while read -r irq rest; do
  n=${irq%:}
  printf &apos;IRQ %s allowed=%s effective=%s\n&apos; &quot;$n&quot; \
    &quot;$(cat /proc/irq/$n/smp_affinity_list 2&gt;/dev/null || echo n/a)&quot; \
    &quot;$(cat /proc/irq/$n/effective_affinity_list 2&gt;/dev/null || echo n/a)&quot;
done &lt; <(grep "$iface" proc interrupts)< code></(grep></code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; NIC, NUMA &#x438; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x439; IRQ affinity</div>
</div>
<div class="ks-widget" id="ks-chk-num4v8p"><h3>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; NUMA-locality &#x43F;&#x435;&#x440;&#x435;&#x434; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C; affinity</h3>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x41D;&#x430;&#x439;&#x434;&#x435;&#x43D; NUMA node &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x43A;&#x430;&#x440;&#x442;&#x44B;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x421;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x44B; RX queue &#x438; IRQ</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x430; effective_affinity_list</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x418;&#x437;&#x432;&#x435;&#x441;&#x442;&#x43D;&#x44B; CPU gateway workers</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> irqbalance &#x443;&#x447;&#x442;&#x451;&#x43D; &#x438;&#x43B;&#x438; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x43E; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x451;&#x43D;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x451;&#x43D; baseline &#x43F;&#x43E; SLO</label><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-num4v8p');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-inline-03-b2f3267f.webp" class="kg-image" alt="RSS, RPS &#x438; IRQ affinity &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; CPU bottleneck" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/rss-rps-irq-llm-api-gateway-inline-03-b2f3267f.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/rss-rps-irq-llm-api-gateway-inline-03-b2f3267f.webp 1000w, https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-inline-03-b2f3267f.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="metrics">&#x41C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439;: &#x447;&#x442;&#x43E; &#x441;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C;, &#x430; &#x447;&#x435;&#x43C;&#x443; &#x43D;&#x435; &#x432;&#x435;&#x440;&#x438;&#x442;&#x44C;</h2>
<p>&#x41D;&#x430;&#x437;&#x432;&#x430;&#x43D;&#x438;&#x44F; counters &#x437;&#x430;&#x432;&#x438;&#x441;&#x44F;&#x442; &#x43E;&#x442; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43D;&#x435; &#x441;&#x442;&#x440;&#x43E;&#x439;&#x442;&#x435; runbook &#x432;&#x43E;&#x43A;&#x440;&#x443;&#x433; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; <code>rx_queue_0_drops</code>. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; <code>ethtool -S</code>, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43D;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; per-queue packets, bytes, drops, misses &#x438; allocation failures. &#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; <a href="https://docs.kernel.org/networking/statistics.html?ref=kingservers.com">kernel documentation &#x43F;&#x43E; interface statistics</a> &#x43D;&#x430;&#x43F;&#x43E;&#x43C;&#x438;&#x43D;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x447;&#x430;&#x441;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x43D;&#x434;&#x430;&#x440;&#x442;&#x43D;&#x44B;&#x445; counters &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x430; &#x447;&#x435;&#x440;&#x435;&#x437; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x43E;&#x432;; vendor-specific &#x441;&#x442;&#x440;&#x43E;&#x43A;&#x438; &#x442;&#x440;&#x435;&#x431;&#x443;&#x44E;&#x442; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430;.</p><p><code>/proc/net/softnet_stat</code> &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D;, &#x43D;&#x43E; &#x435;&#x433;&#x43E; hex-&#x43F;&#x43E;&#x43B;&#x44F; &#x438; &#x441;&#x435;&#x43C;&#x430;&#x43D;&#x442;&#x438;&#x43A;&#x430; &#x43C;&#x435;&#x43D;&#x44F;&#x43B;&#x438;&#x441;&#x44C; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x432;&#x435;&#x440;&#x441;&#x438;&#x44F;&#x43C;&#x438; kernel. &#x41D;&#x435; &#x43A;&#x43E;&#x43F;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x441;&#x435;&#x440; &#x438;&#x437; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x43E;&#x439; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x438; &#x431;&#x435;&#x437; &#x441;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x441; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x438;&#x43A;&#x430;&#x43C;&#x438; &#x438;&#x43B;&#x438; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x435;&#x439; &#x432;&#x430;&#x448;&#x435;&#x439; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438;. &#x411;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x435;&#x435; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x44C; &#x435;&#x433;&#x43E; <code>sar -n DEV</code>, per-CPU softirq, NIC drops &#x438; application metrics. &#x415;&#x441;&#x43B;&#x438; &#xAB;dropped&#xBB; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;, &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435;, &#x43D;&#x430; &#x43A;&#x430;&#x43A;&#x43E;&#x43C; CPU &#x438; &#x43F;&#x440;&#x438; &#x43A;&#x430;&#x43A;&#x43E;&#x43C; workload &#x44D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x438;&#x441;&#x445;&#x43E;&#x434;&#x438;&#x442;.</p><p>&#x421;&#x43B;&#x435;&#x434;&#x438;&#x442;&#x435; &#x437;&#x430; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435;&#x43C;, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x443;&#x43C;&#x43C;&#x43E;&#x439;. &#x423;&#x441;&#x43B;&#x43E;&#x432;&#x43D;&#x44B;&#x435; 200 &#x442;&#x44B;&#x441;&#x44F;&#x447; interrupts &#x43D;&#x430; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x43D;&#x438;&#x447;&#x435;&#x433;&#x43E; &#x43D;&#x435; &#x433;&#x43E;&#x432;&#x43E;&#x440;&#x44F;&#x442;, &#x435;&#x441;&#x43B;&#x438; 190 &#x442;&#x44B;&#x441;&#x44F;&#x447; &#x43F;&#x440;&#x438;&#x448;&#x43B;&#x438; &#x43D;&#x430; CPU 0. &#x41D;&#x43E; &#x438; &#x438;&#x434;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x440;&#x43E;&#x432;&#x43D;&#x430;&#x44F; &#x433;&#x438;&#x441;&#x442;&#x43E;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x430; &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; SLO: &#x438;&#x43D;&#x43E;&#x433;&#x434;&#x430; worker pool &#x437;&#x430;&#x43A;&#x440;&#x435;&#x43F;&#x43B;&#x451;&#x43D; &#x43D;&#x430; &#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435;&#x43C; CPU set, &#x438; &#x43F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441; packets &#x43D;&#x430; &#x443;&#x434;&#x430;&#x43B;&#x451;&#x43D;&#x43D;&#x44B;&#x435; cores &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x442; cache traffic. &#x425;&#x43E;&#x440;&#x43E;&#x448;&#x438;&#x439; dashboard &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; queue ID &#x2192; IRQ &#x2192; effective CPU &#x2192; softirq CPU &#x2192; gateway worker &#x2192; request outcome. &#x415;&#x441;&#x43B;&#x438; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x430; &#x43E;&#x431;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F;, &#x432;&#x44B;&#x432;&#x43E;&#x434; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x433;&#x438;&#x43F;&#x43E;&#x442;&#x435;&#x437;&#x43E;&#x439;.</p><h2 id="tuning">&#x411;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x430;&#x44F; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; IRQ affinity &#x438; RSS</h2>
<p>&#x41F;&#x435;&#x440;&#x435;&#x434; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C;&#x44E; affinity &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; <code>irqbalance</code>. &#x41E;&#x43D; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; IRQ &#x43D;&#x430; &#x434;&#x440;&#x443;&#x433;&#x438;&#x435; CPU &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x432;&#x430;&#x448;&#x435;&#x433;&#x43E; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F;; &#x44D;&#x442;&#x43E; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x43A;&#x430;&#x43A; &#xAB;&#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; &#x43D;&#x435; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442;&#xBB;, &#x445;&#x43E;&#x442;&#x44F; &#x43A;&#x43E;&#x43D;&#x444;&#x43B;&#x438;&#x43A;&#x442;&#x443;&#x44E;&#x442; &#x434;&#x432;&#x430; owner. &#x41D;&#x435; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; daemon &#x433;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x432;&#x441;&#x43B;&#x435;&#x43F;&#x443;&#x44E;. &#x41B;&#x438;&#x431;&#x43E; &#x437;&#x430;&#x434;&#x430;&#x439;&#x442;&#x435; &#x435;&#x433;&#x43E; policy/ban mask, &#x43B;&#x438;&#x431;&#x43E; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x435; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; canary &#x438; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x44D;&#x442;&#x43E;&#x442; &#x444;&#x430;&#x43A;&#x442; &#x432; runbook. &#x414;&#x43B;&#x44F; managed interrupts &#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C; &#x432; <code>smp_affinity_list</code> &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x430;; &#x44D;&#x442;&#x43E; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430; &#x438; IRQ core.</p><p>&#x418;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; <code>smp_affinity_list</code>, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;: &#x441;&#x43F;&#x438;&#x441;&#x43E;&#x43A; CPU &#x447;&#x438;&#x442;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43B;&#x435;&#x433;&#x447;&#x435;, &#x447;&#x435;&#x43C; hex bitmap. &#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; <a href="https://docs.kernel.org/core-api/irq/irq-affinity.html?ref=kingservers.com">&#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; SMP IRQ affinity</a> &#x43E;&#x43F;&#x438;&#x441;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x431;&#x430; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x430;. &#x41C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x443; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x437;&#x430; &#x440;&#x430;&#x437;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x435;&#x440;&#x435;&#x447;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; <code>effective_affinity_list</code>, &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443; &#x447;&#x442;&#x43E; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x439; <code>echo</code> &#x435;&#x449;&#x451; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x449;&#x435;&#x43D;&#x438;&#x435;.</p><p>RSS indirection table &#x440;&#x435;&#x434;&#x430;&#x43A;&#x442;&#x438;&#x440;&#x443;&#x44E;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; <code>ethtool -X</code>; &#x43A;&#x43E;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x442;&#x432;&#x43E; combined channels &#x2014; &#x447;&#x435;&#x440;&#x435;&#x437; <code>ethtool -L</code>. &#x42D;&#x442;&#x438; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B; &#x437;&#x430;&#x432;&#x438;&#x441;&#x44F;&#x442; &#x43E;&#x442; capability NIC &#x438; &#x434;&#x440;&#x430;&#x439;&#x432;&#x435;&#x440;&#x430; &#x438; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x438;&#x43C;&#x435;&#x43D;&#x43E;&#x432;&#x430;&#x442;&#x44C; IRQ. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; <code>ethtool -l</code>, <code>-x</code> &#x438; interrupt mapping. &#x41D;&#x438;&#x43A;&#x43E;&#x433;&#x434;&#x430; &#x43D;&#x435; &#x432;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x432; automation &#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43D;&#x43E;&#x43C;&#x435;&#x440;&#x430; IRQ, &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x434;&#x43E; reboot &#x438;&#x43B;&#x438; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; channel count.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">irq-affinity-canary.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>#!/usr/bin/env bash
set -euo pipefail
irq=${1:?usage: $0 IRQ CPU_LIST}
cpus=${2:?usage: $0 IRQ CPU_LIST}
old=$(cat /proc/irq/$irq/smp_affinity_list)
printf &apos;%s\n&apos; &quot;$old&quot; &gt; &quot;/run/irq-${irq}.affinity.before&quot;
printf &apos;%s\n&apos; &quot;$cpus&quot; &gt; &quot;/proc/irq/$irq/smp_affinity_list&quot;
printf &apos;allowed=%s effective=%s\n&apos; \
  &quot;$(cat /proc/irq/$irq/smp_affinity_list)&quot; \
  &quot;$(cat /proc/irq/$irq/effective_affinity_list 2&gt;/dev/null || echo n/a)&quot;</code></pre>
<div class="ks-canonical-code-block__caption">&#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440; &#x43E;&#x434;&#x438;&#x43D;&#x43E;&#x447;&#x43D;&#x43E;&#x433;&#x43E; canary; &#x43F;&#x43E;&#x434;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; IRQ &#x438; CPU &#x438;&#x437; &#x441;&#x432;&#x43E;&#x435;&#x439; &#x442;&#x43E;&#x43F;&#x43E;&#x43B;&#x43E;&#x433;&#x438;&#x438;</div>
</div>
<div class="ks-widget" id="ks-sel-can5j1d"><h3>&#x41A;&#x430;&#x43A;&#x43E;&#x439; canary &#x432;&#x44B;&#x431;&#x440;&#x430;&#x442;&#x44C;</h3>
<label>&#x418;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;</label><select data-s><option value="irq">&#x422;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; IRQ affinity</option><option value="rps">RPS &#x43F;&#x43E;&#x432;&#x435;&#x440;&#x445; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; RSS</option><option value="queues">&#x427;&#x438;&#x441;&#x43B;&#x43E; combined channels</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-can5j1d');if(!r)return;var m={"irq":"Один gateway, те же queues и workload; сравните per-CPU softirq, drops и application SLO.","rps":"Начните с одной RX-очереди и CPU того же NUMA node; отдельно считайте IPI и backlog.","queues":"Это более широкое изменение datapath: сохраните ethtool snapshot и проверьте имена IRQ после переключения."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-inline-04-3cf5e5d9.webp" class="kg-image" alt="RSS, RPS &#x438; IRQ affinity &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; CPU bottleneck" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/rss-rps-irq-llm-api-gateway-inline-04-3cf5e5d9.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/rss-rps-irq-llm-api-gateway-inline-04-3cf5e5d9.webp 1000w, https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-inline-04-3cf5e5d9.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="rps">&#x41A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; RPS &#x438; &#x43A;&#x430;&#x43A; &#x43D;&#x435; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x442;&#x44C; IPI storm</h2>
<p>RPS &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43D;&#x435; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; &#x43C;&#x43D;&#x43E;&#x433;&#x43E;&#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x43E;&#x440;&#x43D;&#x44B;&#x439;, &#x430; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#x442;&#x435;&#x43A;&#x443;&#x449;&#x438;&#x439; receive path &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x439; CPU budget. &#x41D;&#x430; NIC &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x439; RX queue &#x43C;&#x430;&#x441;&#x43A;&#x430; <code>rps_cpus</code> &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; protocol processing &#x43F;&#x43E; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x438;&#x43C; cores. &#x41D;&#x430; &#x43F;&#x43E;&#x43B;&#x43D;&#x43E;&#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x43C; RSS &#x441; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;&#x44E; &#x43D;&#x430; CPU &#x442;&#x43E;&#x442; &#x436;&#x435; RPS &#x447;&#x430;&#x441;&#x442;&#x43E; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43B;&#x438;&#x448;&#x43D;&#x438;&#x439; hop. Kernel docs &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x43D;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x44E;&#x442; &#x44D;&#x442;&#x438; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;&#x44B; &#x432;&#x437;&#x430;&#x438;&#x43C;&#x43E;&#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x44E;&#x449;&#x438;&#x43C;&#x438;, &#x43D;&#x43E; &#x43D;&#x435; &#x442;&#x440;&#x435;&#x431;&#x443;&#x44E;&#x442; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; &#x43E;&#x431;&#x430;.</p><p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; CPU &#x442;&#x43E;&#x433;&#x43E; &#x436;&#x435; memory domain &#x438; &#x438;&#x441;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x435; interrupting CPU, &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x43D; &#x443;&#x436;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x433;&#x440;&#x443;&#x436;&#x435;&#x43D;. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44C;&#x442;&#x435; IPI, softirq distribution &#x438; backlog drops. &#x411;&#x43E;&#x43B;&#x44C;&#x448;&#x430;&#x44F; &#x43C;&#x430;&#x441;&#x43A;&#x430; &#x43D;&#x435; &#x433;&#x430;&#x440;&#x430;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43B;&#x443;&#x447;&#x448;&#x438;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;: &#x43F;&#x430;&#x43A;&#x435;&#x442; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x441;&#x435;&#x447;&#x44C; NUMA boundary, &#x430; gateway worker &#x2014; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43D;&#x430; &#x442;&#x440;&#x435;&#x442;&#x44C;&#x435;&#x43C; CPU. &#x414;&#x43B;&#x44F; RFS &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x437;&#x430;&#x434;&#x430;&#x44E;&#x442;&#x441;&#x44F; global <code>rps_sock_flow_entries</code> &#x438; per-queue <code>rps_flow_cnt</code>; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x44B; &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x44E;&#x442; &#x43F;&#x43E;&#x434; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x43E; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x445; flows, &#x430; &#x43D;&#x435; &#x43A;&#x43E;&#x43F;&#x438;&#x440;&#x443;&#x44E;&#x442; &#x438;&#x437; &#x447;&#x443;&#x436;&#x43E;&#x433;&#x43E; 64-core &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x430;.</p><p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; failure mode: &#x43F;&#x43E;&#x441;&#x43B;&#x435; RPS &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A; CPU &#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x441;&#x44F; &#x440;&#x43E;&#x432;&#x43D;&#x435;&#x435;, &#x43D;&#x43E; TTFT &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;. &#x41F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x2014; &#x434;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; IPI &#x438; &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F; locality. &#x41A;&#x43E;&#x43D;&#x442;&#x440;&#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x430;: &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; &#x43C;&#x430;&#x441;&#x43A;&#x443; &#x43E;&#x434;&#x43D;&#x43E;&#x439; canary queue &#x432; &#x43D;&#x43E;&#x43B;&#x44C; &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x442;&#x43E;&#x442; &#x436;&#x435; workload. &#x415;&#x441;&#x43B;&#x438; SLO &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43A; baseline, &#xAB;&#x440;&#x43E;&#x432;&#x43D;&#x44B;&#x439; CPU&#xBB; &#x431;&#x44B;&#x43B; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x441;&#x447;&#x451;&#x442;&#x447;&#x438;&#x43A;&#x430;, &#x430; &#x43D;&#x435; end-to-end &#x432;&#x44B;&#x438;&#x433;&#x440;&#x44B;&#x448;&#x435;&#x43C;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">rps-one-queue-canary.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>#!/usr/bin/env bash
set -euo pipefail
path=${1:-/sys/class/net/eth0/queues/rx-0/rps_cpus}
mask=${2:?pass CPU bitmap, for example 0c}
old=$(cat &quot;$path&quot;)
printf &apos;%s\n&apos; &quot;$old&quot; &gt; /run/rps-rx0.before
printf &apos;%s\n&apos; &quot;$mask&quot; &gt; &quot;$path&quot;
printf &apos;before=%s after=%s\n&apos; &quot;$old&quot; &quot;$(cat &quot;$path&quot;)&quot;</code></pre>
<div class="ks-canonical-code-block__caption">&#x412;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x435; RPS &#x434;&#x43B;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x438; &#x441; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C; rollback</div>
</div>
<h2 id="canary">Canary: &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x43C; peer, fresh connections &#x438; application outcome</h2>
<p>Canary &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43E;&#x434;&#x438;&#x43D; control: IRQ affinity &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x438;&#x43B;&#x438; &#x434;&#x432;&#x443;&#x445; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x435;&#x439;, RPS &#x43E;&#x434;&#x43D;&#x43E;&#x439; queue &#x43B;&#x438;&#x431;&#x43E; RSS indirection weights. &#x41D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; worker count, TLS configuration &#x438; kernel. Baseline &#x438; canary &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x44E;&#x442; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x443;&#x44E; &#x444;&#x43E;&#x440;&#x43C;&#x443; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;, &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x44F; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x435; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x438; &#x434;&#x43B;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; streaming. &#x418;&#x43D;&#x430;&#x447;&#x435; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x438;&#x442;&#x44C; handshake path &#x438; &#x443;&#x445;&#x443;&#x434;&#x448;&#x438;&#x442;&#x44C; &#x443;&#x436;&#x435; &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;, &#x43D;&#x435; &#x437;&#x430;&#x43C;&#x435;&#x442;&#x438;&#x432; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x432; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x435;&#x43C; latency.</p><p>&#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; &#x442;&#x440;&#x438; evidence gate. &#x41F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x2014; kernel path: &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x435; IRQ &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x440;&#x438;&#x445;&#x43E;&#x434;&#x44F;&#x442; &#x43D;&#x430; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x435; CPU, drops &#x43D;&#x435; &#x440;&#x430;&#x441;&#x442;&#x443;&#x442;. &#x412;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x2014; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; peer &#x438; connection lifecycle: fresh connections &#x43F;&#x43E;&#x43F;&#x430;&#x434;&#x430;&#x44E;&#x442; &#x43D;&#x430; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x439; gateway, &#x430; reused connections &#x430;&#x43D;&#x430;&#x43B;&#x438;&#x437;&#x438;&#x440;&#x443;&#x44E;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;. &#x422;&#x440;&#x435;&#x442;&#x438;&#x439; &#x2014; outcome: TTFT, p95/p99, stream completion &#x438; error rate &#x443;&#x43B;&#x443;&#x447;&#x448;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x438;&#x43B;&#x438; &#x445;&#x43E;&#x442;&#x44F; &#x431;&#x44B; &#x43D;&#x435; &#x443;&#x445;&#x443;&#x434;&#x448;&#x430;&#x44E;&#x442;&#x441;&#x44F;. &#x42D;&#x442;&#x430; &#x441;&#x445;&#x435;&#x43C;&#x430; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x43F;&#x43E;&#x434;&#x445;&#x43E;&#x434; &#x438;&#x437; runbook &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/http2-goaway-grpc-keepalive-llm-gateway/">HTTP/2 GOAWAY &#x438; graceful drain</a>: &#x441;&#x43E;&#x431;&#x44B;&#x442;&#x438;&#x435; transport &#x43D;&#x435; &#x440;&#x430;&#x432;&#x43D;&#x43E; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;&#x443; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430;.</p><p>&#x414;&#x43B;&#x44F; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x44C;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; gateway &#x431;&#x435;&#x437; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x439;. &#x414;&#x43B;&#x44F; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x433;&#x43E; &#x442;&#x435;&#x441;&#x442;&#x430; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; canary affinity &#x43A; baseline &#x438; &#x443;&#x431;&#x435;&#x434;&#x438;&#x442;&#x435;&#x441;&#x44C;, &#x447;&#x442;&#x43E; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x434;&#x432;&#x438;&#x436;&#x443;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x43E;. &#x415;&#x441;&#x43B;&#x438; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F;, &#x432;&#x44B;, &#x432;&#x435;&#x440;&#x43E;&#x44F;&#x442;&#x43D;&#x43E;, &#x438;&#x437;&#x43C;&#x435;&#x440;&#x438;&#x43B;&#x438; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x430; &#x438;&#x43B;&#x438; backend, &#x430; &#x43D;&#x435; steering. &#x422;&#x430;&#x43A;&#x43E;&#x439; &#x442;&#x435;&#x441;&#x442; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; autoscaling GPU &#x438;&#x43B;&#x438; client retries &#x43C;&#x435;&#x43D;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x43F;&#x430;&#x440;&#x430;&#x43B;&#x43B;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;.</p><figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-inline-06-beb495b0.webp" class="kg-image" alt="RSS, RPS &#x438; IRQ affinity &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; CPU bottleneck" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/rss-rps-irq-llm-api-gateway-inline-06-beb495b0.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/rss-rps-irq-llm-api-gateway-inline-06-beb495b0.webp 1000w, https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-inline-06-beb495b0.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="failures">&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x435; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x438; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44F; bottleneck</h2>
<p>&#x41F;&#x435;&#x440;&#x432;&#x430;&#x44F; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x430; &#x2014; &#x43B;&#x435;&#x447;&#x438;&#x442;&#x44C; softirq &#x447;&#x438;&#x441;&#x43B;&#x43E;&#x43C; NGINX workers. Userspace &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x43E;&#x437;&#x436;&#x435; &#x432; &#x43F;&#x443;&#x442;&#x438;; worker count &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; socket ownership, &#x43D;&#x43E; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; single RX queue. &#x412;&#x442;&#x43E;&#x440;&#x430;&#x44F; &#x2014; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x432;&#x44B;&#x441;&#x43E;&#x43A;&#x438;&#x439; <code>ksoftirqd</code> &#x437;&#x430; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x443; &#x431;&#x435;&#x437; drops &#x438; SLO correlation. &#x422;&#x440;&#x435;&#x442;&#x44C;&#x44F; &#x2014; &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; irqbalance &#x438; &#x437;&#x430;&#x431;&#x44B;&#x442;&#x44C; &#x43F;&#x440;&#x43E; reboot persistence. &#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x430;&#x44F; &#x2014; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x44C; IRQ &#x43D;&#x430; CPU, &#x433;&#x434;&#x435; &#x443;&#x436;&#x435; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x44E;&#x442; TLS &#x438;&#x43B;&#x438; compression threads.</p><p>&#x414;&#x430;&#x436;&#x435; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x439; steering &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x43F;&#x435;&#x440;&#x435;&#x434;&#x432;&#x438;&#x43D;&#x443;&#x442;&#x44C; bottleneck. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x440;&#x430;&#x437;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438; RX path &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x44F;&#x432;&#x438;&#x442;&#x44C;&#x441;&#x44F; TLS CPU, lock contention proxy, conntrack, egress queue &#x438;&#x43B;&#x438; inference backend. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x43E;&#x441;&#x43B;&#x435; canary &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x43B;&#x43D;&#x44B;&#x439; owner map, &#x430; &#x43D;&#x435; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x430;&#x439;&#x442;&#x435; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x443; &#x43D;&#x430; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x435; softirq. &#x415;&#x441;&#x43B;&#x438; &#x442;&#x435;&#x43F;&#x435;&#x440;&#x44C; &#x440;&#x430;&#x441;&#x442;&#x451;&#x442; handshake CPU, &#x43F;&#x440;&#x438;&#x433;&#x43E;&#x434;&#x438;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; <a href="https://kingservers.com/blog/tls-handshake-storm-llm-api-gateway/">runbook &#x43F;&#x43E; TLS handshake storm</a>. &#x415;&#x441;&#x43B;&#x438; gateway &#x431;&#x44B;&#x441;&#x442;&#x440;&#x43E; &#x43E;&#x442;&#x434;&#x430;&#x451;&#x442; 503 &#x438;&#x43B;&#x438; &#x440;&#x432;&#x451;&#x442; stream &#x43F;&#x43E;&#x441;&#x43B;&#x435; headers, &#x441;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435;&#x441;&#x44C; &#x441; <a href="https://kingservers.com/blog/envoy-llm-overload-circuit-breaker-runbook/">Envoy overload &#x438; backpressure</a>.</p><p>&#x41D;&#x435; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x439;&#x442;&#x435; latency &#x43E;&#x442; &#x43F;&#x43E;&#x43A;&#x443;&#x43F;&#x43A;&#x438; &#x43D;&#x43E;&#x432;&#x43E;&#x433;&#x43E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x430;. &#x412;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; edge &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D; control gap: &#x43D;&#x443;&#x436;&#x43D;&#x44B; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x435; NIC queues, &#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x43D;&#x430;&#x44F; NUMA topology, &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x44B;&#x435; kernel/driver versions &#x438; &#x441;&#x43E;&#x431;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x435; change window. &#x41E;&#x43D; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; poor hash entropy, &#x43E;&#x434;&#x438;&#x43D; &#x434;&#x43E;&#x43C;&#x438;&#x43D;&#x438;&#x440;&#x443;&#x44E;&#x449;&#x438;&#x439; flow, retry storm &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; GPU. &#x42D;&#x442;&#x43E; &#x438; &#x435;&#x441;&#x442;&#x44C; &#x447;&#x435;&#x441;&#x442;&#x43D;&#x44B;&#x439; procurement default: &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x443; &#x434;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x443;&#x447;&#x430;&#x441;&#x442;&#x43A;&#x430; path.</p>
<div class="ks-widget" id="ks-chk-roll8f3n"><h3>Gate &#x43F;&#x435;&#x440;&#x435;&#x434; rollout</h3>
<label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> Baseline &#x441;&#x43D;&#x44F;&#x442; &#x43D;&#x430; &#x442;&#x43E;&#x43C; &#x436;&#x435; workload</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x418;&#x437;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x434;&#x438;&#x43D; &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> Fresh connections &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x44E;&#x442; peer &#x438; outcome</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x41D;&#x435;&#x442; &#x440;&#x43E;&#x441;&#x442;&#x430; drops &#x438; retransmits</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x41A;&#x43E;&#x43D;&#x442;&#x440;&#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x442;&#x435;&#x441;&#x442; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x43A; baseline</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x41A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; rollback &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x430;</label><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-roll8f3n');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><h2 id="rollback">Rollback &#x438; &#x44D;&#x43A;&#x441;&#x43F;&#x43B;&#x443;&#x430;&#x442;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x44B;&#x439; runbook</h2>
<p>Rollback &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x435;&#x43D; rollout. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x435; <code>smp_affinity_list</code>, <code>rps_cpus</code>, RSS indirection table &#x438; channel count &#x434;&#x43E; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x439; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x438;. &#x412;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x439; &#x2014; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x43B;&#x43E;&#x432;&#x438;&#x43D;&#x430; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x434;&#x443;&#x440;&#x44B;: &#x43F;&#x435;&#x440;&#x435;&#x447;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; effective state, &#x441;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; fresh connections &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x435; &#x436;&#x435; SLO probes. &#x421;&#x442;&#x430;&#x440;&#x44B;&#x435; sockets &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x442;&#x44C; &#x436;&#x438;&#x442;&#x44C; &#x43D;&#x430; &#x43F;&#x440;&#x435;&#x436;&#x43D;&#x435;&#x43C; worker &#x438;&#x43B;&#x438; TX queue, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43C;&#x433;&#x43D;&#x43E;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442;&#x430; &#x432;&#x441;&#x435;&#x445; &#x433;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x43E;&#x432; &#x436;&#x434;&#x430;&#x442;&#x44C; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F;.</p><p>&#x41E;&#x43F;&#x438;&#x448;&#x438;&#x442;&#x435; owner &#x438; &#x441;&#x440;&#x43E;&#x43A; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x44F;. &#x41A;&#x442;&#x43E; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; irqbalance? &#x413;&#x434;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x441;&#x44F; persistence &#x2014; systemd unit, tuned profile, NetworkManager dispatcher &#x438;&#x43B;&#x438; provisioning? &#x427;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x438;&#x437;&#x43E;&#x439;&#x434;&#x451;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; kernel/driver &#x438; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x438;&#x43C;&#x451;&#x43D; &#x438;&#x43D;&#x442;&#x435;&#x440;&#x444;&#x435;&#x439;&#x441;&#x43E;&#x432;? &#x420;&#x443;&#x447;&#x43D;&#x43E;&#x439; <code>echo</code> &#x432; production &#x431;&#x435;&#x437; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432; &#x43D;&#x430; &#x44D;&#x442;&#x438; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; &#x441;&#x43A;&#x440;&#x44B;&#x442;&#x443;&#x44E; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44E;.</p><p>&#x41F;&#x43E;&#x440;&#x43E;&#x433; rollback &#x437;&#x430;&#x434;&#x430;&#x432;&#x430;&#x439;&#x442;&#x435; &#x447;&#x435;&#x440;&#x435;&#x437; &#x432;&#x430;&#x448; baseline, &#x43D;&#x435; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;&#x438; &#x447;&#x438;&#x441;&#x43B;&#x430;&#x43C;&#x438;. &#x41F;&#x440;&#x438;&#x43C;&#x435;&#x440;&#x44B; &#x443;&#x441;&#x43B;&#x43E;&#x432;&#x438;&#x439;: &#x440;&#x43E;&#x441;&#x442; RX drops, retransmits, stream aborts, TTFT &#x438;&#x43B;&#x438; &#x43C;&#x435;&#x436;&#x441;&#x43E;&#x43A;&#x435;&#x442;&#x43D;&#x43E;&#x433;&#x43E; memory traffic; &#x438;&#x441;&#x447;&#x435;&#x437;&#x43D;&#x43E;&#x432;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x433;&#x43E; improvement &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x433;&#x43E; &#x442;&#x435;&#x441;&#x442;&#x430;; &#x43A;&#x43E;&#x43D;&#x444;&#x43B;&#x438;&#x43A;&#x442; &#x441; managed IRQ. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x43E;&#x442;&#x43A;&#x430;&#x442;&#x430; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435;, &#x43A;&#x430;&#x43A;&#x43E;&#x439; evidence gate &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x448;&#x451;&#x43B;. &#x42D;&#x442;&#x43E; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x435;&#x435; &#x444;&#x440;&#x430;&#x437;&#x44B; &#xAB;RPS &#x43D;&#x435; &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#xBB;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">rollback-network-steering.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>#!/usr/bin/env bash
set -euo pipefail
irq=${1:?pass IRQ}
if [[ -r /run/irq-${irq}.affinity.before ]]; then
  cat &quot;/run/irq-${irq}.affinity.before&quot; &gt; &quot;/proc/irq/${irq}/smp_affinity_list&quot;
fi
if [[ -r /run/rps-rx0.before ]]; then
  cat /run/rps-rx0.before &gt; /sys/class/net/eth0/queues/rx-0/rps_cpus
fi
cat &quot;/proc/irq/${irq}/smp_affinity_list&quot;
cat &quot;/proc/irq/${irq}/effective_affinity_list&quot; 2&gt;/dev/null || true
cat /sys/class/net/eth0/queues/rx-0/rps_cpus</code></pre>
<div class="ks-canonical-code-block__caption">&#x412;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x451;&#x43D;&#x43D;&#x44B;&#x445; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x439; &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; effective state</div>
</div>
<figure class="kg-card kg-image-card"><img src="https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-inline-07-0435b563.webp" class="kg-image" alt="RSS, RPS &#x438; IRQ affinity &#x434;&#x43B;&#x44F; LLM API gateway: &#x43A;&#x430;&#x43A; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; CPU bottleneck" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/rss-rps-irq-llm-api-gateway-inline-07-0435b563.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/rss-rps-irq-llm-api-gateway-inline-07-0435b563.webp 1000w, https://kingservers.com/blog/content/images/2026/10/rss-rps-irq-llm-api-gateway-inline-07-0435b563.webp 1376w" sizes="(min-width: 720px) 720px"></figure><h2 id="conclusion">&#x412;&#x44B;&#x432;&#x43E;&#x434;: &#x43E;&#x43F;&#x442;&#x438;&#x43C;&#x438;&#x437;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x43F;&#x443;&#x442;&#x44C;, &#x430; &#x43D;&#x435; &#x437;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x443; CPU</h2>
<p>RSS, RPS &#x438; IRQ affinity &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x44B; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43B;&#x438; &#x43A;&#x43E;&#x43D;&#x43A;&#x440;&#x435;&#x442;&#x43D;&#x44B;&#x439; receive-path bottleneck: &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; NIC, interrupt CPU, softirq &#x438; application outcome &#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D;&#x44B; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x43E;&#x439;. &#x41D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x439;&#x442;&#x435; &#x441; &#x430;&#x43F;&#x43F;&#x430;&#x440;&#x430;&#x442;&#x43D;&#x43E;&#x433;&#x43E; RSS &#x438; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x439; IRQ mapping, &#x443;&#x447;&#x438;&#x442;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; NUMA, &#x430; RPS/RFS &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x439;&#x442;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x440;&#x438; &#x43F;&#x43E;&#x43D;&#x44F;&#x442;&#x43D;&#x43E;&#x43C; &#x434;&#x435;&#x444;&#x438;&#x446;&#x438;&#x442;&#x435; hardware queues &#x438;&#x43B;&#x438; locality. &#x420;&#x43E;&#x432;&#x43D;&#x44B;&#x439; CPU-&#x433;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x441;&#x430;&#x43C; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x443;&#x441;&#x43F;&#x435;&#x445;&#x43E;&#x43C;.</p><p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x448;&#x430;&#x433; &#x2014; &#x441;&#x43D;&#x44F;&#x442;&#x44C; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x43C;&#x44B;&#x439; baseline, &#x432;&#x44B;&#x431;&#x440;&#x430;&#x442;&#x44C; &#x43E;&#x434;&#x43D;&#x443; RX queue &#x434;&#x43B;&#x44F; canary &#x438; &#x43F;&#x440;&#x43E;&#x439;&#x442;&#x438; &#x442;&#x440;&#x438; gate: kernel path, fresh-connection peer, SLO. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x442; &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x442;&#x44C;, &#x447;&#x442;&#x43E; &#x44D;&#x444;&#x444;&#x435;&#x43A;&#x442; &#x438;&#x441;&#x447;&#x435;&#x437;&#x430;&#x435;&#x442; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x43E;&#x439;. &#x415;&#x441;&#x43B;&#x438; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x43D;&#x430;&#x434; NIC, kernel &#x438; NUMA &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; &#x44D;&#x43A;&#x441;&#x43F;&#x43B;&#x443;&#x430;&#x442;&#x430;&#x446;&#x438;&#x44E;, &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; VPS &#x438; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; edge &#x43F;&#x43E; ownership, telemetry &#x438; rollback window, &#x430; &#x43D;&#x435; &#x43F;&#x43E; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x44E; &#xAB;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x435; latency&#xBB;.</p><p>&#x412;&#x43E;&#x437;&#x44C;&#x43C;&#x438;&#x442;&#x435; &#x447;&#x435;&#x43A;-&#x43B;&#x438;&#x441;&#x442; &#x438;&#x437; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x438;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x442;&#x435;&#x441;&#x442; &#x432; &#x441;&#x432;&#x43E;&#x451;&#x43C; maintenance window &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x435; &#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x439; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x438;. &#x422;&#x430;&#x43A; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x442;&#x44E;&#x43D;&#x438;&#x43D;&#x433; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x435;&#x442;&#x441;&#x44F; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x43C;&#x44B;&#x43C; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x435;&#x43C;, &#x430; &#x43D;&#x435; &#x43D;&#x43E;&#x432;&#x43E;&#x439; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x43E;&#x439; &#x43D;&#x43E;&#x447;&#x43D;&#x43E;&#x433;&#x43E; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430;.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item><item><title><![CDATA[NAT64 и DNS64 для IPv6-only Kubernetes: доступ к LLM API]]></title><description><![CDATA[Практический runbook NAT64 и DNS64 для IPv6-only Kubernetes: Pref64, Jool, Unbound, проверка маршрута, sessions, TLS, capacity и canary rollout.]]></description><link>https://kingservers.com/blog/nat64-dns64-ipv6-only-kubernetes-llm-api/</link><guid isPermaLink="false">6abe1299aff2afac25354d7f</guid><category><![CDATA[Сетевые протоколы]]></category><dc:creator><![CDATA[Андрей Минин, автор блога]]></dc:creator><pubDate>Mon, 12 Oct 2026 08:41:44 GMT</pubDate><media:content url="https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-hero-8c06cd20.webp" medium="image"/><content:encoded><![CDATA[<div data-ks-component="table-of-contents" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.text-fragment-toc{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border-left:4px solid #60A5FA;padding:24px 20px;margin:40px 0;border-radius:8px;font-size:16px;line-height:1.7;color:#1F2937}
.text-fragment-toc h2{font-size:20px;font-weight:700;color:#0F172A;margin-bottom:16px}
.text-fragment-toc ul{list-style:none;padding:0;margin:0}
.text-fragment-toc li{margin-bottom:10px}
.text-fragment-toc a{text-decoration:none;color:#2563EB;font-weight:500;transition:color .2s;word-break:break-word}
.text-fragment-toc a:hover{color:#1E40AF}
</style>
<div class="text-fragment-toc"><h2>&#x41E;&#x433;&#x43B;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;</h2><ul>
<li><a href="#verdict">&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; &#x432;&#x44B;&#x432;&#x43E;&#x434;: &#x43A;&#x43E;&#x433;&#x434;&#x430; NAT64 &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43D;&#x443;&#x436;&#x435;&#x43D;</a></li>
<li><a href="#symptoms">&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x438;&#x437; effective namespace</a></li>
<li><a href="#architecture">&#x410;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x430; &#x43F;&#x443;&#x442;&#x438;: DNS64 &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; NAT64</a></li>
<li><a href="#dns64">&#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; DNS64: &#x441;&#x438;&#x43D;&#x442;&#x435;&#x437; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x442;&#x430;&#x43C;, &#x433;&#x434;&#x435; &#x43E;&#x43D; &#x43D;&#x443;&#x436;&#x435;&#x43D;</a></li>
<li><a href="#nat64">Stateful NAT64: Pref64, pool4 &#x438; &#x446;&#x435;&#x43D;&#x430; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F;</a></li>
<li><a href="#kubernetes">&#x412;&#x441;&#x442;&#x440;&#x430;&#x438;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x432; Kubernetes: &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;, CNI &#x438; egress policy</a></li>
<li><a href="#validation">Runbook &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438;: DNS &#x2192; route &#x2192; session &#x2192; TLS &#x2192; outcome</a></li>
<li><a href="#failures">&#x41F;&#x44F;&#x442;&#x44C; &#x43E;&#x442;&#x43A;&#x430;&#x437;&#x43E;&#x432;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x437;&#x430; &#xAB;&#x441;&#x43B;&#x43E;&#x43C;&#x430;&#x43D;&#x43D;&#x44B;&#x439; NAT64&#xBB;</a></li>
<li><a href="#rollout">Canary, capacity &#x438; rollback &#x431;&#x435;&#x437; &#x441;&#x43C;&#x435;&#x43D;&#x44B; &#x432;&#x441;&#x435;&#x439; &#x441;&#x435;&#x442;&#x438;</a></li>
<li><a href="#ownership">&#x427;&#x442;&#x43E; &#x43C;&#x43E;&#x43D;&#x438;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x438; &#x43A;&#x43E;&#x43C;&#x443; &#x43E;&#x442;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; on-call</a></li>
<li><a href="#conclusion">&#x418;&#x442;&#x43E;&#x433;: &#x43F;&#x435;&#x440;&#x435;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430;, &#x43D;&#x43E; &#x43D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430;</a></li>
</ul></div>

</div>&#x423; IPv6-only Pod &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; &#x43A; LLM API &#x437;&#x430;&#x432;&#x438;&#x441;&#x430;&#x435;&#x442; &#x434;&#x43E; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x43E;&#x43A;&#x435;&#x43D;&#x430;, &#x445;&#x43E;&#x442;&#x44F; &#x442;&#x43E;&#x442; &#x436;&#x435; URL &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x441; &#x43D;&#x43E;&#x443;&#x442;&#x431;&#x443;&#x43A;&#x430;. &#x427;&#x430;&#x441;&#x442;&#x430;&#x44F; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x430;: &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; endpoint &#x43F;&#x443;&#x431;&#x43B;&#x438;&#x43A;&#x443;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; A-&#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C;, &#x430; &#x443; workload &#x43D;&#x435;&#x442; IPv4-&#x43F;&#x443;&#x442;&#x438;. NAT64 &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; DNS64 &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x44D;&#x442;&#x43E;&#x442; &#x440;&#x430;&#x437;&#x440;&#x44B;&#x432;, &#x43D;&#x43E; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; state, pool &#x43F;&#x43E;&#x440;&#x442;&#x43E;&#x432; &#x438; &#x43D;&#x43E;&#x432;&#x443;&#x44E; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;. &#x420;&#x430;&#x437;&#x431;&#x435;&#x440;&#x451;&#x43C; production-&#x441;&#x445;&#x435;&#x43C;&#x443;, &#x432; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x439; DNS, &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;, translator &#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; API &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x44E;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;, &#x430; rollout &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43E;&#x442;&#x43A;&#x430;&#x442;&#x438;&#x442;&#x44C; &#x431;&#x435;&#x437; &#x433;&#x430;&#x434;&#x430;&#x43D;&#x438;&#x44F;.<div data-ks-component="infrastructure-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
.cpu-final {
  font-family: 'Avenir Next Cyr', sans-serif;
  font-size: 16px;
  color: #1F2937;
  line-height: 1.6;
  margin: 40px 0;
  padding: 24px 28px;
  background-color: #F0F9FF;
  border: 1px solid #BFDBFE;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
}

.cpu-final h3 {
  font-size: 18px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 16px;
}

.cpu-final ul {
  list-style: disc;
  padding-left: 1.4em;
  margin-top: 16px;
  margin-bottom: 0;
}

.cpu-final ul li {
  margin-bottom: 10px;
}

.cpu-final ul li::marker {
  color: #1e90ff;
}
</style>

<div class="cpu-final">
  <h3>&#x413;&#x43E;&#x442;&#x43E;&#x432;&#x44B; &#x43F;&#x435;&#x440;&#x435;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;?</h3>

  <img src="https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-hero-8c06cd20.webp" alt="NAT64 &#x438; DNS64 &#x434;&#x43B;&#x44F; IPv6-only Kubernetes: &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; LLM API"><p>&#x412; King Servers &#x43C;&#x44B; &#x43F;&#x440;&#x435;&#x434;&#x43B;&#x430;&#x433;&#x430;&#x435;&#x43C; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440;&#x44B; &#x43A;&#x430;&#x43A; &#x43D;&#x430; AMD EPYC, &#x442;&#x430;&#x43A; &#x438; &#x43D;&#x430; Intel Xeon, &#x441; &#x433;&#x438;&#x431;&#x43A;&#x438;&#x43C;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44F;&#x43C;&#x438; &#x43F;&#x43E;&#x434; &#x43B;&#x44E;&#x431;&#x44B;&#x435; &#x437;&#x430;&#x434;&#x430;&#x447;&#x438; &#x2014; &#x43E;&#x442; &#x432;&#x438;&#x440;&#x442;&#x443;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x438; &#x432;&#x435;&#x431;-&#x445;&#x43E;&#x441;&#x442;&#x438;&#x43D;&#x433;&#x430; &#x434;&#x43E; S3-&#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449; &#x438; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;&#x43E;&#x432; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;.</p>

  <ul>
    <li>S3-&#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x435; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x43B;&#x438;&#x449;&#x435; &#x434;&#x43B;&#x44F; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43F;&#x438;&#x439;</li>
    <li>&#x41F;&#x430;&#x43D;&#x435;&#x43B;&#x44C; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F;, API, &#x43C;&#x430;&#x441;&#x448;&#x442;&#x430;&#x431;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;</li>
    <li>&#x41F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x443; 24/7 &#x438; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C; &#x432; &#x432;&#x44B;&#x431;&#x43E;&#x440;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x438;</li>
  </ul>
</div>

</div><div data-ks-component="registration-form" data-ks-version="1.0.0" data-ks-canonical="true">
<!-- Подключение Tailwind CSS -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">

<!-- Модальное окно результата -->
<div id="responseModal" class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40">
  <div class="bg-white rounded-xl shadow-xl max-w-sm w-full p-6 text-center">
    <h3 id="responseTitle" class="text-lg font-semibold mb-2">&#x420;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x438;</h3>
    <p id="responseText" class="text-sm text-gray-700 whitespace-pre-wrap break-words">...</p>
    <button onclick="document.getElementById(&apos;responseModal&apos;).classList.add(&apos;hidden&apos;)" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm">
      &#x417;&#x430;&#x43A;&#x440;&#x44B;&#x442;&#x44C;
    </button>
  </div>
</div>

<!-- Форма регистрации -->
<section style="background-color: #ffffff; box-shadow: 0 10px 40px rgba(0,0,0,0.08); border-radius: 28px; max-width: 420px; margin: 24px auto; padding: 16px 20px; font-family: &apos;Avenir Next Cyr&apos;, sans-serif;">
  <h2 class="text-3xl font-extrabold mb-2 text-center text-black">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; &#x430;&#x43A;&#x43A;&#x430;&#x443;&#x43D;&#x442;</h2>
  <p class="text-center mb-6 text-blue-900 text-sm">&#x411;&#x44B;&#x441;&#x442;&#x440;&#x430;&#x44F; &#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x434;&#x43B;&#x44F; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x43A; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x435;</p>

  <form id="registerForm" class="space-y-4">
    <input type="email" name="email" placeholder="&#x412;&#x432;&#x435;&#x434;&#x438;&#x442;&#x435; &#x43F;&#x43E;&#x447;&#x442;&#x443;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <input type="password" name="pass" placeholder="&#x41F;&#x440;&#x438;&#x434;&#x443;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x430;&#x440;&#x43E;&#x43B;&#x44C;" class="w-full py-3 px-4 rounded-xl border border-blue-200 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm placeholder-gray-400" required>

    <label class="flex items-center text-xs gap-2 text-gray-700" style="line-height: 1.4;">
      <input type="checkbox" required checked class="rounded border-gray-300 focus:ring-blue-500">
      <span>&#x42F; &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x435;&#x43D; &#x441; <a href="https://kingservers24x7.com/wp-content/uploads/2022/07/policy.pdf?ref=kingservers.com" style="color: #1e90ff; text-decoration: underline; font-weight: 500;">&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x431;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445;</a></span>
    </label>

    <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 rounded-xl text-sm tracking-wide transition shadow-md">
      &#x417;&#x430;&#x440;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F;
    </button>
  </form>
</section>

<script>
  async function sha256(message) {
    const msgBuffer = new TextEncoder().encode(message);
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  }

  document.getElementById('registerForm').addEventListener('submit', async function(e) {
    e.preventDefault();

    const form = e.target;
    const email = form.email.value.trim();
    const pass = form.pass.value.trim();
    const lang = 'ru';
    const type = 'register';

    const hash = await sha256(email + pass + lang + type);

    const payload = JSON.stringify({
      email,
      pass,
      lang,
      type,
      hash
    });

    fetch('https://control.king-servers.com/includes/api/wp/register.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: payload
    })
    .then(async response => {
      const text = await response.text();
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      if (!response.ok || text.includes('error') || !text.trim()) {
        let parsed;
        try {
          parsed = JSON.parse(text);
        } catch (_) {
          parsed = { responseText: text };
        }

        const errorText = parsed.responseText || parsed.message || text || 'Сервер вернул ошибку';
        title.textContent = 'Ошибка при регистрации';
        message.textContent = errorText;
      } else {
        let successMsg;
        try {
          const parsedSuccess = JSON.parse(text);
          successMsg = parsedSuccess.responseText === 'Success' ? 'Ваш аккаунт успешно создан. Добро пожаловать!' : parsedSuccess.responseText || 'Регистрация прошла успешно';
        } catch (_) {
          successMsg = 'Регистрация прошла успешно';
        }
        title.textContent = 'Успешно';
        message.textContent = successMsg;
      } 

      modal.classList.remove('hidden');
    })
    .catch(error => {
      const modal = document.getElementById('responseModal');
      const title = document.getElementById('responseTitle');
      const message = document.getElementById('responseText');

      title.textContent = 'Ошибка при регистрации';
      message.textContent = error.message || 'Произошла ошибка при отправке формы.';
      modal.classList.remove('hidden');
    });
  });
</script>

</div><h2 id="verdict">&#x41A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x439; &#x432;&#x44B;&#x432;&#x43E;&#x434;: &#x43A;&#x43E;&#x433;&#x434;&#x430; NAT64 &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43D;&#x443;&#x436;&#x435;&#x43D;</h2>
<p>NAT64 &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43D;&#x435; &#x43F;&#x43E;&#x442;&#x43E;&#x43C;&#x443;, &#x447;&#x442;&#x43E; &#xAB;IPv6 &#x441;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x435;&#x435;&#xBB;, &#x430; &#x43A;&#x43E;&#x433;&#x434;&#x430; workload &#x438;&#x43C;&#x435;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; IPv6, &#x430; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441; &#x43F;&#x443;&#x431;&#x43B;&#x438;&#x43A;&#x443;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; IPv4. &#x412; &#x44D;&#x442;&#x43E;&#x43C; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x435; DNS64 &#x441;&#x438;&#x43D;&#x442;&#x435;&#x437;&#x438;&#x440;&#x443;&#x435;&#x442; IPv6-&#x430;&#x434;&#x440;&#x435;&#x441; &#x43D;&#x430;&#x437;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x44F;, &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x432;&#x435;&#x434;&#x451;&#x442; &#x435;&#x433;&#x43E; &#x43A; translator, &#x430; stateful NAT64 &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; IPv4 flow. &#x415;&#x441;&#x43B;&#x438; &#x443; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x439;&#x434;&#x435;&#x440;&#x430; LLM API &#x435;&#x441;&#x442;&#x44C; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x430;&#x44F; AAAA-&#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C;, &#x44D;&#x442;&#x43E;&#x442; &#x442;&#x440;&#x430;&#x43A;&#x442; &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x443;&#x447;&#x430;&#x441;&#x442;&#x432;&#x43E;&#x432;&#x430;&#x442;&#x44C;: &#x43D;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x439; IPv6 &#x43F;&#x440;&#x43E;&#x449;&#x435;, &#x43F;&#x440;&#x43E;&#x437;&#x440;&#x430;&#x447;&#x43D;&#x435;&#x435; &#x438; &#x43D;&#x435; &#x440;&#x430;&#x441;&#x445;&#x43E;&#x434;&#x443;&#x435;&#x442; pool4.</p>
<p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; default &#x43A;&#x43E;&#x43D;&#x441;&#x435;&#x440;&#x432;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x439;: &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x432;&#x435;&#x441;&#x44C; egress &#x447;&#x435;&#x440;&#x435;&#x437; NAT64, &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x43B;&#x438; IPv4-only dependency &#x438;&#x437; namespace &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; Pod. Kubernetes &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x435;&#x442; single-stack IPv6, &#x430; dual-stack networking &#x438;&#x43C;&#x435;&#x435;&#x442; &#x441;&#x442;&#x430;&#x442;&#x443;&#x441; Stable &#x441; &#x432;&#x435;&#x440;&#x441;&#x438;&#x438; 1.23, &#x43E;&#x434;&#x43D;&#x430;&#x43A;&#x43E; &#x441;&#x430;&#x43C;&#x430; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x430; &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; IPv4-only Internet &#x432; IPv6. &#x417;&#x430; &#x44D;&#x442;&#x443; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x443; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x44E;&#x442; DNS64, translator, &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x438; &#x432;&#x430;&#x448;&#x430; CNI-&#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x430;, &#x430; &#x43D;&#x435; Service API.</p>
<p>Disqualifier &#x442;&#x43E;&#x436;&#x435; &#x432;&#x430;&#x436;&#x435;&#x43D;. NAT64 &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; stale DNS &#x432; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x438;, &#x43D;&#x435;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; SNI, retry storm, &#x441;&#x43B;&#x43E;&#x43C;&#x430;&#x43D;&#x43D;&#x443;&#x44E; PMTUD &#x438;&#x43B;&#x438; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; inference. &#x41E;&#x43D; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; stateful control point &#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x443;&#x44E; on-call &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C;. &#x412;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x442;&#x44C; &#x435;&#x433;&#x43E; &#x441;&#x442;&#x43E;&#x438;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x442;&#x43E;&#x433;&#x434;&#x430;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x44D;&#x43A;&#x43E;&#x43D;&#x43E;&#x43C;&#x438;&#x44F; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x440;&#x430;&#x43D;&#x441;&#x442;&#x432;&#x430; &#x438; &#x435;&#x434;&#x438;&#x43D;&#x44B;&#x439; IPv6 dataplane &#x43F;&#x435;&#x440;&#x435;&#x432;&#x435;&#x448;&#x438;&#x432;&#x430;&#x44E;&#x442; &#x441;&#x442;&#x43E;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x44C; &#x44D;&#x442;&#x43E;&#x439; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x438;.</p>
<p>&#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x43C;&#x43E;&#x434;&#x435;&#x43B;&#x44C; &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x430; &#x432; <a href="https://www.rfc-editor.org/rfc/rfc6146.html?ref=kingservers.com">RFC 6146</a> &#x438; <a href="https://www.rfc-editor.org/rfc/rfc6147.html?ref=kingservers.com">RFC 6147</a>. &#x41D;&#x438;&#x436;&#x435; &#x43C;&#x44B; &#x43D;&#x435; &#x441;&#x442;&#x440;&#x43E;&#x438;&#x43C; &#x43B;&#x430;&#x431;&#x43E;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x43D;&#x44B;&#x439; &#x442;&#x440;&#x44E;&#x43A;: &#x446;&#x435;&#x43B;&#x44C; &#x2014; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x443; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x443;&#x44E; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430; &#x438; &#x43F;&#x43E;&#x441;&#x43B;&#x435; rollback.</p><h2 id="symptoms">&#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x434;&#x43E;&#x43A;&#x430;&#x436;&#x438;&#x442;&#x435; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x438;&#x437; effective namespace</h2>
<p>&#x422;&#x438;&#x43F;&#x438;&#x447;&#x43D;&#x44B;&#x439; &#x430;&#x43B;&#x435;&#x440;&#x442; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x440;&#x430;&#x441;&#x43F;&#x43B;&#x44B;&#x432;&#x447;&#x430;&#x442;&#x43E;: SDK &#x43F;&#x438;&#x448;&#x435;&#x442; connection timeout, sidecar &#x43F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; upstream reset, &#x430; &#x431;&#x438;&#x437;&#x43D;&#x435;&#x441; &#x432;&#x438;&#x434;&#x438;&#x442; &#x432;&#x44B;&#x440;&#x43E;&#x441;&#x448;&#x438;&#x439; TTFT. &#x41D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x442;&#x44C; &#x441; &#x443;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43A;&#x438; translator &#x440;&#x430;&#x43D;&#x43E;. &#x417;&#x430;&#x439;&#x434;&#x438;&#x442;&#x435; &#x432; &#x442;&#x43E;&#x442; &#x436;&#x435; network namespace, &#x433;&#x434;&#x435; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;, &#x438; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; A &#x438; AAAA &#x434;&#x43B;&#x44F; &#x442;&#x43E;&#x447;&#x43D;&#x43E;&#x433;&#x43E; hostname. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x439;&#x442;&#x435; fresh connection, &#x447;&#x442;&#x43E;&#x431;&#x44B; pool &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x43D;&#x435; &#x43F;&#x43E;&#x434;&#x43C;&#x435;&#x43D;&#x438;&#x43B; &#x44D;&#x43A;&#x441;&#x43F;&#x435;&#x440;&#x438;&#x43C;&#x435;&#x43D;&#x442; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x43C; &#x441;&#x43E;&#x43A;&#x435;&#x442;&#x43E;&#x43C;.</p>
<p>&#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x430; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; gate. DNS answer &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x43B;&#x438;&#x448;&#x44C; &#x43D;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;, &#x43A;&#x430;&#x43A;&#x43E;&#x439; &#x430;&#x434;&#x440;&#x435;&#x441; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;. Route gate &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442;, &#x43A;&#x443;&#x434;&#x430; &#x44F;&#x434;&#x440;&#x43E; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; synthesized destination. Translation gate &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x435;&#x442; BIB/session &#x43D;&#x430; NAT64 &#x438; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; IPv4 peer. Application gate &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; TLS, HTTP status, &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x442;&#x43E;&#x43A;&#x435;&#x43D; &#x438; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x435; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435; SSE &#x438;&#x43B;&#x438; gRPC stream. &#x41F;&#x440;&#x43E;&#x43F;&#x443;&#x441;&#x43A; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; gate &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x443; &#x432; &#x434;&#x43E;&#x433;&#x430;&#x434;&#x43A;&#x443;.</p>
<p>&#x41C;&#x438;&#x43D;&#x438;-&#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;: Pod &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; A &#x434;&#x43B;&#x44F; API, &#x43D;&#x43E; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43D;&#x43E;&#x443;&#x442;&#x431;&#x443;&#x43A; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442;. &#x42D;&#x442;&#x43E; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x43E; &#x431;&#x43B;&#x43E;&#x43A;&#x438;&#x440;&#x43E;&#x432;&#x43A;&#x438; &#x438; &#x43D;&#x435; &#x43F;&#x43E;&#x432;&#x43E;&#x434; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; firewall. &#x41D;&#x43E;&#x443;&#x442;&#x431;&#x443;&#x43A; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; IPv4, &#x430; Pod &#x2014; single-stack IPv6. &#x412;&#x43D;&#x443;&#x442;&#x440;&#x438; Pod &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; AAAA &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x435;&#x442;&#x441;&#x44F; &#x43F;&#x443;&#x441;&#x442;&#x44B;&#x43C; &#x431;&#x435;&#x437; DNS64, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x434;&#x43E; TCP &#x434;&#x435;&#x43B;&#x43E; &#x43D;&#x435; &#x434;&#x43E;&#x439;&#x434;&#x451;&#x442;. &#x418; &#x43D;&#x430;&#x43E;&#x431;&#x43E;&#x440;&#x43E;&#x442;, synthesized AAAA &#x431;&#x435;&#x437; session &#x43D;&#x430; translator &#x443;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x443;&#x436;&#x435; &#x43D;&#x435; &#x43D;&#x430; DNS, &#x430; &#x43D;&#x430; route &#x438;&#x43B;&#x438; policy.</p>
<style>
.ks-widget{font-family:'Avenir Next Cyr',sans-serif;background:#F9FAFB;border:1px solid #BFDBFE;border-radius:12px;padding:18px 20px;margin:20px 0;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ks-widget h3{font-size:17px;font-weight:700;color:#0F172A;margin:0 0 10px}
.ks-widget .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.ks-widget .tab-btn{border:1px solid #CBD5E1;background:#fff;color:#1F2937;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500}
.ks-widget .tab-btn.on{background:#2563EB;color:#fff;border-color:#1E40AF}
.ks-widget .panel{display:none;font-size:15px;color:#374151;line-height:1.65}
.ks-widget .panel.on{display:block}
.ks-widget label{display:block;font-size:13px;color:#4B5563;margin:10px 0 4px;font-weight:500}
.ks-widget select{max-width:420px;width:100%;padding:8px 10px;border:1px solid #CBD5E1;border-radius:8px;font-size:15px;box-sizing:border-box}
.ks-widget .out{font-weight:600;color:#2563EB;margin-top:10px;font-size:15px;white-space:pre-wrap;line-height:1.5}
</style><div class="ks-widget" id="ks-sel-nat64a1"><h3>&#x41D;&#x443;&#x436;&#x435;&#x43D; &#x43B;&#x438; &#x432;&#x430;&#x43C; NAT64 &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x441;&#x435;&#x439;&#x447;&#x430;&#x441;?</h3>
<label>&#x427;&#x442;&#x43E; &#x443;&#x436;&#x435; &#x438;&#x437;&#x432;&#x435;&#x441;&#x442;&#x43D;&#x43E; &#x43E; &#x441;&#x431;&#x43E;&#x435;</label><select data-s><option value="native">&#x423; API &#x435;&#x441;&#x442;&#x44C; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x439; AAAA</option><option value="v4only">API &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; A-&#x437;&#x430;&#x43F;&#x438;&#x441;&#x44C;&#x44E;</option><option value="unknown">&#x421;&#x435;&#x43C;&#x435;&#x439;&#x441;&#x442;&#x432;&#x43E; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x432; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x43B;&#x438;</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-nat64a1');if(!r)return;var m={"native":"NAT64 не является первым кандидатом: проверяйте нативный IPv6-путь, TLS и приложение.","v4only":"Проверьте DNS64, маршрут к Pref64 и translator. Это подходящий сценарий для NAT64.","unknown":"Сначала сравните dig A и dig AAAA из effective namespace Pod. Без этого менять сеть рано."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">nat64-first-evidence.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>kubectl exec -n ai-egress deploy/llm-client -- sh -ceu &apos;
  getent ahosts api.example.net
  dig +short A api.example.net
  dig +short AAAA api.example.net
  ip -6 route get 64:ff9b::c000:0201
  curl -6 --connect-timeout 5 -sSvo /dev/null https://api.example.net/v1/models
&apos;</code></pre>
<div class="ks-canonical-code-block__caption">&#x411;&#x430;&#x437;&#x43E;&#x432;&#x44B;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x438;&#x437; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x433;&#x43E; Pod</div>
</div>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-01-a2f75b98.webp" class="kg-image" alt="NAT64 &#x438; DNS64 &#x434;&#x43B;&#x44F; IPv6-only Kubernetes: &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; LLM API" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-01-a2f75b98.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-01-a2f75b98.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-01-a2f75b98.webp 1376w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="architecture">&#x410;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x430; &#x43F;&#x443;&#x442;&#x438;: DNS64 &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; NAT64</h2>
<p>&#x412; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x435;&#x439; &#x441;&#x445;&#x435;&#x43C;&#x435; &#x443;&#x447;&#x430;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x442; &#x447;&#x435;&#x442;&#x44B;&#x440;&#x435; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B;&#x445; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x44C;&#x446;&#x430;. &#x420;&#x435;&#x43A;&#x443;&#x440;&#x441;&#x438;&#x432;&#x43D;&#x44B;&#x439; resolver &#x432;&#x438;&#x434;&#x438;&#x442; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441; AAAA, &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x430;&#x435;&#x442; A &#x43E;&#x442; authoritative DNS &#x438;, &#x435;&#x441;&#x43B;&#x438; &#x43D;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x433;&#x43E; AAAA &#x43D;&#x435;&#x442;, &#x441;&#x438;&#x43D;&#x442;&#x435;&#x437;&#x438;&#x440;&#x443;&#x435;&#x442; &#x430;&#x434;&#x440;&#x435;&#x441; &#x441; Pref64. &#x421;&#x435;&#x442;&#x44C; Pod &#x437;&#x43D;&#x430;&#x435;&#x442; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x43A; &#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x440;&#x435;&#x444;&#x438;&#x43A;&#x441;&#x443;. NAT64 gateway &#x438;&#x437;&#x432;&#x43B;&#x435;&#x43A;&#x430;&#x435;&#x442; &#x432;&#x441;&#x442;&#x440;&#x43E;&#x435;&#x43D;&#x43D;&#x44B;&#x439; IPv4 destination, &#x432;&#x44B;&#x431;&#x438;&#x440;&#x430;&#x435;&#x442; source address &#x438; port &#x438;&#x437; pool4 &#x438; &#x445;&#x440;&#x430;&#x43D;&#x438;&#x442; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435;. &#x412;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; API &#x432;&#x438;&#x434;&#x438;&#x442; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x435; IPv4-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x442; translator.</p>
<p>&#x42D;&#x442;&#x430; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x430; &#x432;&#x43E; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442;&#x430;. &#x41D;&#x430;&#x43B;&#x438;&#x447;&#x438;&#x435; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430; &#x432;&#x438;&#x434;&#x430; <code>64:ff9b::/96</code> &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; NAT64 &#x436;&#x438;&#x432;. &#x41E;&#x43D;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x443; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; DNS64. &#x417;&#x430;&#x43F;&#x438;&#x441;&#x44C; session &#x43D;&#x430; translator &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x443;&#x441;&#x43F;&#x435;&#x448;&#x43D;&#x44B;&#x439; inference: TLS &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x438;&#x442;&#x44C;&#x441;&#x44F; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x43E;&#x439;, API &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; 429, &#x430; streaming &#x43E;&#x431;&#x43E;&#x440;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43F;&#x43E;&#x441;&#x43B;&#x435; headers. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x441;&#x43B;&#x43E;&#x451;&#x432; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x441;&#x43A;&#x43B;&#x430;&#x434;&#x44B;&#x432;&#x430;&#x442;&#x44C; &#x432; &#x43E;&#x434;&#x438;&#x43D; &#x437;&#x435;&#x43B;&#x451;&#x43D;&#x44B;&#x439; health check.</p>
<p>RFC 6052 &#x437;&#x430;&#x434;&#x430;&#x451;&#x442; &#x444;&#x43E;&#x440;&#x43C;&#x430;&#x442;&#x44B; IPv4-embedded IPv6 address &#x438; &#x434;&#x43E;&#x43F;&#x443;&#x441;&#x43A;&#x430;&#x435;&#x442; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43B;&#x438;&#x43D; &#x43F;&#x440;&#x435;&#x444;&#x438;&#x43A;&#x441;&#x430;; /96 &#x43B;&#x435;&#x433;&#x447;&#x435; &#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x438; &#x43E;&#x442;&#x43B;&#x430;&#x436;&#x438;&#x432;&#x430;&#x442;&#x44C;. Well-Known Prefix &#x443;&#x434;&#x43E;&#x431;&#x435;&#x43D;, &#x43D;&#x43E; network-specific prefix &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x443;&#x43C;&#x435;&#x441;&#x442;&#x43D;&#x435;&#x435; &#x432; &#x441;&#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x439; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438;. &#x41A;&#x440;&#x438;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x43E; &#x43E;&#x434;&#x43D;&#x43E;: DNS64 &#x438; NAT64 &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x43E;&#x434;&#x438;&#x43D; &#x438; &#x442;&#x43E;&#x442; &#x436;&#x435; Pref64, &#x430; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x442;&#x43E;&#x440;&#x44B; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; &#x432;&#x435;&#x441;&#x44C; &#x44D;&#x442;&#x43E;&#x442; prefix &#x43A; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x43C;&#x443; translator.</p>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; owner map &#x434;&#x43E; rollout. DNS-&#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; &#x441;&#x438;&#x43D;&#x442;&#x435;&#x437; &#x438; DNSSEC policy, network-&#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x2014; &#x437;&#x430; route &#x438; ACL, &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x430; &#x2014; &#x437;&#x430; CNI/egress, &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x435;&#x446; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x2014; &#x437;&#x430; hostname, connection reuse &#x438; retry. &#x41A;&#x43E;&#x433;&#x434;&#x430; &#x43E;&#x434;&#x438;&#x43D; &#x438;&#x43D;&#x436;&#x435;&#x43D;&#x435;&#x440; &#xAB;&#x432;&#x43B;&#x430;&#x434;&#x435;&#x435;&#x442; NAT64 &#x446;&#x435;&#x43B;&#x438;&#x43A;&#x43E;&#x43C;&#xBB;, &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E; &#x43E;&#x434;&#x438;&#x43D; &#x438;&#x437; &#x44D;&#x442;&#x438;&#x445; &#x441;&#x43B;&#x43E;&#x451;&#x432; &#x43E;&#x441;&#x442;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x431;&#x435;&#x437; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x438;.</p>
<div class="ks-widget" id="ks-tab-nat64b2"><h3>&#x413;&#x434;&#x435; &#x437;&#x430;&#x43A;&#x430;&#x43D;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x441;&#x43B;&#x43E;&#x44F;</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="dns">DNS64</button><button type="button" class="tab-btn" data-t="route">&#x41C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;</button><button type="button" class="tab-btn" data-t="xlat">NAT64</button><button type="button" class="tab-btn" data-t="app">&#x41F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435;</button></div><div class="panel on" data-p="dns">&#x421;&#x438;&#x43D;&#x442;&#x435;&#x437;&#x438;&#x440;&#x443;&#x435;&#x442; AAAA &#x438;&#x437; A &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x443; &#x438;&#x43C;&#x435;&#x43D;&#x438; &#x43D;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x433;&#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x43D;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x433;&#x43E; AAAA.</div><div class="panel" data-p="route">&#x414;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x44B; &#x43A; Pref64 &#x43D;&#x430; translator; &#x441;&#x430;&#x43C; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430; &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x43E;&#x431;&#x440;&#x430;&#x437;&#x443;&#x435;&#x442;.</div><div class="panel" data-p="xlat">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x435; &#x438; &#x43E;&#x442;&#x43E;&#x431;&#x440;&#x430;&#x436;&#x430;&#x435;&#x442; IPv6 flow &#x432; IPv4 address:port &#x438;&#x437; pool4.</div><div class="panel" data-p="app">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; TLS, HTTP &#x438; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430;; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x443;&#x441;&#x43F;&#x435;&#x445; &#x435;&#x449;&#x451; &#x43D;&#x435; &#x440;&#x430;&#x432;&#x435;&#x43D; &#x443;&#x441;&#x43F;&#x435;&#x445;&#x443; inference.</div>
<script>(function(){var r=document.getElementById('ks-tab-nat64b2');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><figure class="kg-card kg-image-card kg-width-wide"><img src="https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-02-33a59b6f.webp" class="kg-image" alt="NAT64 &#x438; DNS64 &#x434;&#x43B;&#x44F; IPv6-only Kubernetes: &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; LLM API" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-02-33a59b6f.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-02-33a59b6f.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-02-33a59b6f.webp 1376w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="dns64">&#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x43A;&#x430; DNS64: &#x441;&#x438;&#x43D;&#x442;&#x435;&#x437; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x442;&#x430;&#x43C;, &#x433;&#x434;&#x435; &#x43E;&#x43D; &#x43D;&#x443;&#x436;&#x435;&#x43D;</h2>
<p>&#x414;&#x43B;&#x44F; production &#x443;&#x434;&#x43E;&#x431;&#x435;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; DNS64 resolver &#x438;&#x43B;&#x438; &#x447;&#x451;&#x442;&#x43A;&#x43E; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; view, &#x430; &#x43D;&#x435; &#x433;&#x43B;&#x43E;&#x431;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x43F;&#x43E;&#x434;&#x43C;&#x435;&#x43D;&#x430; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432; &#x434;&#x43B;&#x44F; &#x432;&#x441;&#x435;&#x445; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x43E;&#x432;. Unbound &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43C;&#x43E;&#x434;&#x443;&#x43B;&#x44C; <code>dns64</code>: &#x43E;&#x43D; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432; <code>module-config</code>, &#x430; <code>dns64-prefix</code> &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x43E;&#x432;&#x43F;&#x430;&#x434;&#x430;&#x442;&#x44C; &#x441; translator. &#x417;&#x43D;&#x430;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x43E; &#x443;&#x43C;&#x43E;&#x43B;&#x447;&#x430;&#x43D;&#x438;&#x44E; &#x2014; <code>64:ff9b::/96</code>. &#x41D;&#x435; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x439;&#x442;&#x435; <code>dns64-synthall</code> &#x432; &#x43F;&#x440;&#x43E;&#x434;&#x435;: &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43F;&#x440;&#x44F;&#x43C;&#x43E; &#x43D;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x435;&#x433;&#x43E; debugging feature.</p>
<p>Resolver &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x44C; &#x43D;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x439; AAAA, &#x435;&#x441;&#x43B;&#x438; &#x43E;&#x43D; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442;. &#x42D;&#x442;&#x43E; &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; IPv6-capable API &#x438;&#x434;&#x442;&#x438; &#x43D;&#x430;&#x43F;&#x440;&#x44F;&#x43C;&#x443;&#x44E;, &#x430; translation &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x434;&#x43B;&#x44F; IPv4-only names. &#x412; &#x43F;&#x440;&#x43E;&#x442;&#x438;&#x432;&#x43D;&#x43E;&#x43C; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x435; &#x432;&#x44B; &#x438;&#x441;&#x43A;&#x443;&#x441;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E; &#x442;&#x44F;&#x43D;&#x435;&#x442;&#x435; &#x440;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x439; IPv6 &#x447;&#x435;&#x440;&#x435;&#x437; IPv4 bottleneck &#x438; &#x443;&#x441;&#x43B;&#x43E;&#x436;&#x43D;&#x44F;&#x435;&#x442;&#x435; &#x430;&#x442;&#x440;&#x438;&#x431;&#x443;&#x446;&#x438;&#x44E;. &#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; CNAME chain: &#x441;&#x438;&#x43D;&#x442;&#x435;&#x437; &#x43E;&#x442;&#x43D;&#x43E;&#x441;&#x438;&#x442;&#x441;&#x44F; &#x43A; &#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x43E;&#x43C;&#x443; A RRset, &#x430; &#x43D;&#x435; &#x43A; &#x43A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x43E;&#x43C;&#x443; &#x438;&#x43C;&#x435;&#x43D;&#x438; &#x432; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x435; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F;.</p>
<p>DNSSEC &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x43E;&#x441;&#x43E;&#x437;&#x43D;&#x430;&#x43D;&#x43D;&#x43E;&#x439; &#x441;&#x445;&#x435;&#x43C;&#x44B;. DNS64 &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x432;&#x430;&#x43B;&#x438;&#x434;&#x438;&#x440;&#x443;&#x44E;&#x449;&#x438;&#x439; resolver &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x442;&#x44C; &#x441;&#x438;&#x43D;&#x442;&#x435;&#x437; &#x432; &#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x439; &#x442;&#x43E;&#x447;&#x43A;&#x435; pipeline &#x441;&#x43E;&#x433;&#x43B;&#x430;&#x441;&#x43D;&#x43E; RFC 6147. &#x41D;&#x435; &#x43B;&#x435;&#x447;&#x438;&#x442;&#x435; SERVFAIL &#x43E;&#x442;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x435;&#x43C; validation &#x43D;&#x430;&#x443;&#x433;&#x430;&#x434;. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x43E;&#x433;&#x43E; validating resolver, DNS64 resolver &#x438; authoritative data; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x444;&#x43B;&#x430;&#x433; AD &#x438; &#x43B;&#x43E;&#x433;&#x438; validation. &#x42D;&#x442;&#x43E; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x432;&#x430;&#x436;&#x43D;&#x43E; &#x434;&#x43B;&#x44F; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x433;&#x43E; AI API, &#x433;&#x434;&#x435; endpoint &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; CDN &#x438; &#x43D;&#x430;&#x431;&#x43E;&#x440; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x432;.</p>
<p>TTL synthesized AAAA &#x43D;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x435;&#x43C; &#x436;&#x438;&#x437;&#x43D;&#x438; TCP-&#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x44F;. &#x41A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x441;&#x43A;&#x438;&#x439; pool &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x434;&#x435;&#x440;&#x436;&#x430;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x439; &#x441;&#x43E;&#x43A;&#x435;&#x442; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x441;&#x442;&#x435;&#x447;&#x435;&#x43D;&#x438;&#x44F; DNS cache. &#x42D;&#x442;&#x43E;&#x442; &#x436;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x446;&#x438;&#x43F; &#x440;&#x430;&#x437;&#x43E;&#x431;&#x440;&#x430;&#x43D; &#x432; &#x43C;&#x430;&#x442;&#x435;&#x440;&#x438;&#x430;&#x43B;&#x435; &#x43E; <a href="https://kingservers.com/blog/dns-failover-llm-api-systemd-resolved/">DNS failover &#x434;&#x43B;&#x44F; LLM API</a>: DNS answer, &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; peer &#x438; application outcome &#x43D;&#x443;&#x436;&#x43D;&#x43E; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x442;&#x44C; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">text</span><span class="ks-canonical-code-block__filename">unbound-dns64.conf</span></div>
<pre class="ks-canonical-code-block__pre"><code>server:
  interface: ::0
  access-control: fd20:10:20::/48 allow
  module-config: &quot;dns64 validator iterator&quot;
  dns64-prefix: 64:ff9b::/96
  dns64-synthall: no</code></pre>
<div class="ks-canonical-code-block__caption">&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x444;&#x440;&#x430;&#x433;&#x43C;&#x435;&#x43D;&#x442; Unbound DNS64</div>
</div>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-03-9e5fc162.webp" class="kg-image" alt="NAT64 &#x438; DNS64 &#x434;&#x43B;&#x44F; IPv6-only Kubernetes: &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; LLM API" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-03-9e5fc162.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-03-9e5fc162.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-03-9e5fc162.webp 1376w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="nat64">Stateful NAT64: Pref64, pool4 &#x438; &#x446;&#x435;&#x43D;&#x430; &#x441;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x438;&#x44F;</h2>
<p>Stateful translator &#x43F;&#x43E;&#x445;&#x43E;&#x436; &#x43D;&#x430; &#x43F;&#x440;&#x438;&#x432;&#x44B;&#x447;&#x43D;&#x44B;&#x439; NAPT, &#x43D;&#x43E; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x44F;&#x435;&#x442; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x435; &#x441;&#x435;&#x43C;&#x435;&#x439;&#x441;&#x442;&#x432;&#x430; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x432;. &#x414;&#x43B;&#x44F; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x433;&#x43E; &#x43D;&#x43E;&#x432;&#x43E;&#x433;&#x43E; flow &#x43E;&#x43D; &#x440;&#x435;&#x437;&#x435;&#x440;&#x432;&#x438;&#x440;&#x443;&#x435;&#x442; IPv4 transport address &#x438; port, &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442; Binding Information Base &#x438; session state. Jool &#x43D;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; IPv4 transport pool &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446;&#x435;&#x439; <code>pool4</code>. &#x418;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43E;&#x43D;&#x430; &#x43E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x439; source address &#x438; &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x443;&#x44E; port capacity, &#x430; &#x43D;&#x435; DNS64.</p>
<p>&#x412; Jool NAT64 &#x43F;&#x440;&#x435;&#x444;&#x438;&#x43A;&#x441; &#x437;&#x430;&#x434;&#x430;&#x451;&#x442;&#x441;&#x44F; &#x43F;&#x440;&#x438; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x438; instance. &#x414;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x43F;&#x440;&#x435;&#x434;&#x443;&#x43F;&#x440;&#x435;&#x436;&#x434;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x434;&#x43B;&#x44F; NAT64 &#x435;&#x433;&#x43E; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x43D;&#x430; &#x436;&#x438;&#x432;&#x43E;&#x439; instance &#x438;&#x437;-&#x437;&#x430; &#x441;&#x438;&#x43D;&#x445;&#x440;&#x43E;&#x43D;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438;. &#x417;&#x43D;&#x430;&#x447;&#x438;&#x442;, &#x441;&#x43C;&#x435;&#x43D;&#x430; Pref64 &#x2014; &#x44D;&#x442;&#x43E; &#x43C;&#x438;&#x433;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x441; &#x43D;&#x43E;&#x432;&#x44B;&#x43C; &#x44D;&#x43A;&#x437;&#x435;&#x43C;&#x43F;&#x43B;&#x44F;&#x440;&#x43E;&#x43C; &#x438; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x43E;&#x43C;, &#x430; &#x43D;&#x435; &#x431;&#x435;&#x437;&#x43E;&#x431;&#x438;&#x434;&#x43D;&#x44B;&#x439; update flag. &#x41A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x443;&#x440;&#x430;&#x446;&#x438;&#x44E; &#x434;&#x435;&#x43B;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x43E;&#x441;&#x442;&#x43E;&#x44F;&#x43D;&#x43D;&#x43E;&#x439; &#x447;&#x435;&#x440;&#x435;&#x437; &#x448;&#x442;&#x430;&#x442;&#x43D;&#x44B;&#x439; systemd/config &#x43C;&#x435;&#x445;&#x430;&#x43D;&#x438;&#x437;&#x43C; &#x434;&#x438;&#x441;&#x442;&#x440;&#x438;&#x431;&#x443;&#x442;&#x438;&#x432;&#x430;; tutorial-&#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B; &#x441;&#x430;&#x43C;&#x438; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; reboot &#x43D;&#x435; &#x43F;&#x435;&#x440;&#x435;&#x436;&#x438;&#x432;&#x430;&#x44E;&#x442;.</p>
<p>&#x41E;&#x434;&#x438;&#x43D; IPv4 address &#x43D;&#x435; &#x440;&#x430;&#x432;&#x435;&#x43D; &#x431;&#x435;&#x441;&#x43A;&#x43E;&#x43D;&#x435;&#x447;&#x43D;&#x43E;&#x43C;&#x443; egress. &#x414;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x435; SSE/gRPC connections &#x443;&#x434;&#x435;&#x440;&#x436;&#x438;&#x432;&#x430;&#x44E;&#x442; mapping, &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x438;&#x435; retries &#x441;&#x43E;&#x437;&#x434;&#x430;&#x44E;&#x442; churn, &#x430; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; tenant &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x43A;&#x43E;&#x43D;&#x43A;&#x443;&#x440;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x437;&#x430; &#x43E;&#x434;&#x438;&#x43D; pool. &#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x439;&#x442;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x43E; BIB entries &#x438; sessions &#x43F;&#x43E; &#x43F;&#x440;&#x43E;&#x442;&#x43E;&#x43A;&#x43E;&#x43B;&#x430;&#x43C;, &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x430;&#x43B;&#x43B;&#x43E;&#x43A;&#x430;&#x446;&#x438;&#x438;, drops, TCP state &#x438; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x43F;&#x43E;&#x440;&#x442;&#x43E;&#x432; &#x43D;&#x430; &#x43A;&#x430;&#x436;&#x434;&#x43E;&#x43C; pool4 address. &#x415;&#x441;&#x43B;&#x438; exhaustion &#x43F;&#x440;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x434; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439;, &#x434;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; CPU &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x434;&#x435;&#x444;&#x438;&#x446;&#x438;&#x442; transport tuples.</p>
<p>&#x41D;&#x430;&#x447;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; TCP, UDP &#x438; ICMP &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;. HTTPS &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; TCP, &#x43D;&#x43E; DNS, telemetry &#x438; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x435; &#x438;&#x43D;&#x441;&#x442;&#x440;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x44B; &#x43C;&#x43E;&#x433;&#x443;&#x442; &#x438;&#x434;&#x442;&#x438; &#x438;&#x43D;&#x430;&#x447;&#x435;. PMTU &#x438; ICMP translation &#x43A;&#x440;&#x438;&#x442;&#x438;&#x447;&#x43D;&#x44B; &#x434;&#x43B;&#x44F; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x445; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x432;: &#x43F;&#x43E;&#x442;&#x435;&#x440;&#x44F;&#x43D;&#x43D;&#x44B;&#x439; ICMPv6 Packet Too Big &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x442;&#x44C; handshake &#x440;&#x430;&#x431;&#x43E;&#x447;&#x438;&#x43C;, &#x430; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x43E;&#x439; streaming payload &#x2014; &#x437;&#x430;&#x432;&#x438;&#x441;&#x448;&#x438;&#x43C;. &#x42D;&#x442;&#x43E; &#x442;&#x43E;&#x442; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#xAB;curl /health &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442;&#xBB; &#x434;&#x430;&#x451;&#x442; &#x43B;&#x43E;&#x436;&#x43D;&#x43E;&#x435; &#x441;&#x43F;&#x43E;&#x43A;&#x43E;&#x439;&#x441;&#x442;&#x432;&#x438;&#x435;.</p>
<div class="ks-widget" id="ks-chk-nat64c3"><h3>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; translator &#x43F;&#x435;&#x440;&#x435;&#x434; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A;&#x43E;&#x43C;</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> Pref64 &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432; &#x432; DNS64 &#x438; NAT64</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x41C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x43A; Pref64 &#x432;&#x435;&#x434;&#x451;&#x442; &#x43D;&#x430; &#x43D;&#x443;&#x436;&#x43D;&#x44B;&#x439; gateway</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> pool4 &#x43D;&#x435; &#x437;&#x430;&#x43D;&#x44F;&#x442; &#x434;&#x440;&#x443;&#x433;&#x438;&#x43C;&#x438; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x430;&#x43C;&#x438;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> TCP, UDP &#x438; ICMP-&#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x44B; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x42D;&#x43A;&#x441;&#x43F;&#x43E;&#x440;&#x442;&#x438;&#x440;&#x443;&#x44E;&#x442;&#x441;&#x44F; BIB/session &#x438; drop-&#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438;</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> &#x415;&#x441;&#x442;&#x44C; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; rollback-&#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;</label><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-nat64c3');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">jool-nat64-check.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>sudo modprobe jool
sudo jool instance add &quot;ai-egress&quot; --netfilter --pool6 64:ff9b::/96
sudo jool -i &quot;ai-egress&quot; pool4 add --tcp 203.0.113.10 1024-65535
sudo jool -i &quot;ai-egress&quot; pool4 add --udp 203.0.113.10 1024-65535

sudo jool instance display
sudo jool -i &quot;ai-egress&quot; pool4 display
sudo jool -i &quot;ai-egress&quot; bib display --tcp
sudo jool -i &quot;ai-egress&quot; session display --tcp</code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x43E;&#x437;&#x434;&#x430;&#x43D;&#x438;&#x435; &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; Jool NAT64 instance</div>
</div>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-04-1a2f8821.webp" class="kg-image" alt="NAT64 &#x438; DNS64 &#x434;&#x43B;&#x44F; IPv6-only Kubernetes: &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; LLM API" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-04-1a2f8821.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-04-1a2f8821.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-04-1a2f8821.webp 1376w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="kubernetes">&#x412;&#x441;&#x442;&#x440;&#x430;&#x438;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x432; Kubernetes: &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;, CNI &#x438; egress policy</h2>
<p>Kubernetes &#x43A;&#x43B;&#x430;&#x441;&#x441;&#x438;&#x444;&#x438;&#x446;&#x438;&#x440;&#x443;&#x435;&#x442; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440; &#x43F;&#x43E; IP families, &#x437;&#x430;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x43D;&#x44B;&#x43C; &#x432; Pod, Service &#x438; Node objects. &#x414;&#x43E;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x430;&#x434;&#x440;&#x435;&#x441; &#x43D;&#x430; host interface &#x441;&#x430;&#x43C; &#x43F;&#x43E; &#x441;&#x435;&#x431;&#x435; &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; IPv6-only cluster &#x432; dual stack. &#x41E;&#x444;&#x438;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x430;&#x44F; &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x430;&#x446;&#x438;&#x44F; &#x442;&#x430;&#x43A;&#x436;&#x435; &#x442;&#x440;&#x435;&#x431;&#x443;&#x435;&#x442; &#x43F;&#x43E;&#x434;&#x434;&#x435;&#x440;&#x436;&#x43A;&#x438; IPv6 &#x441;&#x43E; &#x441;&#x442;&#x43E;&#x440;&#x43E;&#x43D;&#x44B; CNI. &#x41F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x441;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x437;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; Pod CIDR, Service CIDR, node addresses &#x438; &#x43F;&#x43E;&#x432;&#x435;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; dataplane, &#x430; &#x443;&#x436;&#x435; &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x440;&#x43E;&#x435;&#x43A;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; Pref64.</p>
<p>&#x415;&#x441;&#x442;&#x44C; &#x434;&#x432;&#x430; &#x440;&#x430;&#x441;&#x43F;&#x440;&#x43E;&#x441;&#x442;&#x440;&#x430;&#x43D;&#x451;&#x43D;&#x43D;&#x44B;&#x445; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x449;&#x435;&#x43D;&#x438;&#x44F; translator: &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x430;&#x44F; gateway-&#x43F;&#x430;&#x440;&#x430; &#x438;&#x43B;&#x438; egress nodes &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; &#x43F;&#x43B;&#x430;&#x442;&#x444;&#x43E;&#x440;&#x43C;&#x44B;. &#x412;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; gateway &#x434;&#x430;&#x451;&#x442; &#x44F;&#x441;&#x43D;&#x44B;&#x439; failure domain &#x438; &#x43D;&#x435;&#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x44B;&#x439; lifecycle. Egress node &#x443;&#x43F;&#x440;&#x43E;&#x449;&#x430;&#x435;&#x442; &#x431;&#x43B;&#x438;&#x437;&#x43E;&#x441;&#x442;&#x44C; &#x43A; Pod, &#x43D;&#x43E; &#x441;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; translation &#x441; scheduling, upgrades &#x438; &#x43F;&#x43E;&#x43B;&#x438;&#x442;&#x438;&#x43A;&#x43E;&#x439; CNI. &#x412; &#x43E;&#x431;&#x43E;&#x438;&#x445; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x44F;&#x445; &#x43D;&#x443;&#x436;&#x435;&#x43D; next hop &#x434;&#x43B;&#x44F; Pref64, &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x439; IPv4 route &#x43A; pool4 address &#x438; firewall, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x435;&#x442; &#x442;&#x440;&#x430;&#x43D;&#x437;&#x438;&#x442;&#x43D;&#x44B;&#x439; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x438; management plane.</p>
<p>FQDN policy &#x43D;&#x435; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442; DNS64. &#x41E;&#x43D;&#x430; &#x440;&#x435;&#x448;&#x430;&#x435;&#x442;, &#x43A;&#x430;&#x43A;&#x438;&#x435; destinations &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x435;&#x43D;&#x44B; workload, &#x43D;&#x43E; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x443;&#x432;&#x438;&#x434;&#x435;&#x442;&#x44C; &#x442;&#x435; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; dataplane. &#x415;&#x441;&#x43B;&#x438; CNI &#x43A;&#x44D;&#x448;&#x438;&#x440;&#x443;&#x435;&#x442; DNS answers, &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; &#x43A;&#x44D;&#x448; endpoint &#x441; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x43E;&#x43C; resolver. &#x41F;&#x43E;&#x434;&#x440;&#x43E;&#x431;&#x43D;&#x430;&#x44F; &#x441;&#x445;&#x435;&#x43C;&#x430; &#x442;&#x430;&#x43A;&#x43E;&#x439; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x435;&#x441;&#x442;&#x44C; &#x432; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x435; &#x43E; <a href="https://kingservers.com/blog/cilium-fqdn-egress-llm-api-dns-cache/">Cilium FQDN egress &#x434;&#x43B;&#x44F; LLM API</a>. &#x414;&#x43B;&#x44F; canary &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x440;&#x430;&#x437;&#x440;&#x435;&#x448;&#x451;&#x43D;&#x43D;&#x44B;&#x439; IPv4-only hostname &#x438; &#x437;&#x430;&#x43F;&#x440;&#x435;&#x449;&#x451;&#x43D;&#x43D;&#x44B;&#x439; hostname &#x43A;&#x430;&#x43A; negative control.</p>
<p>&#x41D;&#x435; &#x437;&#x430;&#x432;&#x44F;&#x437;&#x44B;&#x432;&#x430;&#x439;&#x442;&#x435; route &#x43D;&#x430; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x44B;&#x439; node, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; drained. &#x418;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439;&#x442;&#x435; &#x443;&#x441;&#x442;&#x43E;&#x439;&#x447;&#x438;&#x432;&#x44B;&#x439; next hop, ECMP &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x440;&#x438; &#x441;&#x43E;&#x432;&#x43C;&#x435;&#x441;&#x442;&#x438;&#x43C;&#x43E;&#x439; state symmetry &#x438;&#x43B;&#x438; state sharing, &#x438; health withdrawal, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;, &#x430; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43D;&#x43E;&#x441;&#x442;&#x44C; translator &#x441;&#x43E;&#x437;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; &#x43D;&#x43E;&#x432;&#x44B;&#x435; sessions. &#x410;&#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x43D;&#x44B;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x447;&#x435;&#x440;&#x435;&#x437; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439; stateful gateway &#x447;&#x430;&#x441;&#x442;&#x43E; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x43A;&#x430;&#x43A; &#x440;&#x435;&#x434;&#x43A;&#x438;&#x439; TCP reset &#x438; &#x43E;&#x441;&#x43E;&#x431;&#x435;&#x43D;&#x43D;&#x43E; &#x431;&#x43E;&#x43B;&#x44C;&#x43D;&#x43E; &#x43F;&#x440;&#x43E;&#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43D;&#x430; streaming.</p><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">kubernetes-ip-family-audit.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>kubectl get nodes -o wide
kubectl get pods -A -o wide
kubectl get svc -A -o custom-columns=NS:.metadata.namespace,NAME:.metadata.name,FAMILIES:.spec.ipFamilies,IPS:.spec.clusterIPs

kubectl exec -n ai-egress deploy/llm-client --   ip -6 route get 64:ff9b::c000:0201
kubectl exec -n ai-egress deploy/llm-client --   tracepath6 -n 64:ff9b::c000:0201</code></pre>
<div class="ks-canonical-code-block__caption">&#x410;&#x443;&#x434;&#x438;&#x442; &#x441;&#x435;&#x43C;&#x435;&#x439;&#x441;&#x442;&#x432;&#x430; &#x430;&#x434;&#x440;&#x435;&#x441;&#x43E;&#x432; &#x438; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x430; &#x438;&#x437; Pod</div>
</div>
<h2 id="validation">Runbook &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438;: DNS &#x2192; route &#x2192; session &#x2192; TLS &#x2192; outcome</h2>
<p>&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D; hostname &#x438; &#x43E;&#x434;&#x438;&#x43D; request id &#x43F;&#x43E; &#x432;&#x441;&#x435;&#x439; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x435;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x435; A &#x438; AAAA &#x447;&#x435;&#x440;&#x435;&#x437; &#x442;&#x43E;&#x442; resolver, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x437;&#x430;&#x43F;&#x438;&#x441;&#x430;&#x43D; &#x432; <code>/etc/resolv.conf</code> Pod. &#x415;&#x441;&#x43B;&#x438; AAAA synthesized, &#x438;&#x437;&#x432;&#x43B;&#x435;&#x43A;&#x438;&#x442;&#x435; embedded IPv4 &#x438; &#x441;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x441; A. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; route &#x43A; &#x430;&#x434;&#x440;&#x435;&#x441;&#x443; &#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x438;&#x442;&#x435; session table &#x43D;&#x430; translator. &#x422;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x43E;&#x44F;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; state &#x43F;&#x435;&#x440;&#x435;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x43A; TLS &#x438; HTTP.</p>
<p>TLS-&#x442;&#x435;&#x441;&#x442; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x44F;&#x439;&#x442;&#x435; &#x441; &#x438;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x43C; hostname, &#x438;&#x43D;&#x430;&#x447;&#x435; &#x432;&#x44B; &#x43C;&#x435;&#x43D;&#x44F;&#x435;&#x442;&#x435; SNI &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443; &#x441;&#x435;&#x440;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442;&#x430;. &#x421;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x43A; synthesized IP &#x441; <code>Host</code> header, &#x43D;&#x43E; &#x431;&#x435;&#x437; &#x43A;&#x43E;&#x440;&#x440;&#x435;&#x43A;&#x442;&#x43D;&#x43E;&#x433;&#x43E; SNI, &#x43D;&#x435; &#x44D;&#x43A;&#x432;&#x438;&#x432;&#x430;&#x43B;&#x435;&#x43D;&#x442;&#x43D;&#x43E; SDK. &#x414;&#x43B;&#x44F; streaming endpoint &#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x44F; &#x434;&#x43E; headers, &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; data frame &#x438; &#x43D;&#x43E;&#x440;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435;. Reset &#x43F;&#x43E;&#x441;&#x43B;&#x435; headers &#x2014; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; failure mode, &#x435;&#x433;&#x43E; &#x43D;&#x435;&#x43B;&#x44C;&#x437;&#x44F; &#x441;&#x447;&#x438;&#x442;&#x430;&#x442;&#x44C; &#x43E;&#x431;&#x44B;&#x447;&#x43D;&#x44B;&#x43C; connect error &#x438; &#x431;&#x435;&#x437;&#x443;&#x441;&#x43B;&#x43E;&#x432;&#x43D;&#x43E; retry.</p>
<p>&#x41D;&#x443;&#x436;&#x43D;&#x44B; &#x434;&#x432;&#x430; &#x43E;&#x442;&#x440;&#x438;&#x446;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44F;. Native IPv6 endpoint &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43E;&#x431;&#x445;&#x43E;&#x434;&#x438;&#x442;&#x44C; NAT64 &#x438; &#x43D;&#x435; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; session. &#x417;&#x430;&#x432;&#x435;&#x434;&#x43E;&#x43C;&#x43E; &#x437;&#x430;&#x43F;&#x440;&#x435;&#x449;&#x451;&#x43D;&#x43D;&#x44B;&#x439; hostname &#x438;&#x43B;&#x438; destination &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43E;&#x441;&#x442;&#x430;&#x432;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43D;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x43D;&#x44B;&#x43C;. &#x415;&#x441;&#x43B;&#x438; &#x43E;&#x431;&#x430; &#x442;&#x435;&#x441;&#x442;&#x430; &#xAB;&#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x44F;&#x442;&#xBB; &#x447;&#x435;&#x440;&#x435;&#x437; &#x43E;&#x434;&#x438;&#x43D; gateway, policy &#x448;&#x438;&#x440;&#x435; &#x43E;&#x436;&#x438;&#x434;&#x430;&#x435;&#x43C;&#x43E;&#x439;. &#x415;&#x449;&#x451; &#x43E;&#x434;&#x438;&#x43D; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; &#x2014; fresh client &#x431;&#x435;&#x437; connection pool: &#x43E;&#x43D; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; &#x43D;&#x43E;&#x432;&#x44B;&#x439; DNS/route &#x43E;&#x442; &#x443;&#x436;&#x435; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x43E;&#x433;&#x43E; transport.</p>
<p>&#x421;&#x43E;&#x431;&#x435;&#x440;&#x438;&#x442;&#x435; evidence &#x432; &#x43E;&#x434;&#x438;&#x43D; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E;&#x439; &#x440;&#x44F;&#x434;: query/answer, selected destination, route next hop, BIB/session tuple, TLS result, HTTP status &#x438; application latency. &#x41D;&#x435; &#x43F;&#x44B;&#x442;&#x430;&#x439;&#x442;&#x435;&#x441;&#x44C; &#x432;&#x44B;&#x432;&#x435;&#x441;&#x442;&#x438; &#x443;&#x43B;&#x443;&#x447;&#x448;&#x435;&#x43D;&#x438;&#x435; SLO &#x438;&#x437; &#x440;&#x43E;&#x441;&#x442;&#x430; sessions. Translator &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43D;&#x43E; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; state, &#x43F;&#x43E;&#x43A;&#x430; upstream &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; 429 &#x438;&#x43B;&#x438; GPU queue &#x440;&#x430;&#x441;&#x442;&#x451;&#x442;.</p>
<div class="ks-widget" id="ks-tab-nat64d4"><h3>&#x427;&#x442;&#x43E; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43A;&#x430;&#x436;&#x434;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430;</h3>
<div class="tabs"><button type="button" class="tab-btn on" data-t="answer">DNS answer</button><button type="button" class="tab-btn" data-t="peer">Remote peer</button><button type="button" class="tab-btn" data-t="tls">TLS</button><button type="button" class="tab-btn" data-t="outcome">Outcome</button></div><div class="panel on" data-p="answer">&#x41F;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x43A;&#x430;&#x43A;&#x43E;&#x439; &#x430;&#x434;&#x440;&#x435;&#x441; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x43B; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; Pod, &#x43D;&#x43E; &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442;, &#x447;&#x442;&#x43E; &#x43F;&#x443;&#x442;&#x44C; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x430;&#x435;&#x442;.</div><div class="panel" data-p="peer">&#x41F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x436;&#x434;&#x430;&#x435;&#x442; synthesized IPv6 destination &#x438; &#x444;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x43E;&#x435; &#x441;&#x43E;&#x435;&#x434;&#x438;&#x43D;&#x435;&#x43D;&#x438;&#x435; &#x447;&#x435;&#x440;&#x435;&#x437; translator.</div><div class="panel" data-p="tls">&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44F;&#x435;&#x442; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44E; &#x43E;&#x442; SNI, &#x441;&#x435;&#x440;&#x442;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x442;&#x430; &#x438; &#x434;&#x43E;&#x432;&#x435;&#x440;&#x438;&#x44F; CA.</div><div class="panel" data-p="outcome">&#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; HTTP status, &#x43F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x431;&#x430;&#x439;&#x442; &#x438; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435; streaming-&#x43E;&#x442;&#x432;&#x435;&#x442;&#x430; &#x431;&#x435;&#x437; &#x43E;&#x431;&#x440;&#x44B;&#x432;&#x430;.</div>
<script>(function(){var r=document.getElementById('ks-tab-nat64d4');if(!r)return;var btns=[].slice.call(r.querySelectorAll('[data-t]'));var panels=[].slice.call(r.querySelectorAll('[data-p]'));function show(k){btns.forEach(function(b){b.classList.toggle('on',b.getAttribute('data-t')===k)});panels.forEach(function(p){p.classList.toggle('on',p.getAttribute('data-p')===k)});}btns.forEach(function(b){b.onclick=function(){show(b.getAttribute('data-t'));};});})();</script></div><style>
.ks-canonical-code-block{font-family:'Avenir Next Cyr',sans-serif;margin:18px 0;border-radius:12px;overflow:hidden;background:#0f172a;border:1px solid #1e293b;box-shadow:0 8px 24px rgba(15,23,42,.18)}
.ks-canonical-code-block__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;background:#111827;border-bottom:1px solid #1e293b}
.ks-canonical-code-block__language{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}
.ks-canonical-code-block__filename{font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}
.ks-canonical-code-block__pre{margin:0;padding:16px 18px;overflow:auto;max-width:100%;background:#0f172a}
.ks-canonical-code-block__pre code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:13px;line-height:1.6;color:#e2e8f0;white-space:pre;word-break:normal}
.ks-canonical-code-block__caption{padding:10px 16px 14px;font-size:13px;line-height:1.5;color:#94a3b8;background:#111827;border-top:1px solid #1e293b}
@media (max-width:640px){.ks-canonical-code-block__pre{padding:14px}.ks-canonical-code-block__pre code{font-size:12px}}
</style>
<div class="ks-canonical-code-block" data-ks-component="code-block">
<div class="ks-canonical-code-block__meta"><span class="ks-canonical-code-block__language">bash</span><span class="ks-canonical-code-block__filename">nat64-end-to-end.sh</span></div>
<pre class="ks-canonical-code-block__pre"><code>API=api.example.net

dig +dnssec AAAA &quot;$API&quot;
dig +dnssec A &quot;$API&quot;
openssl s_client -connect &quot;$API:443&quot; -servername &quot;$API&quot; -brief </code></pre>
<div class="ks-canonical-code-block__caption">&#x421;&#x432;&#x44F;&#x437;&#x43A;&#x430; DNS, TLS &#x438; HTTP &#x431;&#x435;&#x437; &#x43F;&#x43E;&#x434;&#x43C;&#x435;&#x43D;&#x44B; hostname</div>
</div>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-05-12fd1c47.webp" class="kg-image" alt="NAT64 &#x438; DNS64 &#x434;&#x43B;&#x44F; IPv6-only Kubernetes: &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; LLM API" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-05-12fd1c47.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-05-12fd1c47.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-05-12fd1c47.webp 1376w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="failures">&#x41F;&#x44F;&#x442;&#x44C; &#x43E;&#x442;&#x43A;&#x430;&#x437;&#x43E;&#x432;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x435; &#x43B;&#x435;&#x433;&#x43A;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44C; &#x437;&#x430; &#xAB;&#x441;&#x43B;&#x43E;&#x43C;&#x430;&#x43D;&#x43D;&#x44B;&#x439; NAT64&#xBB;</h2>
<p><strong>&#x41F;&#x435;&#x440;&#x432;&#x44B;&#x439; &#x2014; &#x43D;&#x435;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; DNS view.</strong> &#x418;&#x43D;&#x436;&#x435;&#x43D;&#x435;&#x440; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; &#x43A;&#x43E;&#x440;&#x43F;&#x43E;&#x440;&#x430;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x439; resolver, &#x430; Pod &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442; CoreDNS &#x441; &#x434;&#x440;&#x443;&#x433;&#x438;&#x43C; upstream. &#x421;&#x43D;&#x438;&#x43C;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; workload. <strong>&#x412;&#x442;&#x43E;&#x440;&#x43E;&#x439; &#x2014; Pref64 mismatch.</strong> DNS64 &#x43A;&#x43E;&#x434;&#x438;&#x440;&#x443;&#x435;&#x442; IPv4 &#x432; &#x43E;&#x434;&#x43D;&#x43E;&#x43C; prefix, &#x430; route &#x438; Jool &#x43D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x435;&#x43D;&#x44B; &#x43D;&#x430; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439;. &#x410;&#x434;&#x440;&#x435;&#x441; &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x438;&#x442; &#x43F;&#x440;&#x430;&#x432;&#x434;&#x43E;&#x43F;&#x43E;&#x434;&#x43E;&#x431;&#x43D;&#x43E;, &#x43D;&#x43E; translator &#x435;&#x433;&#x43E; &#x43D;&#x435; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442;.</p>
<p><strong>&#x422;&#x440;&#x435;&#x442;&#x438;&#x439; &#x2014; pool4 exhaustion.</strong> &#x421;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C; &#x432;&#x43E;&#x437;&#x43D;&#x438;&#x43A;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x43F;&#x438;&#x43A;&#x435;, &#x43D;&#x43E;&#x432;&#x44B;&#x435; connections timeout, &#x430; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x435; streams &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x44E;&#x442;&#x441;&#x44F;. &#x421;&#x447;&#x438;&#x442;&#x430;&#x439;&#x442;&#x435; transport tuples &#x438; churn. &#x420;&#x43E;&#x434;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x430;&#x44F; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x43A;&#x430; &#x440;&#x430;&#x437;&#x43E;&#x431;&#x440;&#x430;&#x43D;&#x430; &#x432; runbook &#x43F;&#x440;&#x43E; <a href="https://kingservers.com/blog/conntrack-snat-llm-api-runbook/">conntrack &#x438; SNAT &#x434;&#x43B;&#x44F; LLM API</a>, &#x43D;&#x43E; ownership &#x442;&#x430;&#x431;&#x43B;&#x438;&#x446; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x434;&#x440;&#x443;&#x433;&#x43E;&#x439;: state &#x436;&#x438;&#x432;&#x451;&#x442; &#x43D;&#x430; NAT64.</p>
<p><strong>&#x427;&#x435;&#x442;&#x432;&#x451;&#x440;&#x442;&#x44B;&#x439; &#x2014; PMTU black hole.</strong> TLS &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x440;&#x43E;&#x439;&#x442;&#x438; &#x43D;&#x430; &#x43D;&#x435;&#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x438;&#x445; &#x43F;&#x430;&#x43A;&#x435;&#x442;&#x430;&#x445;, &#x430; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x44B;&#x439; &#x43E;&#x442;&#x432;&#x435;&#x442; &#x437;&#x430;&#x432;&#x438;&#x441;&#x430;&#x435;&#x442;. &#x41D;&#x435; &#x431;&#x43B;&#x43E;&#x43A;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; ICMPv6 &#x431;&#x435;&#x437;&#x434;&#x443;&#x43C;&#x43D;&#x43E;, &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; Packet Too Big &#x438; effective MTU &#x447;&#x435;&#x440;&#x435;&#x437; &#x432;&#x435;&#x441;&#x44C; path. &#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x43A;&#x430; &#x43F;&#x43E;&#x445;&#x43E;&#x436;&#x430; &#x43D;&#x430; &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; <a href="https://kingservers.com/blog/wireguard-mtu-pmtud-llm-api-runbook/">WireGuard MTU &#x438; PMTUD</a>: &#x43C;&#x430;&#x43B;&#x435;&#x43D;&#x44C;&#x43A;&#x438;&#x439; probe &#x43D;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;&#x44C;&#x435; data path.</p>
<p><strong>&#x41F;&#x44F;&#x442;&#x44B;&#x439; &#x2014; application reuse.</strong> &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x435;&#x43D;&#x438;&#x44F; DNS64 &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442; &#x43F;&#x440;&#x43E;&#x434;&#x43E;&#x43B;&#x436;&#x430;&#x435;&#x442; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x441;&#x442;&#x430;&#x440;&#x44B;&#x439; connection. &#x41F;&#x435;&#x440;&#x435;&#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A; Pod &#x43A;&#x430;&#x436;&#x435;&#x442;&#x441;&#x44F; &#xAB;&#x43C;&#x430;&#x433;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x43C; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;&#x43C;&#xBB;, &#x445;&#x43E;&#x442;&#x44F; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x430; &#x432; pool lifecycle. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x442;&#x435; fresh &#x438; reused connections, TTL resolver cache, SDK keepalive &#x438; drain policy. &#x41D;&#x435; &#x443;&#x43C;&#x435;&#x43D;&#x44C;&#x448;&#x430;&#x439;&#x442;&#x435; TTL &#x434;&#x43E; &#x441;&#x435;&#x43A;&#x443;&#x43D;&#x434; &#x431;&#x435;&#x437; &#x43D;&#x443;&#x436;&#x434;&#x44B;: &#x44D;&#x442;&#x43E; &#x443;&#x432;&#x435;&#x43B;&#x438;&#x447;&#x438;&#x432;&#x430;&#x435;&#x442; query load, &#x43D;&#x43E; &#x43D;&#x435; &#x437;&#x430;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x44B;&#x435; sockets.</p>
<div class="ks-widget" id="ks-sel-nat64e5"><h3>&#x41A;&#x443;&#x434;&#x430; &#x441;&#x43C;&#x43E;&#x442;&#x440;&#x435;&#x442;&#x44C; &#x43F;&#x440;&#x438; &#x43F;&#x435;&#x440;&#x432;&#x43E;&#x43C; &#x441;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;&#x435;</h3>
<label>&#x421;&#x438;&#x43C;&#x43F;&#x442;&#x43E;&#x43C;</label><select data-s><option value="nxdomain">&#x41D;&#x435;&#x442; AAAA &#x438;&#x43B;&#x438; NXDOMAIN</option><option value="timeout">TCP timeout</option><option value="tls">TLS error</option><option value="partial">Streaming &#x43E;&#x431;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442;&#x441;&#x44F;</option><option value="load">&#x421;&#x431;&#x43E;&#x439; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x434; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439;</option></select>
<div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-sel-nat64e5');if(!r)return;var m={"nxdomain":"Проверьте DNS64 policy, исходную A-запись и DNSSEC validation.","timeout":"Проверьте маршрут Pref64, firewall и появление NAT64 session.","tls":"Сохраняйте hostname/SNI; IP-проверка без имени не эквивалентна рабочему API.","partial":"Смотрите PMTU, ICMPv6 Packet Too Big и состояние длинного TCP flow.","load":"Считайте pool4 ports, BIB/sessions, churn и retries; CPU translator — лишь одна из гипотез."};function u(){r.querySelector('[data-o]').textContent=m[r.querySelector('[data-s]').value]||'';}r.querySelector('[data-s]').onchange=u;u();})();</script></div><figure class="kg-card kg-image-card kg-width-wide"><img src="https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-06-c8052860.webp" class="kg-image" alt="NAT64 &#x438; DNS64 &#x434;&#x43B;&#x44F; IPv6-only Kubernetes: &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; LLM API" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-06-c8052860.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-06-c8052860.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-06-c8052860.webp 1376w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="rollout">Canary, capacity &#x438; rollback &#x431;&#x435;&#x437; &#x441;&#x43C;&#x435;&#x43D;&#x44B; &#x432;&#x441;&#x435;&#x439; &#x441;&#x435;&#x442;&#x438;</h2>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43C;&#x430;&#x43B;&#x435;&#x43D;&#x44C;&#x43A;&#x43E;&#x439; &#x433;&#x440;&#x443;&#x43F;&#x43F;&#x44B; Pod &#x438; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; IPv4-only dependency. Baseline &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43E;&#x441;&#x442;&#x430;&#x442;&#x44C;&#x441;&#x44F; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x43C;: dual-stack &#x438;&#x43B;&#x438; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x439; IPv4 egress &#x434;&#x43B;&#x44F; &#x441;&#x43E;&#x43F;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x438;&#x43C;&#x43E;&#x439; &#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438;. &#x41D;&#x430; canary &#x438;&#x437;&#x43C;&#x435;&#x440;&#x44F;&#x439;&#x442;&#x435; DNS failures, route failures, session allocation, connect latency, TLS errors, HTTP codes, TTFT &#x438; &#x434;&#x43E;&#x43B;&#x44E; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x451;&#x43D;&#x43D;&#x44B;&#x445; streams. &#x421;&#x440;&#x430;&#x432;&#x43D;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x43E;&#x434;&#x438;&#x43D;&#x430;&#x43A;&#x43E;&#x432;&#x44B;&#x435; &#x43E;&#x43A;&#x43D;&#x430; &#x438; &#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x44B;, &#x43D;&#x435; &#x441;&#x43B;&#x443;&#x447;&#x430;&#x439;&#x43D;&#x44B;&#x439; &#x443;&#x442;&#x440;&#x435;&#x43D;&#x43D;&#x438;&#x439; baseline &#x441; &#x432;&#x435;&#x447;&#x435;&#x440;&#x43D;&#x438;&#x43C; &#x43F;&#x438;&#x43A;&#x43E;&#x43C;.</p>
<p>Capacity planning &#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x441;&#x44F; &#x441;&#x43D;&#x438;&#x437;&#x443; &#x432;&#x432;&#x435;&#x440;&#x445;. &#x41E;&#x446;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x435; transport flows, &#x441;&#x440;&#x435;&#x434;&#x43D;&#x44E;&#x44E; &#x434;&#x43B;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; streaming connection, churn &#x43E;&#x442; retries &#x438; &#x437;&#x430;&#x43F;&#x430;&#x441; &#x43F;&#x43E;&#x440;&#x442;&#x43E;&#x432; &#x43D;&#x430; pool4. &#x417;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; CPU, &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x44C; session table &#x438; throughput translator. &#x41D;&#x435; &#x43F;&#x443;&#x431;&#x43B;&#x438;&#x43A;&#x443;&#x439;&#x442;&#x435; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x447;&#x438;&#x441;&#x43B;&#x43E; requests per second: &#x43E;&#x43D;&#x43E; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; packet size, connection lifetime, &#x440;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438;, kernel &#x438; observability overhead. &#x41D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43E;&#x447;&#x43D;&#x44B;&#x439; &#x442;&#x435;&#x441;&#x442; &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x44F;&#x442;&#x44C; &#x432;&#x430;&#x448; mix, &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x44F; &#x43E;&#x442;&#x43C;&#x435;&#x43D;&#x44B; &#x438; half-closed connections.</p>
<p>Rollback &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; &#x441;&#x438;&#x43C;&#x43C;&#x435;&#x442;&#x440;&#x438;&#x447;&#x435;&#x43D; rollout. &#x412;&#x435;&#x440;&#x43D;&#x438;&#x442;&#x435; canary &#x43D;&#x430; &#x43F;&#x440;&#x435;&#x436;&#x43D;&#x438;&#x439; resolver/route, &#x434;&#x43E;&#x436;&#x434;&#x438;&#x442;&#x435;&#x441;&#x44C; drain &#x43D;&#x43E;&#x432;&#x44B;&#x445; NAT64 sessions &#x438; &#x43F;&#x43E;&#x432;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x435; &#x442;&#x435; &#x436;&#x435; probes. &#x420;&#x435;&#x437;&#x43A;&#x43E;&#x435; &#x443;&#x434;&#x430;&#x43B;&#x435;&#x43D;&#x438;&#x435; Pref64 route &#x43E;&#x431;&#x43E;&#x440;&#x432;&#x451;&#x442; &#x430;&#x43A;&#x442;&#x438;&#x432;&#x43D;&#x44B;&#x435; flows &#x438; &#x441;&#x43C;&#x435;&#x448;&#x430;&#x435;&#x442; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; rollback &#x441; application errors. &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435;, &#x43A;&#x442;&#x43E; &#x43F;&#x440;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x435;&#x442; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x435;, &#x43A;&#x430;&#x43A;&#x43E;&#x435; &#x443;&#x441;&#x43B;&#x43E;&#x432;&#x438;&#x435; &#x43E;&#x441;&#x442;&#x430;&#x43D;&#x430;&#x432;&#x43B;&#x438;&#x432;&#x430;&#x435;&#x442; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43D;&#x438;&#x435; &#x438; &#x43A;&#x430;&#x43A; &#x434;&#x43E;&#x43B;&#x433;&#x43E; &#x445;&#x440;&#x430;&#x43D;&#x44F;&#x442;&#x441;&#x44F; &#x434;&#x438;&#x430;&#x433;&#x43D;&#x43E;&#x441;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x435; &#x43B;&#x43E;&#x433;&#x438;.</p>
<p>&#x412;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x44B;&#x439; VPS &#x438;&#x43B;&#x438; dedicated gateway &#x43E;&#x43F;&#x440;&#x430;&#x432;&#x434;&#x430;&#x43D;, &#x43A;&#x43E;&#x433;&#x434;&#x430; &#x432;&#x430;&#x43C; &#x434;&#x435;&#x439;&#x441;&#x442;&#x432;&#x438;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x43D;&#x443;&#x436;&#x435;&#x43D; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44C; kernel/module versions, route advertisement, pool4 addresses, telemetry &#x438; change window. &#x41E;&#x43D; &#x43D;&#x435; &#x438;&#x441;&#x43F;&#x440;&#x430;&#x432;&#x438;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; DNS view, SDK pooling &#x438;&#x43B;&#x438; upstream throttling. &#x41A;&#x43E;&#x43C;&#x43C;&#x435;&#x440;&#x447;&#x435;&#x441;&#x43A;&#x430;&#x44F; &#x446;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x437;&#x434;&#x435;&#x441;&#x44C; &#x2014; &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x43E;&#x434;&#x438;&#x43C;&#x430;&#x44F; &#x433;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x430; &#x443;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x438; &#x43F;&#x440;&#x435;&#x434;&#x441;&#x43A;&#x430;&#x437;&#x443;&#x435;&#x43C;&#x44B;&#x439; blast radius, &#x430; &#x43D;&#x435; &#x43E;&#x431;&#x435;&#x449;&#x430;&#x43D;&#x438;&#x435; &#xAB;&#x443;&#x441;&#x43A;&#x43E;&#x440;&#x438;&#x442;&#x44C; NAT&#xBB; &#x431;&#x435;&#x437; canary evidence.</p>
<div class="ks-widget" id="ks-chk-nat64f6"><h3>Canary &#x433;&#x43E;&#x442;&#x43E;&#x432; &#x43A; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43D;&#x438;&#x44E;?</h3><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="0"> &#x415;&#x441;&#x442;&#x44C; &#x43D;&#x435;&#x438;&#x437;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x439; baseline &#x431;&#x435;&#x437; NAT64</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="1"> &#x41F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x44B; IPv4-only &#x438; native IPv6 endpoints</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="2"> Fresh connections &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x44B; &#x43E;&#x442; connection reuse</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="3"> &#x41D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x44B; DNS, route, sessions &#x438; application SLO</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="4"> &#x417;&#x430;&#x444;&#x438;&#x43A;&#x441;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x44B; owner &#x438; change window</label><label style="display:flex;gap:8px;margin:5px 0;font-size:13px;color:#374151"><input type="checkbox" data-c="5"> Rollback &#x432;&#x43E;&#x441;&#x43F;&#x440;&#x43E;&#x438;&#x437;&#x432;&#x435;&#x434;&#x451;&#x43D; &#x442;&#x435;&#x43C;&#x438; &#x436;&#x435; &#x442;&#x435;&#x441;&#x442;&#x430;&#x43C;&#x438;</label><div class="out" data-o></div>
<script>(function(){var r=document.getElementById('ks-chk-nat64f6');if(!r)return;var c=[].slice.call(r.querySelectorAll('[data-c]'));function u(){var n=c.filter(function(x){return x.checked}).length;r.querySelector('[data-o]').textContent=n+'/'+c.length+(n>=Math.ceil(c.length*0.85)?' — готово к следующему шагу':' — проверьте оставшиеся пункты');}c.forEach(function(x){x.onchange=u});u();})();</script></div><p>&#x41F;&#x435;&#x440;&#x435;&#x434; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43D;&#x438;&#x435;&#x43C; &#x43E;&#x446;&#x435;&#x43D;&#x438;&#x442;&#x435; &#x43E;&#x442;&#x43A;&#x430;&#x437; &#x441;&#x430;&#x43C;&#x43E;&#x433;&#x43E; translator. &#x41F;&#x43E;&#x442;&#x435;&#x440;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; gateway &#x43D;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x430; &#x43C;&#x43E;&#x43B;&#x447;&#x430; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x442;&#x44C; Pref64 &#x432; black hole. Routing health &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x443;&#x431;&#x440;&#x430;&#x442;&#x44C; next hop &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; data path, &#x430; &#x432;&#x43E;&#x441;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x432;&#x43E;&#x437;&#x432;&#x440;&#x430;&#x449;&#x430;&#x442;&#x44C; &#x435;&#x433;&#x43E; &#x43F;&#x43E;&#x441;&#x442;&#x435;&#x43F;&#x435;&#x43D;&#x43D;&#x43E;. &#x414;&#x43B;&#x44F; active/passive &#x437;&#x430;&#x440;&#x430;&#x43D;&#x435;&#x435; &#x440;&#x435;&#x448;&#x438;&#x442;&#x435; &#x441;&#x443;&#x434;&#x44C;&#x431;&#x443; &#x441;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x438;&#x445; sessions: &#x431;&#x435;&#x437; &#x440;&#x435;&#x43F;&#x43B;&#x438;&#x43A;&#x430;&#x446;&#x438;&#x438; state &#x43E;&#x43D;&#x438; &#x43E;&#x431;&#x43E;&#x440;&#x432;&#x443;&#x442;&#x441;&#x44F;, &#x43F;&#x43E;&#x44D;&#x442;&#x43E;&#x43C;&#x443; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x43D;&#x43E; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x430;&#x442;&#x44C; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x439; retry &#x434;&#x43E; commitment &#x438; &#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x44B;&#x439; retry &#x43F;&#x43E;&#x441;&#x43B;&#x435; &#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x43E;&#x442;&#x432;&#x435;&#x442;&#x430;.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-07-56f9cf9d.webp" class="kg-image" alt="NAT64 &#x438; DNS64 &#x434;&#x43B;&#x44F; IPv6-only Kubernetes: &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; LLM API" loading="lazy" width="1376" height="768" srcset="https://kingservers.com/blog/content/images/size/w600/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-07-56f9cf9d.webp 600w, https://kingservers.com/blog/content/images/size/w1000/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-07-56f9cf9d.webp 1000w, https://kingservers.com/blog/content/images/2026/10/nat64-dns64-ipv6-only-kubernetes-llm-api-inline-07-56f9cf9d.webp 1376w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="ownership">&#x427;&#x442;&#x43E; &#x43C;&#x43E;&#x43D;&#x438;&#x442;&#x43E;&#x440;&#x438;&#x442;&#x44C; &#x438; &#x43A;&#x43E;&#x43C;&#x443; &#x43E;&#x442;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; on-call</h2>
<p>&#x41C;&#x438;&#x43D;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; dashboard &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x431;&#x44B;&#x442;&#x44C; &#x440;&#x430;&#x437;&#x43B;&#x43E;&#x436;&#x435;&#x43D; &#x43F;&#x43E; &#x442;&#x435;&#x43C; &#x436;&#x435; evidence gates, &#x447;&#x442;&#x43E; &#x438; runbook. &#x414;&#x43B;&#x44F; DNS64 &#x43D;&#x443;&#x436;&#x43D;&#x44B; latency, SERVFAIL/NXDOMAIN, &#x434;&#x43E;&#x43B;&#x44F; synthesized answers &#x438; validation failures. &#x414;&#x43B;&#x44F; route &#x2014; reachability Pref64 &#x438; next-hop changes. &#x414;&#x43B;&#x44F; NAT64 &#x2014; BIB, sessions, allocation failures, drops, port utilization &#x438; resource saturation. &#x414;&#x43B;&#x44F; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x2014; connect/TLS error, HTTP code, TTFT, stream completion &#x438; retries.</p>
<p>&#x410;&#x43B;&#x435;&#x440;&#x442; &#xAB;NAT64 down&#xBB; &#x43F;&#x43E;&#x447;&#x442;&#x438; &#x431;&#x435;&#x441;&#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x435;&#x43D;. &#x41B;&#x443;&#x447;&#x448;&#x435; &#x430;&#x43B;&#x435;&#x440;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x43D;&#x430;&#x440;&#x443;&#x448;&#x435;&#x43D;&#x438;&#x435; &#x438;&#x43D;&#x432;&#x430;&#x440;&#x438;&#x430;&#x43D;&#x442;&#x430;: DNS64 &#x432;&#x44B;&#x434;&#x430;&#x43B; synthesized AAAA, &#x43D;&#x43E; session &#x43D;&#x435; &#x43F;&#x43E;&#x44F;&#x432;&#x438;&#x43B;&#x430;&#x441;&#x44C;; sessions &#x441;&#x43E;&#x437;&#x434;&#x430;&#x44E;&#x442;&#x441;&#x44F;, &#x43D;&#x43E; TLS failures &#x432;&#x44B;&#x440;&#x43E;&#x441;&#x43B;&#x438;; TLS &#x443;&#x441;&#x43F;&#x435;&#x448;&#x435;&#x43D;, &#x43D;&#x43E; completion rate &#x443;&#x43F;&#x430;&#x43B;. &#x422;&#x430;&#x43A;&#x43E;&#x435; &#x443;&#x441;&#x43B;&#x43E;&#x432;&#x438;&#x435; &#x441;&#x440;&#x430;&#x437;&#x443; &#x441;&#x443;&#x436;&#x430;&#x435;&#x442; owner &#x438; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442; &#x43A;&#x43E;&#x43D;&#x442;&#x435;&#x43A;&#x441;&#x442;. Health probe translator &#x434;&#x43E;&#x43B;&#x436;&#x435;&#x43D; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x44C; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; translation path &#x43A; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x438;&#x440;&#x443;&#x435;&#x43C;&#x43E;&#x43C;&#x443; IPv4 target, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x443; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441;&#x430;.</p>
<p>&#x41E;&#x431;&#x43D;&#x43E;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x44F; Jool, kernel, resolver &#x438;&#x43B;&#x438; CNI &#x43F;&#x440;&#x43E;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;. &#x418;&#x43D;&#x430;&#x447;&#x435; &#x43F;&#x440;&#x438; &#x440;&#x435;&#x433;&#x440;&#x435;&#x441;&#x441;&#x438;&#x438; &#x432;&#x44B; &#x43D;&#x435; &#x443;&#x437;&#x43D;&#x430;&#x435;&#x442;&#x435;, &#x43A;&#x430;&#x43A;&#x43E;&#x439; &#x441;&#x43B;&#x43E;&#x439; &#x438;&#x437;&#x43C;&#x435;&#x43D;&#x438;&#x43B; packet handling. &#x414;&#x43B;&#x44F; HA &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435;, &#x447;&#x442;&#x43E; routing &#x43D;&#x435; &#x43E;&#x442;&#x43F;&#x440;&#x430;&#x432;&#x43B;&#x44F;&#x435;&#x442; &#x43E;&#x431;&#x440;&#x430;&#x442;&#x43D;&#x44B;&#x439; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x43D;&#x430; gateway &#x431;&#x435;&#x437; state. &#x415;&#x441;&#x43B;&#x438; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x435;&#x442;&#x435; active/passive, &#x442;&#x435;&#x441;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; failover &#x441; &#x436;&#x438;&#x432;&#x44B;&#x43C;&#x438; &#x438; &#x43D;&#x43E;&#x432;&#x44B;&#x43C;&#x438; flows &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;: &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x435; IP &#x43D;&#x435; &#x43E;&#x437;&#x43D;&#x430;&#x447;&#x430;&#x435;&#x442; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x435; session table.</p>
<p>&#x41D;&#x430;&#x43A;&#x43E;&#x43D;&#x435;&#x446;, &#x434;&#x43E;&#x43A;&#x443;&#x43C;&#x435;&#x43D;&#x442;&#x438;&#x440;&#x443;&#x439;&#x442;&#x435; &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x43C;&#x43E;&#x441;&#x442;&#x438; &#x432;&#x43D;&#x435;&#x448;&#x43D;&#x435;&#x433;&#x43E; API. Endpoint &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x43F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; native IPv6, &#x441;&#x43C;&#x435;&#x43D;&#x438;&#x442;&#x44C; CDN &#x438;&#x43B;&#x438; &#x434;&#x43E;&#x431;&#x430;&#x432;&#x438;&#x442;&#x44C; &#x43D;&#x43E;&#x432;&#x44B;&#x439; hostname. &#x415;&#x436;&#x435;&#x43C;&#x435;&#x441;&#x44F;&#x447;&#x43D;&#x430;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x430; A/AAAA &#x438; traffic inventory &#x43F;&#x43E;&#x437;&#x432;&#x43E;&#x43B;&#x44F;&#x435;&#x442; &#x443;&#x434;&#x430;&#x43B;&#x438;&#x442;&#x44C; NAT64 &#x438;&#x437; &#x43F;&#x443;&#x442;&#x438; &#x442;&#x430;&#x43C;, &#x433;&#x434;&#x435; &#x43E;&#x43D; &#x431;&#x43E;&#x43B;&#x44C;&#x448;&#x435; &#x43D;&#x435; &#x43D;&#x443;&#x436;&#x435;&#x43D;. &#x41B;&#x443;&#x447;&#x448;&#x430;&#x44F; stateful dependency &#x2014; &#x442;&#x430;, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x443;&#x44E; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430; &#x443;&#x43C;&#x435;&#x435;&#x442; &#x431;&#x435;&#x437;&#x43E;&#x43F;&#x430;&#x441;&#x43D;&#x43E; &#x43E;&#x431;&#x43E;&#x439;&#x442;&#x438;.</p><p>&#x41E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E; &#x441;&#x43B;&#x435;&#x434;&#x438;&#x442;&#x435; &#x437;&#x430; &#x44D;&#x43A;&#x43E;&#x43D;&#x43E;&#x43C;&#x438;&#x43A;&#x43E;&#x439; &#x43E;&#x442;&#x43A;&#x430;&#x437;&#x430;. Stateful gateway &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x442;&#x435;&#x445;&#x43D;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438; &#x437;&#x434;&#x43E;&#x440;&#x43E;&#x432;, &#x43D;&#x43E; &#x441;&#x442;&#x430;&#x442;&#x44C; &#x43E;&#x431;&#x449;&#x435;&#x439; &#x43E;&#x447;&#x435;&#x440;&#x435;&#x434;&#x44C;&#x44E; &#x434;&#x43B;&#x44F; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x438;&#x445; &#x43F;&#x440;&#x43E;&#x434;&#x443;&#x43A;&#x442;&#x43E;&#x432;: &#x447;&#x430;&#x442;-&#x431;&#x43E;&#x442;&#x430;, batch enrichment &#x438; &#x444;&#x43E;&#x43D;&#x43E;&#x432;&#x44B;&#x445; evals. &#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438;&#x442;&#x435; &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; &#x445;&#x43E;&#x442;&#x44F; &#x431;&#x44B; &#x43C;&#x435;&#x442;&#x43A;&#x430;&#x43C;&#x438;, source prefixes &#x438;&#x43B;&#x438; &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;&#x438; pool4 ranges, &#x447;&#x442;&#x43E;&#x431;&#x44B; &#x43E;&#x434;&#x438;&#x43D; tenant &#x43D;&#x435; &#x432;&#x44B;&#x435;&#x434;&#x430;&#x43B; port budget &#x43D;&#x435;&#x437;&#x430;&#x43C;&#x435;&#x442;&#x43D;&#x43E; &#x434;&#x43B;&#x44F; &#x43E;&#x441;&#x442;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x445;. &#x41A;&#x432;&#x43E;&#x442;&#x44B; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x44B; &#x43E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x438;&#x432;&#x430;&#x442;&#x44C; &#x43D;&#x43E;&#x432;&#x44B;&#x435; flows &#x438; retries, &#x430; &#x43D;&#x435; &#x442;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E; &#x441;&#x443;&#x43C;&#x43C;&#x430;&#x440;&#x43D;&#x44B;&#x435; &#x431;&#x430;&#x439;&#x442;&#x44B;. &#x414;&#x43B;&#x44F; &#x434;&#x43B;&#x438;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; streaming-&#x437;&#x430;&#x43F;&#x440;&#x43E;&#x441;&#x430; &#x43A;&#x43E;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x442;&#x432;&#x43E; &#x43E;&#x442;&#x43A;&#x440;&#x44B;&#x442;&#x44B;&#x445; sessions &#x432;&#x430;&#x436;&#x43D;&#x435;&#x435; &#x43C;&#x433;&#x43D;&#x43E;&#x432;&#x435;&#x43D;&#x43D;&#x43E;&#x433;&#x43E; RPS.</p>
<p>&#x41B;&#x43E;&#x433;&#x438; translator &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B; &#x43B;&#x438;&#x448;&#x44C; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x435; &#x441; correlation data, &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x43E;&#x435; &#x43D;&#x435; &#x440;&#x430;&#x441;&#x43A;&#x440;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x441;&#x435;&#x43A;&#x440;&#x435;&#x442;&#x44B;. &#x425;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; &#x432;&#x440;&#x435;&#x43C;&#x44F;, protocol, &#x432;&#x43D;&#x443;&#x442;&#x440;&#x435;&#x43D;&#x43D;&#x438;&#x439; source prefix, &#x432;&#x44B;&#x431;&#x440;&#x430;&#x43D;&#x43D;&#x44B;&#x439; pool4 tuple, destination &#x438; &#x43F;&#x440;&#x438;&#x447;&#x438;&#x43D;&#x443; drop; API keys &#x438; &#x441;&#x43E;&#x434;&#x435;&#x440;&#x436;&#x438;&#x43C;&#x43E;&#x435; prompt &#x432; &#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x436;&#x443;&#x440;&#x43D;&#x430;&#x43B; &#x43D;&#x435; &#x43F;&#x43E;&#x43F;&#x430;&#x434;&#x430;&#x44E;&#x442;. &#x421;&#x438;&#x43D;&#x445;&#x440;&#x43E;&#x43D;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x438; &#x43D;&#x430; nodes, resolver &#x438; gateway &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x430;: &#x431;&#x435;&#x437; &#x43D;&#x435;&#x451; DNS answer &#x438; session &#x432;&#x44B;&#x433;&#x43B;&#x44F;&#x434;&#x44F;&#x442; &#x43D;&#x435;&#x441;&#x432;&#x44F;&#x437;&#x430;&#x43D;&#x43D;&#x44B;&#x43C;&#x438; &#x441;&#x43E;&#x431;&#x44B;&#x442;&#x438;&#x44F;&#x43C;&#x438;. &#x423;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x438;&#x442;&#x435; &#x441;&#x440;&#x43E;&#x43A; &#x445;&#x440;&#x430;&#x43D;&#x435;&#x43D;&#x438;&#x44F;, &#x434;&#x43E;&#x441;&#x442;&#x430;&#x442;&#x43E;&#x447;&#x43D;&#x44B;&#x439; &#x434;&#x43B;&#x44F; &#x440;&#x430;&#x441;&#x441;&#x43B;&#x435;&#x434;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x440;&#x435;&#x434;&#x43A;&#x438;&#x445; &#x43E;&#x431;&#x440;&#x44B;&#x432;&#x43E;&#x432;, &#x438; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435;, &#x447;&#x442;&#x43E; sampling &#x43D;&#x435; &#x432;&#x44B;&#x43A;&#x438;&#x434;&#x44B;&#x432;&#x430;&#x435;&#x442; &#x438;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43E;&#x448;&#x438;&#x431;&#x43A;&#x438; &#x430;&#x43B;&#x43B;&#x43E;&#x43A;&#x430;&#x446;&#x438;&#x438;.</p>
<p>&#x414;&#x43B;&#x44F; &#x434;&#x435;&#x436;&#x443;&#x440;&#x43D;&#x43E;&#x433;&#x43E; &#x43F;&#x43E;&#x434;&#x433;&#x43E;&#x442;&#x43E;&#x432;&#x44C;&#x442;&#x435; &#x43A;&#x43E;&#x440;&#x43E;&#x442;&#x43A;&#x443;&#x44E; &#x43A;&#x430;&#x440;&#x442;&#x43E;&#x447;&#x43A;&#x443; &#x440;&#x435;&#x448;&#x435;&#x43D;&#x438;&#x44F;. &#x415;&#x441;&#x43B;&#x438; &#x43D;&#x435;&#x442; synthesized AAAA, &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x435;&#x446; resolver &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44F;&#x435;&#x442; policy &#x438; upstream A. &#x415;&#x441;&#x43B;&#x438; AAAA &#x435;&#x441;&#x442;&#x44C;, &#x43D;&#x43E; route &#x432;&#x435;&#x434;&#x451;&#x442; &#x43D;&#x435; &#x43D;&#x430; gateway, &#x438;&#x43D;&#x446;&#x438;&#x434;&#x435;&#x43D;&#x442; &#x443; network layer. &#x415;&#x441;&#x43B;&#x438; session &#x441;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x442;&#x441;&#x44F;, &#x43D;&#x43E; TLS &#x43D;&#x435; &#x43F;&#x440;&#x43E;&#x445;&#x43E;&#x434;&#x438;&#x442;, &#x43F;&#x43E;&#x434;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x435;&#x442;&#x441;&#x44F; &#x432;&#x43B;&#x430;&#x434;&#x435;&#x43B;&#x435;&#x446; trust store &#x438; endpoint configuration. &#x415;&#x441;&#x43B;&#x438; TLS &#x443;&#x441;&#x43F;&#x435;&#x448;&#x435;&#x43D;, &#x430; stream &#x43D;&#x435; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x451;&#x43D;, &#x43F;&#x440;&#x438;&#x43E;&#x440;&#x438;&#x442;&#x435;&#x442; &#x443; application &#x438; PMTU evidence. &#x422;&#x430;&#x43A;&#x430;&#x44F; &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442;&#x438;&#x437;&#x430;&#x446;&#x438;&#x44F; &#x441;&#x43E;&#x43A;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x438;&#x44F; &#x43C;&#x435;&#x436;&#x434;&#x443; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430;&#x43C;&#x438; &#x438; &#x43D;&#x435; &#x43F;&#x440;&#x435;&#x432;&#x440;&#x430;&#x449;&#x430;&#x435;&#x442; NAT64 &#x432; &#x443;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x432;&#x438;&#x43D;&#x43E;&#x432;&#x43D;&#x438;&#x43A;&#x430;.</p><h2 id="conclusion">&#x418;&#x442;&#x43E;&#x433;: &#x43F;&#x435;&#x440;&#x435;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430;, &#x43D;&#x43E; &#x43D;&#x435; &#x441;&#x43C;&#x435;&#x448;&#x438;&#x432;&#x430;&#x439;&#x442;&#x435; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430;</h2>
<p>NAT64 &#x438; DNS64 &#x434;&#x430;&#x44E;&#x442; IPv6-only Pod &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F; &#x43A; IPv4-only LLM API, &#x43D;&#x43E; &#x44D;&#x442;&#x43E; &#x43D;&#x435; &#x435;&#x434;&#x438;&#x43D;&#x44B;&#x439; &#xAB;&#x441;&#x435;&#x442;&#x435;&#x432;&#x43E;&#x439; &#x43F;&#x435;&#x440;&#x435;&#x43A;&#x43B;&#x44E;&#x447;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#xBB;. DNS64 &#x43E;&#x442;&#x432;&#x435;&#x447;&#x430;&#x435;&#x442; &#x437;&#x430; &#x441;&#x438;&#x43D;&#x442;&#x435;&#x437; &#x430;&#x434;&#x440;&#x435;&#x441;&#x430;, &#x43C;&#x430;&#x440;&#x448;&#x440;&#x443;&#x442; &#x2014; &#x437;&#x430; &#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43A;&#x443; &#x43A; Pref64, translator &#x2014; &#x437;&#x430; stateful mapping, &#x430; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x2014; &#x437;&#x430; TLS &#x438; &#x43F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x439; &#x440;&#x435;&#x437;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x442;. &#x41A;&#x43E;&#x433;&#x434;&#x430; &#x44D;&#x442;&#x438; &#x434;&#x43E;&#x43A;&#x430;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x441;&#x442;&#x432;&#x430; &#x440;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x44B;, timeout &#x43F;&#x435;&#x440;&#x435;&#x441;&#x442;&#x430;&#x451;&#x442; &#x431;&#x44B;&#x442;&#x44C; &#x437;&#x430;&#x433;&#x430;&#x434;&#x43A;&#x43E;&#x439;: &#x432;&#x438;&#x434;&#x43D;&#x43E;, &#x43D;&#x430; &#x43A;&#x430;&#x43A;&#x43E;&#x43C; gate &#x43E;&#x431;&#x43E;&#x440;&#x432;&#x430;&#x43B;&#x430;&#x441;&#x44C; &#x446;&#x435;&#x43F;&#x43E;&#x447;&#x43A;&#x430;.</p>
<p>&#x41D;&#x430;&#x447;&#x43D;&#x438;&#x442;&#x435; &#x441; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; hostname &#x438; canary workload. &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x435; A/AAAA &#x432;&#x43D;&#x443;&#x442;&#x440;&#x438; Pod, &#x43F;&#x43E;&#x434;&#x442;&#x432;&#x435;&#x440;&#x434;&#x438;&#x442;&#x435; route &#x438; session, &#x437;&#x430;&#x442;&#x435;&#x43C; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x44C;&#x442;&#x435; SNI, HTTP &#x438; &#x437;&#x430;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x438;&#x435; stream. &#x421;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x438;&#x442;&#x435; native IPv6 &#x438; &#x437;&#x430;&#x43F;&#x440;&#x435;&#x449;&#x451;&#x43D;&#x43D;&#x44B;&#x439; destination &#x43A;&#x430;&#x43A; negative controls, &#x430; rollback &#x43F;&#x440;&#x43E;&#x433;&#x43E;&#x43D;&#x438;&#x442;&#x435; &#x442;&#x435;&#x43C;&#x438; &#x436;&#x435; &#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x430;&#x43C;&#x438;. &#x41F;&#x43E;&#x441;&#x43B;&#x435; &#x44D;&#x442;&#x43E;&#x433;&#x43E; &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x43E;&#x431;&#x441;&#x443;&#x436;&#x434;&#x430;&#x442;&#x44C; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x435;&#x43D;&#x438;&#x435; pool4, HA &#x438; &#x432;&#x44B;&#x434;&#x435;&#x43B;&#x435;&#x43D;&#x43D;&#x443;&#x44E; &#x438;&#x43D;&#x444;&#x440;&#x430;&#x441;&#x442;&#x440;&#x443;&#x43A;&#x442;&#x443;&#x440;&#x443;.</p>
<p>&#x41F;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x441;&#x43B;&#x435;&#x434;&#x443;&#x44E;&#x449;&#x438;&#x439; &#x448;&#x430;&#x433; &#x43F;&#x440;&#x43E;&#x441;&#x442;: &#x432;&#x43E;&#x437;&#x44C;&#x43C;&#x438;&#x442;&#x435; &#x447;&#x435;&#x43A;-&#x43B;&#x438;&#x441;&#x442; canary &#x438;&#x437; &#x441;&#x442;&#x430;&#x442;&#x44C;&#x438; &#x438; &#x432;&#x44B;&#x43F;&#x43E;&#x43B;&#x43D;&#x438;&#x442;&#x435; &#x435;&#x433;&#x43E; &#x43D;&#x430; staging &#x441; &#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C; SDK. &#x415;&#x441;&#x43B;&#x438; owner map, &#x43C;&#x435;&#x442;&#x440;&#x438;&#x43A;&#x438; &#x438;&#x43B;&#x438; rollback &#x43F;&#x43E;&#x43A;&#x430; &#x43D;&#x435; &#x441;&#x445;&#x43E;&#x434;&#x44F;&#x442;&#x441;&#x44F;, &#x43D;&#x435; &#x440;&#x430;&#x441;&#x448;&#x438;&#x440;&#x44F;&#x439;&#x442;&#x435; translation &#x43D;&#x430; &#x432;&#x435;&#x441;&#x44C; &#x43A;&#x43B;&#x430;&#x441;&#x442;&#x435;&#x440;. &#x421;&#x43D;&#x430;&#x447;&#x430;&#x43B;&#x430; &#x441;&#x434;&#x435;&#x43B;&#x430;&#x439;&#x442;&#x435; &#x43F;&#x443;&#x442;&#x44C; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x435;&#x43C;&#x44B;&#x43C; &#x2014; &#x44D;&#x442;&#x43E; &#x434;&#x435;&#x448;&#x435;&#x432;&#x43B;&#x435;, &#x447;&#x435;&#x43C; &#x438;&#x441;&#x43A;&#x430;&#x442;&#x44C; &#x440;&#x435;&#x434;&#x43A;&#x438;&#x439; reset &#x443;&#x436;&#x435; &#x43F;&#x43E;&#x434; production-&#x43D;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x43E;&#x439;.</p><div data-ks-component="consultation-cta" data-ks-version="1.0.0" data-ks-canonical="true">
<style>
@media (max-width: 640px) {
  .cta-button-mobile {
    padding: 12px 20px !important;
    font-size: 16px !important;
    border-radius: 8px !important;
    max-width: 90% !important;
  }
}
</style>

<div style="width: 100%; margin: 40px 0; position: relative;">
  <a href="https://control.king-servers.com/submitticket.php?step=2&amp;deptid=18&amp;ref=kingservers.com" class="cta-button-mobile" style="
        display: block;
        width: fit-content;
        margin: 0 auto;
        padding: 15px 35px;
        font-size: 18px;
        font-weight: bold;
        color: #ffffff;
        background-color: #1e90ff;
        border: 2px solid #005bb5;
        border-radius: 10px;
        text-decoration: none;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
     " onmouseover="this.style.backgroundColor=&apos;#005bb5&apos;; this.style.borderColor=&apos;#003f7f&apos;; this.style.transform=&apos;scale(1.05)&apos;; this.style.boxShadow=&apos;0 6px 12px rgba(0,0,0,0.3)&apos;" onmouseout="this.style.backgroundColor=&apos;#1e90ff&apos;; this.style.borderColor=&apos;#005bb5&apos;; this.style.transform=&apos;scale(1)&apos;; this.style.boxShadow=&apos;0 4px 8px rgba(0,0,0,0.2)&apos;">
    &#x1F680; &#x41F;&#x43E;&#x43B;&#x443;&#x447;&#x438;&#x442;&#x44C; &#x43A;&#x43E;&#x43D;&#x441;&#x443;&#x43B;&#x44C;&#x442;&#x430;&#x446;&#x438;&#x44E;
  </a>
</div>

</div>]]></content:encoded></item></channel></rss>