Tại sao BGP thực hiện thủ tục riêng của mình thay vì sử dụng tcp keepalive?


14

BGP không sử dụng TCP keepalive, nó sử dụng cơ chế giữ riêng của nó. Câu hỏi của tôi là tại sao bgp không thể bật SO_KEEPaLIVE của TCP và sống hạnh phúc? Tại sao nó không sử dụng tcp keepalive và thực hiện keepalive của riêng mình?

Câu trả lời:


19

TCP "keepalive" là một tính năng không có trên tất cả các hệ điều hành. Bản thân nó không nằm trong chuẩn TCP và nó không đáng tin cậy. RC1122 chỉ định nó, nhưng nói rõ:

Những người triển khai CÓ THỂ bao gồm "những người giữ bí mật" trong các triển khai TCP của họ, mặc dù cách làm này không được chấp nhận phổ biến. Nếu bao gồm các khoản giữ, ứng dụng PHẢI có thể bật hoặc tắt chúng cho mỗi kết nối TCP và chúng PHẢI mặc định tắt.

Thậm chí quan trọng hơn:

Điều cực kỳ quan trọng cần nhớ là các phân đoạn ACK không chứa dữ liệu sẽ không được truyền một cách đáng tin cậy bởi TCP. Do đó, nếu một cơ chế duy trì được thực thi, thì KHÔNG PHẢI diễn giải việc không đáp ứng với bất kỳ thăm dò cụ thể nào là kết nối chết.

TCP keepalive sử dụng giao thức TCP theo cách đặc biệt, gửi một ACK trùng lặp mà không có dữ liệu nào được đính kèm. Điều đó là: Bạn không thể tin vào nó có sẵn. Ngoài ra một số tường lửa lọc lưu giữ TCP.

Để BGP hoạt động chính xác, bạn cần một cách để thực hiện các bộ định thời cụ thể để duy trì (tần suất chúng tôi gửi tin nhắn) và giữ (sau thời gian đó chúng tôi tuyên bố một đồng nghiệp không phản hồi) được gửi một cách đáng tin cậy . Vì vậy, BGP đang sử dụng thông điệp giữ riêng của nó, không có nhiều chi phí (19 byte) so với TCP keepalive.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.