22. RTT 추정과 재전송 타임아웃(RTO): SRTT·RTTVAR·Karn 알고리즘과 게임 RUDP 적용

난이도 상 해설 보기 →
문제

문제 22 — RTT 추정과 재전송 타임아웃(RTO): SRTT·RTTVAR·Karn 알고리즘과 게임 RUDP 적용

실시간 게임 서버에서 신뢰성 UDP(RUDP) 계층을 직접 구현한다고 하자. 패킷을 보낸 뒤 ACK 가 오지 않으면 재전송해야 하는데, "얼마나 기다렸다가 재전송할 것인가"를 정해야 한다.

다음을 설명하시오.

  1. 고정 타임아웃의 문제 재전송 타임아웃을 상수(예: 200ms)로 두면 어떤 문제가 생기는가? 값이 너무 작을 때와 너무 클 때 각각 어떤 현상이 나타나는지, 특히 네트워크가 혼잡할 때 무엇이 위험한지 설명하시오.

  2. SRTT 와 RTTVAR TCP 는 RTT 를 어떻게 추정하는가? 지수 이동 평균(EWMA)으로 계산하는 SRTT(평활화 RTT)와 RTTVAR(RTT 변동폭)의 갱신식과 RTO 산출식을 RFC 6298 기준으로 쓰고(갱신 순서와 상수까지), 평균만 쓰지 않고 변동폭에 계수를 곱해 더하는 이유를 설명하시오. 첫 RTT 측정 시의 초기화와 RTO 의 하한·상한 규정도 함께 설명하시오.

  3. Karn 알고리즘과 재전송 모호성 재전송한 패킷의 ACK 로 RTT 를 측정하면 어떤 모호성이 생기는가? Karn 알고리즘은 이를 어떻게 해결하며, 그 대가로 생기는 문제("RTT 샘플이 오랫동안 갱신되지 않는 상황")를 무엇으로 보완하는가? TCP timestamp 옵션(RFC 7323)이 이 문제를 어떻게 바꾸는지도 설명하시오.

  4. 지수 백오프와 재전송 폭주 타임아웃마다 RTO 를 2배로 늘리는 이유는 무엇인가? 백오프가 없으면 혼잡 상황에서 어떤 일이 벌어지는가? 백오프한 RTO 를 언제 다시 정상값으로 되돌려야 하는가?

  5. 게임 RUDP 에의 적용 FPS/MOBA 처럼 지연에 민감한 게임에서 위 방식을 그대로 쓰면 무엇이 문제인가? 다음을 각각 논하시오.

    • 게임 패킷 크기와 전송 주기가 TCP 의 가정(대용량 스트림)과 다른 점
    • 재전송보다 최신 상태 재전송(가장 최근 스냅샷만 보내기)이 나은 경우
    • 신뢰 채널과 비신뢰 채널을 분리했을 때 RTT 추정을 어느 쪽에서 해야 하는가
    • Wi-Fi/모바일 환경의 버퍼블로트와 스파이크가 RTTVAR 에 미치는 영향, 그리고 최소/최대 RTO 를 어떻게 잡을 것인가
  6. 실무 판단 서비스 중인 게임에서 "재전송이 너무 많다"는 리포트를 받았다. RTT 추정 파라미터, ACK 정책(즉시 ACK vs 지연 ACK vs 누적 ACK), 패킷 손실률 중 무엇을 어떤 순서로 확인하겠는가? 각 지표를 어떻게 측정할 것인지도 함께 답하시오.

답안 작성
내 답안 · 자동 저장

직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.