TCP Retransmission   TCP 재전송

(2022-06-18)

Fast Retransmission, Fast Retransmit, 빠른 재전송, Duplicate Acknowledgement, 중복 ACK


1. TCP 재전송오류(패킷 손실,지연,중복,순서역전 등)라고 믿어지는 즉, 확인응답되지 않은 데이터를 재전송
  
  ㅇ 한편, `재전송`,`흐름제어`,`혼잡제어` 셋 모두가 함께 연관되므로 같이 고려되어야 함
     - 例) 재전송이 흐름제어의 일부 기능이지만, 많아지면 오히려 혼잡을 악화시키는 등 


2. TCP 재전송에서 큐 관리 원칙

  ㅇ 재전송에 필요한 사항 둘(2) : (복사본 저장, 재전송 타이머)
     - 재전송   : TCP 세그먼트 전송시, 그 복사본을 재전송 에 저장시킴
     - 재전송 타이머  : TCP 세그먼트의 매 전송시 마다, 재전송 타이머 가동

  ㅇ 즉, TCP세그먼트를 매번 송신 마다, 그에따른 재전송 타이머의 가동과 동시에 재전송 에 보관
     - 어떤 세그먼트타이머 만료 전에 확인응답이 오면, 에서 즉시 삭제
     - 어떤 세그먼트타이머 만료되면, 자동 재전송 실시
     - 심지어, 재전송한 세그먼트확인응답 오기 전까지는, 계속 에 머물게됨
     - 계속된 재전송 후에도 전송 실패가 계속되면, TCP 연결 강제 종료

  ㅇ 큐 관리 효율성 제고 : 슬라이딩 윈도우
     - 바로 앞 세그먼트 전송에 대한 확인응답을 기다리지 않고,
     - 수신측이 통보하는 윈도우 크기 내에서 묶어서 순서대로 연속 송신


3. TCP에서 재전송을 결정하는 기반 구분시간 기반 재전송 (Time-based Retransmission)  :  TCP 타이머 기반 
     - 확인응답을 기다리는 시간에 대한 재전송 타임아웃 (RTO)
        . 적응적 재전송 알고리즘 (Adaptive Retransmission Algorithm)
           .. 변화무쌍한 인터넷 환경에 따라, 각 TCP 연결감시하면서,         ☞ RTT 측정 참조
           .. 적절한 타임아웃추정하고, 변화에 따라 적응적으로 타임아웃 값을 수정함

  ㅇ 명시적 재전송 피드백  :  SACK, ECN
     - TCP에서 선택 옵션 사항임
        . SACK : 여러 세그먼트손실세그먼트 만 선택적으로 확인응답하는 방식
        . ECN : 혼잡 알림 필드 사용

  ㅇ 빠른 재전송 (Fast Retransmission : Fast Recovery, Fast Retransmit)
     - 수신측으로부터의 궤환(재전송 요청) 형태에 기반을 두고,
        . 패킷 손실 추정
     - 지연 없이 바로 타임아웃, 즉각 재전송 실시
        . 즉, RTO(재전송 타임아웃 시간)을 끝까지 기다리지 않는 빠른 재전송

     * 주로, 빠른 재전송은, 중복 ACK에 의해 유발됨
        . 중복 ACK (Duplicate Acknowledgement)  :  하나의 원래 ACK와 중복된 ACK
           .. 일련의 세그먼트를 연이어 전송할 때, 중간 세그먼트손실되어 수신되면, 
           .. 수신측은, 모두 같은 순서번호인 중복 ACK를 발생시키며, 즉각 확인응답을 함
           .. 즉, 중복 ACK는, 순서 역전 및 중간에 뻥뚫린 구멍이 있음을 의미
        . 한편, 송신측은, 중복 ACK를 받으면, 이를 손실인지 지연인지를 구분키 위해,
           .. 수 개 정도(통상,3개) 기다림 (duplicate ACK threshold or dupthresh)

     - 빠른 재전송 (Fast Retransmit)
        . 정상적인 재전송  과정을 따르지 않고, 중간 누락된 세그먼트를 빠르게 재전송

     - 빠른 회복 (Fast Recovery)
        . 이미 여러번 ACK가 오게되면, 비록 세그먼트들이 순서가 어긋나게 수신되더라도,
          네트워크 혼잡이라 여기지 않고, 송신률을 빠르게 증가시킴

     * [참고] ☞ TCP 혼잡제어 참조



Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"