BGP가 tcp keepalive를 사용하는 대신 자체 keepalive를 구현하는 이유는 무엇입니까?


14

BGP는 TCP keepalive를 사용하지 않고 자체 keepalive 메커니즘을 사용합니다. 내 질문은 왜 bgp가 TCP의 SO_KEEPaLIVE를 켜고 행복하게 살 수 없습니까? 왜 tcp keepalive를 사용하지 않고 자체 keepalive를 구현합니까?

답변:


19

TCP "keepalive"는 모든 운영 체제에 존재하지 않는 기능입니다. TCP 표준 자체가 아니며 신뢰할 수 없습니다. RC1122가 지정하지만 다음과 같이 명시 적으로 명시합니다.

구현자는 TCP 구현에 "keep-alives"를 포함 할 수 있지만이 방법은 보편적으로 받아 들여지지는 않습니다. 연결 유지 기능이 포함 된 경우 응용 프로그램은 각 TCP 연결에 대해 연결을 켜거나 끌 수 있어야하며 기본적으로 꺼져 있어야합니다.

더 중요한 :

데이터가 포함되지 않은 ACK 세그먼트는 TCP에 의해 안정적으로 전송되지 않습니다. 결과적으로 연결 유지 메커니즘이 구현 된 경우 특정 프로브에 응답하지 않는 연결을 연결 끊기로 해석해서는 안됩니다.

TCP keepalive는 TCP 프로토콜을 특별한 방식으로 사용하여 데이터가 첨부되지 않은 중복 ACK를 보냅니다. 사물은 : 당신은 그것을 사용할 수 있다고 믿을 수 없습니다. 또한 일부 방화벽은 TCP 연결 유지를 필터링합니다.

BGP가 제대로 작동하려면 keepalive (메시지를 얼마나 자주 보내는가)에 대한 특정 타이머를 구현하고 안정적으로 전송 되는 피어를 응답하지 않는 것으로 선언 한 후 유지하는 방법이 필요합니다 . 따라서 BGP는 TCP keepalive에 비해 많은 오버 헤드 (19 바이트)가 아닌 자체 keepalive 메시지를 사용하고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.