태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

카스탈리아 시뮬레이션 구조

Posted on 2010/07/29 16:01
Filed Under WSN


  • 이 글은 Jake에 의해 www.jakeworld.net 에서 작성되었습니다.

  • 퍼가실 때는 이 박스와 함께 복사해주세요.

각 시뮬레이터 항목에서는 omnetpp.ini 과 실행 스크립트, 두 개의 파일을 포함해야 한다.
omnetpp.ini
에는 OMNeT++ Castalia 에서 사용되는 필요한 파라미터들을 정의하는 환경 설정 파일이며, 실행 스크립트 파일은 설정된 환경 설정 파일을 이용하여 시뮬레이션을 시작하는 역할을 담당한다. 따라서 경로상에 omnetpp.ini 와 실행 스크립트 파일이 있다면 실행 스크립트 파일을 실행함으로서 시뮬레이션이 가능하다.

 


시뮬레이션 실행


위에 설치단계에서 정상적으로 설치되었는지 한가지 항목에 대해 시뮬레이션을 하였다. 이전과 동일하게 Castalia/Simulations/valuePropagation 경로로 들어간다. 들어가서 파일리스트를 출력하면 시뮬레이션 필수항목인 omnetpp.ini runValProp 두가지 파일이 존재하는 것을 볼 수 있다. node_locations.ini 파일은 각 노드의 위치 정보를 포함하고 있으며 omnetpp.ini 에서 포함하는 파일이다. node_locations.ini 의 내용은 직접 omnetpp.ini 에 삽입해도 상관없기 때문에 omnetpp.ini 의 일부라고 보는 편이 편하다.

 

처음과 동일하게 runValProp 를 실행시키고 난 후 Castalia-Primary-Output.txt 파일을 열어보자.


OMNeT++/OMNEST Discrete Event Simulation (C) 1992-2005 Andras Varga

Release: 3.3, edition: Academic Public License.

See the license for distribution terms and warranty disclaimer

Setting up Cmdenv...


시뮬레이션 결과의 파일은 위와 같이 표준 OMNet++ 출력과 함께 시작한다.

 

주목해야 할 부분은 “Preparing for Run #1…” 부터 시작한다.

유용한 정보는 다음과 같이 표현된다.


Calling finish() at end of Run #1…

Node [0] Value: 40.2079

Node [0] spent energy: 0.765561

Node [1] Value: 40.2079

Node [1] spent energy: 0.77705

Node [2] Value: 40.2079

Node [2] spent energy: 0.766713

Node [3] Value: 40.2079

Node [3] spent energy: 0.766457


만약 시뮬레이션 결과 파일의 결과와 위의 텍스트와 동일하지 않더라도 신경쓰지 않도록 한다. Omnetpp.ini 내의 몇몇 파라미터가 현재 당신이 테스트하는 배포본에서 변경되어졌을 수도 있다. 각 노드의 에너지 소비와 노드의 값이 보고되어 지는 것에 주목한다.


노드의 값 출력은 현재 단계에선 애매하게 보여질 수 있다. 이 값을 이해하기 위해서는 애플리케이션 단에서 어떠한 프로그램이 수행되는지 알아야 한다. 이 시뮬레이션에서 수행되는 애플리케이션은 단순히 채널의 효과와 몇몇 MAC 레벨의 파라미터를 전체 네트워크로 값을 전달시켜서 체크한다. 애플리케이션은 Physical process를 샘플링하고 노이즈 값을 획득하는 각 노드들과 함께 시작한다. 만약 값이 특별한 스레스홀드(이 경우 영상15)를 넘어서면 이 값은 브로드캐스팅 되어져야한다. 만약 노드가 이 값을 다른 노드들로부터 받으면, 노드는 받은 값을 브로드 캐스팅 하고, 그 노드는 자신의 임무를 다했다는 것을 표시하기 위해 플래그를 셋팅한다. 각 노드는 몇몇 MAC 레벨의 파라미터들을 기반으로 MAC 레벨에서 특정한 행동을 수행한다. 이 행동과 노드들 사이의 채널의 상태에 따라, 그 값은 네트워크에 전파된다. 이 애플리케이션에게 현실적인 채널과 라디오 모델을 갖는 것은 매우 중요하다. Omnetpp.ini 의 현재 설정에서 오직 노드 6번만 15가 넘는 값을 가지고 있다. (PhysicalProcess_0_node6_assignedValue40.ini) 있다. 그래서 노드 6번은 전파되어질 특별한 값의 소스이다. 얼마나 많은 노드들이 이 특별한 값을 획득하였는지 얼마나 많은 에너지를 소비하였는지 주목하라. 몇몇 MAC 파라미터를 고쳐보고 그로인해 소비된 에너지와 reached 노드들의 영향을 확인해보자.

 

Omnetpp.ini를 열어서 Parameters 섹션을 보자. 첫번째 커맨드들은 네트워크의 설치를 정의하고 있고 그 다음 몇몇 include 커맨드들이 주석처리가 되어 있다.

 # Choose a parameters file…

이 커맨드는 카스탈리아가 필요로 하는 몇몇 파라미터들을 정의해 놓은 파일을 포함하는 것이다. 직접 파라미터를 할당하여 큰 사이즈의 omnetpp.ini 파일을 관리하는 대신, 다른 파라미터 셋팅들을 위해 좀 더 모듈화된 구조를 선택하였다. 그 결과 유저는 omnetpp.ini 파일에서 쉽고 깔끔하게 원하는 파라미터들을 믹스&매치할 수 있다. Include 커맨드의 마지막에서 두번째는 MAC 과 연관된 커맨드이다.

 Include ../Parameter_Include_Files/MAC_Tunable.ini

만약 포함된 파일을 열면, 여기에 정의된 파라미터들를 이해할 수 있을 것이다. 파라미터들의 대부분은 이름안에 SN.node[*],networkInterface.MAC 같은 prefix 를 가진다. 이들 파라미터들을 변경하고 출력에 주는 영향을 주목하라. 이 파일들 내부의 값을들 수정할 수도 있지만, Parameter_Include_Files 경로에 있는 MAC_Tunable.ini는 다른 애플리케이션에서도 마찬가지로 사용되어지기 때문에 좋은 행위는 아니다. 다양한 파라미터로 시뮬레이션을 실행하고 싶을 때는 [Run 1], [Run 2], … [Run n] 섹션을 omnetpp.ini 에 추가하고 각 섹션에 변경을 원하는 파라미터들을 재정의 할 수 있다. 실례로, 아래 박스의 내용을 omnetpp.ini 파일에 추가하면 카스탈리아는 2가지 시뮬레이션을 실행할 것이다.


[Run 1]

description = "Run 1"

SN.node[*].networkInterface.MAC.dutyCycle = 0.4

 

[Run 2]

description = "Run 2"

SN.node[*].networkInterface.MAC.dutyCycle = 0.03

SN.node[*].networkInterface.MAC.numTx = 6

 



omnetpp.ini


앞서 말했듯이, 카스탈리아는 모듈 스트럭쳐의 구조를 가진다. 각 모듈들은 네트워크 동작에 영향을 주는 하나 혹은 그 이상의 파라미터를 포함한다. 카스탈리아에서는 방대한 주요 파라미터들이 omnetpp.ini 에 정의되어있다.

 

omnetpp.ini 는 크게 다음과 같은 섹션으로 나눠진다.


General, Cmdenv, Parameters, Run [n]

 

General 은 시뮬레이션에서 필요한 일반적인 파일들을 포함하고 파라미터를 정의하는 곳이다.

이 섹션에서는 먼저 nedfile.lst 파일들을 포함하게 된다. ned 파일들은 각 모듈들의 파라미터들을 표현해놓은 파일로, 카스탈리아의 최상위 경로에서 netfiles.lst 파일에 모든 모듈들의 ned 파일들의 위치가 기록되어있다. 또한 일반적인 OMNeT 의 파라미터들과 카스탈리아가 사용하는 Random Number Generators 를 정의하는 General_and_RNGs.ini 파일을 포함한다. 이 외 시뮬레이션 시간과 벡터와 스칼라타입의 아웃풋 파일을 지정하는 파라미터를 포함한다.

 

Cmdenv OMNet command-line 실행에 관련된 파라미터들을 정의한다. OMNet++ 은 커맨드라인과 그래픽모드 둘 다 지원하지만, 카스탈리아는 커맨드라인 방식으로 작동되기 때문에 커맨드라인 옵션 설정을 이 섹션에서 수행한다. 일반적으로 이 파라미터의 값들은 바꿀 필요가 없으며 미리 정의된 omneet_comdenv_reporting.ini 를 포함하게 된다.

 

Parameters 섹션은 카스탈리아가 필요로 하는 몇몇 파라미터들을 포함하는 곳이다.

Simulations/Parameter_Include_Files 경로에 존재하는 카스탈리아에서 제공하는 미리 정의된 파라미터들이 정의된 ini 파일들중 필요한 파일들을 포함한다. 이 후 변경이 필요한 파라미터들의 경우 아래에서 다른 값을 대입하는 구조이다. 미리 정의된 ini 파일들은 다른 시뮬레이션 항목에서도 공통적으로 사용하기 때문에 직접 이 파일을 수정하는 것은 주의해야한다.

 

Run [n] 섹션은 각 실행횟수 때 몇몇 파라미터들을 다시 정의할 수 있게 하는 섹션이며 또한 시뮬레이션의 횟수이기도 하다.

 

General Cmdenv 섹션은 일반적으로 거의 모든 시뮬레이션 항목에서 동일하다. 이는 카스탈리아 보다는 OMNeT 에서 요구하는 설정이기 때문이다. Parameters 섹션과 Run [n] 섹션은 실제 카스탈리아의 특수한 파라미터들이 설정되는 섹션이며, 따라서 시뮬레이션 항목에 따라 많은 변화가 있다.

 

Parameter 섹션에서는 우선 디버그 정보를 기록할 파일의 이름을 지정한 후, BackwardCompatibility.ini 를 포함시킨다. 파일명에서 알 수 있듯이 후방호환성을 유지하기 위함이다. 카스탈리아 버전 2.0 에 필요한 몇몇 파라미터를 정의하기 위해 사용되어진다. 이 시뮬레이션 시나리오가 카스탈리아 2.0 이전에 작성되어졌기 때문에 이 ini 파일을 포함하는 것은 새로운 버전과 seamless 한 동작을 하도록 하기에 쉬운 방법이다.

 

 이어서 전체 네트워크를 위한 몇몇 일반적인 파라미터를 정의한다. SN.field_x SN.field_y 는 센서 필드의 크기를 나타내고, 센서 노드가 설치될 영역을 나타낸다. 또한 네트워크가 얼마나 많은 노드를 가지고 있는지, 설치는 어떠한 형태로 될 것인지에 대해 정의한다. 만약 개별 노드에게 위치 정보를 삽입하는 것을 원치 않는다면 이 파라미터에서 자동 설치 옵션(격자, 무작위 격자배치등)을 선택할 수 있다. 또한 얼마나 많은 Physical processes 를 가지고 있는지 선택할 수 있다.

 

[Parameters]

# The filename that (potential) debug output will be written to

SN.debugInfoFilename = "Castalia-Debug.txt"

 

#COMPOUND MODULE: SN (the network)

 

# define deployment details

SN.field_x = 40 # meters

SN.field_y = 50 # meters

SN.numNodes = 9

SN.deploymentType = 1  # 0 means a uniform random deployment

                                       # 1 means a grid deployment

                                       # 2 means randomized grid deployment (i.e. grid+ noise)

                                       # any other number means that the user must specify manually the

                                       # location for each of the nodes

#include node_locations.ini

 

# how many physical processes do you have?

SN.numPhysicalProcesses = 1

 

이 후에는 Parameter_Include_Files 경로로부터 포함되는 파일들이다. 이 파일들은 시뮬레이션 항목마다 다르다. 그리고 애플리케이션 모듈과 관련된 파라미터들이 이어진다. 가장 중요한 것은 어떤 애플리케이션을 실행할 것인지 명시하는 SN.node[*].appModuleName 이다. 이 파라미터에는 원하는 애플리케이션 모듈의 이름을 설정하게 된다.  모듈들의 이름은 애플리케이션 모듈의 .ned 파일내에 정의되어 있다. printDebugInfo 파라미터는 애플리케이션으로부터 디버그 출력을 여부를 결정한다. 같은 파라미터를 여러 번 사용할 경우 파라미터의 우선순위는 가장 나중에 사용한 값을 따른다.

 

 마지막으로 Run [n] 섹션은 최종 시뮬레이션 특징을 지정한다. MAC의 듀티사이클을 변경하여 여러 번 시뮬레이션 하고 싶다면 Run 섹션을 하나 이상 지정하여 섹션 내부에 듀티사이클 파라미터를 변경하여 결과를 얻을 수 있다.

Creative Commons License
Creative Commons License

댓글을 달아 주세요

About



모바일 페이지 QR 코드


Counter

· Total
: 161,563
· Today
: 5
· Yesterday
: 98