NS-3는 지난 포스팅에서 밝힌것과 같이 저는 ns-3.19버전이지만 현재는 ns-3.25버전입니다.
참고해주시기 바랍니다.
지난번에 first.cc에 대한 분석을 이어 이번에는 second.cc로 이어가도록 하겠습니다.
second.cc 전체소스
1) first.cc와 마찬가지로 namespace 지정과 LOG_DEFINE입니다.
bool verbose = ture;
uint32_t nCsma = 3;
-> 여러가지 변수를 초기화합니다.
CommandLine cmd;
-> first.cc 에서 했던 것처럼 사용자 command를 추가합니다.
./waf --run "examples/tutorial/second --PrintHelp"
를 통해 Program Arguments에 추가 되있음을 확인 할 수 있습니다.
2) 마찬가지로 LOG를 enable 하는 명령어입니다.
if 문이 추가되어 true일 때만 log를 출력 하도록 합니다.
3) 노드를 생성하는 과정으로, p2pNodes를 2개 생성하고 (Node(0), Node(1)),
p2pNodes --> 총 2개
csmaNodes에 p2pNodes에 있는 Node(1)을 연결합니다.
그리고 nCsma 수만큼 Node를 생성합니다.
4) 이제 DeviceAttribute와 Channel Attribute를 설정해 줍니다.
밑의 코드는 DataRate은 100Mbps로 Delay는 6560ns로 설정하여 point to point연결을 정의합니다.
그리고 p2pDevices를 이용하여 p2p2Nodes 두곳에 device를 Install합니다.
이는 PointToPointHelper와 비슷한 역할을 하지만 이것은 CSMA devices에 관한 Helper로써, 다른점은 device attribute가 아니라 channel attribute로 한다는 것입니다.
5) 이제 protocol stack을 지정해줍니다.
p2pNodes의 NODE 0 과 , csmaNodes 총 4개의 NODE에 stack을 install 해 줍니다.
6) 총 2개의 IP를 지정합니다. 첫째는 p2pNodes의 IP, 둘째는 csmaNodes IP
위와 같이 코딩되면 p2pDevices는 10.1.1.1, 10.1.1.2가 될 것이며(위에서 p2pNode를 2개 생성하였으므로)
csmaDevices는 10.1.2.1, 10.1.2.2, 10.1.2.3, 10.1.2.4 로 IP가 지정될 것입니다.
(추가해준 Node +3개의 생성한 csmaNode)
그리고 first.cc에서와 같이 echoserver를 생성합니다.
7) port는 9, csmaNodes의 Node(3) 에다가 Server를 install합니다. (nCsma=3 이기때문에 Node(3))
모든 server application들은 1초에서 10초 동안 실행됩니다.
8) echoClient를 생성합니다. 보내는 쪽을 NODE 3의 IP(10.1.2.4)와 9 port로 지정합니다.
1Line - 이 simulation에서 packet을 보내는 최대의 양
2Line - packet사이에 시간적 간격을 얼마나 하는지에 대한 코드
3Line - 패킷의 사이즈가 얼마나 되는지에 대한 코드
9) 마찬가지로 clientApps을 생성하고 (p2pNodes의 NODE(0), 10.1.1.1)
app의 시작과 끝을 정합니다. (2초부터 10초까지 실행 됨)
10) Ipv4GlobalRoutingHelper 라는 명령어로, 전체 internetwork가 시뮬레이션 할 때 처리 될 수 있게 합니다.
즉 모든 노드를 걸쳐서 실행 된다는 것입니다. 이것은 라우터를 특별히 설정 하지 않아도 복잡한 작업도 수행하게 해줍니다. 이 명령어로 인해 각 노드들은 직접적으로 global route manager와 통신을 발생시킵니다.
11) pcap 출력을 위한 코드를 넣고, 2번째 줄은 csma에 관한 pcap을 추가합니다.
12) 시뮬레이터를 생성/소멸하는 코드입니다. 지난 first.cc에서 설명했으므로 생략합니다.
13) second.cc 의 실행화면입니다.
'Network' 카테고리의 다른 글
Gnuplot 사용하기 (0) | 2016.04.26 |
---|---|
Network Simulator - NS-3란? (0) | 2016.04.26 |
NS-3 Network Simulation (first.cc) (0) | 2016.04.26 |
IP주소 체계 (0) | 2016.04.24 |
DNS(Domain Name System) 란? (0) | 2016.04.24 |
WRITTEN BY