Чому BGP реалізує власний кепалів замість використання tcp keepalive?


14

BGP не використовує TCP keepalive, він використовує власний механізм keepalive. Моє запитання, чому не можна bgp увімкнути SO_KEEPaLIVE TCP і жити щасливо? чому він не використовує tcp keepalive і не реалізує власний кепапайв?

Відповіді:


19

TCP "keepalive" - ​​це функція, яка присутня не у всіх операційних системах. Це не в стандарті TCP, і це не є надійним. RC1122 специфікує це, але прямо вказано:

Реалізатори МОЖУТЬ включати "Keep-alives" у свої реалізації TCP, хоча ця практика не є загальновизнаною. Якщо включено функцію зберігання, програма ОБОВ'ЯЗКОВО зможе їх увімкнути або вимкнути для кожного TCP-з'єднання, і вони ОБОВ'ЯЗКОВО вимкнені.

Ще важливіше:

Надзвичайно важливо пам’ятати, що сегменти ACK, які не містять даних, не надійно передаються TCP. Отже, якщо реалізований механізм збереження життя, НЕ МОЖЕ НЕ трактувати неспроможність реагувати на будь-який конкретний зонд як мертве з'єднання.

TCP keepalive особливим чином використовує протокол TCP, надсилаючи дублікат ACK без доданих до нього даних. Річ у тому, що ви не можете розраховувати, що вона буде доступною. Також деякі брандмауери фільтрують збереження TCP.

Щоб BGP правильно функціонував, вам потрібен спосіб впровадити конкретні таймери для збереження (як часто ми надсилаємо повідомлення) та утримуйте (після закінчення цього часу ми оголошуємо, що одноранговий користувач не відповідає) надійно надісланий. Таким чином, BGP використовує власне повідомлення про збереження даних, яке не має великої кількості накладних витрат (19 байтів) порівняно з протоколом TCP.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.