เหตุใด BGP จึงใช้เครื่องมือเชิงรุกของตัวเองแทนที่จะใช้ tcp keepalive


14

BGP ไม่ได้ใช้ TCP keepalive แต่ใช้กลไก keepalive ของตัวเอง คำถามของฉันคือทำไม bgp ไม่สามารถเปิด SO_KEEPaLIVE ของ TCP และใช้ชีวิตอย่างมีความสุขได้? ทำไมมันไม่ใช้ tcp keepalive และใช้ keepalive ของตัวเอง

คำตอบ:


19

TCP "keepalive" เป็นคุณสมบัติที่ไม่มีในทุกระบบปฏิบัติการ มันไม่ได้อยู่ในมาตรฐาน TCP เองและไม่น่าเชื่อถือ RC1122ระบุ แต่ระบุอย่างชัดเจน:

ผู้ดำเนินการอาจรวม "Keep-alives" ในการใช้งาน TCP แม้ว่าการปฏิบัตินี้จะไม่ได้รับการยอมรับในระดับสากล หากรวม Alive ไว้แอปพลิเคชันจะต้องสามารถเปิดหรือปิดได้สำหรับการเชื่อมต่อ TCP แต่ละครั้งและจะต้องปิดเป็นค่าเริ่มต้น

สำคัญยิ่งกว่า:

เป็นสิ่งสำคัญอย่างยิ่งที่ต้องจำไว้ว่าส่วน ACK ที่ไม่มีข้อมูลจะไม่ถูกส่งผ่าน TCP อย่างน่าเชื่อถือ ดังนั้นหากมีการใช้กลไกแบบ keep-alive จะต้องไม่ตีความความล้มเหลวในการตอบสนองต่อโพรบใด ๆ เป็นการเชื่อมต่อที่ไม่ทำงาน

TCP keepalive ใช้โปรโตคอล TCP ในวิธีพิเศษโดยส่ง ACK ที่ซ้ำกันโดยไม่มีข้อมูลแนบอยู่ สิ่งที่: คุณไม่สามารถนับได้ว่ามันว่าง ไฟร์วอลล์บางตัวยังกรอง TCP keepalives

เพื่อให้ BGP ทำงานได้อย่างถูกต้องคุณต้องมีวิธีในการใช้ตัวจับเวลาเฉพาะสำหรับ keepalive (เราจะส่งข้อความบ่อยครั้ง) และพักไว้ (หลังจากนั้นเราจะประกาศเพื่อนที่ไม่ตอบสนอง) ซึ่งส่งได้อย่างน่าเชื่อถือ ดังนั้น BGP จึงใช้ข้อความแบบ keepalive ของตัวเองซึ่งมีค่าใช้จ่ายไม่มาก (19 ไบต์) เมื่อเทียบกับ TCP keepalive

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.