Почему BGP реализует свой собственный keepalive вместо использования tcp keepalive?

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

14 голосов | спросил Hemanth 5 AMpSat, 05 Apr 2014 11:58:52 +040058Saturday 2014, 11:58:52

1 ответ


18

TCP «keepalive» - это функция, которая отсутствует во всех операционных системах. Это не в самом стандарте TCP, и оно не является надежным. RC1122 определяет его, но явно указывает:

  

Исполнители МОГУТ включать в свои TCP-файлы «keep-alives»               но эта практика не является универсальной               принято. Если включены keep-alives, приложение ДОЛЖНО               иметь возможность включать или отключать их для каждого TCP-соединения и               они ДОЛЖНЫ по умолчанию отключиться.

Еще важнее:

  

Очень важно помнить, что ACK-сегменты, которые               не содержат данных, достоверно не передаваемых TCP.               Следовательно, если реализован механизм поддержания работоспособности               НЕ ДОЛЖЕН интерпретировать отказ от ответа на какой-либо конкретный зонд               как мертвое соединение.

TCP keepalive использует TCP-протокол особым образом, отправляя дубликат ACK без привязанных к нему данных. Дело в том, что вы не можете рассчитывать на его доступность. Также некоторые брандмауэры фильтруют TCP keepalives.

Для правильной работы BGP вам нужен способ реализовать определенные таймеры для keepalive (как часто мы отправляем сообщение) и удерживать (после чего мы объявляем одноранговый узел невосприимчивым), которые надежно надежно . Таким образом, BGP использует собственное сообщение keepalive, которое не так много накладных расходов (19 байт) по сравнению с протоколом TCP keepalive.

ответил Sebastian 5 PMpSat, 05 Apr 2014 12:34:46 +040034Saturday 2014, 12:34:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132