OPNET TCP 모델에서는 Window Scale Option[1] 기능을 "Window Scaling"이라는 이름의 속성으로 제공한다. 다음 그림은 OPNET의 Window Scaling 속성 설정창을 보인 것이다.

 

 

그러면, Window Scaling이 적용되었을 때 실제로 성능 향상이 있는지 시뮬레이션을 통해 확인해보기로 하자. 다음 그림은 TCP Window Scaling 성능을 확인하기 위한 시험망 토폴로지이다.

 


ppp_wkstn 노드 모델(STA 노드)과 ppp_server 노드 모델(Server 노드), 그리고 Packet Discarder 노드 모델(Discarder_1, 2 노드)을 배치하고, 노드간을 단방향 ppp_adv 링크 모델을 사용하여 연결하였다. 링크의 전송 속도(data rate)는 DS3로 설정한다. (Discarder_1과 Discarder_2 노드는 이 시뮬레이션에서 실제로 사용되지는 않는다. 하지만, 이후의 TCP 파라미터 관련 시뮬레이션 결과들과의 비교를 쉽게 하기 위해서 이 시뮬레이션에서도 동일한 토폴로지로 구성하였다.) 링크 지연은 Server 노드와 STA 노드 사이의 RTT가 50ms가 되도록 설정한다. (이는 시험망을 LFN[1], 즉 "Long, Fat pipe Network"로 만들기 위해서이다.)


트래픽은 FTP를 사용하여 Server 노드에서 STA 노드로 50,000,000bytes 크기의 파일이 전달되도록 하였다. Window Scaling의 효과를 확인하기 위해서 STA 노드와 Server 노드의 TCP Window Scaling이 Disabled된 시나리오와 Enabled된 시나리오를 각각 저장하고, 시뮬레이션을 수행한다. (17.1 버전("OPNET Modeler 17.1 PL2 발표" 참조)까지는 Window Scaling 속성의 기본값이 Disabled였는데, 17.5 버전(OPNET Modeler 17.5 PL3 발표" 참조)부터 Enabled로 변경되었음에 유의하여야 한다.)


다음은 Window Scaling을 사용하면 TCP의 성능을 어떻게 개선시키는지 살펴보기 위해 Window Scaling 속성 사용 여부에 따른 전송율(throughput) 차이를 비교한 것이다.

 

 

Window Scaling을 사용하지 않았을 때는 최대 전송율이 불과 10Mbps 정도인 반면, Window Scaling을 사용하면 최대 전송율이 45Mbps로 크게 증가함을 확인할 수 있다. 또한, 전송율이 증가하므로 FTP 파일 전송에 걸리는 시간도 훨씬 짧아진다.
최대 전송율이 이렇게 증가한 것은 Window Scaling 사용에 따라 송/수신시에 사용하는 버퍼의 크기가 증가하였고, 이에 따라 Ack 없이 전송할 수 있는 데이터의 양이 증가하였기 때문이다. 이는 다음 그림과 같이 해당 TCP 연결의 Flight Size 결과를 통해 확인할 수 있다.

 


Window Scaling을 사용하지 않았을 때와 사용하였을 때의 CWND(Congestion Window) 크기를 비교해 보면 다음 그림과 같다. Window Scaling을 사용하지 않았을 경우 ssthresh 초기값으로 작은 수가 사용되므로 CWND 역시 작은 값을 가지는 반면, Window Scaling을 사용하는 경우 ssthresh 초기값으로 매우 큰 수가 사용되므로 CWND 역시 매우 큰 값을 가지는 것을 볼 수 있다.

 


[1] RFC 1323, "TCP Extensions for High Performance," IETF, 1992.

Posted by 신상헌
,