초기 TCP 재전송 시간 초과를 어떻게 조정할 수 있습니까?


14

초기 TCP RTO 값 3은 대부분의 LAN 기반 응용 프로그램에 비해 너무 깁니다. 어떻게 더 낮게 조정할 수 있습니까? sysctl이 있습니까?

답변:


12

아니, 당신은 할 수 없습니다; 커널에 하드 코딩되어 있습니다. 따라서 커널을 변경하고 다시 컴파일하십시오.

#define TCP_TIMEOUT_INIT ((unsigned)(3*HZ))     /* RFC 1122 initial RTO value   */

이것이 include / net / tcp.h에 있어야합니다.

하지만 직접 해보지는 않았지만 누군가 패치를 제공 한 것을 볼 수 있습니다.


4

RTO는 네트워크 조건에 따라 자체 조정되므로 초기 설정은 전체 성능에 큰 영향을 미치지 않습니다. RTO를 변경하면 RTO를 1 초로 설정할 수 있습니다.

RFC 1122 에서 이에 대한 논의가 있습니다 .

        The following values SHOULD be used to initialize the
        estimation parameters for a new connection:
        (a)  RTT = 0 seconds.

        (b)  RTO = 3 seconds.  (The smoothed variance is to be
             initialized to the value that will result in this RTO).

        The recommended upper and lower bounds on the RTO are known
        to be inadequate on large internets.  The lower bound SHOULD
        be measured in fractions of a second (to accommodate high
        speed LANs) and the upper bound should be 2*MSL, i.e., 240
        seconds.

        DISCUSSION:
             Experience has shown that these initialization values
             are reasonable, and that in any case the Karn and
             Jacobson algorithms make TCP behavior reasonably
             insensitive to the initial parameter choices.

RFC 6298 은 제안 된 업데이트 (2011 년 6 월 게시)로, RTO 를 더 낮은 값 (1 초 이상)으로 초기화 할 수 있으며 1 초를 합리적인 초기 값으로 정당화하는 데이터를 포함하는 부록을 포함합니다.


1 초는되어야합니다. btw 당신은 잘 알려진 하나의 검색 엔진 프론트 엔드의 rto를 볼 수 있습니다 =)
SaveTheRbtz

"초기 설정이 전반적인 성능에 큰 영향을 미치지 않아야합니다"라는 내용에 동의하지 않습니다. 이는 초기 통신시 응용 프로그램의 오류율에 영향을 줄 수 있습니다. 백엔드 응용 프로그램이 읽기 시간 초과를 3 초 이하로 설정하면 초기 TCP 통신 중 네트워크에서 패킷 손실 (정체가 발생하는 정상적인 이벤트)이 손실 된 패킷의 올바른 재전송을 허용하지 않습니다. 초기 값은 수신 측에서 설정 한 읽기 시간 초과보다 낮아야하며 실행중인 네트워크의 QOS를 기반으로 설정해야합니다.
Joe

3 초는 로컬 네트워크에서 영원하며 패킷 삭제는 왕복 시간이 밀리 초인 하나의 네트워크에서 매우 빠르게 발생합니다.
Joe

최신 CPU가 3 초 안에 많은 작업을 수행 할 수 있다는 데 동의합니다. 이 초기 지연은 드라이버가 초기화 될 때만 적용되며 시스템이 처음 부팅 될 때만 발생합니다.
Jay Elston
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.