Etikettarkiv: MQTT

MQTT – ett nytt protokoll för Internet of Things

Förra veckan meddelade IBM att dom skulle donera ett nytt protokoll till Eclipse Foundation. Protokollet MQTT  (MQ Telemetry Transport) är ett transportprotokoll avsett för meddelanden till och från små Internetkopplade enheter (Internet of Things – IoT).

Vad gäller framtidens Internet tror många – Ericsson, Cisco inte minst att antalet uppkopplade enheter kommer att öka drastiskt, och domineras av saker runt omkring oss. Glödlampor, kylskåp, hissar, dörrar, tvättmaskiner och bilar är bara några exempel på prylar som nämns som tänkbara IoT-saker.

Ericssons vision om Internet of Things-utvecklingen
Ericssons vision om Internet of Things-utvecklingen

Men för att detta ska gå att genomföra måste den intelligens som behöver byggas in i alla dessa prylar vara så kompakt och billig att det inte tillför kostnader. Kostnader såväl vid inköp som användning. Detta ställer stora krav på den tekniska implementationen i alla dess delar för att bli så billig, liten och energisnål som möjligt. Det som krävs är väsentligen:

  • Någon slags strömkälla. I vissa fall kan detta ske genom extern matning. Ett bra exempel är passiva RDID-brickor där avläsaren tillför den ström som krävs. Det pågår även mycket forskning om energy harvesting, vilket innebär olika tekniker att fånga in energi från omgivningen – exempelvis från ljus, rörelser, temperaturskillnader.
  • En kommunikationskanal – oftast en radio, men även enklare trådbunden kommunikation.
  • Eventuella sensorer – om det är så att prylen ska kunna rapportera sitt tillstånd, inte bara en identitet. Tänk en glödlampa där man troligen vill kunna veta inte bara vilken glödlampa det är, utan om den lyser eller inte. Eller om den är trasig.
  • En digital intelligens. Väsentligen en liten processor som implementerar de protokoll, kommandon och funktioner som krävs för att rapportera status, skicka larm ta emot förfrågningar och kommandon som krävs för att göra prylen till en IoT-pryl.
Det MQTT försöker göra är att förenkla kommunikationsprotokollen för att utbyta meddelanden.
MQTT är inte helt nytt. Två tidigare protokoll, SCADA protocol och MQ Integrator SCADA Device Protocol (MQIsdp) är samma sak som MQTT.
Säkerhetsmässigt innehåller MQTT stöd för att skicka lösenord(!). Men för att sökra sessionen föreslår MQTT-teamet att använda SSL.
I samband med donationen bildar Eclipse en arbetsgrupp runt M2M och pressreleasen beskriver syftet med arbetsgruppen närmare.
The Eclipse Machine-to-Machine Industry Working Group and the related open source projects will enable customers to integrate physical world systems into their enterprise solutions,” said Dr. Angel Diaz, vice president, software standards, IBM Software Group. “Data is being captured today as never before, the Eclipse M2M initiative helps expand the spectrum of information and intelligence into the systems and processes that make the world work and become a smarter planet.”
För den som vill veta mer om MQTT finns det massor att läsa, både på MQTT.org. Bland annat finns specifikationen för version 1.3 av MQTT-protokollet (fast specen ligger faktiskt hos IBM). Specifikationen listar några egenskaper med MQTT:
  • The publish/subscribe message pattern to provide one-to-many message distribution and decoupling of applications
  • A messaging transport that is agnostic to the content of the payload
  • The use of TCP/IP to provide basic network connectivity
  • Three qualities of service for message delivery:
    • ”At most once”, where messages are delivered according to the best efforts of the underlying TCP/IP network. Message loss or duplication can occur. This level could be used, for example, with ambient sensor data where it does not matter if an individual reading is lost as the next one will be published soon after.
    • ”At least once”, where messages are assured to arrive but duplicates may occur.
    • ”Exactly once”, where message are assured to arrive exactly once. This level could be used, for example, with billing systems where duplicate or lost messages could lead to incorrect charges being applied.
  • A small transport overhead (the fixed-length header is just 2 bytes), and protocol exchanges minimised to reduce network traffic
  • A mechanism to notify interested parties to an abnormal disconnection of a client using the Last Will and Testament feature
Jag vet inte riktigt hur jag ska ställa mig till MQTT. Att det kommer fram protokoll som gör det enklare (billigare) att implementera maskin-maskin-kommunikation (M2M) och IoT är bra. Det behövs definitvt och protokoll och säkerhetesmekanismer behöver anpassas för att möta de hårda kostnads- och enkelhetskrav dessa prylar ställer.Men jag svårt att se vad som fundamentalt förändras med MQTT. Vad gäller själva säkerheten lämnar protokollet över detta till SSL (och TLS – förhoppningsvis). Men dessa säkerhetsprotokoll är i sig så komplexa och dyra att implementera att kostnaden för transport- och meddelande-protokollet blir marginell.
Vidare blir jag tveksam till varför IBM väljer att donera MQTT till Eclipse Foundation. Eclipse Foundation gör en massa vädligt bra saker och har iaf ett projekt riktat mot M2M (Koneki). Men deras huvudfokus är knappast Internet of Things, och inte heller kommunikationsprotokoll. Varför donerades detta inte till IETF, W3C eller en ren SCADA- eller , M2M-organisation?
Uppdaterad 2011-11-14
Som Jonas påpekar nedan används MQTT av Facebook som del av deras meddelandetjänst. Lucy Zhang, utvecklare på Facebook beskriver deras erfarenhet av MQTT:
One of the problems we experienced was long latency when sending a message. The method we were using to send was reliable but slow, and there were limitations on how much we could improve it. With just a few weeks until launch, we ended up building a new mechanism that maintains a persistent connection to our servers. To do this without killing battery life, we used a protocol called MQTT that we had experimented with in Beluga.
MQTT is specifically designed for applications like sending telemetry data to and from space probes, so it is designed to use bandwidth and batteries sparingly. By maintaining an MQTT connection and routing messages through our chat pipeline, we were able to often achieve phone-to-phone delivery in the hundreds of milliseconds, rather than multiple seconds.