32비트 OS 시스템에서는 Riverbed(OPNET) Modeler 18.0.3 버전("Riverbed Modeler 18.0.3 발표" 참조)까지만 사용할 수 있으며, 18.5.0 버전("Riverbed Modeler 18.5.0 발표" 참조)부터는 사용할 수 없다.
32비트 윈도우즈 시스템에서 18.5.0 이후의 버전을 설치하려고 하면, 다음 그림처럼 "Java VM 로드 중 Windows 오류 216 발생" 에러 메시지를 발생시키고 설치가 중지된다.

 


에러 메시지만 보고는 32비트 OS에 의한 제약점인지 파악하기가 쉽지 않다. 더군다나, 이런 중요한 사항이 release note에 제대로 기술되어 있지 않은 것은 사용자들에게 큰 혼란을 줄수 있다고 보여진다.

 

Posted by 신상헌
,

"OPNET Modeler 17.5 PL3 발표"와 "멀티코어 시스템에서의 시뮬레이션 (16.1 버전)"에서 언급하였듯이, 멀티코어
활용을 위한 설정 기능은 OPNET 17.5 PL3 버전에서 일부 변경되었다.
17.5 PL3 버전부터는 Multiple run이 필요한 시나리오를 멀티코어 사용이 비활성화된 상태에서 실행할 경우, 멀티코어 사용여부를 확인하는 설정창이 다음 그림처럼 친절하게 나타난다.

 


이 창을 통해 코어의 갯수만 설정해주면 멀티코어를 사용한 동시 시뮬레이션을 다음 그림처럼 쉽게 수행할 수 있다(사용 코어수는 3개로 설정).

 

 

Posted by 신상헌
,

Riverbed(OPNET) Modeler 17.5 PL3 ~ 18.5.0 버전에서는 노드 속성(Attribute) 편집창이 기본적으로 Advanced 모드로 열리는 문제가 있다. Advanced 모드에서는 다음 그림처럼 자주 사용되지 않는 속성 항목들(예: model, x position, y position, threshold, icon name, creation source, creation timestamp, creation data, label color, altitude modeling, condition, financial cost, hostname, minimized icon, role)도 모두 보여지게 되므로, 많은 경우에 오히려 사용하기 불편하다.

 


물론, "Advanced" 체크박스를 해제하면 일반 모드로 전환할 수 있으므로, 기능상에는 문제가 없다. 하지만, 노드의 속성 편집창을 열때마다 Advanced 체크박스를 해제하는 것은 매우 번거로운 일이며, Advanced 모드가 기본으로 적용되지 않도록 제어할 방법이 없다는 점에서 매우 불편한 문제였다.
이 문제는 18.5.1 버전("Riverbed Modeler 18.5.1 발표" 참조)에서 해결되었다. 프로그램 속성 설정의 기본값만 변경해주면 될 것 같은데, 해결되기까지 상당히 오랜 시간이 걸렸다(2013년 10월에 문제 제기, 2016년 5월 버전에 반영).

Posted by 신상헌
,

Riverbed(OPNET) Modeler는 Multiple run이 필요한 시나리오의 시뮬레이션을 신속하게 수행할 수 있도록 distributed simulation 기능을 제공하며, 여기에는 멀티코어를 활용하는 기능도 포함되어 있다. 다만, 이렇게 멀티코어를 활용하는 기능은 기본적으로 비활성화되어 있으며, 활성화를 위해서는 사용자 설정이 필요하다. 이러한 불편함은 OPNET 17.5 PL3 버전("OPNET Modeler 17.5 PL3 발표" 참조)에서  멀티코어 활용을 위한 설정 기능이 개선되면서 많이 해소되었다. 다음 그림은 16.1 PL1 버전("OPNET Modeler 16.1 PL1 발표" 참조)에서 멀티코어 활용 기능을 비활성화한 상태에서 Multiple run이 필요한 시나리오를 실행시킨 화면을 보인 것이다. 각각의 실행이 순차적으로 진행되는 것을 알 수 있다.

 


다음 그림은 동일한 16.1 PL1 버전에서 동일한 시나리오를 멀티코어 활용 기능을 활성화하고(사용 코어수는 3개로 설정) 실행시킨 화면을 보인 것이다. 시뮬레이션 실행이 3개씩 동시에 진행되는 것을 알 수 있다.

 


코어가 4개인 Intel Core i5-4590 CPU가 장착된 시스템에서 위의 예제 시나리오를 멀티코어 사용 비활성화 상태로 실행하였을 때에는 3분 14초가 소요되었다. 하지만, 멀티코어 사용 활성화 상태(사용 코어수는 3개로 설정)로 실행하였을 때에는 1분 11초만이 소요되었다. 즉, 사용된 코어의 갯수에 반비례하여 시뮬레이션 소요 시간이 감소한다고 볼 수 있다.

Posted by 신상헌
,

Riverbed(OPNET) Modeler는 18.7.1 버전("Riverbed Modeler 18.7.1 발표" 참조)까지도 MS Visual Studio 2013 이하 버전만을 지원하며, MS Visual Studio 2015는 지원하지 않는다.
다음은 Riverbed(OPNET) Modeler 18.0 버전("Riverbed Modeler 18.0.3 발표" 참조)에서 MSVC 2015를 컴파일러로 사용하려고 시도했을 때 발생하는 에러를 보인 것이다.

 

======================================================================================================
Beginning simulation of Analysis-RIP_Routing at 11:08:40 Sun Nov 29 2015
----
Kernel: development (not optimized), sequential, 32-bit address space
----
<<< Recoverable Error >>>
Object repository construction failed
due to errors encountered by the binder program (bind_so_msvc)

----
Errors reported by the binder program follow
(these messages have been saved in (C:\Users\User\op_admin\tmp\bind_err_4876):
   D:\OPNET_17_5\Analysis.project\Analysis-RIP_Routing.dev32.i0.nt.lib 라이브러리 및 D:\OPNET_17_5\Analysis.project\Analysis-RIP_Routing.dev32.i0.nt.exp 개체를 생성하고 있습니다.

apprun.dev32.i0.ex.obj : warning LNK4217: 지역으로 정의된 __snprintf 기호를 _Aps_AppRun_Python_Exec 함수로 가져왔습니다.

apprun_sup.dev32.i0.ex.obj : warning LNK4217: 지역으로 정의된 __snprintf 기호를 _appy_aps_application_base_odb_message 함수로 가져왔습니다.

gdc_server_support.dev32.i0.ex.obj : warning LNK4217: 지역으로 정의된 __snprintf 기호를 _gdc_process_svr_to_svr_query. 함수로 가져왔습니다.

haipe_support.dev32.i0.ex.obj : warning LNK4049: 지역으로 정의된 기호 __snprintf을(를) 가져왔습니다.

apprun.dev32.i0.ex.obj : warning LNK4217: 지역으로 정의된 _printf 기호를 _Aps_AppRun_Parameters_Print. 함수로 가져왔습니다.

apprun_sup.dev32.i0.ex.obj : warning LNK4217: 지역으로 정의된 _printf 기호를 _appy_aps_module_init. 함수로 가져왔습니다.

gdc_server_support.dev32.i0.ex.obj : warning LNK4217: 지역으로 정의된 _printf 기호를 _gdc_send_server_relation_candidate_req. 함수로 가져왔습니다.

apprun_sup.dev32.i0.ex.obj : warning LNK4217: 지역으로 정의된 _fprintf 기호를 _appy_aps_apprun_print 함수로 가져왔습니다.

gdc_server_support.dev32.i0.ex.obj : warning LNK4217: 지역으로 정의된 _sprintf 기호를 _gdc_server_protocol_msg_create. 함수로 가져왔습니다.

op_win_stdio_patch.obj : error LNK2019: __imp____iob_func 외부 기호(참조 위치: _op_win_stdio_patch 함수)에서 확인하지 못했습니다.

D:\OPNET_17_5\Analysis.project\Analysis-RIP_Routing.dev32.i0.nt.dll : fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.

Microsoft (R) Manifest Tool version 6.3.9600.17336

Copyright (c) Microsoft Corporation 2012.

All rights reserved.

 

mt : general error c101008d: Failed to write the updated manifest to the resource of file "D:\OPNET_17_5\Analysis.project\Analysis-RIP_Routing.dev32.i0.nt.dll". ??? ??? ?? ? ????.


----
<<< Program Abort >>>
Error encountered rebuilding repository -- unable to proceed
T (0), EV (-), MOD (NONE), PROC (sim_load_repos_load)

----
======================================================================================================

 

따라서, Riverbed(OPNET) Modeler 18.0 ~ 18.7.1 버전에서는 컴파일러로 MSVC 2013("Visual Studio 2013 Express를 위한 환경 변수 설정" 참조) 이하 버전을 사용하여야 한다.

Posted by 신상헌
,

Riverbed(OPNET) Modeler의 라이센스는 floating 형태로 설치하더라도 동일한 서브넷 상에 속한 단말에서만 사용할 수 있다.
단일 연구실이나 부서에서 사용할 경우에는 이러한 특성이 별 문제가 되지 않지만, 서브넷 주소가 다른 여러 부서에서 공동으로 사용하거나 여러 사업장을 가진 회사에서 사용할 경우에는 문제가 된다. 이러한 경우VPN 사용이 좋은 대책이 될 수 있다. VPN을 사용하면 서로 다른 서브넷에 속한 Riverbed(OPNET) Modeler 사용자들을 라이센스 서버와 동일 서브넷으로 만들어 줄 수 있기 때문이다.

 

Posted by 신상헌
,

윈도우에서 Visual Studio 2013을 컴파일러 사용하기 위한 환경 변수 설정. (Riverbed Modeler 18.0.3("Riverbed Modeler 18.0.3 발표" 참조)까지도 Visual Studio 2013 Express는 지원 컴파일러 목록에 포함되어 있지 않다. 하지만, 설치 및 동작에 큰 문제는 없는 것으로 보여진다.
Riverved(OPNET) Modeler를 위한 환경 변수 설정 방법은, Visual Studio 2010 버전 이후로는 동일하("Visual Sutdio 2010을 위한 환경 변수 설정" 참조)

 

1) VS2013 콘솔에서 "set INCLUDE"를 실행한다.
2) "INCLUDE=" 뒤부터 출력문을 복사한다.
3) 환경변수 입력창에서 시스템 변수에 "INCLUDE" 항목을 추가하고, 복사해둔 내용을 변수 값에 입력한다. (동일 항목이 기존에 존재하면, 값만 추가)
4) VS2013 콘솔에서 "set LIB"를 실행한다.
5) "LIB=" 뒤부터 "LIBPATH=" 전까지의 출력문을 복사한다.
6) 환경변수 입력창에서 시스템 변수에 "LIB" 항목을 추가하고, 복사해둔 내용을 변수 값에 입력한다. (동일 항목이 기존에 존재하면, 값만 추가)
7) VS2013 콘솔에서 "set Path"를 실행한다.
8) "Path=" 뒤부터 "C:\Windows\system32;"까지의 출력문을 복사한다.
9) 환경변수 입력창의 시스템 변수에서 "Path" 항목을 찾고, 본사해둔 내용을 변수 값에 추가한다.

Posted by 신상헌
,

MS 윈도우에서 Visaul Studio 2010 버전을 컴파일러로 사용하기 위한 환경 변수 설정 방법(32비트/64비트 동일). Visual Studio 2010 버전 이후로는 동일한 방법이 적용되며, Visual Studio Express 버전에도 적용된다.

 

1) 설치된 Visual Studio의 "개발자 명령 프롬프트" 창을 연다.
2) "개발자 명령 프롬프트" 창에서 "set INCLUDE" 명령어를 입력하고, 출력된 문자열을 복사한다.
3) 환경 변수 설정창에서 사용자 변수에 "INCLUDE" 항목을 추가하고, 복사해둔 문자열을 입력한다.
4) "개발자 명령 프롬프트" 창에서 "set LIB" 명령어를 입력하고, 출력된 문자열중 "LIBPATH="전까지만 복사한다.
5) 환경 변수 설정창에서 사용자 변수에 "LIB" 항목을 추가하고, 복사해둔 문자열을 입력한다.
6) "개발자 명령 프롬프트" 창에서 "set Path" 명령어를 입력하고, 출력된 문자열중 "C:\Windows\system32"까지만 복사한다.
7) 환경 변수 설정창에서 사용자 변수에 "Path" 항목을 추가하고, 복사해둔 문자열을 입력한다.
8) 환경 변수 설정창에서 "확인" 버튼을 클릭한다.

Posted by 신상헌
,

STP(Spanning Tree Protocol)은 스위치간의 루프를 방지하기 위한 프로토콜이며, Riverbed(OPNET) Modeler에도 구현되어 있다. 다음 그림은 STP 동작을 확인하기 위한 시험망 구조를 나타낸 것이다, 이더넷 스위치인 SW1 ~ SW4 노드를 격자형으로 연결하였다(즉, 루프가 발생한다). R1 ~ R4 노드는 라우터인데, IP 망 구조를 명확하게 하기 위해 연결한 것이며 스위치간의 STP 동작과는 관련이 없다.

 


다음 그림은 시뮬레이션 수행 후 스위치간에 구성된 Spanning Tree를 나타낸 것이다. SW1 노드가 Root로 선정되었으며, SW3 노드와 SW4 노드간의 링크가 차단(붉은색으로 표시)되어 루프를 방지하는 것을 확인할 수 있다.

 


이제 Client1 노드에서 Server1 노드로 향하는 트래픽과 Client2 노드에서 Server2 노드로 향하는 트래픽의 전달 경로를 살펴보면 다음 그림과 같다. SW3 노드와 SW4 노드간의 링크가 논리적으로 차단되어 있으므로, Client2 노드에서 Server2 노드로 향하는 트래픽이 이 링크를 사용하지 못하고 Client2-->R3-->SW3-->SW1-->SW2-->SW4-->R4-->Server2 경로를 통하여 전달되고 있음을 알 수 있다.

 

 

Posted by 신상헌
,

OPNET Modeler 17.5("OPNET Modeler 17.5 PL6 발표" 참조)은 공식적으로는 MS Visual Studio 2010 버전까지만을 지원한다.
하지만, 실제로는 OPNET Modeler 17.5에서 MS Visual Studio 2013을 사용하여도 컴파일시 에러는 발생하지 않는다. (그렇더라도, MSVS 2013이 OPNET Modeler 17.5에서도 항상 문제없이 동작한다고 필자가 보장할 수는 없다.)

 

Posted by 신상헌
,