과거 학부때,  ns3의 기본 소스를 이용했던 부분입니다.

먼저, ns3에서 first.cc에 대한 분석으로 시작해보겠습니다.

해당 소스는 ns-3.19버전인데 지금은 ns-3.25 버전이군요. 참고해주시기 바랍니다.

(참고로, simulation을 통하여 테스트하기 위해서는 first.cc가 위치해 있는 디렉토리가 아닌, 

~/ns-allinone-3.19/ns-3.19 로 이동하여  ./waf를 통해 실행 해야 합니다. 이후 포스팅에서 이 부분은 생략합니다.)


1) first.cc 전체 소스


이 코드에서는, 두 개의 노드를 생성하여 IPv4 주소를 각각 할당한 뒤, UDP패킷을 주고받는 시뮬레이션을 수행하게 됩니다.


1) NodeContainer.Create(2) 를 통해 네트워크 노드를 두 개 생성합니다.


2)PointToPointHelper pointToPpoint -> helper는 채널과 네트워크 디바이스를 생성합니다.

 밑의 코드는 DateRate5Mbps, Delay2ms point to point연결을 정의하게 됩니.


3) 위의 NodeContainer처럼 NetDeviceContainer는 모든 네트워크 장치들을 저장합니.

생성한 node에 네트워크 장치를 설치합니다.(NetDeviceContainer)

 Device는 실제 PC의 유선랜카드에 해당됩니.


4) 각 노드에 인터넷스택을 설치하고, IPv4주소를 할당하도록 합니.

10.1.1.0base 주소로 설정하였으므로, 위에서 생성한 두 노드에는 각각 10.1.1.1, 10.1.1.2 가 할당됩니다.


5) UdpEchoServerHelperechoserver를 생성할 것입니다. ‘9’라는 숫자는 application에 의해 사용되는 echoserver 전용 포트번호입니다.


6) 그 다음, UDP echo server udp client server을 정의하여 두 노드에 각각 할당합니.

10.1.1.2노드에는 echoserver.install(nodes.get(1)) 으로 서버를 설치하고, 

모든 서버 application들은 1초에서 10초 동안 실행됩니.


7) The UdpEchoServerHelperUdpEchoServer들을 생성합니. 첫 번째 인자는 서버의 ipv4 주소이고, 두 번째 인자는 포트번호입니.


8) 

1Line - simulation에서 packet을 보내는 최대의 양입니다.

2Line - packet사이에 시간적 간격을 얼마나 하는지에 대한 코드입니다.

3Line - 패킷의 사이즈가 얼마나 되는지에 대한 코드입니다.


9) 10.1.1.1 노드에는 echoclient.install(nodes.Get(0))으로 클라이언트를 설치합니.


10) 모든 client application들은 2초에서 10초 동안 실행됩니다.

UDP Echo server는 자신에게 들어오는 모든 UDP패킷을 해당 패킷을 보낸 Client로 반송하는 동작을 수행하게 되고 Echo client는 선언시 지정한 echoserver의 주소와 포트로 패킷을 전송합니다.


11) simulation을 수행하고 오직 시뮬레이션이 끝난 이후에 return된 후, simulation을 위해 생성된 객체를 제거합니다.


12) 마지막으로, simulator.run을 통해 시뮬레이션을 수행하도록 하겠습니다.

waf로 위 코드를 실행 시(ns3 실행명령어 : ./waf --run ), 다음과 같은 결과를 출력하게 되며, 코드 대로 client-server간에 패킷이 오가는 것을 확인할 수 있습니다.

'Network' 카테고리의 다른 글

Network Simulator - NS-3란?  (0) 2016.04.26
NS-3 Network Simulation (second.cc)  (0) 2016.04.26
IP주소 체계  (0) 2016.04.24
DNS(Domain Name System) 란?  (0) 2016.04.24
GBn(Go-Back-n) ARQ 기법과 SR(Selective-Repeat) ARQ 기법  (0) 2016.04.19

WRITTEN BY
SiriusJ

,