KR101996598B1 - 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법 - Google Patents
차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법 Download PDFInfo
- Publication number
- KR101996598B1 KR101996598B1 KR1020170155191A KR20170155191A KR101996598B1 KR 101996598 B1 KR101996598 B1 KR 101996598B1 KR 1020170155191 A KR1020170155191 A KR 1020170155191A KR 20170155191 A KR20170155191 A KR 20170155191A KR 101996598 B1 KR101996598 B1 KR 101996598B1
- Authority
- KR
- South Korea
- Prior art keywords
- message
- priority
- broker
- publish
- mqtt
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/61—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
-
- H04L67/322—
-
- H04L67/2809—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법이 개시된다. MQTT(Message Queue Telemetry Transport) 프로토콜을 사용하는 IoT 시스템에서, N개의 발행자(Publisher); 상기 N개의 발행자로부터 PUBLISH 타입의 메시지를 수신받고, 각각의 메시지를 읽고 MQTT 헤더 파싱, 메시지 페이로드 읽음, 메시지 타입 디코딩, PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링, 발행자들로부터 동시에 여러 메시지가 수신될 경우, 우선순위 레벨에 따른 복수의 메시지 큐를 이용하여 우선순위가 높은 메시지부터 차례대로 처리하며, 해당 메시지 큐로부터 dequeue하여 메시지를 퍼블리싱(Publish)하는 브로커(Broker); 및 상기 브로커로부터 PUBLISH 타입이 아닌 메시지 또는 PUBLISH 타입의 메시지를 수신받아 구독하는 1개의 구독자(Subscriber)를 포함하며, 상기 브로커는 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위 레벨(priority level)에 따라 독립적인 메시지 큐를 사용하여 메시지를 저장하고 처리하고, 상기 브로커는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공한다.
Description
본 발명은 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법에 관한 것으로, 보다 상세하게는 MQTT 프로토콜을 사용하는 IoT 시스템에서, MQTT 메시지 고정 헤더에 우선순위 플래그를 추가하여 클라이언트에서 우선순위 정보를 담아 브로커(Broker)로 전송하며, 브로커는 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위 레벨(Priority Level)에 따라 독립적인 메시지 큐를 사용하여 메시지를 저장하고 처리함으로써 우선순위에 따른 차등 서비스(Differentiated Service)를 제공하는, 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법에 관한 것이다.
최근, IoT(Internet of Things)가 새로운 성장 동력으로 부상하고 있다. 이에 따라 제한된 컴퓨팅 성능과 네트워크 자원을 가지는 환경에서 효율적으로 동작하는 통신 프로토콜에 대한 연구가 진행되고 있다. IoT는 각종 사물에 센서와 통신 기능을 내장하여 사람과 사물, 사물과 사물 간 지능적 서비스를 가능하도록 인터넷에 연결하는 기술을 의미한다.
사물 통신 서비스에서 적용되는 IoT 제품은 제한된 컴퓨팅 성능과 네트워크 자원을 가지는 환경에서 동작하기 때문에 MQTT(Message Queue Telemetry Transport), CoAP(Constrained Application Protocol)과 같은 경량 프로토콜이 필요하다[1].
이와 관련된 선행기술로써, 특허 등록번호 10-17924040000에 개시된 "M2M/IoT 시스템에서 MQTT 프로토콜을 활용한 메시지 전달 방법"은 특정 표준에 따른 메시지를 인코딩하여 MQTT 발행 메시지의 페이로드에 수록하고, 인코딩된 메시지의 데이터 타입을 MQTT 발행 메시지의 토픽 이름에 명시한다. 이에 의해, 클라이언트가 토픽 이름에 명시된 데이터 타입을 참조하여 페이로드에 수록된 메시지의 디코딩을 보다 용이하게 할 수 있게 된다
1. MQTT(Message Queue Telemetry Transport)
MQTT는 1999년 IBM과 Eurotech에 의해 최초 개발된 경량 메시지 전달 프로토콜이다. Publish/Subscribe 방식을 사용하기 때문에 백-엔드(Back-end) 애플리케이션과 엣지(Edge) 네트워크 장비 간의 메시지 교환에 적합하며 오버헤드를 최소화하기 위해 작은 크기의 고정 헤더를 사용한다. 또한, Publish/Subscribe 기반 메시지 전송에 있어서 신뢰성을 보장하기 위해 3단계의 QoS(Quality of Service) 레벨을 제공함으로써 반드시 전송되어야 하는 중요 메시지에 대한 신뢰성 있는 전송을 보장한다. 그러나, MQTT는 긴급하거나 중요한 메시지에 대한 우선순위 처리를 지원하지 않기 때문에 특정 서비스 측면에서 차등 서비스(Differentiated Service)를 제공하지 못하는 문제가 있다[2]. 기존 MQTT 시스템은 메시지를 수신한 후 큐(Queue)를 사용하지 않고 싱글 스레드를 기반으로 메시지를 순차적으로 처리한다. 우선순위에 따라 메시지 큐(Message Queue)를 구성하더라도 기존 시스템에서 사용하는 싱글 스레드 기반의 순차적인 메시지 처리 방식을 수정하지 않으면 우선순위에 따른 차등 서비스를 제공할 수 없다.
MQTT(Message Queue Telemetry Transport)는 대표적인 경량 프로토콜로써 Publish/Subscribe 방식을 사용하여 메시지를 전송하며 3단계의 QoS level을 제공함으로써 반드시 전송되어야 하는 중요 메시지에 대한 신뢰성 있는 전송을 보장한다. 그러나, MQTT는 긴급하거나 중요한 메시지에 대한 우선순위 처리를 지원하지 않기 때문에 특성 서비스 측면에서 차등 서비스를 제공하지 못하는 문제가 있다.
A. A. Fuqaha, M. Guizani, M. Mohammadi, M. Aledhari, and M. Ayyash, "Internet of Things: A survey on Enabling Technologies, Protocols, and Applications," IEEE Communications Surveys & Tutorials, vol. 17, no. 4, pp. 2347-2376, Jun. 2015.
D. Soni and A. Makwana, "A Survey on MQTT: A Protocol of Internet of Things(IoT)," Proc. of the International Conference on Telecommunication, Power Analysis and Computing Techniques, pp. 1-5, Apr. 2017.
S. Kim and C. Oh, "Method for Message Processing According to Priority in MQTT Broker," Journal of the Korea Institute of Information and Communication Engineering, vol. 21, no. 7, pp. 1320-1326, Jul. 2017.
Paho. [Online]. Available: http://eclipse.org/paho
Mosquitto. [Online]. Available: http://mosquitto.org
종래 기술의 문제점을 해결하기 위한 본 발명의 목적은 IoT 프로토콜로 사용되는 MQTT는 단일 쓰레드(thread)에 의해 긴급하거나 중요한 메시지의 우선순위 처리를 지원하지 않아 차등 서비스를 제공하지 못하는 문제를 해결하기 위해 MQTT 메시지 고정 헤더에 우선순위 플래그를 추가하여 클라이언트에서 우선순위에 따른 메시지 처리를 수행함으로써 차등 서비스를 제공하는 우선순위 기반의 MQTT 시스템을 제안하며, 우선순위 기반의 MQTT 시스템은 MQTT 고정 헤더에 우선순위 플래그를 추가하여 클라이언트에서 우선순위 정보를 담아 브로커(Broker)로 전송하며, 브로커에서는 우선순위 레벨(Priority Level)에 따라 독립적인 메시지 큐를 사용하여 메시지를 저장하고 처리함으로써 우선순위에 따른 차등 서비스를 제공하는, 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템을 제공한다.
본 발명의 다른 목적은 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 방법을 제공한다.
본 발명의 목적을 달성하기 위해, 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템은, MQTT(Message Queue Telemetry Transport) 프로토콜을 사용하는 IoT 시스템에서, N개의 발행자(Publisher); 상기 N개의 발행자로부터 PUBLISH 타입의 메시지(Topic, Data, Priority)를 수신받고, 각각의 메시지를 읽고 MQTT 헤더 파싱, 메시지 페이로드(message payload) 읽음, 메시지 타입(message type) 디코딩, PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링, 발행자들로부터 동시에 여러 메시지가 수신될 경우, 상기 우선순위 레벨에 따른 복수의 메시지 큐(Message Queue)를 이용하여 우선순위가 높은 메시지부터 차례대로 처리하며, 해당 메시지 큐로부터 dequeue하여 메시지를 퍼블리싱(Publish)하는 브로커(Broker); 및 상기 브로커로부터 PUBLISH 타입이 아닌 메시지 또는 PUBLISH 타입의 메시지를 수신받아 구독하는 1개의 구독자(Subscriber)를 포함하며,
상기 브로커는 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위 레벨(priority level)에 따라 독립적인 메시지 큐를 사용하여 메시지를 저장하고 처리하고,
상기 브로커는, 발행자(Publisher)로부터 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 MQTT 헤더를 파싱하는 헤더 파서(Header Parser); 메시지 페이로드(message payload) 읽고 메시지 타입(message type)을 디코딩하는 메시지 타입 디코더(Message Type Decoder); 및 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 메시지 핸들러(Message Handler)를 포함하는 메인 쓰레드(main thread); 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 발행 쓰레드(Publish thread)를 포함하며,
상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨(Priority Level) 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 하고,
상기 브로커는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공한다.
상기 브로커는, 발행자(Publisher)로부터 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 MQTT 헤더를 파싱하는 헤더 파서(Header Parser); 메시지 페이로드(message payload) 읽고 메시지 타입(message type)을 디코딩하는 메시지 타입 디코더(Message Type Decoder); 및 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 메시지 핸들러(Message Handler)를 포함하는 메인 쓰레드(main thread); 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 발행 쓰레드(Publish thread)를 포함하며,
상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨(Priority Level) 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 하고,
상기 브로커는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공한다.
본 발명의 다른 목적을 달성하기 위해, 우선순위 기반의 MQTT 시스템에서 차등적인 IoT 서비스를 제공하는 방법은 (a) MQTT(Message Queue Telemetry Transport) 프로토콜을 사용하는 IoT 시스템에서, N개의 발행자(Publisher)로부터 PUBLISH 타입의 메시지(Topic, Data, Priority)를 브로커(Broker)로 수신받고, 상기 브로커가 각각의 메시지를 읽고 MQTT 헤더 파싱, 메시지 페이로드(message payload) 읽음, 메시지 타입(message type) 디코딩, PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링, 발행자들로부터 동시에 여러 메시지가 수신될 경우, 우선순위(priority)에 따른 복수의 메시지 큐를 이용하여 우선순위가 높은 메시지부터 차례대로 처리하며, 해당 메시지 큐로부터 dequeue하여 메시지를 퍼블리싱(Publish)하는 단계; 및
(b) 상기 브로커로부터 PUBLISH 타입이 아닌 메시지 또는 PUBLISH 타입의 메시지를 1개의 구독자(Subscriber)로 수신받아 구독하는 단계를 포함하며,
상기 브로커는 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위 레벨(priority level)에 따라 독립적인 메시지 큐를 사용하여 메시지를 저장하고 처리하고,
상기 단계 (a)에서, 상기 브로커는 메인 쓰레드(main thread)와 발행 쓰레드(Publish thread)를 포함하며,
상기 메인 쓰레드(main thread)가, 발행자(Publisher)로부터 상기 브로커로 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 헤더 파서(Header Parser)에 의해 MQTT 헤더를 파싱하는 단계; 메시지 페이로드(message payload) 읽고 메시지 타입 디코더(Message Type Decoder)에 의해 메시지 타입(message type)을 디코딩하는 단계; 및 메시지 핸들러(Message Handler)에 의해 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 단계; 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 단계를 포함하며,
상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 하고,
상기 브로커는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공한다.
상기 단계 (a)에서, 상기 브로커는 메인 쓰레드(main thread)와 발행 쓰레드(Publish thread)를 포함하며,
상기 메인 쓰레드(main thread)가, 발행자(Publisher)로부터 상기 브로커로 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 헤더 파서(Header Parser)에 의해 MQTT 헤더를 파싱하는 단계; 메시지 페이로드(message payload) 읽고 메시지 타입 디코더(Message Type Decoder)에 의해 메시지 타입(message type)을 디코딩하는 단계; 및 메시지 핸들러(Message Handler)에 의해 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 단계; 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 단계를 포함하며,
상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 하고,
상기 브로커는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공한다.
본 발명에 따른 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법은 MQTT 프로토콜을 사용하는 IoT 시스템에서, MQTT 메시지 고정 헤더에 우선순위 플래그를 추가하여 브로커(Broker)와 클라이언트에서 우선순위 정보를 담아 브로커에게 전송하며, 브로커는 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위 레벨(Priority Level)에 따라 독립적인 메시지 큐를 사용하여 메시지를 저장하고 처리함으로써 차등 서비스(Differentiated Service)를 제공하는 우선순위 기반 MQTT 시스템을 제안하였다.
실험 결과, 본 발명에서 제안하는 우선순위 기반 MQTT 시스템은 브로커 내의 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 0~3까지의 4단계의 우선순위 레벨에 따른 독립적인 4개의 메시지 큐(Message Queue)를 사용하여 메시지를 처리했을 때 동시에 여러 메시지가 브로커로 전송되는 환경에서 기존 단일 쓰레드를 사용하는 MQTT 시스템보다 우선순위에 따른 종단 간 지연시간이 감소하는 것을 확인하였다.
도 1은 MQTT 메시지 고정 헤더의 구조를 나타낸 도면이다.
도 2는 클라이언트와 브로커 간 QoS 레벨에 따른 메시지 처리 과정을 나타낸 도면이다.
도 3은 본 발명에 따른 우선순위 플래그를 추가한 MQTT 메시지 고정 헤더의 구조를 나타낸 도면이다.
도 4는 본 발명의 실시예 따른 우선순위 기반 MQTT 시스템 구성도이다.
도 5는 본 발명에서 제안하는 우선순위 기반의 메시지 처리 과정을 나타낸 플로차트이다.
도 6은 N개의 발행자(Publisher)와 브로커(Broker)를 통해 1개의 구독자(Subscriber)에 연결하는 실험 환경을 나타낸 도면이다.
도 7은 (a) QoS 1 단계, (b) QoS 2 단계 - 우선순위가 높은 메시지의 평균 지연시간을 나타낸 막대 그래프이다.
도 8은 일 실시예에 따른 우선순위(Priority Level 0,1,2,3)에 따른 종단간 지연시간을 나타낸 막대 그래프이다.
도 2는 클라이언트와 브로커 간 QoS 레벨에 따른 메시지 처리 과정을 나타낸 도면이다.
도 3은 본 발명에 따른 우선순위 플래그를 추가한 MQTT 메시지 고정 헤더의 구조를 나타낸 도면이다.
도 4는 본 발명의 실시예 따른 우선순위 기반 MQTT 시스템 구성도이다.
도 5는 본 발명에서 제안하는 우선순위 기반의 메시지 처리 과정을 나타낸 플로차트이다.
도 6은 N개의 발행자(Publisher)와 브로커(Broker)를 통해 1개의 구독자(Subscriber)에 연결하는 실험 환경을 나타낸 도면이다.
도 7은 (a) QoS 1 단계, (b) QoS 2 단계 - 우선순위가 높은 메시지의 평균 지연시간을 나타낸 막대 그래프이다.
도 8은 일 실시예에 따른 우선순위(Priority Level 0,1,2,3)에 따른 종단간 지연시간을 나타낸 막대 그래프이다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 발명의 구성 및 동작을 상세하게 설명한다.
본 발명의 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법은 MQTT(Message Queue Telemetry Transport) 프로토콜을 사용하는 IoT 시스템에서, MQTT 메시지 고정 헤더에 2 bit의 우선순위 플래그를 추가하여 클라이언트에서 우선순위 정보를 담아 브로커(Broker)에게 전송하며, 브로커는 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위에 따른 독립적인 4개의 메시지 큐(Message Queue)를 사용하여 메시지를 저장하고 처리함으로써 차등 서비스(Differentiated Service)를 제공하는 우선순위 기반의 MQTT 시스템을 제안한다.
일 실시예로써, 우선순위 기반의 MQTT 시스템은 MQTT 메시지 고정 헤더에 우선순위 플래그를 추가하여 클라이언트에서 우선순위 정보를 담아 브로커에게 전송하며, 브로커에서는 우선순위 레벨(Priority Level 0,1,2,3)에 따라 4개의 독립적인 메시지 큐(Message Queue)를 사용하여 메시지를 저장하고 처리함으로써 우선순위(Priority)에 따른 차등 서비스를 제공한다.
2. MQTT 시스템
도 1은 MQTT 메시지 고정 헤더의 구조를 나타낸 도면이다.
기존 MQTT는 오버헤드를 최소화하기 위해 도 1과 같이 작은 크기의 메시지 고정 헤더를 사용한다. 그러나, MQTT 메시지 고정 헤더는 우선순위에 대한 정보가 포함되어 있지 않다. 우선순위 기반의 메시지 처리를 위해 고정 헤더 메시지 포맷과 브로커의 메시지 처리 방식 수정이 필요하다[3].
도 2는 클라이언트와 브로커 간 QoS 레벨에 따른 메시지 처리 과정을 보여준다. MQTT는 3단계의 QoS Level을 제공함으로써 반드시 전송되어야 하는 중요 메시지에 대한 신뢰성 있는 전송을 보장한다.
QoS Level 0은 클라이언트가 메시지를 단 한 번만 전송하며, 한 번에 전송이 성공하지 않으면 전송은 실패한 상태로 끝이 난다. QoS Level 1은 클라이언트가 메시지 전송에 대해 확인을 하지만 전송 확인 메시지가 손실될 경우 메시지가 중복으로 전송될 수 있다.
QoS Level 2는 클라이언트(발행자, Publisher)가 PUBLISH 메시지를 브로커(Broker)로 전송하고, 브로커(Broker)로부터 구독자(Publisher)로 PUBLISH 메시지를 전송하며, 다시 클라이언트(발행자)가 PUBLISH 타입의 메시지 전송에 대해 상기 브로커로부터 발행자(Publisher)로 PUBBACK을 전송하며, 클라이언트(발행자)로부터 브로커로 PUBREL을 전송하며, 브로커로부터 발행자로 PUBCOMP 메시지를 전송하는 Handshaking 과정, 즉, 다시 클라이언트가 Handshaking 과정을 통해 메시지를 정확히 한번 전송한다.
상기 MQTT 메시지 고정 헤더는 2비트의 QoS Level을 포함하며,
QoS Level 0은 클라이언트(발행자, Publisher)가 PUBLISH 메시지를 브로커(Broker)로 전송하고, 브로커(Broker)로부터 구독자(Publisher)로 PUBLISH 메시지를 단 한 번만 전송한다.
QoS Level 1은 클라이언트(발행자, Publisher)가 PUBLISH 메시지를 브로커(Broker)로 전송하고, 브로커(Broker)로부터 구독자(Publisher)로 PUBLISH 메시지를 전송하며, 다시 클라이언트가 PUBLISH 타입의 메시지 전송에 대해 상기 브로커로부터 발행자로 PUBBACK을 전송하여 확인을 한다.
QoS 레벨 2는 클라이언트(발행자, Publisher)가 PUBLISH 메시지를 브로커(Broker)로 전송하고, 브로커(Broker)로부터 구독자(Publisher)로 PUBLISH 메시지를 전송하며, 다시 클라이언트(발행자)가 PUBLISH 타입의 메시지 전송에 대해 상기 브로커로부터 발행자(Publisher)로 PUBBACK을 전송하며, 클라이언트(발행자)로부터 브로커로 PUBREL을 전송하며, 브로커로부터 발행자로 PUBCOMP 메시지를 전송하는 Handshaking 과정, 즉, 다시 클라이언트가 Handshaking 과정을 통해 메시지를 정확히 한번 전송한다.
3. 우선순위 기반 MQTT 시스템
도 3은 우선순위 플래그를 추가한 메시지 고정 헤더의 구조를 나타낸 도면이다.
본 발명에서 제안하는 우선순위 기반 MQTT 시스템은 도 3과 같이 우선순위 정보를 포함하는 MQTT 메시지 고정 헤더를 사용한다.
MQTT 메시지 고정 헤더는 PUBLISH 타입을 구분하는 4비트의 메시지 타입, 중복 메시지가 수신 여부를 체크하는 1비트의 DUP flag, 2비트의 QoS Level, 브로커에서 메시지의 저장 여부(0: 저장 안됨, 1: 저장)를 체크하는 1 비트의 RETAIN, 6 비트의 Reserved, 2 비트의 우선순위 레벨(Priority Level) 플래그, 메시지 페이로드의 길이를 나타내는 8비트의 Remaining Length를 포함한다.
일 실시예로써, 수정된 MQTT 메시지 고정 헤더의 우선순위 레벨(Priority Level) 플래그는 2 bit로 구성되며 Priority Level 0 ~ 3까지 4단계(Priority Level 0,1,2,3)의 우선순위를 가진다. 숫자가 높을수록 높은 우선순위를 가지는 메시지이며 긴급하거나 중요한 메시지를 의미한다.
또한, 다른 실시예로써, 상기 MQTT 메시지 고정 헤더의 우선순위 레벨(Priority Level) 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계 중 어느 하나의 단계의 우선순위를 가지도록 설정되며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 한다.
도 4는 본 발명의 실시예 따른 우선순위 기반 MQTT 시스템 구성도이다.
본 발명의 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템은
MQTT(Message Queue Telemetry Transport) 프로토콜을 사용하는 IoT 시스템에서,
N개의 발행자(Publisher)(100);
상기 N개의 발행자로부터 PUBLISH 타입의 메시지(Topic, Data, Priority)를 브로커(Broker)로 수신받고, 상기 브로커가 각각의 메시지를 읽고 MQTT 헤더 파싱, 메시지 페이로드(message payload) 읽음, 메시지 타입(message type) 디코딩, PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링, 브로커(Broker)는 발행자(Publisher)로부터 동시에 여러 메시지가 수신될 경우, 상기 우선순위 레벨(priority level)에 따른 복수의 메시지 큐(Message Queue)를 이용하여 우선순위가 높은 메시지부터 차례대로 처리하며, 해당 메시지 큐로부터 dequeue하여 메시지를 퍼블리싱(Publish)하는 브로커(Broker)(200); 및
상기 브로커(200)로부터 PUBLISH 타입이 아닌 메시지 또는 PUBLISH 타입의 메시지를 수신받아 구독하는 1개의 구독자(Subscriber)(300)를 포함하며,
상기 브로커(200)는 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위 레벨(priority level)에 따라 독립적인 메시지 큐를 사용하여 메시지를 저장하고 처리하고,
상기 브로커(200)는, 발행자(Publisher)로부터 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 MQTT 헤더를 파싱하는 헤더 파서(Header Parser); 메시지 페이로드(message payload) 읽고 메시지 타입(message type)을 디코딩하는 메시지 타입 디코더(Message Type Decoder); 및 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 메시지 핸들러(Message Handler)를 포함하는 메인 쓰레드(main thread); 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 발행 쓰레드(Publish thread)를 포함하며,
[다른 실시예] 상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨(Priority Level) 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 하고,
상기 브로커(200)는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공한다.
상기 브로커(200)는, 발행자(Publisher)로부터 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 MQTT 헤더를 파싱하는 헤더 파서(Header Parser); 메시지 페이로드(message payload) 읽고 메시지 타입(message type)을 디코딩하는 메시지 타입 디코더(Message Type Decoder); 및 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 메시지 핸들러(Message Handler)를 포함하는 메인 쓰레드(main thread); 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 발행 쓰레드(Publish thread)를 포함하며,
[다른 실시예] 상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨(Priority Level) 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 하고,
상기 브로커(200)는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공한다.
본 발명의 일 실시예에서, 우선순위 기반 MQTT 시스템은 각 우선순위(Priority Level 0,1,2,3)에 따른 4개의 독립적인 메시지 큐를 가진다. 다른 접근 방법으로 우선순위 큐(Priority Queue)를 사용하거나 한 개의 큐(Queue)를 사용한 뒤 우선순위에 따라 정렬하는 방법이 있다. 그러나, 효율적인 정렬 알고리즘을 통해 우선순위에 따른 정렬을 하더라도, 내부적으로 정렬에 추가적인 오버헤드가 소비되기 때문에 일 실시예에서는, 독립적인 메시지 큐(4개의 Message Queue)를 구성하였다. 브로커는 클라이언트로부터 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 레벨(Priority Level 0,1,2,3) 정보에 따라 독립적인 4개의 메시지 큐의 각각의 메시지 큐에 삽입한 뒤 우선순위가 높은 큐에서부터 차례대로 메시지를 처리한다.
도 5는 본 발명에서 제안하는 우선순위 기반 MQTT 시스템에서 우선순위를 기반으로 메시지를 처리하는 과정을 나타낸다.
기존 MQTT 시스템은 메시지를 수신한 후 큐(Queue)를 사용하지 않고 싱글 스레드(single thread)를 기반으로 메시지를 순차적으로 처리한다. 우선순위에 따라 메시지 큐(Message Queue)를 구성하더라도 기존 시스템에서 사용하는 싱글 스레드 기반의 순차적인 메시지 처리 방식을 수정하지 않으면 우선순위에 따른 차등 서비스(Differentiated Service)를 제공할 수 없다. 제안하는 우선순위 기반 MQTT 시스템은 우선순위가 높은 메시지 큐(Message Queue)부터 차례대로 메시지 수신 검사를 하고 이에 따라 메시지 처리를 수행하는 스레드를 구현하였다.
동시에 여러 메시지가 브로커로 전송되는 경우 메시지를 처리하는 과정에서 지연이 발생하기 때문에 각 메시지 큐에 메시지가 쌓인다. 모두 같은 단계의 우선순위를 가질 경우 기존 시스템과 같은 방식으로 동작을 한다. 그러나, 우선순위가 높은 메시지가 있으면 먼저 처리되기 때문에 추가적인 오버헤드 없이 차등 서비스를 제공할 수 있다.
브로커(Broker)(200)는 발행자(Publisher)(100)로부터 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 MQTT 헤더를 파싱하는 헤더 파서(Header Parser); 메시지 페이로드(message payload) 읽고 메시지 타입(message type)을 디코딩하는 메시지 타입 디코더(Message Type Decoder); 및 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 메시지 핸들러(Message Handler)를 포함하는 메인 쓰레드(main thread)(210); 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 발행 쓰레드(Publish thread)(220)를 포함한다.
본 발명의 우선순위 기반의 MQTT 시스템에서 차등적인 IoT 서비스를 제공하는 방법은 (a) MQTT(Message Queue Telemetry Transport) 프로토콜을 사용하는 IoT 시스템에서, N개의 발행자(Publisher)로부터 PUBLISH 타입의 메시지(Topic, Data, Priority)를 브로커(Broker)로 수신받고, 상기 브로커가 각각의 메시지를 읽고 MQTT 헤더 파싱, 메시지 페이로드(message payload) 읽음, 메시지 타입(message type) 디코딩, PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링, 발행자(Publisher)로부터 동시에 여러 메시지가 수신될 경우, 우선순위(priority)에 따른 복수의 메시지 큐(Message Queue)를 이용하여 우선순위가 높은 메시지부터 차례대로 처리하며, 해당 메시지 큐로부터 dequeue하여 메시지를 퍼블리싱(Publish)하는 단계; 및
(b) 상기 브로커로부터 PUBLISH 타입이 아닌 메시지 또는 PUBLISH 타입의 메시지를 1개의 구독자(Subscriber)로 수신받아 구독하는 단계를 포함하며,
상기 브로커(200)는 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위 레벨(priority level)에 따라 독립적인 메시지 큐를 사용하여 메시지를 저장하고 처리하고,
상기 단계 (a)에서, 상기 브로커(200)는 메인 쓰레드(main thread)와 발행 쓰레드(Publish thread)를 포함하며,
상기 메인 쓰레드(main thread)가, 발행자(Publisher)로부터 상기 브로커로 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 헤더 파서(Header Parser)에 의해 MQTT 헤더를 파싱하는 단계; 메시지 페이로드(message payload) 읽고 메시지 타입 디코더(Message Type Decoder)에 의해 메시지 타입(message type)을 디코딩하는 단계; 및 메시지 핸들러(Message Handler)에 의해 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 단계; 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 단계를 포함하며,
상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 하고,
상기 브로커(200)는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공한다.
상기 단계 (a)에서, 상기 브로커(200)는 메인 쓰레드(main thread)와 발행 쓰레드(Publish thread)를 포함하며,
상기 메인 쓰레드(main thread)가, 발행자(Publisher)로부터 상기 브로커로 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 헤더 파서(Header Parser)에 의해 MQTT 헤더를 파싱하는 단계; 메시지 페이로드(message payload) 읽고 메시지 타입 디코더(Message Type Decoder)에 의해 메시지 타입(message type)을 디코딩하는 단계; 및 메시지 핸들러(Message Handler)에 의해 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 단계; 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 단계를 포함하며,
상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 하고,
상기 브로커(200)는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공한다.
상기 MQTT 메시지 고정 헤더는
PUBLISH 타입을 구분하는 4비트의 메시지 타입, 중복 메시지가 수신 여부를 체크하는 1비트의 DUP flag, 2비트의 QoS Level, 브로커에서 메시지의 저장 여부(0: 저장 안됨, 1: 저장)를 체크하는 1 비트의 RETAIN, 6 비트의 Reserved, 2 비트의 우선순위 레벨(Priority Level) 플래그, 메시지 페이로드의 길이를 나타내는 8비트의 Remaining Length를 포함한다.
일 실시예에서는, 상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨 플래그는 2 bit로 구성되며, Priority Level 0 ~ 3까지 4단계(Priority Level 0,1,2,3)의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 한다.
다른 실시예에서는, 상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 한다.
상기 단계 (a)에서, 상기 브로커는 메인 쓰레드(main thread)와 발행 쓰레드(Publish thread)를 포함하며,
상기 메인 쓰레드(main thread)가, 발행자(Publisher)로부터 상기 브로커로 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 헤더 파서(Header Parser)에 의해 MQTT 헤더를 파싱하는 단계; 메시지 페이로드(message payload) 읽고 메시지 타입 디코더(Message Type Decoder)에 의해 메시지 타입(message type)을 디코딩하는 단계; 및 메시지 핸들러(Message Handler)에 의해 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 단계; 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 단계를 포함한다.
상기 MQTT 메시지 고정 헤더는 2비트의 QoS Level을 포함하며,
상기 MQTT는 3단계의 QoS 레벨을 제공하고, 반드시 전송되어야 하는 중요 메시지에 대한 신뢰성 있는 전송을 보장하며,
QoS Level 0은 클라이언트(발행자)가 PUBLISH 메시지를 브로커로 전송하고, 브로커로부터 구독자로 PUBLISH 메시지를 단 한 번만 전송하고,
QoS Level 1은 클라이언트(발행자)가 PUBLISH 메시지를 브로커로 전송하고, 브로커로부터 구독자로 PUBLISH 메시지를 전송하며, 다시 클라이언트가 PUBLISH 타입의 메시지 전송에 대해 상기 브로커로부터 발행자로 PUBBACK을 전송하여 확인을 하며,
QoS Level 2는 클라이언트(발행자, Publisher)가 PUBLISH 메시지를 브로커(Broker)로 전송하고, 브로커(Broker)로부터 구독자(Publisher)로 PUBLISH 메시지를 전송하며, 다시 클라이언트(발행자)가 PUBLISH 타입의 메시지 전송에 대해 상기 브로커로부터 발행자(Publisher)로 PUBBACK을 전송하며, 클라이언트(발행자)로부터 브로커로 PUBREL을 전송하며, 브로커로부터 발행자로 PUBCOMP 메시지를 전송하는 Handshaking 과정을 통해 메시지를 정확히 한번 전송한다.
3. 실험 및 성능 평가
도 6은 N개의 발행자(Publisher)와 브로커(Broker)를 통해 1개의 구독자(Subscriber)에 연결하는 실험 환경을 나타낸 도면이다.
본 발명에서 제안된 우선순위 기반의 MQTT 시스템의 성능을 평가하기 위해 실험 환경을 구성하였다. 여러 클라이언트가 동시에 메시지를 보내는 환경을 구성하기 위해 N개의 발행자(Publisher)와 1개의 구독자(Subscriber)를 브로커(Broker)에 연결하였다. 우선순위 기반의 MQTT 시스템을 구현하기 위해 클라이언트와 브로커는 각각 가장 보편적으로 사용되고 있는 Paho 라이브러리와 Mosquitto 라이브러리를 수정하였다[4, 5]. 토픽(Topic)의 길이와 메시지의 페이로드(payload) 크기에 따라 메시지 처리 시간이 달라지기 때문에 토픽 길이는 255 byte, 페이로드(Payroad)의 크기는 2 Kbyte로 고정하였다.
성능을 평가하기 위해 QoS level과 우선순위(priority)를 다르게 하였을 때 발행자(Publisher)로부터 구독자(Subscriber)까지 메시지가 전송되는 종단 간 지연시간을 측정하였다.
도 7은 (a) QoS 1 단계, (b) QoS 2 단계 - 우선순위가 높은 메시지의 평균 지연시간을 나타낸 막대 그래프이다. 도 7은 동시에 100명의 클라이언트가 메시지를 보내는 상황에서 QoS 레벨에 따라 우선순위가 높은 메시지의 평균 종단 간 지연시간을 나타낸다.
성능 평가를 위해 한 명의 클라이언트가 보내는 메시지는 우선순위가 높은 메시지로 설정하였으며, 나머지 클라이언트가 보내는 메시지는 우선순위가 낮은 메시지로 설정하였다. 기존 우선순위를 갖지 않는 MQTT 시스템은 싱글 스레드를 기반으로 순차적인 메시지 처리를 하기 때문에 우선순위에 따른 차등 서비스를 제공할 수 없다.
따라서, 각 메시지 큐를 사용하여 우선순위가 높은 메시지를 먼저 처리하는 본 발명에서 제안된 우선순위 기반의 MQTT 시스템에 비교하여 종단 간 메시지 지연시간이 높게 나타나는 것을 확인하였다. QoS 레벨 2의 경우 Handshaking 과정을 거치기 때문에 QoS 레벨 1보다 더 긴 처리시간을 가지게 된다. 결과적으로 QoS 단계가 높을수록 제안하는 시스템의 성능향상이 높게 나타나는 것을 확인하였다.
도 8은 일 실시예에 따른 우선순위(Priority Level 0,1,2,3)에 따른 종단간 지연시간을 나타낸 막대 그래프이다. 도 8은 동시에 50명의 클라이언트가 메시지를 보내는 상황에서 QoS 레벨을 2로 설정하였을 때 제안하는 시스템의 우선순위에 따른 종단 간 지연시간을 나타낸다. 본 발명의 우선순위 기반 MQTT 시스템은 우선순위에 따른 차등 서비스를 제공한다. 따라서, 브로커(Broker)는 발행자(Publisher)로부터 동시에 여러 메시지가 수신될 경우, 우선순위에 따른 메시지 큐(Message Queue)를 이용하여 우선순위가 높은 메시지부터 차례대로 처리하기 때문에 우선순위가 높은 메시지일수록 종단 간 메시지 지연시간이 짧아지는 것을 확인하였다.
실험 결과, 본 발명에서 제안하는 우선순위 기반의 MQTT 시스템은 단일 쓰레드를 사용하는 기존 MQTT 시스템에 비교하여 우선순위에 따른 종단 간 지연시간이 감소하는 것을 확인하였다.
4. 결론
본 발명은 동시에 여러 메시지가 브로커(Broker)로 전송되는 환경에서 차등 서비스(Differentiated Service)를 제공하기 위해 메시지 고정 헤더와 브로커의 메시지 처리 과정 수정을 통한 우선순위 기반의 MQTT 시스템을 제안하였다. 본 발명에서 제안하는 우선순위 기반의 시스템은 MQTT 메시지 고정 헤더에 우선순위 플래그를 추가하여 클라이언트에서 우선순위 정보를 담아 브로커에게 전송한다. 일 시예에서는, 브로커는 우선순위 레벨(Priority 0,1,2,3)에 따라 서로 다른 4개의 메시지 큐를 사용하여 메시지를 저장하고 처리함으로써 우선순위에 따른 차등 서비스를 제공하였다.
실험 결과, 본 발명에서 제안하는 우선순위 기반의 MQTT 시스템은 브로커의 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위에 따른 독립적인 4개의 메시지 큐(Message Queue)를 사용하여 메시지를 처리함으로써 단일 쓰레드를 사용하는 기존 MQTT 시스템에 비해 우선순위에 따른 종단 간 지연시간이 감소하는 것을 확인하였다.
본 발명에 따른 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 기록 매체는 스토리지, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 모든 형태의 하드웨어 장치가 포함될 수 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로써 작동하도록 구성될 수 있다.
이상에서 설명한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진자가 하기의 특허청구범위에 기재된 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 또는 변형하여 실시할 수 있음을 이해할 수 있을 것이다.
100: 발행자(Publisher) 200: 브로커(Broker)
210: 메인 쓰레드 220: 발행 쓰레드(Publish thread)
300: 구독자(Subscriber)
210: 메인 쓰레드 220: 발행 쓰레드(Publish thread)
300: 구독자(Subscriber)
Claims (12)
- MQTT(Message Queue Telemetry Transport) 프로토콜을 사용하는 IoT 시스템에서, N개의 발행자(Publisher);
상기 N개의 발행자로부터 PUBLISH 타입의 메시지를 수신받고, 각각의 메시지를 읽고 MQTT 헤더 파싱, 메시지 페이로드(message payload) 읽음, 메시지 타입(message type) 디코딩, PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링, 발행자들로부터 동시에 여러 메시지가 수신될 경우, 상기 우선순위 레벨에 따른 복수의 메시지 큐(Message Queue)를 이용하여 우선순위가 높은 메시지부터 차례대로 처리하며, 해당 메시지 큐로부터 dequeue하여 메시지를 퍼블리싱(Publish)하는 브로커(Broker); 및
상기 브로커로부터 PUBLISH 타입이 아닌 메시지 또는 PUBLISH 타입의 메시지를 수신받아 구독하는 1개의 구독자(Subscriber)를 포함하며,
상기 브로커는 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위 레벨(priority level)에 따라 독립적인 메시지 큐를 사용하여 메시지를 저장하고 처리하고,
상기 브로커는, 발행자(Publisher)로부터 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 MQTT 헤더를 파싱하는 헤더 파서(Header Parser); 메시지 페이로드(message payload) 읽고 메시지 타입(message type)을 디코딩하는 메시지 타입 디코더(Message Type Decoder); 및 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 메시지 핸들러(Message Handler)를 포함하는 메인 쓰레드(main thread); 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 발행 쓰레드(Publish thread)를 포함하며,
상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨(Priority Level) 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 하고,
상기 브로커는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공하는, 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템. - 제1항에 있어서,
상기 MQTT 메시지 고정 헤더는
상기 PUBLISH 타입을 구분하는 4비트의 메시지 타입, 중복 메시지가 수신 여부를 체크하는 1비트의 DUP flag, 2비트의 QoS Level, 상기 브로커에서 메시지의 저장 여부(0: 저장 안됨, 1: 저장)를 체크하는 1 비트의 RETAIN, 6 비트의 Reserved, 2 비트의 우선순위 레벨(Priority Level) 플래그, 메시지 페이로드의 길이를 나타내는 8비트의 Remaining Length를 포함하는, 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템. - 삭제
- 삭제
- 삭제
- 제2항에 있어서,
상기 MQTT 메시지 고정 헤더는 2비트의 QoS Level을 포함하며,
상기 MQTT는 3단계의 QoS 레벨을 제공하고, 반드시 전송되어야 하는 중요 메시지에 대한 신뢰성 있는 전송을 보장하며,
QoS Level 0은 클라이언트(발행자)가 PUBLISH 메시지를 브로커로 전송하고, 브로커로부터 구독자로 PUBLISH 메시지를 단 한 번만 전송하고,
QoS Level 1은 클라이언트(발행자)가 PUBLISH 메시지를 브로커로 전송하고, 브로커로부터 구독자로 PUBLISH 메시지를 전송하며, 다시 클라이언트가 PUBLISH 타입의 메시지 전송에 대해 상기 브로커로부터 발행자로 PUBBACK을 전송하여 확인을 하며,
QoS Level 2는 클라이언트(발행자, Publisher)가 PUBLISH 메시지를 브로커(Broker)로 전송하고, 상기 브로커(Broker)로부터 구독자(Publisher)로 PUBLISH 메시지를 전송하며, 다시 클라이언트(발행자)가 PUBLISH 타입의 메시지 전송에 대해 상기 브로커로부터 상기 발행자로 PUBBACK을 전송하며, 클라이언트(발행자)로부터 브로커로 PUBREL을 전송하며, 상기 브로커로부터 상기 발행자로 PUBCOMP 메시지를 전송하는 Handshaking 과정을 통해 메시지를 정확히 한번 전송하는, 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템. - (a) MQTT(Message Queue Telemetry Transport) 프로토콜을 사용하는 IoT 시스템에서, N개의 발행자(Publisher)로부터 PUBLISH 타입의 메시지(Topic, Data, Priority)를 브로커(Broker)로 수신받고, 상기 브로커가 각각의 메시지를 읽고 MQTT 헤더 파싱, 메시지 페이로드(message payload) 읽음, 메시지 타입(message type) 디코딩, PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링, 발행자들로부터 동시에 여러 메시지가 수신될 경우, 우선순위(priority)에 따른 복수의 메시지 큐(Message Queue)를 이용하여 우선순위가 높은 메시지부터 차례대로 처리하며, 해당 메시지 큐로부터 dequeue하여 메시지를 퍼블리싱(Publish)하는 단계; 및
(b) 상기 브로커로부터 PUBLISH 타입이 아닌 메시지 또는 PUBLISH 타입의 메시지를 1개의 구독자(Subscriber)로 수신받아 구독하는 단계를 포함하며,
상기 브로커는 메인 쓰레드(Main Thread)와 발행 쓰레드(Publish Thread)를 사용하여 우선순위 레벨(priority level)에 따라 독립적인 메시지 큐를 사용하여 메시지를 저장하고 처리하고,
상기 단계 (a)에서, 상기 브로커는 메인 쓰레드(main thread)와 발행 쓰레드(Publish thread)를 포함하며,
상기 메인 쓰레드(main thread)가, 발행자(Publisher)로부터 상기 브로커로 수신된 각각의 메시지(Topic, Data, Priority)를 읽고 헤더 파서(Header Parser)에 의해 MQTT 헤더를 파싱하는 단계; 메시지 페이로드(message payload) 읽고 메시지 타입 디코더(Message Type Decoder)에 의해 메시지 타입(message type)을 디코딩하는 단계; 및 메시지 핸들러(Message Handler)에 의해 PUBLISH 타입이 아니면 메시지를 직접 송신하도록 핸들링하며, 상기 PUBLISH 타입이면 우선순위 레벨(priority level)을 체크하여 해당 우선순위 레벨을 갖는 메시지 큐로 enqueue하여 메시지 핸들링을 하는 단계; 및
high priority queue부터 low priority queue까지 체크하며, 메시지 큐가 비어있지 않으면(not empty), 해당 우선순위 레벨을 갖는 메시지 큐로 dequeue하여 토픽(Topic)을 갖는 메시지를 퍼블리싱(Publish)하는 단계를 포함하며,
상기 MQTT 메시지 고정 헤더의 상기 우선순위 레벨 플래그는 2 bit로 구성되며, Priority Level 0~4, 0~5, 0~6, 0~7 까지의 5,6,7,8단계의 우선순위를 가지며, 숫자가 높을수록 높은 우선순위를 가지는 긴급하거나 중요한 메시지 인 것을 특징으로 하고,
상기 브로커는 PUBLISH 타입의 메시지를 수신했을 때, MQTT 메시지 고정 헤더의 우선순위 정보에 따라 각각의 메시지 큐에 삽입한 뒤, 우선순위가 높은 메시지 큐부터 차례대로 메시지를 처리하여 차등적인 서비스를 제공하는, 우선순위 기반의 MQTT 시스템에서 차등적인 IoT 서비스를 제공하는 방법. - 제7항에 있어서,
상기 MQTT 메시지 고정 헤더는
상기 PUBLISH 타입을 구분하는 4비트의 메시지 타입, 중복 메시지가 수신 여부를 체크하는 1비트의 DUP flag, 2비트의 QoS Level, 상기 브로커에서 메시지의 저장 여부(0: 저장 안됨, 1: 저장)를 체크하는 1 비트의 RETAIN, 6 비트의 Reserved, 2 비트의 우선순위 레벨(Priority Level) 플래그, 메시지 페이로드의 길이를 나타내는 8비트의 Remaining Length를 포함하는 우선순위 기반의 MQTT 시스템에서 차등적인 IoT 서비스를 제공하는 방법. - 삭제
- 삭제
- 삭제
- 제8항에 있어서,
상기 MQTT 메시지 고정 헤더는 2비트의 QoS Level을 포함하며,
상기 MQTT는 3단계의 QoS 레벨을 제공하고, 반드시 전송되어야 하는 중요 메시지에 대한 신뢰성 있는 전송을 보장하며,
QoS Level 0은 클라이언트(발행자)가 PUBLISH 메시지를 브로커로 전송하고, 브로커로부터 구독자로 PUBLISH 메시지를 단 한 번만 전송하고,
QoS Level 1은 클라이언트(발행자)가 PUBLISH 메시지를 브로커로 전송하고, 브로커로부터 구독자로 PUBLISH 메시지를 전송하며, 다시 클라이언트가 PUBLISH 타입의 메시지 전송에 대해 상기 브로커로부터 발행자로 PUBBACK을 전송하여 확인을 하며,
QoS Level 2는 클라이언트(발행자, Publisher)가 PUBLISH 메시지를 브로커(Broker)로 전송하고, 브로커(Broker)로부터 구독자(Publisher)로 PUBLISH 메시지를 전송하며, 다시 클라이언트(발행자)가 PUBLISH 타입의 메시지 전송에 대해 상기 브로커로부터 발행자(Publisher)로 PUBBACK을 전송하며, 클라이언트(발행자)로부터 브로커로 PUBREL을 전송하며, 브로커로부터 발행자로 PUBCOMP 메시지를 전송하는 Handshaking 과정을 통해 메시지를 정확히 한번 전송하는, 우선순위 기반의 MQTT 시스템에서 차등적인 IoT 서비스를 제공하는 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170155191A KR101996598B1 (ko) | 2017-11-20 | 2017-11-20 | 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170155191A KR101996598B1 (ko) | 2017-11-20 | 2017-11-20 | 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190057818A KR20190057818A (ko) | 2019-05-29 |
KR101996598B1 true KR101996598B1 (ko) | 2019-07-04 |
Family
ID=66672640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170155191A KR101996598B1 (ko) | 2017-11-20 | 2017-11-20 | 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101996598B1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112447033B (zh) * | 2019-09-05 | 2024-03-19 | 比亚迪股份有限公司 | 安防数据处理方法、系统、计算机设备及存储介质 |
KR102200590B1 (ko) * | 2019-10-15 | 2021-01-08 | 에이치투오시스템테크놀로지(주) | 엠큐티티 프로토콜 기반 긴급 메시지 처리 장치 및 방법 |
CN110891014A (zh) * | 2019-11-28 | 2020-03-17 | 北京宁云科技有限公司 | 基于硬件的mqtt发布订阅方法及系统 |
US11483694B2 (en) * | 2020-09-01 | 2022-10-25 | Oracle International Corporation | Methods, systems, and computer readable media for service communications proxy (SCP)-specific prioritized network function (NF) discovery and routing |
US12022316B2 (en) | 2021-06-23 | 2024-06-25 | Oracle International Corporation | Methods, systems, and computer readable media for optimizing network traffic distribution using timeslot-based tracked producer network function (NF) performance during producer NF selection |
US11950178B2 (en) | 2021-08-03 | 2024-04-02 | Oracle International Corporation | Methods, systems, and computer readable media for optimized routing of service based interface (SBI) request messages to remote network function (NF) repository functions using indirect communications via service communication proxy (SCP) |
US11930083B2 (en) | 2021-08-09 | 2024-03-12 | Oracle International Corporation | Methods, systems, and computer readable media for processing network function (NF) discovery requests at NF repository function (NRF) using prioritized lists of preferred locations |
KR102487439B1 (ko) * | 2021-09-13 | 2023-01-11 | 건국대학교 산학협력단 | Mqtt 프로토콜에서 발행자와 구독자 사이의 종단 메시지 수신 확인 방법 및 이를 수행하는 시스템 |
CN114866528A (zh) * | 2022-04-01 | 2022-08-05 | 广东美味鲜调味食品有限公司 | 一种基于MQTT和Websocket的数据通讯方法 |
CN115348231B (zh) * | 2022-08-17 | 2023-12-12 | 北京蔚领时代科技有限公司 | 一种消息处理方法、装置、服务端及存储介质 |
CN115550464B (zh) * | 2022-12-01 | 2023-03-24 | 北京安帝科技有限公司 | 基于工业互联网云平台的系统监控方法、电子设备与介质 |
KR102692706B1 (ko) * | 2023-12-21 | 2024-08-07 | (주)큐벡스 | 설비 데이터의 mqtt 메시지 변환 제어 시스템 및 그 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011514087A (ja) | 2008-03-05 | 2011-04-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | publish/subscribeメッセージ・ブローカ |
US20170099332A1 (en) | 2014-03-21 | 2017-04-06 | Ptc Inc. | Systems and methods using binary dynamic rest messages |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101792404B1 (ko) * | 2016-03-29 | 2017-11-01 | 전자부품연구원 | M2M/IoT 시스템에서 MQTT 프로토콜을 활용한 메시지 전달 방법 |
KR101809365B1 (ko) * | 2016-05-04 | 2017-12-14 | 전자부품연구원 | M2M/IoT 플랫폼에서 MQTT 프로토콜을 활용한 메시지 단편화 방법 |
-
2017
- 2017-11-20 KR KR1020170155191A patent/KR101996598B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011514087A (ja) | 2008-03-05 | 2011-04-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | publish/subscribeメッセージ・ブローカ |
US20170099332A1 (en) | 2014-03-21 | 2017-04-06 | Ptc Inc. | Systems and methods using binary dynamic rest messages |
Non-Patent Citations (1)
Title |
---|
MQTT Broker에서 우선순위에 따른 메시지 처리를 위한 방법에 관한 연구(김성진, 오창헌, 2017년7월)* |
Also Published As
Publication number | Publication date |
---|---|
KR20190057818A (ko) | 2019-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101996598B1 (ko) | 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법 | |
KR101203275B1 (ko) | 서브큐를 이용한 로컬 메시지 프로세싱 개선 | |
US7702917B2 (en) | Data transfer using hyper-text transfer protocol (HTTP) query strings | |
US8375094B2 (en) | Creating a message readable by a plurality of heterogeneous recipients | |
EP1872534B1 (en) | System and method of message traffic optimization | |
US8792483B2 (en) | Method and device for rejecting redundantly retransmitted SIP messages | |
US7398325B2 (en) | Header compression in messages | |
WO2016107339A1 (zh) | 一种批量发送消息的方法和装置 | |
US20080037555A1 (en) | Completion coalescing by tcp receiver | |
CN110943911A (zh) | 基于protobuf的物联网高效数据传输方法 | |
KR101809365B1 (ko) | M2M/IoT 플랫폼에서 MQTT 프로토콜을 활용한 메시지 단편화 방법 | |
CN115168066A (zh) | 一种消息队列的处理方法、装置、设备及存储介质 | |
CN112689020A (zh) | 一种消息传输方法、消息中间件、电子设备及存储介质 | |
CN106817689B (zh) | 一种高可靠性的数据订阅及发布方法及系统 | |
Phung et al. | An experimental study of network coded REST HTTP in dynamic IoT systems | |
CN109672629B (zh) | 一种报文发送方法及通信设备 | |
US7929536B2 (en) | Buffer management for communication protocols | |
US20050078605A1 (en) | Managing message arrival to ensure proper matching of unordered messages | |
KR102200590B1 (ko) | 엠큐티티 프로토콜 기반 긴급 메시지 처리 장치 및 방법 | |
KR100311619B1 (ko) | 분산처리 시스템에서 프로세서간 메시지 송수신 방법 | |
Phung et al. | Enhancing block-wise transfer with network coding in coap | |
CN110874267A (zh) | 一种轮询调度方法、装置、存储介质及设备 | |
US8176129B2 (en) | System and method of sending compressed html messages over telephony protocol | |
CN110602211A (zh) | 一种带异步通知的乱序rdma方法与装置 | |
Sharp | The poor man’s guide to computer networks and their applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |