카스탈리아 시뮬레이션 구조
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 섹션을 하나 이상 지정하여 섹션 내부에 듀티사이클 파라미터를 변경하여 결과를 얻을 수 있다.
'WSN' 카테고리의 다른 글
| Improving QoS is Wireless Sensor Networks by Mitigating "Hidden-Node Collisions" (0) | 2010/09/02 |
|---|---|
| QoS-aware date reporting control in cluster-based wireless sensor networks (0) | 2010/09/01 |
| 카스탈리아 시뮬레이션 구조 (0) | 2010/07/29 |
| 카스탈리아의 모듈 구조 (0) | 2010/07/29 |
| 카스탈리아(Castalia) 시뮬레이터 설치하기 (0) | 2010/07/22 |
| A new qos routing algorithm based on self-organizing maps for wireless sensor networks (0) | 2010/05/14 |




댓글을 달아 주세요