DOI QR코드

DOI QR Code

M2M/IoT 서비스를 위한 지그비 기반의 Publish/Subscr ibe 시스템 구현

Implementation of Zigbee-based Publish/Subscribe System for M2M/IoT Services

  • Lee, Dokyeong (Dept. of Electronics and Computer Engineering, Chonnam National University) ;
  • Choi, Deokjai (Dept. of Electronics and Computer Engineering, Chonnam National University)
  • 투고 : 2014.08.29
  • 심사 : 2014.12.01
  • 발행 : 2014.12.30

초록

Recently, smart devices has been spreaded and the definition of RFID/USN(Radio Frequency Identification/Ubiquitous Sensor Network) technology has also extended. So, originally, human is an agent of communications but now, 'the things' are also an agent of communication. That is, Internet of Things(IoT). IoT is very big IT infra technology that is based on wire-wireless network technologies such as Bluetooth and Wi-Fi. However, in reality, IoT service that can provide various meaning and integrate smoothly is not appear yet. To solve these problems of IoT, we implemented Publish/Subscribe system, which operate in Zigbee based wireless sensor network by using MQTT-SN protocol. Moreover, this system can operate with combining MQTT system that is already existed in external Internet network so, extensibility and flexibility aspect is excellent. We show that possibility of IoT services that is combined between different heterogeneous network through the MQTT-SN.

키워드

1. 서 론

최근에 스마트 기기의 보급 확산 및 RFID/USN(Radio Frequency Identification/Ubiquitous Sensor Network) 기술에 대한 개념의 확장과 더불어 기존 인간 중심의 통신 패러다임에서 사물이 통신의 주체로 참여하는 사물인터넷(M2M/IoT) 시대가 본격화되고 있다. 사물인터넷은 센서, 액추에이터 및 상황인지 기능을 갖춘 사물들이 다양한 유무선 네트워크기술(3G/LTE/WPAN 등)을 통해 사람과 사물, 사물과 사물 간에 연결성을 제공하며 상호 소통하고 상황인식 기반의 지식이 결합되어 지능적인 서비스를 제공할 수 있는 대규모 IT 인프라 기술이다. 그러나 현재까지 이러한 사물인터넷의 글로벌한 개념을 지원하고 원활히 통합해 줄 수 있는 사물인터넷 서비스는 등장하지 않은 상태이다.

한편, 이러한 사물인터넷 서비스를 위한 프로토콜은 REST(Representational State Transfer), XMPP(Extensible Message and Presence Protocol), MQTT(Message Queuing Telemetry Transport)[1], CoAP(Constrained Environments Application Protocol) 등이 대표적이며, 이 중에서 CoAP(Constrained Environments Application Protocol)은 6LoWPAN 기반의 응용계층 표준 프로토콜로서 CoRE(Constrained RESTful Environments) 워킹그룹에서 연구가 진행 중이며 무선 센서 네트워크에서 사물인터넷 서비스를 위한 프로토콜로 부각되고 있다.

일반적으로 무선 센서 네트워크는 센서 및 제어명령 수행을 위한 액추에이터가 장착된 다수의 노드로 구성되고 시스템 자원 및 처리 능력이 제한될 뿐만 아니라 배터리가 장착되어 동작한다. IP 기반의 무선센서 네트워크는 이러한 제한적인 성능에서 배터리로 동작하는 센서노드로부터 IP 프로토콜 스택과 어드레싱은 많은 자원과 에너지 소모를 요구하게 된다[2]. 또한 동적인 토폴로지로 인해 센서노드의 주소가 빈번하게 변경되는 무선 센서 네트워크에서 센서노드와 응용 프로그램 사이의 통신방식으로서 네트워크 주소를 이용한 종래의 접근 방식은 문제가 될 수 있다[3]. 따라서 무선 센서 네트워크에서 REST, XMPP, CoAP과 같이 IP를 기반으로 하는 응용계층 프로토콜의 경우에는 네트워크 계층에 독립적이지 못하고 종속적인 관계를 지니므로 다양한 유무선 네트워크 기술이 통합되는 사물인터넷 환경에서 확장성과 유연성이 떨어진다는 단점을 지닌다.

이러한 이유로 IBM은 무선 센서 네트워크 환경을 고려하고 네트워크 계층에 독립적이면서 MQTT와 같이 Publish/Subscribe 서비스를 위한 응용계층 프로토콜로서 MQTT-SN(Message Queuing Telemetry Transport-Sensor Network)을 연구 및 개발하고 있다.

본 논문에서는 지그비(Zigbee)와 같이 Non-IP 기반의 무선 센서 네트워크에서 MQTT-SN 기반의 Publish/Subscribe 서비스를 위한 시스템을 설계 및 구현한다. 이 시스템은 MQTT-SN을 탑재한 센서노드, 외부 네트워크의 MQTT 시스템과 연동을 위한 게이트웨이, 외부 IP 기반 네트워크의 PC 또는 스마트 폰과 같은 클라이언트로 구성된다. 따라서 기존의 IP 기반의 네트워크에 존재하는 MQTT 기반의 시스템과 연동되어 통합된 Publish/Subscribe 서비스가 가능함을 보임으로써 다양한 네트워크 인프라에서 사물인터넷 서비스 문제를 해결 할 수 있다.

본 논문의 구성은 다음과 같다. 2장은 MQTT, MQTT-SN 프로토콜과 무선 센서 네트워크를 기반으로 하는 Publish/Subscribe 프로토콜에 대한 연구사례에 대해 살펴본다. 3장에서는 Non-IP 기반무선센서 네트워크에서의 MQTT-SN 시스템과 외부 IP기반 네트워크의 MQTT 시스템 연동을 위한 게이트웨이에 대해 설명한다. 4장에서는 MQTT-SN 시스템과 MQTT 간의 Publish/Subscribe 서비스 절차를 설명하고, 5장에서는 시스템의 구현 및 동작 예시를 보인다. 마지막으로 6장에서는 본 논문의 결론과 향후 과제를 다룬다.

 

2. 관련 연구

2.1 MQTT 프로토콜

MQTT는 IBM에서 개발된 프로토콜이며, 제한된 컴퓨팅 성능과 빈약한 네트워크 연결 환경에서의 동작을 고려하여 설계된 Publish/Subscribe 시스템 구조의 대용량 메시지 전달 프로로서 OASIS(Organization for the Advancement of Structured Information Standards)에 의해서 사물 인터넷을 위한 메시지 프로토콜로 선정되었을 뿐만 아니라 배터리에 에너지 소모 측면에서 효율적인 프로토콜임이 검증되고 있다[1,4].

일반적으로 Publish/Subscribe 통신 모델의 원리는 관심 있는 정보를 등록하고 이를 전달 받는 절차로 구성되며, 원하는 정보를 정의하는 방식에 따라 토픽 기반, 타입 기반, 콘텐츠 기반으로 세 가지 유형이 있다.

Fig. 1은 이러한 세 가지 유형 중에서 토픽 기반의 publish/subscribe 통신 모델을 나타내며, MQTT는 Publisher와 Subscriber가 브로커를 통해서 원하는 토픽과 관련된 데이터만을 송수신하는 토픽 기반의 Publish/Subscribe 프로토콜이다. 이 프로토콜은 계층적 구조의 토픽을 지원하기 위해 문자열을 사용하여 여러 토픽에 대한 Subscription을 용이하게 한다.

Fig. 1.Topic-based Publish/Subscribe Communication Model.

MQTT는 기본적으로 end-to-end QoS(Quality of Service)를 지원하며 메시지를 전달하는 방법에 따라서 Table 1과 같이 세 가지 레벨의 QoS로 구별된다.

Table 1.Delivery and Guarantee by MQTT QoS Level

또한 MQTT-SN 프로토콜과는 다르게 클라이언트가 Publication 및 Subscription을 브로커와 교환하기 전에 미리 연결설정을 요구하는 TCP 기반의 연결지향 프로토콜이다.

본 논문에서 제안된 시스템은 무선 센서 네트워크의 MQTT-SN 시스템과 연결되는 외부 망의 Publish/Subscribe 시스템으로 MQTT 프로토콜을 이용하였다.

2.1 MQTT-SN 프로토콜

MQTT-SN은 IBM에서 개발한 Publish/Subscribe 프로토콜로서 MQTT와 동일하게 토픽을 기반으로 Publish/Subscribe 기능을 수행한다[5]. 또한 이 프로토콜은 REST, XMPP, CoAP와 같이 사물인터넷 프로토콜에서 일반적으로 고려되는 IP 기반 네 트워크가 아닌 무선 센서 네트워크에서 Publish/Subscribe 통신 기능을 제공하며, 주요 특징은 다음과 같다.

MQTT-SN은 MQTT에 최대한 가깝게 설계된 프로토콜로서, 이러한 특징은 무선 센서 네트워크의 센서노드 및 액추에이터 장치들에게 MQTT 브로커로의 원활한 연결을 허용하고 외부 IP 기반 네트워크에 구성된 MQTT 시스템과의 통합을 가능하게 한다. 또한 일반적으로 무선 센서 네트워크는 작고 제한된 성능 및 자원을 갖고 배터리로 동작하는 노드들로 구성되어 있기 때문에 MQTT-SN에서는 클라이언트를 가능한 한 간단하게 유지하고 복잡한 기능은 게이트웨이와 브로커에서 수행하도록 하였다. 일반적인 무선 라디오 링크는 페이딩과 간선 장애에 대한 민감성 때문에 유선 링크보다 높은 연결 실패율 및 낮은 전송용량을 갖는 특성을 고려하여 헤더 길이를 최소화하였으며 네트워크 계층에 독립적인 특성을 갖도록 유니캐스트와 브로드캐스트 서비스를 제공하는 모든 네트워크에서 실행할 수 있도록 설계되었다.

MQTT-SN은 MQTT-SN 클라이언트와 게이트웨이 두 가지 유형의 장치로 구성된다. 센서노드 및 액추에이터는 MQTT-SN 클라이언트로서 무선 센서 네트워크에 존재하며, 이 장치들은 외부 IP 네트워크에 위치한 MQTT 브로커의 Publish/Subscribe 서비스로 접근할 수 있다. 이러한 장치들은 MQTT-SN 게이트웨이와 연결되고, 게이트웨이는 다시 브로커와 연결한다. 이 게이트웨이는 MQTT와 MQTT-SN 프로토콜 간의 메시지를 변환하는 것을 주요기능으로 한다[3].

Fig. 2는 MQTT-SN의 구조를 나타내며 기본적으로 무선 센서 네트워크와 같이 제한된 환경을 고려한 프로토콜이다. 이 프로토콜은 MQTT와는 대조적으로 IP 기반 네트워크에서 TCP를 이용한 연결지향 서비스를 사용하지 않고 QoS를 제공하는 이점을 제공하며, 하나의 무선 센서 네트워크에서 여러 개의 게이트웨이를 지원한다[5].

Fig. 2.MQTT-SN Architecture.

이러한 특성은 게이트웨이 고장으로 인한 외부 네트워크와의 연결 실패 문제로부터 좀 더 안정적인 구조를 갖게 되며 게이트웨이로 모든 센서노드의 데 이터가 집중되어 게이트웨이와 가까운 노드들의 에너지 소모량이 많아지게 되는 6LoWPAN[6] 기반의 CoAP 구조에 비해 게이트웨이 주변 노드들의 에너지 소모가 줄어들기 때문에 전체 네트워크 수명을 늘릴 수 있는 장점을 갖는다. 일반적인 무선 센서 네트워크에서 게이트웨이는 싱크 노드 또는 베이스 스테이션이라고도 불리며 게이트웨이의 위치나 이동성 여부에 따라서 데이터 정확도, 고립 노드 발생, 노드 보존 에너지, 네트워크 보존 에너지와 네트워크 수명에 영향을 미친다[7]. 따라서 MQTT-SN의 다중 게이트웨이 구조는 에너지 효율적인 측면과 응용을 위한 측면에서 큰 장점으로 부각될 수 있다.

2.3 무선 센서 네트워크 기반의 Publish/Subscribe 프로토콜

Messo & Preso는 무선 센서 네트워크를 기반으로 하는 Publish/Subscribe 프로토콜이다. Messo는 무선 센서 네트워크의 센서로부터 데이터를 수집하는 기능을 하며, 반대로 Preso는 무선 센서 네트워크 내부의 액추에이터로 데이터를 송신하는 기능을 한다[8]. 따라서 Messo & Preso는 두 개의 프로토콜이 상호 보완적인 기능을 하는 구조를 갖고 네트워크 내부의 장치들과 브로커 사이에 개별적인 연결을 하지 않는다는 점에서 MQTT-SN과 차이점이 있지만 외부 네트워크의 브로커에 의존한다는 점에서 동일한 특성을 지닌다. Messo를 통해 데이터가 수집되면 노드는 릴레이 메시지를 결합할 수 있고 네트워크 내부에서 데이터 처리가 가능한 장점을 갖지만 Publish/Subscribe 과정에서 미리 정의된 토픽에 의존하므로 동적으로 새로운 토픽을 추가할 수 없으며 네트워크에서 하나의 게이트웨이만을 지원하는 단점이 있다.

TinySIP는 well-known 프로토콜의 확장으로서 무선 센서 네트워크에 사용할 수 있는 Session Initiator Protocol (SIP)[9]의 기능을 제공하고 Session Semantics, Publish/Subscribe, Instant Messaging을 지원한다[10]. 또한 여러 개의 게이트웨이를 지원하는 장점이 있지만 노드의 주소가 게이트웨이와 연관되어 사용되므로 즉시 게이트웨이를 변경하는 것이 어려운 구조를 갖는다.

DV/DRP는 Distance Vector/Dynamic Receiver Partitioning을 의미하며, 무선 센서 네트워크를 위한 또 다른 Publish/Subscribe 구조를 갖는다[11]. 또한 콘텐츠를 기반으로 하기 때문에 Subscription은 메시지의 콘텐츠를 기반으로 만들어지고 Publication은 해당 콘텐츠에 노드가 관심이 있을 경우에만 전달된다. 하지만 이 프로토콜은 임의의 데이터 패킷에 대해 Subscription 매칭에 대한 복잡성을 갖기 때문에 제한된 장치에서 구현이 어렵다.

Mires는 무선 센서 네트워크를 위한 Publish/Subscribe 구조로서 사용자가 지정한 센서의 센서값만을 Subscription으로 하는 경우에만 Publish한다[12]. 각 메시지들은 클러스터 헤드에서 통합될 수 있으며 Subscription은 일반적으로 직접 PC에 연결되어 모든 Publication을 수신하는 싱크노드로부터 Publish된다.

Asene은 일반적인 전송 메커니즘을 사용하지 않으며, 무선 센서 네트워크 내부에서 데이터베이스와 비슷하게 구현되었다[13]. 각 노드는 특정 이벤트를 기다리며, 이벤트가 발생했을 경우에는 조건에 해당하면 주어진 동작을 실행하여 노드 간의 통신에서 Publish/Subscribe를 사용한다.

 

3. 시스템 설계 및 구현

3.1 시스템 설계

일반적으로 무선 센서 네트워크 환경에서 MQTT-SN의 구조는 MQTT-SN 클라이언트와 게이트웨이 두 가지 요소로 구성된다. 이 때, MQTT-SN 클라이언트는 무선 센서 네트워크 측에 존재하고 외부의 IP 기반 네트워크에 위치한 MQTT 브로커 서버의 Publish/Subscribe 서비스에 접근할 수 있도록 MQTT-SN 프로토콜을 이용하여 게이트웨이와 연결된다. 또한 MQTT-SN 클라이언트와 연결된 게이트웨이는 외부의 IP 기반 네트워크와 연결해주는 기능을 수행하며, 브로커 서버와 통합된 형태 또는 독립적인 형태로 구성될 수 있다[3,5].

Fig. 3은 구현하는 시스템의 전체적인 구조를 나타낸다. 본 시스템은 Non-IP 기반의 무선 센서 네트워크로서 지그비 메시 네트워크를 이용하였으며, 브로커 서버와 통합된 게이트웨이와 독립적인 게이트 웨이로 나누어 2가지 형태의 지그비 메시 네트워크를 구축하였다. 또한 IP 기반의 네트워크에서 브로커 서버와 연결되어 센서노드로 Publish/Subscribe 서비스를 수행하는 MQTT 클라이언트로 구성하였다.

Fig. 3.MQTT-SN System Architecture.

센서노드는 지그비 메시 네트워크의 앤드 디바이스 및 MQTT-SN 클라이언트로서 게이트웨이와 연결되어 Publish/Subscribe 기능을 수행한다. 또한 센서노드는 MQTT-SN 클라이언트 기능에 따라 Publish enabled, Subscribe enabled, Pub/Sub enabled 세 가지 유형의 노드로 구성하였다.

MQTT-SN 구조는 하나의 무선 센서 네트워크에서 여러 개의 MQTT-SN 게이트웨이를 지원한다. 따라서 게이트웨이는 지그비 메시 네트워크의 라우터로 구성되며, 외부 IP 기반의 인터넷 망과 지그비 기반의 무선 센서 네트워크를 연결하는 역할을 하고 MQTT와 MQTT-SN 사이에서 각 프로토콜의 포맷에 맞도록 메시지를 변환하고 전달하는 역할을 수행한다.

본 시스템에서는 MQTT 브로커 서버의 구성을 위해 오픈소스 기반의 MQTT 브로커 서버인 Mosquitto 1.3.4 버전을 이용하였다[14]. MQTT 브로커 서버와 연결하는 외부 인터넷망에서의 PC 또는 스마트폰은 MQTT 클라이언트로서 센서노드의 측정값을 Subscribe하거나, 반대로 센서노드로 제어 메시지를 Publish하여 센서노드 기능을 제어하는 역할을 한다.

3.2 센서노드 구현

앞에서 기술한 바와 같이 무선 센서 네트워크는 일반적으로 센서노드와 액추에이터가 장착된 노드로 구성되기 때문에 각 노드는 기본적으로 센서 데이터를 수집하고 전송하는 Publish 기능뿐만 아니라 제어 메시지를 수신하는 Subscribe 기능이 요구된다. Fig. 4는 본 테스트베드에서 사용된 센서노드이며, 하드웨어 구성요소로는 Xbee 시리즈 2 모듈과 Arduino Uno를 이용하였다.

Fig. 4.H/W Components of the Sensor node.

센서노드에 연결된 Xbee 시리즈 2는 Digi International사의 ZB 2.4GHz RF 트랜시버 모듈로서, IEEE 802.15.4 표준을 사용하고 Point-to-Point 통신을 하는 Xbee 시리즈 1 모듈과는 다르게 지그비 메시 네트워크 구성을 위한 지그비 스택의 펌웨어를 이용하며 통신거리 및 송수신 전력 소모 측면에서 훨씬 효율적이며 비교한 내용은 Table 2와 같다[15].

Table 2.Series 1 versus Series 2 for regular Xbees

Xbee 시리즈 2는 기본적으로 Xbee 시리즈 1과 같이 IEEE 802.15.4 통신을 위한 펌웨어가 내장되어 있기 때문에 별도로 Digi International사에서 제공하는 X-CTU 소프트웨어를 통해 Table 3처럼 메시 네트워크 노드 구성에 따라 펌웨어 업데이트가 필요하다. 본 연구에서는 어플리케이션 프로그램에 의해 커맨드 정보 및 파라미터 정보를 패킷에 포함하여 노드 간의 데이터를 송수신할 수 있도록 API(Application Programming Interface) 모드를 사용한다.

Table 3.Xbee Firware Version for Zigbee Mesh Configuration

Xbee API는 Xbee 모듈과 연결된 프로세서가 구조화된 인터페이스를 통해서 서로 통신할 수 있도록 기능을 제공한다. 또한 Xbee 모듈로부터 UART(Universal Asynchronous Receiver Transmitter) 데이터 프레임을 이용하여 커맨드 및 응답, 모듈 상태에 대한 메시지를 송수신하는 방법을 명시하고 있으며 다양한 기능의 API를 제공한다.

Fig. 5에서 Xbee API 데이터 프레임 구조와 종류를 나타내고 있으며, 각 프레임에 지정된 API ID를 통해 식별된다. 이와 같은 API 프레임은 프로그램을 통한 AODV(Ad hoc On-demand Distance Vector) Mesh, Many-to-One, Source 라우팅과 직접 주소지정 방식의 전송을 가능하게 할뿐만 아니라 커맨드 정보 송수신 및 모듈 상태 등의 파라미터 정보를 확인할 수 있고 원격으로 모듈을 설정 및 펌웨어를 업데이트할 수 있기 때문에 데이터 전송 및 관리, 어플리케이션에 따라서 다양하게 구성할 수 있다. 이러한 Xbee 모듈의 API를 이용하여 지그비 무선 센서 네트워크를 중앙 집중적으로 관리할 수 있는 장점이 있으며, Xbee 시리즈는 동일한 하드웨어 풋프린트로 설계되었기 때문에 용도에 따라 쉽게 모듈을 교체할 수 있다.

Fig. 5.The Structure and Frame Type of Xbee API

Arduino Uno는 오픈소스 하드웨어 플랫폼인 Arduino 시리즈의 한 종류이며, Xbee 모듈 및 센서와 연결되어 센싱 및 프로세싱 기능을 수행한다[16].

센서노드는 지그비 메시 네트워크에서 앤드 디바이스 역할을 수행하기 때문에 코디네이터가 생성한 PAN(Personal Area Network)에 조인하여 MQTT-SN 클라이언트로서 게이트웨이와 연결되어 토픽 기반의 Pub/Sub 기능을 수행한다. 센서노드가 게이트웨이와 연결되었을 경우에는 Subscribe를 위한 토픽을 등록하고 소비전력 감소를 위해 슬립 모드를 실행하며, 요구된 시간마다 타이머카운터에 의해서 Wake up을 실행하여 태스크 리스트의 함수 호출을 통해 센서로부터 얻은 데이터를 Publish하여 전송한다.

본 시스템에서 실험을 위해 구성된 센서노드는 Table 4와 같이 지그비 무선 센서 네트워크 영역과 구동 센서의 타입에 따라서 토픽을 구분하여 Pub/Sub 서비스를 수행한다. 지그비 무선 센서 네트워크 영역별로 센서노드의 클라이언트 ID를 구분하였으며, 센서노드의 기능을 Pub/Sub 서비스 사용에 따라 구분하기 위해 노드 A는 온도 센서의 측정값을 Publish하고 Subscribe 서비스로 LED 제어 메시지를 수신한다. 노드 B는 피에조 부저를 부착하여 Subscribe 기능으로 제어 메시지에 따라서 부저를 On/Off 하는 기능만을 하며, 노드 C는 PIR 모션 선세를 연결하여 사람의 움직임이 감지되면 Publish 기능으로 상태 메시지를 전송하도록 하였다.

Table 4.Publish/Subscribe Topic Corresponding to Each Node

3.3 게이트웨이 구현

일반적으로 게이트웨이는 지그비 메시 네트워크에서 코디네이터에 의해 생성된 PAN에 조인하여 라우터로서의 역할을 수행하며, 슬립모드를 지원하지 않고 유선을 통해 동작을 위한 충분한 전력이 공급된다. 또한 본 시스템은 기본적으로 하나의 PAN에서 생성된 지그비 메시 네트워크에서 여러 개의 게이트웨이가 구성될 수 있다. 하지만 본 연구에서는 소규모의 지그비 메시 네트워크를 구성하기 때문에 하나의 PAN에서 다수의 게이트웨이를 구현하지 않고 무선 센서 네트워크 영역을 구분하기 위해 브로커 서버와 통합된 형태의 게이트웨이와 독립적인 형태의 게이트웨이로 구분하여 2개의 지그비 메시 네트워크를 구성하였다.

본 테스트베드에서 게이트웨이는 오픈소스 하드웨어 플랫폼으로서 ARM 프로세서 기반의 소형 컴퓨터이며 2개의 USB 포트, 100Mbit 이더넷, GPIO모듈을 탑재하고 있는 Raspberry Pi(RPi)를 사용하였으며, 지그비 인터페이스를 위해 Xbee explorer 동글을 연결하여 Fig. 6과 같이 구현하였다. Xbee explorer 동글은 Raspberry Pi의 USB 포트에 연결되어 UART 통신을 통해서 MQTT-SN 메시지 포맷의 데이터를 주고받으며, 최소 1200bps에서 1Mbps의 전송속도로 설정할 수 있다.

Fig. 6.H/W Component of the MQTT-SN Gateway.

MQTT 프로토콜이 사용되는 기존의 IP 기반 네트워크와 MQTT-SN 프로토콜이 사용되는 무선 센서 네트워크의 연동을 위해서는 서로 다른 망을 연결해주고 MQTT와 MQTT-SN 사이에서 프로토콜 변환을 수행하는 게이트웨이 기능이 요구된다.

따라서 본 시스템의 센서노드와 게이트웨이는 Fig. 7과 같은 프로토콜 스택의 구조로 구현되었으며, 게이트웨이는 지그비 프로토콜 스택을 기반으로 무선 센서 네트워크에서 MQTT-SN 기능을 지원하고 IP 기반 네트워크와 연결되어 MQTT와 MQTT-SN 사이에서 데이터 변환을 수행한다. 이러한 게이트웨이는 브로커와 송수신, 클라이언트와 송수신, 메시지 큐에 대한 컨트롤 태스크로 구성되어 데이터를 변환하고 전달할 수 있는 구조를 갖는다.

Fig. 7.MQTT-SN Client and Gateway Protocol Stack.

 

4. MQTT과 MQTT-SN의 통합된 Publish/Subscribe 서비스 설계

4.1 센서노드의 Publish 과정

본 시스템은 앞에서 기술한 바와 같이 MQTT와 MQTT-SN 프로토콜을 기반으로 하고 있으며, 서로 다른 두 프로토콜에 대해 게이트웨이를 중심으로 연결되어 하나로 통합된 메시지 전달 서비스가 가능하도록 Publish/Subscribe 절차를 설계 및 구현하였다. Fig. 8은 MQTT-SN 클라이언트인 센서노드가 측정된 센서 값을 Publish하여 외부 인터넷 망에 존재하는 MQTT 클라이언트로 메시지를 전달하는 과정을 보인다.

Fig. 8.Publish Procedure of MQTT-SN Client.

Publish 서비스 과정에서 최초 센서노드는 센서의 측정값을 Publish 서비스하기 위해 해당 토픽에 대한 등록절차가 요구된다. 따라서 동일 네트워크상에 존재하는 게이트웨이를 찾기 위해 SEARCHGW 메시지를 네트워크상에 최대 다음 1홉까지 브로드캐스트하여 게이트웨이를 찾는 Gateway Discovery 절차를 수행한다. 이 메시지를 수신한 게이트웨이는 자신의 Id 와 주소 정보를 포함하는 GWINFO 메시지로 응답한다. 게이트웨이를 발견한 센서노드는 다시 브로커와 연결을 위해 CONNECT 메시지를 브로커로 전송하는데 MQTT-SN에서는 MQTT와는 다르게 무선 센서 네트워크 환경의 특성인 메시지 페이로드 길이에 대한 제한 및 오버헤드를 고려하였기 때문에 MQTT에서 client Id, willTopic, willMessage 필드를 하나의 CONNECT 메시지에 포함하는 것과 다르게 3개의 CONNECT, WILLTOPIC, WILLMSG 메시지로 분리하여 순서대로 게이트웨이로 전송하며, 게이트웨이는 전달받은 메시지를 다시 하나의 CONNECT 메시지로 결합하는 연결과정을 거쳐 외부 인터넷 망의 MQTT 브로커와 연결한다. 하지만 IEEE 802.15.4를 기반으로 하는 지그비는 앞에서 기술한 바와 같이 페이로드 길이가 제한되고 MQTT-SN에서 등록 및 사용하려는 토픽 문자열의 길이가 길어질수록 네트워크 오버헤드가 증가하게 된다. 따라서 다음 과정에서 게이트웨이를 통해 브로커와 연결된 센서노드는 Publish하는 메시지의 토픽 길이를 줄이고 네트워크 오버헤드를 감소시키기 위해 REGISTER 메시지를 이용해 Publish하는 토픽을 게이트웨이에 등록하고 이에 해당하는 topicId를 전달받기 위한 절차를 거친다. 하지만 다수의 센서노드들이 존재하는 무선 센서 네트워크 환경의 특성상 많은 센서노드들이 게이트웨이와 연결하고 메시지를 Publish하는 과정에서 REGISTER 메시지를 통해 topicId를 등록하는 경우가 발생한다. 이러한 경우에는 많은 센서노드들이 이미 등록된 토픽을 등록하는 불필요한 절차를 거치게 되고 동일한 토픽에 대해서 중복되는 topicId가 발생할 수 있기 때문에 본 시스템에서는 토픽 등록 과정을 진행하기 전에 임의의 topicId와 topic- Name 필드를 포함한 PUBLISH 메시지를 게이트웨이로 전송하여 등록하려는 토픽이 기존에 등록되어 있는지 여부를 판별하고 결과에 따라서 PUBACK 메시지를 이용하여 topicId를 전달 받거나 등록과정을 거치도록 하였다.

위의 과정을 마친 센서노드는 게이트웨이로부터 전달 받은 topicId를 통해서 측정된 센서 값을 게이트웨이로 Publish하며, 다시 게이트웨이는 브로커로 이를 전달하여 외부 인터넷 망에 존재하는 MQTT 클라이언트에서 센서노드에서 보낸 데이터를 Subscribe하여 수신할 수 있다. 따라서 본 시스템에서는 온도 센서의 측정값과 PIR(Passive Infrared Sensor)센서의 모션 감지 결과를 MQTT 클라이언트에서 확인하기 위한 용도로 Publish 기능을 사용하였다.

4.2 센서노드의 Subscribe 과정

Fig. 9는 위에서 언급한 Fig. 8에서 게이트웨이를 통한 MQTT-SN 클라이언트 센서노드와 MQTT 브로커 간의 연결과정을 마친 후 센서노드가 외부 인터넷 망에 존재하는 PC 또는 스마트폰과 같은 MQTT 클라이언트로부터 메시지를 Subscribe 하는 과정을 보인다. 센서노드는 Subscribe 기능을 실행함과 동시에 해당 토픽의 메시지 수신에 따라 LED 제어와 같이 특정 기능을 수행하기 위한 인터럽트 콜백을 설정한다. 다음으로 센서노드를 구분하기 위한 clientId 및 topicName 필드를 포함하는 SUBSCRIBE 메시지를 게이트웨이로 보내며 게이트웨이에서 이 메시지를 MQTT 프로토콜 포맷으로 변환하여 MQTT 브로커 서버로 전달된다. 브로커는 센서노드가 보낸 topicName에 대한 topicId를 SUBACK 메시지를 통해 다시 센서노드로 응답한다. 따라서 센서노드는 게이트웨이를 통해 MQTT 브로커와 연결되고 Subscribe 서비스를 받기 위한 토픽 등록절차를 마치게 된다. 외부 인터넷 망에서 MQTT 클라이언트로부터 센서노드가 등록한 topicName에 대한 메시지가 MQTT 브로커로 Publish되면 브로커는 메시지를 게이트웨이로 전달하며 게이트웨이는 topicName이 아닌 topicId를 포함한 PUBLISH 메시지를 센서노드로 보낸다. 센서노드는 전달 받은 PUBLISH 메시지의 topicId에 따라서 미리 설정된 콜백함수를 실행한다. 센서노드에서 센서의 측정값을 Publish 기능을 이용하여 수집할 때 토픽을 변경하는 경우는 거의 발생하지 않는다. 하지만 Subscribe 기능을 하는 노드의 경우는 액추에이터로 작동되는 경우가 많으며, 이러한 경우에는 어플리케이션에 따라서 노드에서 Subscribe하는 토픽을 변경해야 되는 경우가 발생한다. 본 시스템에서는 이러한 경우를 고려하여 MQTT 클라이언트의 요구에 따라서 센서노드가 Subscribe하는 토픽을 변경 할 수 있도록 게이트웨이에서 전송하는 REGISTER 메시지를 이용하여 새롭게 추가되는 topicName 및 topicId를 등록할 수 있다. 본 테스트베드는 MQTT 클라이언트 측에서 제어 메시지를 전송하여 센서노드에 연결된 LED 및 피에조 부저의 On/Off 기능을 제어하도록 하였다. 또한 Subscribe 과정 도 Publish 절차와 마찬가지로 topicName을 사용할 때 발생하는 네트워크 오버헤드 및 패킷의 페이로드를 고려하여 topicId를 사용함으로써 무선 센서 네트워크에서 센서노드와 게이트웨이 간에 전달되는 메시지의 크기를 최소화한다.

Fig. 9.Subscribe Procedure of MQTT-SN Client.

 

5. 구현 결과 및 분석

앞에서 기술한 바와 같이 본 연구의 시스템은 지그비 기반의 무선 센서 네트워크에서 센서노드가 MQTT-SN 클라이언트로서 Publish/Subscribe 서비스를 수행함과 동시에 MQTT와 연동되는 시스템 구현하였다. 본 시스템에서 센서노드의 Publish/Subscribe 기능을 테스트 및 센서노드와 게이트웨이 간에 송수신하는 메시지 정보를 확인하기 위해 게이트웨이에서 메시지 정보를 터미널에 출력하도록 하였으며 터미널 에뮬레이터인 PuTTY 프로그램으로 게이트웨이 터미널에 접속하여 테스트하였다.

센서노드에서 lab1/nodeA/temp를 토픽으로 하여 측정된 온도 값을 Publish 했을 때, 게이트웨이 터미널에서 Fig. 10과 같이 메시지 정보를 출력하였다. Fig. 10에서 게이트웨이와 센서노드 간에 주고받은 메시지 필드 값을 살펴보면 MQTT-SN 프로토콜 메시지 포맷에서 Flags(20), TopicId(01 01), MsgId(00 05), Data(32 35 2E 30 20 43) 필드 값을 포함한 PUBLISH 메시지를 게이트웨이가 센서노드로부터 수신한 것을 알 수 있다. 메시지의 Data 필드 값 32 35 2E 30 20 43은 아스키코드의 hex 값으로서 센서노드에서 측정한 온도 값인 25.0 C를 나타낸다. 게이트웨이로부터 브로커로 변환되어 전송된 MQTT PUBLISH 메시지는 Fixed header(3B 19), Topic length(00 0F), Topic Name(6C 61 62 31 2F 6E 31 2F 6E 6F 64 65 41 2F 74 65 6D 70), Message ID(00 05), Payload(32 35 2E 30 20 43) 필드를 포함하며 브로커는 다시 게이트웨이로 Fixed header(40 02), Message ID(00 05) 필드 값을 포함하는 PUBACK 메시지를 통해 응답한다. 마지막으로 센서노드는 게이트웨이로부터 TopicId(01 01), MsgId(00 05), ReturnCode(00) 필드 값을 갖는 PUBACK 메시지를 수신하여 Publish 과정을 끝마친다.

Fig. 10.Communication test Screen between Sensor Node and MQTT Broker.

본 테스트에서 MQTT 클라이언트는 브로커 서버가 설치된 PC에 별도로 MQTT 클라이언트 프로그램을 설치하여 구성하였으며, Fig. 11에서 MQTT 클라이언트 PC에서 lab1/nodeA/temp를 토픽으로 지정한 후 Subscribe하여 브로커로부터 정상적으로 센서노드의 온도 값을 수신하는 것을 확인할 수 있다.

Fig. 11.Subscribe Result Screen in MQTT Client PC.

외부 IP 기반 네트워크에 존재하는 MQTT 클라이언트 PC로부터 센서노드에 연결된 LED 제어를 테스트하기 위해 센서노드에서 토픽을 lab2/nodeA/led로 지정하였으며, Fig. 12은 MQTT 클라이언트 PC에서 PUBLISH 메시지 QoS를 1로 설정하여 센서노드로 LED 제어 메시지를 전송하는 것을 보인다.

Fig. 12.Publish Message in MQTT Client PC.

Fig. 13에서 게이트웨이와 센서노드 간에 주고받은 메시지 정보를 보면 게이트웨이가 MQTT 클라이언트 PC로부터 Flags(20), TopicId(01 01), MsgId(00 04), Data(6F 6E) 필드 값을 포함한 PUBLISH 메시지와 Flags(20), TopicId(01 01), MsgId(00 05), Data(6F 66 66)를 필드 값에 포함하는 PUBLISH 메시지를 MQTT-SN 메시지 포맷으로 변환하여 센서노드에게 전달하며, Data 필드의 6F 6E와 6F 66 66는 아스키코드의 hex 값으로 on과 off를 나타내므로 MQTT 클라이언트로부터 전송된 PUBLISH 메시지가 정상적으로 전달된 것을 확인하였다.

Fig. 13.Communication Test between Sensor Node and MQTT Broker.

Fig. 14와 같이 지그비 메시 네트워크에서 MQTT-SN 프로토콜을 이용하는 센서노드가 브로커를 통해서 외부 IP 기반 네트워크의 MQTT 클라이언트와 연동되어 센서노드와 연결된 LED가 제어되는 것을 볼 수 있다. 이러한 MQTT-SN 프로토콜을 사용하는 Non-IP 기반의 무선 센서 네트워크에서 센서노드는 IP 기반 네트워크의 MQTT 클라이언트와 통신하여 네트워크 계층에 독립적이고 통합된 M2M/IoT 서비스를 제공할 수 있다.

Fig. 14.Sensor Node Control LED by MQTT Client PC.

 

5. 결 론

본 논문에서는 지그비 메시 네트워크를 이용하여 Non-IP 기반의 무선 센서 네트워크에서 Publish/Subscribe 프로토콜인 MQTT-SN을 구현하였으며, 게이트웨이를 통해 기존의 IP 기반 네트워크에서 동작하는 MQTT를 연동하여 통합된 Publish/Subscribe 테스트베드를 구현하였다. 본 시스템은 다양한 펌웨어 버전과 툴을 제공하는 Xbee 모듈과 오픈소스 하드웨어 플랫폼이며 저가격인 Arduino를 이용하였기 때문에 무선 센서 네트워크를 구현하는데 효율적이다. 또한 MQTT-SN은 기존 IP 망에서 존재하는 MQTT 시스템과 게이트웨이를 통해 통합될 수 있고 네트워크에 독립적으로 동작하기 때문에 다양한 통신 인프라를 기반으로 동작하는 M2M/IoT 환경에서 연결성을 제공하고 서비스가 가능한 환경을 제공한다. 이러한 구조의 시스템은 기존의 주소를 이용하여 센서노드에 접근하는 IP 기반의 무선 센서 네트워크와는 다르게 직접적으로 센서노드에 접근할 수 없기 때문에 보안에 더 효율적인 구조를 가지므로 본 논문에서 구현한 시스템은 실생활에 적용되어 직접적으 로 M2M/IoT 서비스를 할 수 있는 플랫폼이 될 것으로 기대된다. 또한 추후에는 무선 네트워크에서 주요 이슈인 소모전력 최소화 및 효율적인 라우팅에 관한 연구를 수행할 계획이다.

참고문헌

  1. Message Queuing Telemetry Transport, http://mqtt.org (accessed Aug., 27, 2014).
  2. J.J. Rodrigues and P.A. Neves, "A Survey on IP based Wireless Sensor Network Solutions," International Journal of Communication Systems, Vol. 23, No. 8, pp. 963-981, 2010.
  3. U. Hunkeler, H.L. Truong, and A. Stanford-Clark, "MQTT-S.A Publish/subscribe Protocol for Wireless Sensor Networks," Proceeding of 3rd International Conference on Communication Systems Software and Middleware and Workshops, pp. 791-798, 2008.
  4. M. Prihodko, Energy Consumption in Location Sharing Protocols for Android Applications, Master's Thesis of Linkoopings University, 2012.
  5. IBM, MQTT For Sensor Networks (MQTTSN) Protocol Specification, v.1.2, 2013.
  6. A.M. Efendi, A.F.P. Negara, S. Oh, and D. Choi, "A Design of 6LoWPAN RPL Border Router with Multi-uplink Interface: Ethernet and Wi-Fi," Advanced Science Letters, Vol. 20, No. 1, pp. 56-60, 2014. https://doi.org/10.1166/asl.2014.5284
  7. D.M. Choi, S.Y. Kim, and I.Y. Chung, "Impact of Sink Node Location in Sensor Networks: Performance Evaluation," Journal of Korea Multimedia Society, Vol. 17, No. 8, pp. 977-987, 2014. https://doi.org/10.9717/kmms.2014.17.8.977
  8. S. Rooney and L. Garces-Erice, "Messo & Preso Practical Sensor-network Messaging Protocols," Proceeding of 4th European Conference on Universal Multiservice Networks, pp. 364-376, 2007.
  9. The Session Initiation Protocol (IETF RFC 3261), http://www.ietf.org/rfc/rfc3261.txt (accessed Aug., 27, 2014).
  10. S. Krishnamurthy, "TinySIP: Providing Seamless Access to Sensor-based Services," Proceeding of 3rd Annual International Conference on Mobile and Ubiquitous System-Workshops, pp. 1-9, 2006.
  11. C.P. Hall, A. Carzaniga, J. Rose, and A.L. Wolf, A Content-based Networking Protocol for Sensor Networks, Department of Computer Science, University of Colorado, Technical Report, 2004.
  12. E. Souto, G. Guimares, G. Vasconcelos, M. Vieira, N. Rosa, and C. Ferraz, "A Message-oriented Middleware for Sensor Networks," Proceeding of 2nd Workshop on Middleware for Pervasive and Ad-hoc Computing, pp. 127-134, 2004.
  13. M. Zoumboulakis, G. Roussos, and A. Poulovassilis, "Active Rules for Sensor Database," Proceeding of 1st International Workshop on Data Management for sensor Networks, pp. 98-103, 2004.
  14. An Open Source MQTT v3.1/v3.1.1 Broker, http://mosquitto.org (accessed Aug., 27, 2014).
  15. Digi International, http://www.digi.com/xbee/(accessed Aug., 27, 2014).
  16. Arduino Uno, http://arduino.cc/en/Main/arduinoBoardUno(accessed Aug., 27, 2014).

피인용 문헌

  1. Smart Attendance Checking System based on BLE using a Beacon vol.11, pp.2, 2016, https://doi.org/10.13067/JKIECS.2016.11.2.209
  2. A Service Composition using Hierarchical Model in Multiple Service Environment vol.18, pp.9, 2015, https://doi.org/10.9717/kmms.2015.18.9.1091
  3. Analysis Standardized of IoT-based Low-power·Light-weight Protocol vol.20, pp.10, 2016, https://doi.org/10.6109/jkiice.2016.20.10.1895
  4. The Design and Implementation of a Reservation System for Amusement Facility using Near Field Communication vol.11, pp.11, 2016, https://doi.org/10.13067/JKIECS.2016.11.11.1061
  5. Data Compression Method for Reducing Sensor Data Loss and Error in Wireless Sensor Networks vol.19, pp.2, 2016, https://doi.org/10.9717/kmms.2016.19.2.360
  6. Car Driving Simulation Game using 3-axis Gyroscope Sensor vol.19, pp.6, 2016, https://doi.org/10.9717/kmms.2016.19.6.1089
  7. Virtual Sleep Sensor with PSQI for Sleep Therapy Service vol.18, pp.12, 2015, https://doi.org/10.9717/kmms.2015.18.12.1538
  8. MQTT와 Node-RED를 이용한 설비 모니터링 시스템의 구현 vol.18, pp.4, 2014, https://doi.org/10.7236/jiibc.2018.18.4.211
  9. Z-Wave 네트워크 환경에서 MQTT 기반 대기전력 절감 시스템 설계 및 구현 vol.23, pp.3, 2014, https://doi.org/10.9717/kmms.2020.23.3.421
  10. 스마트빌딩 환경에서 Zigbee-MQTT를 이용한 사용자 패턴 기반 대기전력 저감 시스템 설계 및 구현 vol.24, pp.9, 2014, https://doi.org/10.6109/jkiice.2020.24.9.1158