분류 전체보기 106

모각코 두 번째 모임 개인 계획, 활동과정 및 결과

이번 모각코에서는 네트워크 시뮬레이터 "NS-3"를 공부할 것이다. NS-3는 입문자들을 위한 Tutorial 코드를 6개 제공하고 있다. 이미 Third.cc가지는 공부를 완료했으므로, fourth.cc를 공부할 계획이다. * 활동 과정 및 결과 Third.cc는 각각 P2P link, LAN, Wifi 연결 상황을 가정한 토폴로지를 구현해보는 방식으로 코드가 짜여있었다. 본 fourth.cc는 이전까지의 토폴로지를 구성하는 시나리오와 다르게, 시뮬레이터를 돌리며 로그를 찍는 방법을 다루고 있다.(TCP throughput, error rate, SNR 등) 따라서 해당 기법을 배우면 IRSML에서 필요로 하는 데이터들을 뽑아내는 방법을 고안해낼 수 있을 것 같다. 특히 현재 생각하고있는 IRSML 구..

NS-3 독학 - 3.Third.cc

second.cc에서 {n0,n5,n6,n7}이 Wifi (10.1.3.0)으로 연결되어있는 구조가 추가되었다. 이를 구현해보겠다. int main(int argc, char* argv[]) { bool verbose = true; uint32_t nCsma = 3; uint32_t nWifi = 3; bool tracing = false; CommandLine cmd(__FILE__); cmd.AddValue("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma); cmd.AddValue("nWifi", "Number of wifi STA devices", nWifi); cmd.AddValue("verbose", "Tell echo applications..

개인 공부 2024.01.12

NS-3 독학 - 2. Second.cc

NS-3 example 코드들의 2번째, Second.cc를 분석해보겠다. 토폴로지를 살펴보면, n0와 n1은 first.cc와 같이 구성되어있다. 다만, n1~n4는 10.1.2.0의 IP를 가진 LAN에 있다. int main(int argc, char* argv[]) { bool verbose = true; uint32_t nCsma = 3; CommandLine cmd(__FILE__); cmd.AddValue("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma); cmd.AddValue("verbose", "Tell echo applications to log if true", verbose); cmd.Parse(argc, argv); if (v..

개인 공부 2024.01.11

NS-3 독학 - 1. First.cc

- VS code에서 ns-3를 돌릴 예정이다. 따라서 vs code에 ns-3가 설치된 Linux를 연결해줄 필요가 있다. 1. VS code 설치 https://code.visualstudio.com/ 2. WSL 원격 연결, C,C++ Extension 설치 (python으로 해도 되는 것 같지만 나는 C++이 더 편해서 .cc code들로 진행을 했다.) 3. Terminal에서 필요한 패키지 설치 및 ns-3가 설치된 경로에서 VS code 실행 - sudo apt-get update -y - sudo apt-get install xdg-utils -y - sudo apt-get install gcc -y - sudo apt-get install gdb - code . (WSL 환경에서 VSCo..

개인 공부 2024.01.11

NS-3 독학 - 0. 설치하기

다양한 컴퓨터 네트워크 분야의 논문들을 읽어보니 이들을 직접 구현해보기 위해서는 결국 시뮬레이터의 필요성이 강하게 느껴졌다. 따라서 나도 직접 시뮬레이터를 돌려서 데이터 셋을 뽑아보고 이를 기반으로 논문들의 내용을 구현해보고자 NS-3를 공부하게 되었다. 일단 공부하려면 설치부터 하여야하기에, 설치법을 알아보도록 하겠다. - Linux 환경에서 NS-3를 구성 나는 Ubuntu 22.04.3 LTS를 사용하였다. 그 후, ns-3.40 버전을 다운받았다. (*링크 : https://www.nsnam.org/) ns-3.40을 다운받는 곳에 보면 documentation이 있다. 여기서 Tutorial을 보면 친절히 설치법이 다 설명되어있다. 만약 후에 이 글을 보고 설치하다가 버전이 달라 설치가 안되면 ..

개인 공부 2024.01.10

ANTLR를 이용한 tinyPython to Jasmin 컴파일러 만들기. - 完

* 본 내용은 충남대학교 조은선 교수님의 컴파일러 개론을 수강하고 작성한 글입니다. - Test.tpy 컴파일링 과정 따라가보기 def sum(a, b): return a + b a = 3 b = 4 c=sum(a,b) print(c) if a>=3: print(a) elif b3: print(3) else: print(c) while c file_input -> defs 순으로 먼저 파싱이 될 것이다. program이 파싱될 때, enterProgram이 실행될 것이다. 따라서 .class public Test ~ .end method까지 결과 파일에 기록되게 된다. 그 후 실행된 file_input에는 별다른 enter, exit method를 정의해주지 않았으므로 바로 enterDefs가 실행된다...

ANTLR를 이용한 tinyPython to Jasmin 컴파일러 만들기. - 7

* 본 내용은 충남대학교 조은선 교수님의 컴파일러 개론을 수강하고 작성한 글입니다. 1. enterExpr @Override public void enterExpr(tinyPythonParser.ExprContext ctx) { if(ctx==null || visitedNodes.contains(ctx)){ return; } if(ctx.NUMBER()!=null){ visitedNodes.add(ctx); this.result+=("bipush "+Integer.parseInt(ctx.getChild(0).getText()))+"\n"; }//상수 load else if(ctx.NAME()!=null){ visitedNodes.add(ctx); if(table.contains(ctx.getChild(0..

IRSML 논문 구현 아이디어(고려할 점)

1. Simulation의 조건 우선 첫번째로 떠오르는 점은 Number of MH를 극단으로 보내는 것이다. 해당 논문에서는 IRSML이 무거운 SDWN 네트워크 환경에서 강점이 있다고 하였다. 그러나 과연 30~60 node들을 5 nodes 간격으로 측정한 것이 무거운 SDWN에서의 시뮬레이션일지가 궁금하다. 일반적으로 SDWN은 동적인 환경에서 네트워크 자원을 효과적으로 관리하고 유연성을 제공하기 위해 설계되었으므로, 수백 또는 수천 대의 MH가 있는 대규모 네트워크까지 고려해볼 수 있다. 두번째는 Speed of MH이다. 만약 이 알고리즘이 통상적인 도시의 SDWN을 가정한다면, 0-20 m/s는 너무 한정적인 속도 같다. 도시의 구성에 따라 다르겠지만, 0 ~ 28 m/s 까지는 가정해주고 ..

구현 2024.01.08

ANTLR를 이용한 tinyPython to Jasmin 컴파일러 만들기. - 6

* 본 내용은 충남대학교 조은선 교수님의 컴파일러 개론을 수강하고 작성한 글입니다. 1. enterDef_stmt @Override public void enterDef_stmt(tinyPythonParser.Def_stmtContext ctx) { if(visitedNodes.contains(ctx)){ return; } visitedNodes.add(ctx); tempFuncFormat+=(ctx.getChild(1).getText()+"("); this.result+=(".method public static "+ctx.getChild(1).getText()+"("); enterArgs((tinyPythonParser.ArgsContext)ctx.getChild(3));//파라미터들을 로딩해서 ta..