TCP에서의 재전송은 Timeout과 중복된(Duplicated) ACK의 두가지 요소에 의해서 제어되며, OPNET TCP 모델 또한 이 두가지 요소 기능을 모두 제공한다. 그 중 Timeout에 의한 재전송이 어떻게 수행되는지 살펴보기로 하자.
TCP 재전송 시험망을 다음 그림과 같은 토폴로지로 구성하고("TCP Window Scaling(1) - LFN에서의 동작"의 시험망 토폴로지 참조), Server 노드와 STA 노드 사이의 RTT는 100ms가 되도록 설정한다.
패킷 손실을 발생시키기 위해서 Packet Discard 노드의 Packet Discard Configuration 속성을 다음 그림과 같이 200초에 패킷 1개를 폐기하도록 설정한다.
STA 노드와 Server 노드의 TCP Window Scaling은 Disabled 시킨다. Timeout에 의한 재전송만을 명확하게 관찰하기 위해서, Server 노드의 TCP Fast Retransmit는 Disabled 시킨다.
다음은 재전송이 일어났음을 확인하기 위해서 Server 노드에서 송신한 Retransmission Count와 Retransmission Timeout을 보인 것이다.
201.5초에 재전송이 TImeout에 의해서 일어났으며, 사용된 RTO(Retransmission TImeout) 값은 1초임을 확인할 수 있다. 200초 무렵의 RTO 값이 1초인 것은 TCP 파라미터의 Minimum RTO 속성값이 1초이기 때문이며("TCP 재전송(1) - RTO 파라미터 설정" 및" TCP 재전송(2) - Timeout이 발생하지 않았을 때의 RTO 계산" 참조, 1초의 RTO 값이 사용되었음에도 실제 재전송은 거의 1.5초 이후에 수행된 것은 TCP 파라미터의 Timer Granularity가 0.5초이기 때문이다(Timer Granularity의 영향에 대해서는 이후의 글에서 다시 설명할 것이다).
다음 그림은 Server 노드의 CWND 크기 변화를 보인 것이다. CWND 크기가 200초 무렵까지는 계속 증가하다가 패킷 손실을 201.5초에 Timeout에 의해 감지하면서 크게 낮아진 것을 확인할 수 있다.
'Riverbed Modeler(OPNET) > TCP Model' 카테고리의 다른 글
TCP 재전송(5) - 연속된 Timeout (0) | 2014.11.06 |
---|---|
TCP 재전송(4) - Timeout이 발생하였을 때의 RTO 계산 (0) | 2014.10.13 |
TCP 재전송(2) - Timeout이 발생하지 않았을 때의 RTO 계산 (0) | 2014.08.16 |
TCP 재전송(1) - RTO 파라미터 설정 (0) | 2014.08.06 |
TCP Window Scaling(3) - 예제 (0) | 2014.07.17 |