본문 바로가기

분류 전체보기667

728x90
반응형
NS-3에 LoRaWAN 모듈을 설치하고 실행해보자 LoRaWAN은 LoRa Alliance에서 2015년에 1.0을 공개하여 현재까지 활발히 활용되고 있는 저전력 광역 통신망(Low-Power Wide-Area Network, LPWAN) 기술 중 하나이다 [1]. 최근에 나는 LoRaWAN 기반의 IoT(Internet of Things) 응용을 개발하기 전에 통신 실험을 할 필요가 있어서 이 모듈을 활용해서 실험에 활용하려고 한다. 이 NS-3 모듈은 이탈리아 파도바 대학교의 SIGNET 연구실의 학생 중 한 명이 석사학위 논문을 작성하기 위해 개발하였으며 현재는 Github에 공개되어 있다 [2]. 구동환경 CPU : i7-4790K 운영체제 : 우분투 18.04 x64(윈도우 10 x64 기반 VMWARE 가상환경) Github에 공개되어 있는 .. 2020. 11. 29.
NS-3를 우분투에 설치하고 실행하자 최근에 실험해보고자 하는 주제가 생겨서 하는 김에 신 버전 NS-3를 설치하다가 설치 방법을 정리하게 되었다. 네트워크 프로토콜 시뮬레이터로 강력한 툴인 NS-3는 우분투(Ubuntu)에서 설치 및 실행이 가능하다. 이번 설치에는 VMWARE로 가상머신을 하나 생성하여 우분투 18.04를 설치한 다음 거기에다가 신 버전 NS-3를 설치했다. 구동환경 CPU : i7-4790K 운영체제 : 우분투 18.04 x64(윈도우 10 x64 기반 VMWARE 가상환경) 의존성 패키지 설치 NS-3를 설치하기 전에 설치해야하는 것들이 있다. 다음 명령어를 터미널에 입력하여 설치한다. sudo apt install gcc sudo apt install g++ NS-3 다운로드 NS-3 공식 홈페이지(www.nsnam.. 2020. 11. 27.
4. 멀티위 컨트롤러에 멀티위를 업로드하자 본 글은 2015년 12월 3일 7시 26분에 썼던 글이며 블로그 자료 이전으로 날짜만 갱신된 글입니다. 멀티위 컨트롤러와 PC간에 시리얼통신이 잘 되는 지 확인을 했다면 이제 멀티위 컨트롤러에 멀티위를 업로드해야한다. 먼저 멀티위 프로젝트 사이트에 가서 멀티위를 다운 받는다. 멀티위 다운로드 : https://code.google.com/p/multiwii/ 구글 프로젝트에 있는 멀티위 사이트에 가서 2.4버전을 클릭해서 다운받는다. 다운 받은 압축파일을 압축해제하면 루트에 아래와 같이 있다. 멀티위 소스가 있는 Multiwii 폴더와 멀티위의 상태를 모니터링하고 각종 설정을 할 수 있는 프로그램이 있는 MultiwiiConf 폴더가 있다. 멀티위 소스를 아두이노 IDE에서 열어서 수정이 필요한 부분을.. 2020. 11. 22.
3. 멀티위 컨트롤러와 PC를 연결해서 통신이 가능한 지 확인하자 본 글은 2015년 12월 2일 17시 50분에 썼던 글이며 블로그 자료 이전으로 날짜만 갱신된 글입니다. 'CRIUS MWC MultiWii SE v2.5 멀티위 비행 제어보드 멀티콥터용 컨트롤러 ATMEGA 328P'에 멀티위 소스를 올리기 전에 멀티위 컨트롤러와 PC와 통신이 잘 되는지 확인해야한다. ※ 멀티위(www.multiwii.com)는 멀티로터 RC를 제어하기 위한 범용소프트웨어이다. 다시 말해 여러개의 날개가 달린 RC들을 제어할 수 있는 소프트웨어라는 말로 날개가 세 개인 트라이콥터부터 여덟개인 옥토콥터까지 다양하게 지원한다. 즉, 코딩하나 없이 쿼드콥터에 오픈소스 소트프웨어를 올리면 날릴 수 있다는 것이다. 멀티콥터에 대해 자세한 것은 펠콘샵을 참조(http://www.falconsh.. 2020. 11. 22.
NS-3.32 업데이트 정보 네트워크 시뮬레이터 NS-3의 3.32 버전이 출시되었습니다. Wi-Fi 관련 기능이 보충되었고 여러 혼잡 제어 기능과 각종 버그들이 수정되었습니다. 변화된 점 Wi-Fi 802.11ax가 6 GHz 대역을 지원합니다. Wi-Fi 모델에서 RIFS(Reduced Interframe Space) 기능이 삭제되었습니다. NS-3의 Emulation에 Netmap과 DPDK(Data Plane Development Kit) 기능이 추가되었습니다. TCP에서 동적 페이싱이 추가되었습니다. TcpLinuxReno 혼잡 제어가 추가되었습니다. RFC 8033에 있는 PIE queue disc model이 추가되었습니다. FqCoDel 및 CoDel queue disc에 L4S 모드가 추가되었습니다. STL Pair.. 2020. 11. 9.
CCS(Code Composer Studio)로 CC3200 개발환경 구성하기 본 글은 2016년 4월 14일 11시 46분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. CCS(Code Composer Studio) v6로 개발환경을 구성하는 과정이다. Windows7 64비트 환경에서 수행하였고 앞으로의 글에서도 Windows7 64비트 환경과 CCS v6를 가정하고 쓴다. 다른 OS에서는 이 글 처럼 안 될 수도 있다는 점을 밝힌다. 1. RedBearLab CC3200과 PC를 USB를 연결한다. 장치관리자에서 기타 장치로 드라이버가 안 잡혀있는 것을 확인할 수 있다. 2. mbedWinSerial_16466 드라이버를 설치한다. 다운로드 : https://developer.mbed.org/media/downloads/drivers/mbedWinSe.. 2020. 10. 28.
CC3200 와이파이 연결이 안 될때 본 글은 2016년 4월 18일 21시 51분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. RedBearLab의 CC3200이 와이파이 연결이 안 되는 이유는 코드 문제일 수도 있지만 코드 문제가 없다면 AP의 와이파이 채널을 바꿔보는 것도 한 방법이다. 나의 경우 정상적으로 와이파이에 잘 연결되다가 어느 날 부터 연결이 되지 않았는데 AP가 재시작하면서 채널을 변경해서 생긴 문제였다. 경험자에게는 너무나 당연한 이야기일 수도 있으나 이런 경우가 처음인 나에게는 굉장히 황당한 경우였다. 문제가 발생한 환경은 아래와 같다. AP : A5004NS v9.93.2 채널 12 1번~12번채널까지 수십개의 AP가 있는 매우 혼잡한 환경 CCS의 예제도 마찬가지이고 Energia에 있는 .. 2020. 10. 14.
CentOS 7에서 Tomcat 7 가상호스트 설정시 주의사항 본 글은 2016년 4월 18일 16시 14분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 톰캣 서버를 구축하면서 가상호스트 설정이 안 되서 꽤나 애먹었다. 과거에 몇 개의 서버 구축한 경험도 있고 정상적으로 돌아가던 서버의 설정을 가능한 그대로 들고왔는데도 발생한 에러라서 좀 당황스러웠다. CentOS7에서 Tomcat7 가상호스트 설정시 문법적으로 아무런 문제가 없는데도 에러없이 가상호스트 설정이 안 된다면 속성의 배열 순서를 바꾸는 것을 권장한다. example.com 의미 없이 7시간을 날렸다. 문제가 발생한 환경은 아래와 같다. CentOS 7 tomcat 7.0.54 openJDK 1.8.0.77 x64 2020. 10. 14.
MQTT 서버(브로커) 프로그램 목록 및 정보 본 글은 2016년 3월 30일 17시 34분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. HTTP에 Apache와 NginX, IIS, Tomcat이 있듯이 MQTT에도 Mosquitto와 HiveMQ, WebSphere MQ가 있다. Github에 있는 MQTT 프로젝트의 위키에 가면 MQTT 목록과 지원 되는 기능을 한 눈에 볼 수 있는 표가 있다. 아래가 그 표인데 표에 나타난 모든 기능을 지원하는 서버가 대다수 상용인 점을 고려하면 저비용에 개발하기에는 아직은 시기상조이지 않을까 생각이 든다. ※ 참고 : MQTT에는 브로커(Broker)라는 개념이 있는데 서버-클라이언트 모델의 서버에 해당한다. 현재 MQTT 관련 자료들을 살펴 보면 브로커의 개념을 브로커와 서버라는.. 2020. 10. 14.
RTSC(Real Time Software Components)란? 본 글은 2016년 4월 11일 0시 11분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. RTSC(Real Time Software Components)는 임베디드 시스템의 컴포넌트 기반 개발을 위해 기초 툴과 로우 레벨 런타임 콘텐츠를 제공하며 모든 임베디드 플랫폼에서 C언어로 사용하는 목표로 한다. 임베디드 시스템에는 기존의 다른 컴포넌트 기술이 있지만 RTSC는 DSP들과 16비트 마이크로컨트롤러 같은 리소스 제약이 심한 환경에서 사용이 가능하다는 것에서 차별점이 있다. 현재 RTSC 프로젝트는 TI(Texas Instruments)가 제공하는 XDCtools로 개발이 가능하다. XDCtools는 무료로 다운로드 받을 수 있다. RTSC는 이클립스의 인큐베이션 프로젝에 있.. 2020. 10. 14.
RedBearLab CC3200의 개발환경 소개 본 글은 2016년 4월 14일 11시 38분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. RedBearLab CC3200의 개발환경은 크게 두 가지 분류가 있다. 하나는 Energia이고 다른 하나는 CCS(Code Composer Studio)이다. 이 두 개의 환경은 관련 개발의 지식과 숙련도, 개발특징 및 기간에 따라서 선택하는 것이 좋다. Energia는 Arduino와 비슷한 형태의 IDE로써 Arduino를 접해본 적이 있다면 어렵지 않게 금방 CC3200 개발이 가능하다. Energia의 라이브러리와 예제는 CCS보다 풍부한 편이고 쉽고 빠른 개발에 초점이 맞춰져 있어서 프로토타입이나 데모버전 개발에 쓰면 꽤나 괜찮다. 아무래도 Energia로 개발하는 것이 속도.. 2020. 10. 14.
MQTT로 개발하는 것이 무조건 좋은 것인가? 본 글은 2016년 3월 29일 17시 28분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 현재(2020년 10월 14일)의 MQTT시장과는 상황이 전혀 다릅니다. MQTT를 써야한다면 쓰면 됩니다. MQTT 프로토콜이 적합한 경우 환경과 시나리오, 준비된 기술에 따라서 적합한 프로토콜이 있다. MQTT의 경우 1999년 네트워크의 신뢰성이 낮고 연산과 처리속도, 메모리가 극히 제한적인 상황을 고려해서 설계가 되었기에 2016년 현재 이러한 특징을 살릴 수 있는 상황이 아니라면 MQTT가 큰 의미는 없을 수 있다. 예를 들어 사용할 수 있는 네트워크의 단위 시간당 처리량이 크고 패킷 이용로가 아주 저렴할 때 IoT 장비가 이 네트워크를 사용해서 한달동안 100MB의 패킷을 절약.. 2020. 10. 14.
안드로이드폰을 PC에 연결시 unknown device 문제 본 글은 2016년 3월 18일 13시 38분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 안드로이드폰을 PC에 연결하였는데 인식이 제대로 되지 않고 unknown device라고 뜰 때가 있다. 이 현상의 원인에는 여러가지가 있지만 나의 경우에는 선이 불량이었다. 원래 잘 되던 선이었는데 어느 날 부터 안 되는 것을 보아 단선된 것 같다. 옆에 있던 다른 분의 선으로 안드로이드폰을 연결하니 바로 인식되었다. 씁쓸하다. 이 문제로 날린 시간이 하루나 된다. 위의 현상이 발생한 환경을 적어둔다. 윈도우7 x64, i5-4440, DDR3 16GB, USB2.0/3.0 2020. 10. 14.
[네트워크] 무선통신환경에서 충돌 감지를 통해 매체접근제어를 하지 않는 이유 본 글은 2016년 3월 14일 8시 13분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 여러 노드가 하나의 공유매체를 통해 통신을 한다면 동시에 정보를 전송할 경우 정보의 깨짐 현상이 나타날 수 있다. 이러한 현상을 충돌(Collison)이라고 하는데 유선(송수신이 동시에 가능하다는 전제가 있다)에서는 CSMA/CD라는 기법으로 충돌을 감지해서 적절하게 공유매체 사용을 제어한다. 유선에서는 공유매체를 통해 전송할 때 전송한 데이터를 거의 동시에 수신할 수 있기 때문에 정상적으로 전송되면 전송하려고 했던 데이터와 수신한 데이터가 동일하다. 하지만 충돌이 나면 전송하려고 했던 데이터와 수신한 데이터가 다른 것을 즉시에 알 수 있고 이 차이를 통해 충돌 감지를 한다. 하지만 무선에.. 2020. 10. 14.
NS-3에서 UAN 프레임워크로 IPv4 수중 시뮬레이션을 하는 방법 본 글은 2016년 10월 11일 17시 31분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. NS-3에서 UAN 프레임워크로 IPv4 수중 시뮬레이션을 하는 것이 가능한 지 조사해보았다. UAN 프레임워크로 생성된 노드는 기본적으로 0-255의 한 바이트(unit8_t) 주소를 부여 받는다. 즉 기본적으론 IPv4를 지원하지 않는다. 이를 해결하기 위한 방법으로 두 가지가 있는데 하나는 적응계층(adaptation layer)을 두는 것과 다른 하나는 NS-3에 구현되어 있는 IPv4 관련 클래스를 수정해서 UAN 프레임워크의 주소를 관리하도록 만드는 것이다. 관련 링크 1 : https://groups.google.com/forum/#!msg/ns-3-users/ag2CoKE.. 2020. 10. 14.
NS-3 로그의 종류와 로그를 터미널에 출력하는 법 본 글은 2016년 10월 14일 12시 56분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. NS-3는 각종 정보를 저장하고 확인하기 위한 로그를 지원한다. 이런 로그 정보는 파일로 저장 될 수도 있고 터미널에서 실시간으로 확인할 수도 있다. 로그의 종류는 아래와 같다. 종류 의미 LOG_LEVEL_ERROR 오류가 발생 했음을 의미하는 로그 LOG_LEVEL_WARN 경고용 로그 LOG_LEVEL_DEBUG 디버깅용 로그 LOG_LEVEL_INFO 각종 정보를 알려주는 로그 LOG_LEVEL_FUNCTION 함수 추적(tracing)을 위한 로그. LOG_LEVEL_LOGIC 함수안에서 추적흐름제어(control flow tracing)을 위한 로그 LOG_LEVEL_ALL .. 2020. 10. 14.
[네트워크] OSI 7계층 - 물리 계층 소개 및 프로토콜 설명 본 글은 2016년 3월 14일 13시 5분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. OSI 7계층의 가장 하단에 있는 계층은 물리계층이다. 물리계층은 전송매체의 물리적 인터페이스에 관한 사양을 기술한다. 다시말해서 정보를 표현한 신호(Signal) 교환 문제를 다루는 계층이다. 물리계층의 프로토콜은 하드웨어적 명세와, 인코딩/디코딩, 시그널링, 토폴로지와 같은 물리적 네트워크 디자인을 고려하여 정의하며 대표적인 프로토콜로 RS-232, V.24가 있다. 물리 계층의 프로토콜에는 전송속도/신호의 레벨/인코딩/디코딩 등 전기적 신호 규격과 송수신 호스트 사이의 클럭 동기화 방법, 전송매체의 규격과 같은 내용이 담길 수 있다. 2020. 10. 14.
왜 TCP/IP에서는 OSI의 5,6,7계층이 하나의 계층에 들어가는가? 본 글은 2016년 2월 26일 9시 58분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. TCP/IP의 어플리케이션 계층은 OSI 7계층의 어플리케이션 계층과 표현(프레젠테이션)계층, 세션계층이 해당에 해당한다고 흔히 알고 있다. 그럼 왜 TCP/IP에서는 ISO(International standasdasdasda)가 심혈을 기울여 만든 OSI 7계층의 3개 계층을 1개의 계층으로 표현했을까? 라는 의문이 들 수 있다. 나도 의문이 들었던 사람 중 한 명으로서 이 의문의 해답을 얻으려 했지만 쉽게 얻지는 못 했다. 나는 지금까지 흔히들 알고 있는 내용인 "지나친 계층화는 각 계층 간의 커뮤니케이션이 불필요하게 많이 일어나게 만드는 문제가 있다. 이는 비용(메모리사용량증가, 수.. 2020. 10. 14.
[네트워크] OSI 7계층 - 어플리케이션 레이어와 어플리케이션은 어떻게 다른가? 본 글은 2016년 3월 9일 7시 34분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 네트워크 관련 공부를 하면 'OSI 7계층의 어플리케이션 레이어와 어플리케이션은 같은가? 다른가?'라는 질문을 자주 들을 수 있다. 난 이 질문을 받았을 때 다르다고 생각했지만 확실한 용어 정의를 가지고 있지 않았기에 시원하게 답을 하지는 못 했다. 아래는 내가 생각하는 답이다. "다르다. OSI 7계층은 컴퓨터의 통신을 기능별로 7개의 계층으로 분류한 것이며 각 계층에는 계층의 존재 목적을 이룩하기 위하여 통신을 할 때 이용할 특정한 통신을 위한 규칙을 정하는데 이 특정한 규칙을 프로토콜이라고 한다. 즉, 어플리케이션 레이어는 어플리케이션(또는 사용자, 호스트)이 네트워크 통신할 수 있도록.. 2020. 10. 14.
MQTT(Message Queuing Telemetry Transport, 엠큐티티) 개요 본 글은 2016년 3월 29일 11시 58분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. MQTT(Message Queuing Telemetry Transport, 엠큐티티)는 Publish–Subscribe 기반의 경량 메시징 프로토콜이다. 응용계층의 프로토콜로로써 1999년에 IBM과 Eurotech에 의해 제한된 리소스(적은 배터리)를 가진 가진 센서가 사용하는 목적으로 개발하였다. 2013년부터 OASIS(Advaning open standards for the information society)가 표준화를 진행 중이다. 발행-구독 모델을 기초로 제작된 프로토콜이다. 기본포트는 1883이며 SSL용으로 8883을 쓴다. 신뢰성 있는 메시지 전송을 위해 세 종류의 Qo.. 2020. 10. 13.