요약
- RFC 6298은 왕복 지연 시간과 그 변동을 기반으로 재전송 타임아웃을 도출하되, 잘못된 전송을 학습시킬 수 있는 모호한 샘플은 추정기에 반영하지 않습니다.
- 첫 판단은 1초에서 시작할 수 있지만, SYN이 손실되면 데이터 전송에는 3초가 복원되며, 이후 매번 타임아웃이 만료될 때마다 재시도 전에 타임아웃이 두 배로 늘어납니다.
침묵은 약한 증거입니다. 세그먼트가 손실되었을 수도 있고, ACK가 손실되었을 수도 있으며, 어느 쪽 패킷이든 단순히 느릴 수도 있습니다. 너무 이른 재전송은 중복 패킷을 만들고 이미 혼잡했을 가능성이 있는 경로에 추가 트래픽을 얹습니다. 너무 늦게 기다리면 실제 손실이 방치됩니다. 재전송 타임아웃, 즉 RTO는 어떤 사건이 발생했는지 안다고 가장하지 않으면서 이 두 오류 사이에서 선택하는 TCP의 규칙입니다.
추정치는 시간과 불확실성을 함께 담습니다
왕복 시간 샘플이 하나도 존재하지 않는 동안, RFC 6298은 송신자가 RTO를 1초로 설정해야 하되 더 보수적인 값도 허용된다고 규정합니다. 첫 측정값R이후에는SRTT = R,RTTVAR = R/2,RTO = SRTT + max(G, 4*RTTVAR)로 설정하며, 여기서G는 클록 정밀도입니다.
이후 샘플은 평활된 시간보다 변동을 먼저 갱신합니다. RTTVAR은 이전 SRTT를 사용하고 베타는 1/4이며, 그다음 SRTT는 알파 1/8을 사용합니다. 순서가 중요한 이유는 변동 계산이 새 샘플이 이전 추정치 대비 얼마나 놀라운지를 묻기 때문입니다. 결과 RTO는 다시 SRTT에 클록 정밀도와 변동의 4배 중 더 큰 값을 더한 값입니다.
계산된 값이 1초보다 작으면 1초로 올림해야 합니다. 구현은 최댓값을 60초 이상에서만 상한으로 둘 수 있습니다. 이러한 경계는 RFC의 입장을 표현합니다. 구현은 더 보수적일 수 있지만, 명시된 알고리즘보다 공격적으로 재전송해서는 안 됩니다.
모든 ACK가 클록을 가르치는 것은 아닙니다
RFC 6298은 Karn의 알고리즘을 요구합니다. 재전송 이후에 수신된 ACK는 모호합니다. 첫 번째 사본을 확인한 것일 수도 있고 재전송된 사본을 확인한 것일 수도 있습니다. TCP 타임스탬프 옵션이 이 모호성을 제거하지 않는 한, 송신자는 그 ACK를 RTT 샘플로 사용해서는 안 됩니다. 타임스탬프가 없으면 RTT당 최소 한 번의 측정을 해야 합니다. 타임스탬프는 훨씬 더 많은 샘플을 노출할 수 있지만, 추정기의 명시된 규칙을 무효화하지는 못합니다.
이것은 PAWS와 별개입니다. RFC 6298은 타임스탬프를 어떤 전송이 ACK를 만들었는지 식별하는 수단으로만 언급합니다. 랩어라운드된 시퀀스 번호를 거부하는 데는 사용하지 않습니다.
하나의 타이머, 가장 오래된 미확인 데이터
새 데이터를 전송할 때 재전송 타이머가 작동 중이 아니라면, 송신자는 현재 RTO로 타이머를 시작합니다. 모든 미확인 데이터를 커버하는 ACK가 도착하면 타이머를 멈춥니다. 미확인 데이터가 남아 있는 상태에서 확인 경계를 앞당기는 ACK는 현재 RTO로 타이머를 다시 시작합니다.
타이머가 만료되면 TCP는 가장 오래된 미확인 세그먼트를 재전송하고, RTO를 두 배로 늘린 뒤, 늘어난 값으로 타이머를 재시작합니다. 지수적 백오프는 반복되는 침묵에 대응하는 비용을 점점 더 크게 만듭니다. 이후의 깨끗한 RTT 측정은 RTO를 다시 낮출 수 있습니다. 여러 차례 백오프 후에는 구현이 SRTT와 RTTVAR을 폐기할 수 있으며, 이는 해당 추정치가 더 이상 경로를 설명하지 못할 수 있기 때문입니다.
1초 초기값에는 특정 예외가 있습니다. 구현이 3초 미만을 사용하는 상태에서 SYN이 타임아웃되면, 연결이 수립되고 데이터 전송이 시작될 때 RTO를 3초로 재설정해야 합니다. 빠른 개시에 대한 가정은 경로가 그것을 반증한 뒤에는 철회됩니다.
타이머는 통제 수단이지 진단이 아닙니다
공격자는 타이밍된 패킷을 지연시켜 RTO를 부풀리거나, 위조된 트래픽으로 RTO를 낮추려 시도할 수 있습니다. 평활과 백오프 규칙은 지속성을 제한하지만, 지연을 인증하지는 못합니다. 따라서 운영자는 RTO 만료를 특정 패킷이 손실되었다는 증명이 아니라 불확실성 아래에서 취한 조치로 읽어야 합니다.
유일한 출처는 2011년 6월 표준 트랙(Standards Track)으로 발표된RFC 6298입니다. 이 문서는 규범적인 타이머 알고리즘과 그 역사적 근거를 정의합니다. 현재 구현 기본값, 경로 RTT 분포 또는 벤더 동작을 확립하지는 않습니다.
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





