SWS   Silly Window Syndrome   어리석은 윈도우 신드롬

(2020-09-17)

바보 윈도우 증후군, Nagle’s Algorithm, Nagle 알고리즘

1. 어리석은 윈도우 신드롬 (SWS, Silly Window Syndrome)

  ㅇ 송신,수신측 응용 프로그램데이터 처리 단위가 작거나 저속일 때,
     - 예를들면, 
        . 송신측이 저속으로 1 바이트 씩 발생시키거나, 
        . 수신측이 저속으로 1 바이트 씩 처리하는 경우에,
     - 데이터 1 바이트 전송을 위해,
        . 최소 IPTCP헤더가 각각 20 바이트 씩 총 40 바이트가 부가적으로 붙여짐
        . 즉, 전송하기 위해 배 보다 배꼽이 더 큰 비 효율적인 현상이 발생되는데,
     - 이를 어리석은 윈도우 신드롬(SWS) 현상이라고 함
        . 이는 네트워크의 자원을 낭비하는 결과가 됨

  ㅇ 송신측 SWS 문제점 해결 방안 : Nagle 알고리즘 (매우 단순함)
     - 처음에는, 응용 프로그램쪽에서 1개 바이트전송 요청하더라도 이를 송신하나,
     - 그 다음부터는, 누적시켜가며, 
        . 수신측 ACK가 올 때까지 또는 최대 MSS(Maximum Segment Size)까지 채울 때까지 송신 보류함
     - 이로써, 네트워크 속도 및 응용 프로그램 속도를 맞추는 역할을 하게 됨

  ㅇ 수신측 SWS 문제점 해결 방안 : Clark's solution 또는 Delayed Acknowledgment
     - Clark's solution
        . 일단, 수신 즉시 ACK를 보내서 송신측에 잘받았다는 소식을 전하나,
        . 이때, 슬라이딩 윈도우 크기를 0(zero)로 셋팅하여 보내서, 수신 처리 속도가 늦음을 알림
        . 최소 수신 버퍼의 1/2 이상 또는 MSS 정도를 채울 정도까지 기다린 후에야, 윈도우 크기 늘림
     - Delayed Acknowledgment
        . 수신 즉시 ACK를 보내지 않고, 수신 버퍼가 넉넉할 때까지 지연시키는 단순한 방식
        . 단, 단순하지만 괜히 재전송 횟수 만 키워 네트워크 혼잡에 기여할 수도 있음 
        . 따라서, 기본 500 ms 보다 더 길게 ACK지연 못하도록 규칙을 정함


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

 
        최근수정     요약목록     참고문헌