post-thumbnail

[7] NS-3 Tracing(2)

시나리오 분석(fifth.cc) 지난 포스팅에 이어서 tracing을 사용한 congestion window 테스트 예제를 보겠습니다. > 네트워크에서 혼잡이 발생했을 때, 송신 측의 윈도우 크기를 조절하여 데이터의 전송량을 강제로 줄이는 것을 '혼잡제어'라고 합니다. 송신 측은 자신의 최종 윈도우 크기를 정할 때, 수신 측이 보내준 윈도우 크기와 자신이 네트워크 상황을 고려해서 정한 윈도우 크기인 혼잡 윈도우(Congestion Window, CWND)중에서 더 작은 값을 사용합니다. 네트워크 구성은 아래 그림과 같습니다. 우리는 ns-3 TCP congestion window의 변화를 보고싶습니다. 그래서 네트워크 flow를 만들고, sender 소켓(node 0)의 CongestionWin

2023년 2월 7일
·
0개의 댓글
·
post-thumbnail

[6] NS-3 Tracing(1)

이번에는 tracing에 대해서 자세히 알아보겠습니다. Tracing 시뮬레이션의 가장 큰 목적은 연구에 사용할 유의미한 output을 만들어내는 것입니다. ns-3에서 output을 얻는 전략은 크게 2가지가 있습니다. 먼저, 미리 정의된 bulk(많은 양) output 메커니즘을 사용하고, 그 output에서 유의미한 정보를 뽑아내는 방법. 아니면 원하는 정보만 정확히 주는 output 메커니즘을 직접 개발하는 방법이 있습니다. 전자의 경우, 유의미한 데이터를 뽑아내기 위해(parsing) 스크립트를 작성하는 것 말고는 ns-3에 대해 아무것도 변경하지 않아도 된다는 장점이 있습니다. 예를 들어, PCAP와 NS_LOG output 메시지가 여기에 속합니다. 하지만 parsing을 위해 스크립트를 작성하는 것 또한 비용이 발생합니다. 게다가 NS_LOG output은 오직 debug build에서만 이용 가능해서 성능에 패널티를 받게 됩니다.(optimized mo

2023년 2월 6일
·
0개의 댓글
·
post-thumbnail

[5] NS-3 Building Wireless Network

이번에는 무선 네트워크를 만들어 보겠습니다. ns-3는 IEEE 802.11 모델을 제공합니다. 시나리오 파일은 examples/tutorial/third.cc를 사용합니다. 시나리오 분석(third.cc) 이번에도 네트워크 topology 그림이 등장합니다. second.cc에서 구성한 네트워크 왼쪽에 무선 네트워크가 추가된 것을 볼 수 있습니다. 이 그림은 default topology를 나타냅니다. 즉, 유/무선 네트워크의 node 개수를 바꿀 수 있다는 의미입니다. second.cc에서 nCsma를 사용해서 extra CSMA node의 개수를 바꿀 수 있었던 것 처럼, nWifi로 STA(station) node의 개수를 컨트롤 할 수 있습니다. AP(access point)는 항

2023년 2월 6일
·
0개의 댓글
·
post-thumbnail

[4] NS-3 Building Bus Network

이번에는 ns-3에서 제공하는 CSMA device와 channel을 활용해서 버스 네트워크를 만들어 보겠습니다. 시나리오는 examples/tutorial/second.cc를 사용합니다. 시나리오 분석(second.cc) 먼저, 우리가 구성할 네트워크의 그림이 그려져있습니다. 이전 예제에서 만든 point-to-point에 bus network를 붙이는 형식입니다. LAN에는 1개의 공유되는 node(n1)가 있고, 3개의 extra node가 존재합니다. 이제부터 코드를 분석 해보겠습니다. first.cc와 비슷한 코드들은 간략히 설명하겠습니다. 먼저, logging component를 정의해줍니다. first.cc와 약간 다른 부분이 있습니다. verbose flag를 선언하여 l

2023년 2월 6일
·
0개의 댓글
·
post-thumbnail

[3] NS-3 Tweaking

Logging 이번에는 Logging에 대해서 자세히 알아보겠습니다. 많은 큰 시스템들은 메시지 logging 기능을 지원합니다. ns-3는 선택적이고, multi-level 접근법을 제공합니다. logging은 디버깅 정보, 경고, 에러 메시지 또는 원하는 정보를 쉽게 얻을 때 사용합니다. 로그 메시지는 여러 레벨이 있습니다. LOGINFO를 활성화하면 오직 NSLOGINFO 매크로에 의해 제공되는 메시지만 제공되지만, LOGLEVELINFO를 활성화하면 NSLOGDEBUG, NSLOGWARN 그리고 NSLOG_ERROR 매크로에 의한 정보까지 모두 제공됩니다. Using NS_LOG logging은 환경변수 NS_LOG에 의해 설정될 수 있습니다. 먼저, 이전 f

2023년 2월 5일
·
0개의 댓글
·
post-thumbnail

[2] NS-3 Conceptual Overview

주요 용어 Node \- 네트워크에 연결하는 computing device(≒ host, end system) \- 현실에서 컴퓨터가 유용한 작업을 하도록 application, protocol stack 그리고 NIC와 driver를 설치하는 것과 비슷한 행동을 Node에게 합니다. Application \- 시뮬레이션 될 활동을 만드는 user program \- 패킷을 발생시키는 역할 \- 컴퓨터에서 application이 돌아가는 것 처럼, ns-3 Node에서 작동하고 시뮬레이션을 일으킵니다. Channel \- 네트워크에서 데이터가 흐르는 전송매체 (이더넷 케이블을 벽에 꽂으면 이더넷 채널에 연결되는 것과 동일) Net Device \- 현실에서 NIC는 software driver(=net device)와 함께 작동 \- ns-3에서 net device는 software driver와 hardware를 퉁쳐서 추상

2023년 2월 3일
·
0개의 댓글
·
post-thumbnail

[1] NS-3 소개 및 작업환경 설정

ns-3란? 공식 홈페이지 튜토리얼 주로 연구와 교육적 사용을 타겟으로 한 discrete-event network simulator 패킷 데이터 네트워크가 어떻게 작동하는지에 대한 모델과 시뮬레이션을 수행할 수 있는 엔진을 제공 현실에서 어렵거나 불가능하거나 또는 매우 통제된 환경에서의 시스템 행동을 연구할 때 많이 사용 특징 1) 오픈소스 프로젝트(무료) 2) set of libraries으로 설계 됨 → 서로서로 또는 외부 라이브러리들과 합쳐질 수 있음 3) 외부의 animator, 데이터 분석 그리고 시각화 도구들이 사용될 수 있다 4) 주로 Linux, macOS에서 사용. Windows 사용자는 가상머신 필요 Prerequisites C++ compile

2023년 2월 3일
·
0개의 댓글
·