BGPがtcpキープアライブを使用する代わりに独自のキープアライブを実装する理由


14

BGPはTCPキープアライブを使用せず、独自のキープアライブメカニズムを使用します。私の質問は、なぜbgpがTCPのSO_KEEPaLIVEを有効にして幸せに生きられないのかということです。なぜtcpキープアライブを使用せず、独自のキープアライブを実装しないのですか?

回答:


19

TCP「キープアライブ」は、すべてのオペレーティングシステムに存在しない機能です。TCP標準自体には含まれておらず、信頼性もありません。RC1122はそれを指定していますが、明示的に述べています:

実装者はTCP実装に「キープアライブ」を含めることができますが、この慣行は広く受け入れられていません。キープアライブが含まれている場合、アプリケーションはTCP接続ごとにキープアライブをオンまたはオフにできる必要があり、デフォルトでオフになっている必要があります。

さらに重要:

データを含まないACKセグメントは、TCPによって確実に送信されないことに注意することが非常に重要です。したがって、キープアライブメカニズムが実装されている場合、特定のプローブへの応答の失敗をデッド接続として解釈してはなりません。

TCPキープアライブは、TCPプロトコルを特別な方法で使用し、データが付加されていない複製ACKを送信します。事は次のとおりです:あなたはそれが利用可能であると期待することはできません。また、一部のファイアウォールはTCPキープアライブをフィルタリングします。

BGPが正しく機能するためには、キープアライブ(メッセージを送信する頻度)と保留(その後、ピアが応答しないことを宣言する)に特定のタイマーを実装して、確実に送信する方法が必要です。したがって、BGPは独自のキープアライブメッセージを使用しており、TCPキープアライブと比較してオーバーヘッド(19バイト)はそれほど多くありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.