BGPの最大メッセージサイズが4096に選択されているのはなぜですか?なぜ2 ^ 16ではないのですか?


7

2バイトのBGPメッセージ長。では、なぜbgpメッセージの最大サイズを65535にできないのでしょうか。なぜ4096なのですか?


何か回答がありましたか?もしそうなら、質問が永遠にポップアップし続けないように答えを受け入れ、答えを探します。または、独自の回答を提供して受け入れることもできます。
Ron Maupin

回答:


14

2バイトのBGPメッセージ長。では、なぜbgpメッセージの最大サイズを65535にできないのでしょうか。なぜ4096なのですか?

公式回答

IDRリストでこの質問に答えたときのTony Liの引用

1a)固定サイズにすると、プロトコルの実装が容易になります。メリットがない場合は、実装が複雑であっても意味がありません。大きなメッセージは、パス属性と関連する接頭辞を伝えるのに十分な大きさである必要があるため、すばらしいメリットはありません。この目的のためには、おそらく4kで十分です。

1b)歴史的に、4kは少し無駄であると考えられていました。もちろん、断片化されたパケットを使用するEGPと比較すると、それは驚くほど簡単でした。16kのジャンボグラムを解析しますか?それをデバッグしますか?私を信じて、それは楽しいことではありません。

2)4kメッセージサイズは、TCPウィンドウサイズから完全に独立しています。実装では、任意の数のメッセージを自由に作成できます。各メッセージは4kの制限内です。実装は、そのTCPのバッファリング制限まで、TCPソケットに任意の数のメッセージを詰め込むことができます。

2a)したがって、実装で実際にメッセージがいっぱいになる可能性がある場合を除いて、メッセージサイズはパフォーマンスの制限ではありません。現在の実装を維持している人々は、これを見るかどうかについてここで呼びかけるかもしれません。

したがって、要約すると、はい、4kのメッセージサイズの制限は、BGPの動作とジョブの動作にとって、BGPにとって適切な状況です。これは、4kが最も一般的なMTUを超える他のプロトコル(OSPFなど)に必ずしも一般化するわけではありません。そのような場合、断片化が発生し、それは悪いことです。

他の考え

65536/4096 = 16

BGPの一時的なRAM要件を16倍にすることを本当に望んでいますか?内部では、多くのBGP実装がCで記述されていることを思い出してください。これは、BGPがmallocすべてのメッセージに対して最大メッセージサイズまでスペースを確保する必要があることを意味します。

必須の修辞的な質問...

  • ソフトウェアに可変サイズの制限があるのはなぜですか?
  • なぜすべてのC整数がaではないのlong longですか?

100,000のBGPプレフィックスがあり、15,000の一意の属性の組み合わせがあるとします。また、BGP実装BGP UPDATEが100%の効率でメッセージにプレフィックスをパックすると仮定しましょう。したがって、15,000のBGP UPDATEメッセージが必要です。

15000メッセージ* 4096バイト/メッセージ=使用される58MBの集約BGPメッセージバッファリング

15000メッセージ* 65536バイト/メッセージ= 937MBの合計BGPメッセージバッファリングを使用


0

ので、RFC4271はそう言いましたか?この制限はBGP 3にも存在していました。BGPが伝説的なナプキンで作成された当時の小さなインターネットを考えると、IPv4のビット数とまったく同じように選択されたと思います。

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