TCP 왕복 시간
From CS Wiki
TCP 왕복시간(TCP RTT: Round Trip Time)는 TCP 연결에서 패킷이 송신된 후 수신자로부터 응답(ACK)을 받는 데 걸리는 시간을 의미한다. RTT는 네트워크 지연을 측정하는 중요한 요소로, TCP가 최적의 데이터 전송 속도를 유지하고, 패킷 손실을 최소화하는 데 필수적인 정보이다. TCP RTT는 네트워크 품질, 대역폭, 지연 요소에 따라 달라지며, 이를 통해 네트워크 혼잡을 조절하고 최적화한다.
역할 및 특징
- 혼잡 제어 및 흐름 제어
- RTT를 측정함으로써 TCP는 데이터 흐름을 조절하여 네트워크 혼잡을 최소화한다.
- RTT가 길어질 경우 전송 속도를 줄이고, 짧을 경우 전송 속도를 높여 네트워크 자원을 효율적으로 사용한다.
- 재전송 타이머 설정
- TCP는 패킷이 손실되었을 가능성을 판단하기 위해 재전송 타이머를 설정한다.
- RTT가 높을수록 타이머 값이 커지고, 낮을수록 타이머 값이 작아진다. 이를 통해 네트워크 상태에 따라 적절한 타이밍으로 재전송을 실행할 수 있다.
- 타이머 값이 너무 짧을 경우 정상 패킷이 손실로 간주되어 불필요한 재전송이 발생할 수 있으며, 너무 길 경우 실제 손실 시 재전송이 늦어져 성능이 저하된다.
- 네트워크 품질 평가
- RTT는 네트워크 품질을 평가하는 척도로 활용된다.
- RTT가 작을수록 네트워크의 응답 속도가 빠르며, 대기 시간이 적다는 것을 의미한다.
- 반대로 RTT가 크면 네트워크 지연이 많고, 통신 품질이 저하될 가능성이 있다.
공식
TCP RTT는 다음과 같은 공식으로 측정된다.
- RTT = ACK 수신 시간 - 데이터 송신 시간
TCP는 일반적으로 최신 RTT 값만을 사용하는 대신, 과거 RTT 값들을 반영한 가중 평균값을 사용하여 타이머를 설정한다. 이를 위해 Smoothed RTT (SRTT)를 계산하며, 일반적으로 아래와 같은 공식을 사용한다.
- SRTT = (1 - α) * SRTT + α * RTT
여기서 α는 가중치를 나타내며, 일반적으로 0.125 값이 사용된다.
또한 RTT의 변동성을 반영하기 위해 RTT 변동값 (RTTVAR)을 사용해 재전송 타이머를 설정하는데, 이를 재전송 대기 시간 (RTO)이라고 한다.
- RTO = SRTT + max(G, 4 * RTTVAR)
여기서 G는 시계 오차를 고려한 최소 지연값이다.
활용
RTT는 네트워크 상태와 혼잡도에 따라 변동되며, TCP는 이를 동적으로 측정하여 적절히 전송 속도 및 타이머 설정을 조절한다. RTT 값이 네트워크 상태에 따라 실시간으로 조정되므로 TCP는 각 연결의 성능을 최적화하고 안정적인 통신을 유지할 수 있다.
관련 TCP 개념
- RTTVAR (Round Trip Time Variation): RTT의 변동성을 측정하여 네트워크 상태에 따라 적절한 재전송 타이머를 설정하는 데 활용된다.
- RTO (Retransmission Timeout): RTT와 RTTVAR 값을 반영하여 재전송 대기 시간을 설정하는 값으로, 네트워크 상태에 따른 최적의 전송 속도를 유지하는 데 필수적이다.