TCP의 Delayed ACK Mechanism이 Segment/Clock Based 방식이고 데이터가 계속 수신되고 있는 상태라면 ACK 메시지는 대부분 Segment 기반으로 (즉, Maximum ACK Segments에 도달하여) 발생되지만, Clock 기반으로 (즉, Maximum ACK Delay에 도달하여) 발생되는 경우도 있다.
실제로 "TCP Delayed ACK(2) - 예제"에서의 결과에서도 200.4초에 송신된 ACK는 Clock 기반으로 발생된 (즉, Maximum ACK Delay에 도달하여 수신 세그먼트 1개에 대한 응답만으로 구성된) 것이다. 단순하게 생각하면 Maximum ACK Delay 시간(200ms)보다 훨씬 짧은 간격(약 100ms)으로 데이터가 계속 수신되고 있으므로, 모든 ACK는 Maximum ACK Segments에 의해 발생되어야 할 것 같은데 왜 이런 현상이 발생한 것일까?
그 이유는 Delayed ACK을 위한 타임아웃 설정은 데이터 패킷 수신 시점을 기준으로 이루어지는 것이 아니라, Maximum ACK Delay 시간 단위(tick)로 이루어지기 때문이다. 따라서, 데이터 패킷을 계속 수신중이라 할지라도 마지막 ACK 송신후 수신된 데이터 패킷의 수가 Maximum ACK Segments에 도달하지 않은 상태(즉, ACK를 보내지 않은 데이터 패킷이 있는 상태)에서 Maximum ACK Delay에 의한 타임아웃 시각에 도달하는 경우가 발생할 수도 있는 것이다.

'Riverbed Modeler(OPNET) > TCP Model' 카테고리의 다른 글

TCP SACK(1)- 파라미터 설정  (0) 2015.05.22
TCP Slow Start 초기값  (0) 2015.05.14
TCP Delayed ACK(2) - 예제  (0) 2015.04.17
TCP Delayed ACK(1) - 파라미터 설정  (0) 2015.04.01
TCP Window Advertisement(2) - 예제  (0) 2015.03.23
Posted by 신상헌
,