RTT   Round Trip Time   왕복시간, RTT 예측, RTT 측정

(2024-09-02)

RTO, Retransmission Timeout, 재전송 타임아웃, Karn Algorithm, 카른 알고리즘, Karn 알고리즘, 지수 RTO 후퇴


1. RTT (Round Trip Time, 왕복 시간)패킷망(인터넷) 상에서, 송신지부터 목적지 호스트까지, 패킷이 왕복하는데 걸리는 시간
     - 이에 영향 주는 요소 :  망의 혼잡, 거리, 전송속도 등이 있음


2. IP 패킷의, RTTIP 패킷 왕복시간은, 
     - ping 명령어를 사용하여 RTT(왕복시간) 및 TTL(IP패킷수명) 수치를 알아볼 수 있음


3. TCP 세그먼트의, RTT 측정 및 RTO 예측/추정

  ※ 주어진 TCP 연결에서, RTT(왕복 시간) 측정을 기반으로 RTO(재전송 타이머)를 설정하는 방법

  ㅇ RTT (Round Trip Time, 왕복 시간) 측정
     - RTT 측정샘플 세그먼트의 송신부터 확인응답 받기까지의 왕복시간을 측정
        . 네트워크 가변성 때문에 RTT 샘플 측정값은 그때 마다 달라지게됨

     - 1 이상의 TCP 세그먼트들이 보내면, 1번 만 확인응답이 이루어지며, 그 왕복시간을 측정

  ㅇ RTO (Retransmission Timeout, 재전송 타임아웃 시간) 설정
       = 전송된 한 세그먼트에 대한 확인응답을 기다려야 하는 시간
       = TCP 재전송 타이머 값

     - 송신 TCP는, 
        . 매 세그먼트를 전송할 때 마다, 재전송 타이머(RTO)를 가동함
        . 이때, RTO 값의 설정치는, TCP 연결의 RTT(왕복시간) 보다 약간 크면 이상적임
           .. 즉, 세그먼트 전송부터 확인응답 받기까지의 시간 보다 약간 크면 좋음
        . 실제, RTO 값이 얼마나 커야 하는지에 대해서는, 아래와 같은 계산 방식이 있음

  ㅇ RT0 계산 변수
     - TCP 송신 모듈은 RTO 계산을 위해 1개 측정변수 및 2개 상태변수를 유지해야 함
        . MRTT (measured RTT, 측정된 RTT)               : 측정변수
        . SRTT (smoothed RTT, 매끄러운 RTT)             : 상태변수
           .. 단순평균 방식 보다는 최근 망 상황에 더 높은 비중을 주는 가중평균 방식
           .. 최근 샘플값일수록 더 높은 가중치를 주게됨
           .. (EWMA, Exponential Weighted Moving Average, 지수 가중 이동 평균)
        . RTTVAR (round-trip time variation, RTT 편차)  : 상태변수
           .. 측정된 RTT 샘플값들의 변동성(Variability)을 고려코자함
        . RTO (retransmission timeout, 재전송 타이머)   : 결과변수
           .. SRTT,RTTVAR로부터 계산되어짐

  ㅇ RT0 계산 방법
     - 초기값
        . initial RTO  =  시스템 마다 다름
           .. 표준 권고치는 1 초 (RFC 6298)
        . 윈도우즈에서, RTO 초기값을 확인할 수 있는 명령어 : netsh int tcp show global

     - 첫 측정 이후
        . SRTT   = MRTT
        . RTTVAR = MRTT / 2
        . RTO    = SRTT + 4 RTTVAR

     - 연속 측정 이후
        . SRTT   = (1-α) SRTT + α MRTT
        . RTTVAR = (1-β) RTTVAR + β |SRTT - MRTT|
        . RTO    = SRTT + 4 RTTVAR

     * 일반적으로, α=1/8 (0.125) 및 β=1/4 (0.25)을 사용

     * 결과적으로, RTO는 최근의 SRTT 값에 균형을 위해 작은 RTTVAR의 4배 취한 값을 더함

  ㅇ 타임아웃되어서 실제 재전송 발생시에, 혼잡제어 감소를 위한, RTO 계산 원칙 : (Karn 알고리즘)

     - (재전송 패킷들의 모든 왕복 시간 측정은 무시)
        . 재전송 세그먼트(확인응듭 ACK가 도착되더라도)는, RTT 측정 대상에서 제외 함
           .. 즉, 새로이 전송하는 데이터 세그먼트 만을 RTT 측정 대상으로 삼음

     - (지수 백오프, 지수 RTO 후퇴)
        . 패킷 손실로 인해, 재전송이 일어난 경우, 
        . 혼잡제어를 위해, 패킷 손실 없을 때까지, 
        . 기존에 계산된 RTO 값을, 점차 두 배 씩 늘려가는 방식을 사용함 
           .. 이는, 패킷 손실이 더 이상 발생하지 않을 때까지, 재전송 비율을 줄여감으로써,
           .. 네트워크에 가해지는 부하를 줄이고자 하는 것임

  ※ 관련 표준 : RFC 2988 (舊), 6298 (現) `Computing TCP's Retransmission Timer`

TCP 흐름/혼잡 제어
   1. TCP 혼잡제어   2. Slow Start   3. Silly Windown Syndrome   4. TCP 타이머   5. RTT 예측   6. 확인응답   7. TCP 재전송  


"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"