Publication: MuMQ: A lightweight and scalable MQTT broker
Issued Date
2017-07-07
Resource Type
ISSN
19440375
19440367
19440367
Other identifier(s)
2-s2.0-85027287337
Rights
Mahidol University
Rights Holder(s)
SCOPUS
Bibliographic Citation
IEEE Workshop on Local and Metropolitan Area Networks. Vol.2017-June, (2017)
Suggested Citation
Wiriyang Pipatsakulroj, Vasaka Visoottiviseth, Ryousei Takano MuMQ: A lightweight and scalable MQTT broker. IEEE Workshop on Local and Metropolitan Area Networks. Vol.2017-June, (2017). doi:10.1109/LANMAN.2017.7972165 Retrieved from: https://repository.li.mahidol.ac.th/handle/20.500.14594/42335
Research Projects
Organizational Units
Authors
Journal Issue
Thesis
Title
MuMQ: A lightweight and scalable MQTT broker
Other Contributor(s)
Abstract
© 2017 IEEE. A message broker is an imperative component in IoT systems, and it works as a gateway between IoT devices and application platforms. With the growth of IoT devices today, these systems can easily overwhelm message brokers unless the software can fully utilize hardware resources such as multi-core facility. This paper presents muMQ, a high-performance MQTT broker running on Commercial-Off-The-Shelf hardware. It tackles the challenge to improve the performance of message brokering on a single machine by efficiently utilizing multi-core CPUs. First, muMQ exploits an event-driven I/O mechanism for multi-core scalability. Each CPU core equally handles dispatched TCP connections and locally processes MQTT logic. Second, muMQ adopts a user-level TCP/IP stack, mTCP with DPDK, to avoid the overhead of the in-kernel TCP/IP stack, including system call overhead and resource contention. We evaluate the effectiveness of our approach through experiments. The results show that muMQ can handle 512K or greater long-lived subscribers with no message loss; muMQ achieves a publish messaging rate at 930K messages per second, which is 5.38 times faster than an existing MQTT broker. We also confirm mTCP accelerates the performance by 1.8 times compared with muMQ using the in-kernel TCP/IP stack.