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. TCP 혼잡제어   2. Slow Start   3. Silly Windown Syndrome   4. TCP 타이머   5. RTT 예측   6. 확인응답   7. TCP 재전송  


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