네트워크 - 흐름 제어와 혼잡 제어

델리만쥬 디퓨저·2024년 9월 10일

네트워크

목록 보기
3/9

흐름 제어 (Flow Control)

목적

  • 송신자가 너무 빠르게 데이터를 전송함으로써 수신자가 처리할 수 있는 용량을 초과하지 않도록 조절하는 메커니즘. 이로 인해 수신자의 버퍼 오버플로우를 방지하고 데이터 손실을 최소화시킴.

작동 방식

  • 송신자가 수신자의 상태에 따라 전송 속도를 조절하도록 함.

슬라이딩 윈도우(Sliding Window) 알고리즘

  • 윈도우(Window) : 송신자가 ACK(확인 응답)을 기다리지 않고도 보낼 수 있는 데이터의 최대 양을 나타냄. 이 윈도우 크기는 수신자의 버퍼 크기에 따라 결정됨
  • 작동 과정
    1. 송신자는 수신자로부터 현재 수신자가 처리할 수 있는 데이터의 양을 나타내는 윈도우 크 정보를 받음.
    2. 송신자는 이 윈도우 크기만큼 데이터를 전송할 수 있으며, 그 후 수신자로부터 ACK를 기다림
    3. 수신자는 데이터를 수신하고, 현재 수신 버퍼 상태에 따라 새로운 윈도우 크기를 계산하여 송신자에게 알림
    4. 송신자는 새로운 윈도우 크기를 기반으로 전송 속도를 조절함
  • 특징
    - 동적 조절 : 수신자의 버퍼 상태에 따라 윈도우 크기가 동적으로 조절됨
    - 효율성 : 수신자가 처리할 수 있는 범위 내에서 데이터가 전송되므로, 송신자의 전송 속도와 수신자의 처리 능력이 조화를 이루게 됨

혼잡 제어 (Congestion Control)

목적

  • 네트워크의 혼잡 상태를 방지하거나 혼잡이 발생했을 때 이를 완화하는 메커니즘. 네트워크 경로 상의 여러 노드(라우터, 스위치 등)에서 발생하는 혼잡을 관리하여 패킷 손실과 전송 지연을 최소화시킴.

작동 방식

  • 네트워크 전체의 상태를 고려하여 송신자의 전송 속도를 제어함. 이는 패킷 손실, 지연 시간 증가, 네트워크 경로의 혼잡 상태 등을 기반으로 조절됨.

주요 혼잡 제어 알고리즘

  1. Slow Start (느린 시작)
    • 목적 : 네트워크 초기 연결 시 혼잡을 피하기 위해 전송 속도를 천천히 증가시키는 단계
    • 작동 방식
      - 연결이 시작될 때 Congestion Window (cwnd)1MSS(최대 세그먼트 크기)로 설정
      - ACK를 받을 때마다 cwnd를 지수적으로 증가시킴
      - cwnd가 임계값 ssthresh (Slow Start Threshold)에 도달하면 Slow Start 단계에서 Congestion Avoidance 단계로 전환하고, cwnd는 선형적으로 증가함
      - 패킷 손실이 발생할 경우 ssthreshcwnd의 절반으로 줄이고, cwnd를 다시 1MSS로 설정하여 Slow Start 단계로 돌아감
    • 특징 : 처음에는 윈도우 크기가 조금 느리게 증가할지라도, 시간이 갈수록 윈도우의 크기가 점점 빠르게 증가
  2. Congestion Avoidance (혼잡 회피)
    • 목적 : 혼잡이 발생하기 전에 이를 회피하기 위해 전송 속도를 선형적으로 조절함
    • 작동 방식
      - cwndssthresh에 도달하면, cwnd의 증가 방식을 지수에서 선형으로 전환함
      - 매 RTT(Round Trip Time)마다 cwnd가 1MSS만큼 증가함
    • 특징 : 혼잡이 발생하기 전에 네트워크 용량을 최대한 활용하면서도, 혼잡 상태를 방지함
  3. Fast Retransmit (빠른 재전송)
    • 목적 : 패킷 손실이 감지되었을 때 빠르게 재전송하여 네트워크 효율성을 높임
    • 작동 방식
      - TCP는 세 개의 중복 ACK를 수신하면 손실된 패킷이 발생했다고 간주하고, 타임아웃을 기다리지 않고 손실된 패킷을 즉시 재전송함
    • 특징 : 손실된 패킷을 더 빠르게 재전송할 수 있어 전송 지연을 줄임
      sldtiad.png
  4. Fast Recovery (빠른 복구)
    • 목적 : 혼잡이 발생했을 때 전송 속도를 급격히 줄이는 대신, 보다 부드럽게 줄여 네트워크 회복 속도를 높임
    • 작동 방식
      - ssthreshcwnd의 절반으로 설정하고, cwndssthresh로 설정한 뒤 cwnd를 선형적으로 증가시킴
      - 이는 혼잡 회피 상태로 전환하여 네트워크 혼잡을 완화시킴
    • 특징 : 네트워크 회복 시간이 줄어들고, 불필요한 대기 시간을 줄임

TCP Tahoe와 TCP Reno

  • TCP Tahoe : 혼잡 제어를 위한 초기 알고리즘 중 하나. 혼잡 제어를 위해 Slow Start, Congestion Avoidance, Fast Retransmit 세 가지 메커니즘을 사용. 하지만 손실 발생 시 Slow Start 단계로 돌아가기 때문에, 손실 이후 전송 속도가 급격히 감소하는 단점이 존재.
  • TCP Reno : TCP Tahoe의 개선된 버전. Fast Recovery(빠른 복구) 메커니즘을 도입하여 성능 향상.
구분TCP TahoeTCP Reno
Slow Startcwnd를 1 MSS로 시작하고 지수적으로 증가cwnd를 1 MSS로 시작하고 지수적으로 증가
Congestion Avoidancecwndssthresh에 도달하면 선형적으로 증가cwndssthresh에 도달하면 선형적으로 증가
Fast Retransmit3개의 중복 ACK 수신 시 패킷을 즉시 재전송3개의 중복 ACK 수신 시 패킷을 즉시 재전송
Fast Recovery지원하지 않음, 패킷 손실 후 Slow Start로 돌아감지원, cwnd를 절반으로 줄이고 선형 증가로 회복
효율성패킷 손실 시 전송 속도가 급격히 감소패킷 손실 시 전송 속도를 부드럽게 조절하여 네트워크 효율성 증가
대역폭 활용대역폭 활용이 비효율적일 수 있음대역폭 활용이 최적화됨
profile
< 너만의 듀얼을 해!!! )

0개의 댓글