NS3 소개및 설치방법

NS3란 무엇일까?

ns-3는 네트워크 프로토콜 개발시 주로 사용되는 시뮬레이터입니다. C++로 짜여져 있고 새로운 프로토콜을 C++로 작성하면 새로운 프로토콜을 사용해볼수 있습니다. 새로운 프로토콜 개발이외에도 기존 프로토콜을 이용하여 시뮬레이션을 돌려볼 수 있습니다. Point-to-Point 링크부터 LTE, WiFi 링크등 다양한 링크를 이용하여 시뮬레이션을 돌려볼 수 있습니다. 리눅스, 맥에서 사용해볼 수 있지만 리눅스 특히 우분투에 최적화 되어있습니다. 이번 포스트에서는 ns-3의 설치 방법과 ns-3의 구조를 살펴보도록 하겠습니다.

NS3 설치하기

현재 포스트를 작성하고 있는 시점에서 나온 가장 최신의 버전은 ns-3.29입니다. 따라서 여기서는 ns-3.29를 기준으로 작성하도록 하겠습니다. 이전에는 커맨드 명령어를 이용하여 ns-3를 다운로드 받아야 했지만 현재는 홈페이지에서 바로 압축파일을 받아 쉽게 다운로드 할 수 있도록 변경되었습니다.

다운로드 받기

다운로드를 받으면 tar.bz2 압축 파일이 생깁니다. 이 압축 파일을 tar xvjf ns-allinone-3.29.tar.bz2 명령어를 이용하여 압축을 풀어줍니다. 압축을 풀면 ns-allinone-3.29 이라는 폴더가 생긴것을 확인할 수 있습니다.ns-allinone-3.29/ns-3.29 폴더 안에 들어가서 아래 명령어를 입력해 줍니다.

./waf configure
./waf build

아마 ./waf build 명령어를 입력하시고 나면 빌드되는데 시간이 걸릴것입니다. 모든 파일을 빌드하고 ./waf --run scratch-simulator 명령어를 입력하였을 때 Scratch Simulator 라는 결과를 보셨다면 성공적으로 설치가 되신겁니다.

NS3 구조 살펴보기

ns-3를 설치하면 ns-allinone-3.29/ns-3.29라는 폴더가 생성됩니다. 이 폴더는 아래와 같은 구조를 가지고 있습니다.

AUTHORS       Makefile       VERSION   contrib   scratch  testpy.supp  utils.pyc  waf.bat    wutils.pyc
CHANGES.html  README         bindings  doc       src      utils        waf        wscript
LICENSE       RELEASE_NOTES  build     examples  test.py  utils.py     waf-tools  wutils.py

여기서 waf 라고 적힌 폴더는 시뮬레이터 빌드, 시뮬레이션 실행등을 위해 사용하는 프로그램이 들어있습니다.scratch 폴더는 c++로 작성된 시나리오 파일이 포함되어 있는 폴더입니다. ./waf --run 이라는 명령어를 이용하여 시뮬레이션을 실행시키게 되면 scratch 폴더 안에 있는 시나리오 파일을 찾게 됩니다. 따라서 시뮬레이션을 돌려보고 싶은 시나리오가 있으면 c++로 시나리오 파일을 작성하여 scratch 폴더 안에 넣어주면 됩니다.src 폴더는 ns-3에서 사용되는 PHY, LINK, NETWORK, TRANSMISSION, APPLICATION 레이어가 c++로 구현되어 있습니다.

antenna       config-store      energy         mesh                openflow               tap-bridge          wave
aodv          core              fd-net-device  mobility            point-to-point         test                wifi
applications  create-module.py  flow-monitor   mpi                 point-to-point-layout  topology-read       wimax
bridge        csma              internet       netanim             propagation            traffic-control     wscript
brite         csma-layout       internet-apps  network             sixlowpan              uan
buildings     dsdv              lr-wpan        nix-vector-routing  spectrum               virtual-net-device
click         dsr               lte            olsr                stats                  visualizer

들어있는 모듈들을 보면 wifi, lte, point-to-point 등의 PHY 레이어부터 네트워크 시각화를 위한 netanim 까지 많은 모듈들이 c++로 구현되어 있는 것을 확인하실 수 있습니다. ns-3에서 제공하는 모듈 이외에 추가로 필요한 네트워크 프로토콜이라던가 통신 채널의 경우 해당 폴더에 포함시킴으로써 시뮬레이션을 해보고 결과를 얻어 보실 수 있습니다.

가장 최근에는 NYU에서 3GPP를 기반으로한 5G 네트워크 통신계층이 추가되었습니다. 아직 ns-3를 설치하면 바로 사용할 수 있는것은 아니고 직접 5G 모듈을 추가해줘야 합니다. 이처럼 src 폴더내에 새로운 모듈을 구현하여 추가해줌으로써 다양한 프로토콜을 실험해볼 수 있습니다.

나머지 폴더들은 앞서 설명한 2개의 폴더만큼 중요한 것은 아니기 때문에 설명하지 않고 넘어가도록 하겠습니다. 이번 포스트에서는 ns-3가 무엇이고 어떻게 설치하는지, 어떻게 구성되어 있는지 알아보았습니다. 다음 포스트부터는 ns-3 설치시 같이 설치되는 예제파일들에 대하여 소개하도록 하겠습니다.

카테고리:

업데이트:

댓글남기기