RTO를 계산하기 위해서는 RTT 측정값이 필요하다("TCP 재전송(2) - Timeout이 발생하지 않았을 때의 RTO 계산" 참조). 하지만, 재전송이 발생할 경우, 수신된 ACK가 먼저 전송한 세그먼트에 의한 것인지 나중에 재전송한 세그먼트에 의한 것인지를 구분할 수 없어서 RTT를 정확히 측정할 수 없는 문제가 발생한다.
이러한 문제를 해결하기 위해서 Karn 알고리즘이 제안되었으며, OPNET 역시 Karn 알고리즘을 지원한다. "TCP 재전송(1) - RTO 파라미터 설정"에서 언급하였듯이, OPNET에서 제공하는 TCP 속성에는 Karn's Algorithm 적용 여부를 설정할 수 있는 기능이 있다. Karn 알고리즘의 사용은 TCP에서 필수 사항이므로, 특수한 목적을 가진 경우가 아니라면 TCP를 사용하는 시뮬레이션에서 이 속성은 Enabled(Default 값)로 설정되어 있어야 한다.
OPNET TCP 모델에서 Karn 알고리즘이 Enabled로 되어 있고 타임 스탬프 옵션이 사용되고 있지 않으면(타임 스탬프에 대해서는 이후의 글에서 다시 살펴보기로 한다), 재전송된 패킷에 대하여 측정된 RTT는 RTO 계산에 사용되지 않는다.

 

Posted by 신상헌
,