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 설치시 같이 설치되는 예제파일들에 대하여 소개하도록 하겠습니다.
댓글남기기