본문 바로가기

ns3

(8)
[c++, ns3] what(): vector::M_range_check: __n (which is 0) >= this->size() 에러 해결 진짜 자주보는 에러인데 바보같이 매번 찾는데 오래 걸린다 벡터 원소 접근할 때 .at(~)에서 해당 자리에 데이터 없으면 생기는 에러로.. 벡터를 코드에서 많이 쓰다보니 이 에러도 자주 본다ㅎ 심지어 어디서 벡터 썼었는지 기억도 잘안남 나는 그럴땐 grep 이용해서 우선 가능성 있는 곳들 찾은다음 확인해본다 이번에도 push-back 처음 하기 전에 값을 불러와서 생긴 에러였다. vector에서 []로 원소 접근하지 않고 .at으로 할 땐 반드시 데이터를 미리 해당 위치에 넣어두고 사용하기!!!!!
[ns3] extern 변수 선언의 편리성과 그에 따른 고민 실험하다보면 정말 매우 많은 파일의 함수 참조가 이뤄진다. ns3 기본 제공 모듈만 사용한 간단한 실험을 진행할 때에는 새로운 application이나 기타 기능을 생성할 필요가 없이 main내에서 적당히 파라미터를 바꾸면 되는데, 이번 실험은 규모가 크다보니 조정해야 할 파라미터가 매우 많았다. 또한 다양한 파일에서 동시적으로 접근해야하는 공용 데이터가 많았다. - 기지국의 커버리지, node 별 stop and restart time을 랜덤하게 변경, 서버의 커버리지, handover 관련 파라미터 등등등 처음에는 각 파일에서 파라미터들을 변수로 사용하지 않고 (레전드 바보짓) 대충 임의의 값을 가지고 작성했지만 이러다보니 나중에 진짜 조작변인들을 변경해가며 실험해야할 때, 커버리지가 옵션에 따라 자..
[ns3] SIGSEGV 에러 해결 (segmentation fault) 실험하면서 진짜 자주보는 에러... 아직도 초보인가봐 ㅎ 원인은 당연히 메모리 접근을 잘못한건데, 문제는 큰 실험을 돌리다보니 어디서 이게 뜬건지조차 찾는게 오래 걸린다. 내 경험적 통계상 많은 원인은 map이나 vector 사용할 때이다. 나중에 다시 이 에러를 만났을때를 위해 정리해둔다..^^ case 1) map이나 vector에서 []사용해서 인덱스로 값 참조하는 경우보단 .at을 사용하는게 안전한데, 문제는 at의 경우 반드시 해당 자리에 값이 존재하는 경우에만 사용가능하다. 따라서 사용 전 자동 생성이나 초기화 과정이 반드시 필요하다. case 2) c++보다 ns3에서 발생하는 조금 더 구체적인 상황이다. 나는 시뮬레이션에서 node를 구분하는 기준으로 node Id를 사용한다. (node별..
[ns3] undefined reference to 에러 해결 이 에러는 c++ 사용하는 사람들이 자주 마주하는 에러라 비교적 해결책이 많이보인다. 일반적으로 1. 헤더파일에 선언하고 .cpp에 구현하지 않은 경우 2. 작은 오타 (대소문자, 함수 이름 등등...) 때문이라고 하는데, 나는 두가지 경우가 모두 아니었다. .cc파일과 .h 파일에 함수를 모두 추가해두긴 했는데, .cc파일에서 함수를 define을 할 때에 아래와 같이 UdpClient::를 꼭 작성해야 하는데, 나는 그걸 빼먹었었다. double UdpClient::functionName (Ptr node) { ... ... } 아래처럼 작성했던 것이다..ㅋㅋㅋ 혹시 undefined reference to 문제를 겪는데 오타도 없고 cc파일에서도 잘 define했다면 이 문제일 수 있으니 확인해보기..
[ns3, C++] 'MyApp' was not declared in this scope 문제 해결 - 헤더파일 include에 문제가 없음에도 에러가 뜬 경우 (IFNDEF) 실험을 위해 ns3에서 새로운 application를 개발하고있다. 개발하다보니 여러개 app이 필요했는데, udp-client, udp-server app을 비롯한 관련 cpp파일과 header파일을 거의 복사해서 myapp 개발에 사용하고있다. 첫번째 myapp은 개발 후 테스트하니 성공적으로 서버와 클라이언트 간의 Tx, Rx가 모두 되었는데 똑같이 복사해서 만든 두번째 myapp2도 함께 install해서 테스트하니 실패했다. 분명 새로만든 helper, model 헤더를 소스파일에 잘 추가했고, wscript파일 등에도 모두 추가했는데.. 새로 만든 MyApp이 declare되지 않았다고 떴다,, 여기까지가 문제 배경이고 원인과 해결법은 아래와 같았다. 원인: udp-client-server-h..
[ns3] PyViz visualizer: not enabled (Python Bindings are needed but not enabled) 문제 해결 NR module을 request해서 installation하고 example file 수행까지 모두 마쳤다. 시뮬레이션 하다보면 visualization tool이 반드시 필요해서 pyviz 사용하려고 보니.. ./waf --run /scratch/example --vis 에서 --vis가 안먹히고 에러 발생 ./waf configure --enable-examples --enable-tests로 확인해보니 python binding을 찾을 수 없다한다. [solved] find -iname pybindgen 검색 결과, 나는 NR module 설치하느라 기존에 설치한 ns-allinone-3.35에서 작업하지 않고 ns-3-dev에서 작업 중이었는데 python binding이 ns-allinone-..
[ns3] basic installation list ns3를 처음 데스크탑에 설치할 일들이 종종 생기는데 매번 정리하기 귀찮아서 설치할 목록 간단히 정리해둔다. 1. Ubuntu installation - 이번에는 20.04 LTS로 설치일자 기준 제일 최신 version을 설치했다. 아직 크게 호환성 문제가 있었던 것은 없었는데 간혹 사소한 에러가 뜨긴한다. (구글링하면 다 나옴) 2. ns3 - ns3도 설치일자 기준 제일 최신 version으로 설치했다. 왜냐면 nr module을 추가로 사용할거라 이전 version ns3 설치하면 안되는 기능들이 있을 것 같아서! 3. pyviz or netanim - netanim을 원래 사용했지만.. qt 버전이었나 ns 버전때문에 netanim 사용이 어려워져서 그냥 pyviz로 변경! 4. SUMO 5. ..
네트워크 시뮬레이터 ns3 :: 설치부터 구현까지 1. ns3 설치와 초반 스터디졸업 프로젝트에서 설계한 V2P 네트워크 구조의 성능을 평가하기 위해 네트워크 시뮬레이션을 수행해야 했다.많은 네트워크 시뮬레이션 중 오픈소스인 ns3(network simulator)을 사용하기로 결정했다. ns3를 설치하기 위해 가상머신으로 Oracle VirtualBox를 사용했다. 내가 사용한 버전은 ns-3.31로 ns3를 최초 설치한 날(대략 2020년 8월?) 기준 가장 최신 버전이었다.지금 확인하니 ns-3.32가 2020년 10월 7일에 새로 릴리즈되었다!VirtualBox를 설치하는 과정은 이미 많은 블로거가 작성해두어서 어렵지 않았고, ns3를 설치하는 과정은 블로그보다 유튜브에 검색하여 보이는 영상을 따라하니 금방 설치가 됐다. + 추가로 공동 프로젝트..