Mengapa BGP mengimplementasikan keepalive sendiri alih-alih menggunakan tcp keepalive?


14

BGP tidak menggunakan TCP keepalive, ia menggunakan mekanisme keepalive sendiri. Pertanyaan saya adalah mengapa bgp tidak dapat mengaktifkan SO_KEEPaLIVE dari TCP dan hidup bahagia? mengapa tidak menggunakan tcp keepalive dan mengimplementasikan keepalive sendiri?

Jawaban:


19

TCP "keepalive" adalah fitur yang tidak ada pada semua sistem operasi. Itu tidak dalam standar TCP itu sendiri dan itu tidak dapat diandalkan. RC1122 menentukannya, tetapi secara eksplisit menyatakan:

Implementor DAPAT memasukkan "keep-alives" dalam implementasi TCP mereka, meskipun praktik ini tidak diterima secara universal. Jika tetap disertakan, aplikasi HARUS dapat menghidupkan atau mematikannya untuk setiap koneksi TCP, dan mereka HARUS mati.

Yang lebih penting:

Sangat penting untuk diingat bahwa segmen ACK yang tidak mengandung data tidak dapat ditransmisikan secara andal oleh TCP. Konsekuensinya, jika mekanisme keep-live diterapkan, maka TIDAK HARUS menafsirkan kegagalan untuk merespons setiap probe spesifik sebagai koneksi mati.

TCP keepalive menggunakan protokol TCP dengan cara khusus, mengirimkan duplikat ACK tanpa data yang terlampir. Masalahnya adalah: Anda tidak dapat mengandalkan itu tersedia. Juga beberapa firewall menyaring TCP keepalives.

Agar BGP berfungsi dengan benar, Anda memerlukan cara untuk mengimplementasikan penghitung waktu spesifik untuk keepalive (seberapa sering kami mengirim pesan) dan menahan (setelah jam berapa kami menyatakan rekan kerja menjadi tidak responsif) yang dikirim dengan andal . Jadi BGP menggunakan pesan keepalive sendiri yang tidak banyak overhead (19 byte) dibandingkan dengan TCP keepalive.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.