생각과 고민이 담긴 코드

IoT를 위한 MQTT, CoAP protocol 본문

Network

IoT를 위한 MQTT, CoAP protocol

0_Hun 2021. 2. 16. 18:24

오늘은 제가 5G, AI 아이디어 공모전을 나가면서 IoT device대한 구현 아이디어를 내기 위해

공부했던 protocol에 대하여 알아보겠습니다.

먼저 왜 이러한 경량 프로토콜이 개발된 것인지 생각해볼 필요가 있습니다.

 

IoT 통신 프로토콜 요구사항

모든 인터넷에 연결된 기기들은 IETF에서 제정한 인터넷 프로토콜 수트를 따라야합니다.

그러나 과거부터 인터넷은 많은 전력과 메모리를 갖는 리소스가 풍부한 기기들을 위주로 연결해왔기 때문에

IoT device와 같이 리소스가 매우 한정적인 기기에는 적합하지 않습니다.

예를 들어, 현재 가장 대중적으로 쓰이고 있는 프로토콜 중 하나인 HTTP 프로토콜은 같은 이유로 IoT device에는

잘 쓰이지 않습니다. 또한 IoT 최종 노드 네트워크는 손실이 많으며 동시에 이러한 네트워크에 연결되는 기기들은 매우적은 전력을 사용하면서 제한된 리소스를 갖고 장시간 사용 수명을 필요로 합니다.

즉, 이러한 요구사항에 따라 새롭고 더 가벼운 프로토콜을 필요로 하게 되었고 MQTT, CoAP가 등장하여 메시지 크기,

메시지 관리 및 경량 메시지 오버헤드를 통해 이러한 요구들을 충족하게 된 것 입니다.

 

 IoT 통신에서의 핵심적인 요구사항을 요약한 자료.

 

MQTT와 CoAP protocol의 특징

 

MQTT와 CoAP는 모두 경량 애플리케이션 계층을 구현하며, 에러 핸들링의 많은 부분을 메시지 재시도와 같은

간단한 신뢰성 전략을 사용하거나 최종 노드의 원데이터에 대한 후처리를 클라우드 서버와 같이

리소스가 더 풍부한 end system에 맡길 수 있습니다.

 

클라우드와 스마트폰에 대한 통신을 지원.

 

MQTT는 TCP위에서 동작하며 특이하게도 publish/subscribe 모델로 이루어져있습니다.

따라서 중간에서 네트워크 노드 간에 메시지를 라우팅하는 MQTT Broker가 존재합니다.

이러한 pub/sub 모델은 pub 노드가 정보를 발행하면 등록된 sub 노드들이 브로커를 통해 정보를 구독하는 방식으로

확장성이 뛰어나고 전력면에서도 효율적입니다.

 

 

 

 

예를 들어, 집 안의 IoT환경에서 온도센서가 25도라는

측정값 정보를 발행하면 브로커를 통해서

집 안 다른 IoT device들에게 전달하여 활용될 수 있습니다.

 

하지만 MQTT는 중앙 브로커를 중심으로 구동되기 때문에

만약 중앙 브로커가 해킹당하거나 에러가 생길경우 네트워크가 제대로 동작하지 않는 문제가 있습니다.   또한 경량 IoT 방식에는 적합하지 않는 TCP를 사용하기 때문에 연결과정에 시간과 자원이 소모되는 단점이 있습니다.

 

 

 

 

이러한 단점들을 보완한 CoAP는 클라이언트/서버 구조를 가지며 기본적으로 UDP 위에서 작동합니다.

그렇기 때문에 빠른 웨이크업과 전송사이클을 통해 디바이스를 더 오랫동안 휴면상태로 유지 시켜

전력을 절약할 수 있고 빠르고 반복적 메시징에 의존하여 신뢰성을 보장합니다.

그 외에도 IPv6 위에 구축되기 때문에 멀티캐스트 지원, 비동기식 통신등 여러 장점이 있으며

다가오는 IoT 시대에 가장 촉망받는 프로토콜 중 하나입니다.

 

이처럼 빠르게 성장하는 IoT 시장에서 급부상하고 있는 두 프로토콜에 대해서 알아보았는데요.

5G 통신망과 연계되어 앞으로는 더 작은 디바이스에 더 많은 기능을 넣고 개인이 그러한 디바이스들을 수십개씩

가지고 다닐 수 있는 미래가 머지 않은 것 같습니다.

 

Reference :

www.hellot.net/new_hellot/magazine/magazine_read.html?code=205&sub=002&idx=27478

ko.wikipedia.org/wiki/MQTT