TCP 왕복 시간

From IT Wiki

TCP 왕복시간(TCP RTT: Round Trip Time)는 TCP 연결에서 패킷이 송신된 후 수신자로부터 응답(ACK)을 받는 데 걸리는 시간을 의미한다. RTT는 네트워크 지연을 측정하는 중요한 요소로, TCP가 최적의 데이터 전송 속도를 유지하고, 패킷 손실을 최소화하는 데 필수적인 정보이다. TCP RTT는 네트워크 품질, 대역폭, 지연 요소에 따라 달라지며, 이를 통해 네트워크 혼잡을 조절하고 최적화한다.

역할 및 특징[edit | edit source]

  • 혼잡 제어 및 흐름 제어
    • RTT를 측정함으로써 TCP는 데이터 흐름을 조절하여 네트워크 혼잡을 최소화한다.
    • RTT가 길어질 경우 전송 속도를 줄이고, 짧을 경우 전송 속도를 높여 네트워크 자원을 효율적으로 사용한다.
  • 재전송 타이머 설정
    • TCP는 패킷이 손실되었을 가능성을 판단하기 위해 재전송 타이머를 설정한다.
    • RTT가 높을수록 타이머 값이 커지고, 낮을수록 타이머 값이 작아진다. 이를 통해 네트워크 상태에 따라 적절한 타이밍으로 재전송을 실행할 수 있다.
    • 타이머 값이 너무 짧을 경우 정상 패킷이 손실로 간주되어 불필요한 재전송이 발생할 수 있으며, 너무 길 경우 실제 손실 시 재전송이 늦어져 성능이 저하된다.
  • 네트워크 품질 평가
    • RTT는 네트워크 품질을 평가하는 척도로 활용된다.
    • RTT가 작을수록 네트워크의 응답 속도가 빠르며, 대기 시간이 적다는 것을 의미한다.
    • 반대로 RTT가 크면 네트워크 지연이 많고, 통신 품질이 저하될 가능성이 있다.

공식[edit | edit source]

TCP RTT는 다음과 같은 공식으로 측정된다.

  • RTT = ACK 수신 시간 - 데이터 송신 시간

TCP는 일반적으로 최신 RTT 값만을 사용하는 대신, 과거 RTT 값들을 반영한 가중 평균값을 사용하여 타이머를 설정한다. 이를 위해 Smoothed RTT (SRTT)를 계산하며, 일반적으로 아래와 같은 공식을 사용한다. 이는 Estimated RTT 라고도 부른다.

  • SRTT = (1 - α) * SRTT + α * RTT

여기서 α는 가중치를 나타내며, 일반적으로 0.125 값이 사용된다.

또한 RTT의 변동성을 반영하기 위해 RTT 변동값 (RTTVAR)을 사용해 재전송 타이머를 설정하는데, 이를 재전송 대기 시간 (RTO)이라고 한다.

  • RTO = SRTT + max(G, 4 * RTTVAR)

여기서 G는 시계 오차를 고려한 최소 지연값이다.

문제 풀기[edit | edit source]

순서 SRTT (ms) RTT (ms)
1 300 500
2 ? 600
3 ? 700

1. 가중치를 0.135라고 했을 때 3번째 SRTT 값은?

  • 여기서 SRTT는 과거 값들을 반영한 일종의 누적 값이므로 2번부터 구해야 한다.
    • SRTT = (1 - α) * SRTT + α * RTT 라는 공식은 고정이므로
  • 2번의 SRTT = (1 - 0.135) * 300 + 0.135 * 600 = 340.5ms
  • 3번의 SRTT = (1 - 0.135) * 340.5 + 0.135 * 700 = 389.0325ms

2. 가중치를 0.85라고 했을 때 3번째 SRTT 값은?

  • 마찬가지로 2번을 다시 계산해야 한다.
    • SRTT = (1 - α) * SRTT + α * RTT 라는 공식은 고정이므로
  • 2번의 SRTT = (1 - 0.85) * 300 + 0.85 * 600 = 555ms
  • 3번의 SRTT = (1 - 0.85) * 555 + 0.85 * 700 = 678.25ms

관련 TCP 개념[edit | edit source]

  • RTTVAR (Round Trip Time Variation): RTT의 변동성을 측정하여 네트워크 상태에 따라 적절한 재전송 타이머를 설정하는 데 활용된다.
  • RTO (Retransmission Timeout): RTT와 RTTVAR 값을 반영하여 재전송 대기 시간을 설정하는 값으로, 네트워크 상태에 따른 최적의 전송 속도를 유지하는 데 필수적이다.

같이 보기[edit | edit source]