RTT와 RTO는 어떻게 계산될까? TCP 전송 제어의 핵심 알고리즘 분석
TCP 통신에서 데이터 전송의 효율성은 ‘얼마나 빨리 응답을 받느냐(RTT)’와 ‘언제까지 기다릴 것인가(RTO)’에 달려 있습니다. 네트워크 환경은 시시각각 변하기 때문에, TCP는 고정된 값을 사용하지 않고 수학적 모델을 통해 이 값들을 동적으로 계산합니다. 본 포스팅에서는 RTT의 측정 방식과 이를 바탕으로 RTO가 결정되는 알고리즘의 진화 과정을 상세히 살펴보겠습니다.
1. RTT(Round Trip Time)의 측정과 SRTT
RTT는 패킷을 보낸 시점부터 그에 대한 확인 응답(ACK)을 받을 때까지의 왕복 시간입니다. 하지만 한 번의 측정값만으로는 네트워크의 변동성을 반영할 수 없으므로, TCP는 SRTT(Smoothed RTT)라는 가중 평균값을 사용합니다.
Jacobson/Karels 알고리즘 (표준 계산법)
현대 TCP는 단순히 평균값만 고려하지 않고, RTT의 변화량(분산)까지 계산에 포함합니다.
- SRTT (가중 평균): $SRTT_{new} = (1 – \alpha) \times SRTT_{old} + \alpha \times RTT_{measured}$
- RTTVAR (분산): $RTTVAR_{new} = (1 – \beta) \times RTTVAR_{old} + \beta \times |SRTT_{old} – RTT_{measured}|$
보통 $\alpha$는 1/8(0.125), $\beta$는 1/4(0.25)의 가중치를 사용하여 급격한 변화에 유연하게 대응합니다.
2. RTO(Retransmission Timeout)의 결정 원리
RTO는 패킷이 유실되었다고 판단하여 재전송을 시작하기까지의 대기 시간입니다. RTO가 너무 짧으면 불필요한 재전송이 발생하고, 너무 길면 유실 복구가 늦어져 성능이 저하됩니다.
RTO 계산 공식
RFC 6298에 정의된 표준 공식은 다음과 같습니다.
$RTO = SRTT + \max(G, K \times RTTVAR)$
여기서 $K$는 보통 4로 설정됩니다. 즉, “평균 왕복 시간 + 4배의 편차”를 대기 시간으로 설정하여 네트워크의 일시적인 튐(Jitter) 현상에 대비합니다. (G는 시계의 해상도를 의미하며, 최소 RTO는 보통 1초로 설정됩니다.)
3. Karn 알고리즘: 재전송 시의 측정 오류 방지
패킷을 재전송했을 때 도착한 ACK가 ‘처음 보낸 패킷’에 대한 것인지 ‘재전송한 패킷’에 대한 것인지 모호한 경우가 발생합니다. 이를 재전송 모호성(Retransmission Ambiguity)이라고 합니다.
Karn 알고리즘은 이를 해결하기 위해 “재전송된 패킷의 RTT는 측정값에서 제외한다”는 원칙을 적용합니다. 대신 재전송이 발생할 때마다 RTO 값을 2배씩 늘리는 지수적 백오프(Exponential Backoff)를 사용하여 네트워크 혼잡을 완화합니다.
4. RTT와 RTO의 상관관계 요약
| 지표 | 의미 | 핵심 역할 | 주요 변수 |
|---|---|---|---|
| RTT | 실제 왕복 시간 측정치 | 네트워크 지연 상태 파악 | 네트워크 경로, 거리 |
| SRTT | RTT의 가중 평균값 | RTO 계산의 기초 데이터 | 이전 측정값들의 가중치 |
| RTO | 재전송 대기 타이머 | 패킷 유실 복구 시점 결정 | SRTT, RTTVAR(분산) |
결론: 정교한 통계학이 담긴 네트워크 제어
RTT가 친구에게 보낸 메시지에 답장이 오는 ‘평균 시간’이라면, RTO는 ‘이 정도 시간이 지나면 안 온 걸로 치고 다시 물어보겠다’는 약속된 대기 시간과 같습니다. 이때 친구의 답장 속도가 들쭉날쭉할수록 대기 시간(RTO)은 보수적으로 길어지게 되죠.
TCP의 RTT와 RTO 계산 방식은 단순한 타이머 설정을 넘어선 정교한 통계적 모델입니다. 평균값뿐만 아니라 변화량(분산)을 고려하고, 재전송 시의 오류까지 방어하는 이러한 알고리즘 덕분에 인터넷은 전 세계의 불규칙한 네트워크 환경에서도 신뢰성 있게 동작할 수 있습니다. 시스템 엔지니어라면 이러한 원리를 이해함으로써 네트워크 지연(Latency) 문제를 진단하고 서버의 전송 효율을 최적화하는 통찰력을 얻을 수 있을 것입니다.