MQTT - MQTT

MQTT
Mqtt-hor.svg
MQTT -logo
Status Publisert
Året startet 1999
Siste versjon 5.0
7. mars 2019
Organisasjon OASIS
Komite OASIS Message Queuing Telemetry Transport Technical Committee
Redaktører Andrew Banks (IBM), Ed Briggs (Microsoft), Ken Borgendale (IBM), Rahul Gupta (IBM)
Relaterte standarder MQTT-SN
Nettsted mqtt .org

MQTT er en lett, publiserer-abonnere nettverksprotokoll som transporterer meldinger mellom enheter. Protokollen kjører vanligvis over TCP/IP , men enhver nettverksprotokoll som gir bestilte, tapsfrie , toveis tilkoblinger kan støtte MQTT. Den er utformet for forbindelse med eksterne steder hvor en ressurs begrensninger for eller nettverket båndbredden er begrenset. Protokollen er en åpen OASIS -standard og en ISO -anbefaling (ISO/IEC 20922).

Historie

Andy Stanford-Clark ( IBM ) og Arlen Nipper (da jobbet for Eurotech, Inc. ) forfattet den første versjonen av protokollen i 1999. Den ble brukt til å overvåke oljerørledninger i SCADAs industrielle kontrollsystem. Målet var å ha en protokoll som er båndbreddeeffektiv, lett og bruker lite batteristrøm, fordi enhetene var koblet til via satellittforbindelse som på den tiden var ekstremt dyr.

Historisk sett kom "MQ" i "MQTT" fra IBM MQ (den gang "MQSeries") MQ -produktlinjen, der den står for "Message Queue". Imidlertid gir protokollen meldinger om publisering og abonnering (ingen køer, til tross for navnet). I spesifikasjonen åpnet av IBM som versjon 3.1 ble protokollen referert til som "MQ Telemetry Transport". Senere versjoner utgitt av OASIS refererer strengt til protokollen som bare "MQTT", selv om den tekniske komiteen selv heter "OASIS Message Queuing Telemetry Transport Technical Committee". Siden 2013 står ikke "MQTT" for noe.

I 2013 sendte IBM inn MQTT v3.1 til OASIS -spesifikasjonsorganet med et charter som sikret at bare små endringer i spesifikasjonen kunne godtas. Etter å ha overtatt vedlikeholdet av standarden fra IBM, ga OASIS ut versjon 3.1.1 29. oktober 2014. En mer omfattende oppgradering til MQTT versjon 5, som har lagt til flere nye funksjoner, ble utgitt 7. mars 2019.

MQTT-SN (MQTT for sensornettverk) er en variant av hovedprotokollen rettet mot batteridrevne innebygde enheter på ikke-TCP/IP-nettverk, for eksempel Zigbee .

Oversikt

MQTT -protokollen definerer to typer nettverksenheter: en meldingsmegler og et antall klienter. En MQTT -megler er en server som mottar alle meldinger fra klientene og deretter ruter meldingene til de aktuelle destinasjonsklientene. En MQTT-klient er en hvilken som helst enhet (fra en mikrokontroller til en fullverdig server) som kjører et MQTT-bibliotek og kobles til en MQTT-megler over et nettverk.

Informasjon er organisert i et hierarki av emner. Når en utgiver har et nytt dataelement å distribuere, sender det en kontrollmelding med dataene til den tilkoblede megleren. Megleren distribuerer deretter informasjonen til alle klienter som har abonnert på dette emnet. Utgiveren trenger ikke å ha noen data om antall abonnenter eller steder, og abonnenter trenger på sin side ikke å konfigureres med data om utgiverne.

Hvis en megler mottar en melding om et emne som det ikke er gjeldende abonnenter for, kasserer megleren meldingen med mindre utgiveren av meldingen utpekte meldingen som en beholdt melding. En beholdt melding er en normal MQTT -melding med det beholdte flagget satt til true. Megleren lagrer den siste meldingen og den tilhørende QoS for det valgte emnet. Hver klient som abonnerer på et emnemønster som samsvarer med emnet for den beholdte meldingen, mottar den beholdte meldingen umiddelbart etter at de abonnerer. Megleren lagrer bare én beholdt melding per emne. Dette gjør at nye abonnenter på et emne kan motta den nyeste verdien i stedet for å vente på neste oppdatering fra en utgiver.

Når en publiseringsklient først kobler seg til megleren, kan den sette opp en standardmelding som skal sendes til abonnenter hvis megleren oppdager at publiseringsklienten uventet har koblet seg fra megleren.

Klienter samhandler bare med en megler, men et system kan inneholde flere meglerservere som utveksler data basert på deres nåværende abonnentemner.

En minimal MQTT -kontrollmelding kan være så lite som to byte med data. En kontrollmelding kan bære nesten 256 megabyte med data om nødvendig. Det er fjorten definerte meldingstyper som brukes til å koble til og koble en klient fra en megler, publisere data, bekrefte mottak av data og overvåke forbindelsen mellom klient og server.

MQTT er avhengig av TCP -protokollen for dataoverføring. En variant, MQTT-SN, brukes over andre transporter som UDP eller Bluetooth.

MQTT sender legitimasjon for tilkobling i vanlig tekstformat og inkluderer ikke tiltak for sikkerhet eller autentisering. Dette kan gis ved å bruke TLS til å kryptere og beskytte den overførte informasjonen mot avskjæring, modifikasjon eller forfalskning.

Standard ukryptert MQTT -port er 1883. Den krypterte porten er 8883.

MQTT megler

MQTT-megleren er programvare som kjører på en datamaskin (kjører lokalt eller i skyen), og kan være selvbygd eller hostet av en tredjepart. Den er tilgjengelig i både åpen kildekode og proprietære implementeringer.

Megleren fungerer som et postkontor, MQTT bruker ikke adressen til den tiltenkte mottakeren, men bruker emnelinjen "Emne", og alle som ønsker en kopi av meldingen vil abonnere på det emnet. Flere klienter kan motta meldingen fra en enkelt megler (én til mange muligheter). På samme måte kan flere utgivere publisere emner til en enkelt abonnent (mange til en).

Hver klient kan både produsere og motta data ved både publisering og abonnement, dvs. at enhetene kan publisere sensordata og fremdeles kunne motta konfigurasjonsinformasjon eller kontrollkommandoer (MQTT er en toveis kommunikasjonsprotokoll). Dette hjelper både med å dele data, administrere og kontrollere enheter.

Med MQTT meglerarkitektur blir enhetene og applikasjonen frakoblet og sikrere. MQTT bruker Transport Layer Security (TLS) -kryptering med brukernavn, passordbeskyttede tilkoblinger og valgfrie sertifiseringer som krever at klienter oppgir en sertifikatfil som samsvarer med serverens. Kundene er ikke klar over hverandres IP -adresse.

I tilfelle en enkelt kilde til feil, har meglerprogramvare og klienter en automatisk overlevering til Redundant/automatisk backupmegler. Sikkerhetsmegleren kan også konfigureres for å dele belastningen av klienter på tvers av flere servere på stedet, skyen eller kombinasjonen av begge.

Megleren kan støtte både standard MQTT og MQTT for kompatible spesifikasjoner som Tennplugg, kan gjøres med samme server, samme tid og med samme sikkerhetsnivå.

Megleren kan lagre dataene i form av lagrede meldinger (må abonnere på databaseklienten) slik at nye abonnenter på emnet kan få den siste verdien med en gang.

Megleren holder også oversikt over all øktens informasjon etter hvert som enhetene går på og av som kalles "vedvarende økter".

De viktigste fordelene med MQTT -megler er:

  1. Eliminerer sårbare og usikre klientforbindelser
  2. Kan enkelt skaleres fra en enkelt enhet til tusenvis
  3. Administrerer og sporer alle klienttilkoblingstilstander, inkludert sikkerhetslegitimasjon og sertifikater
  4. Redusert nettverksbelastning uten at det går ut over sikkerheten (mobil- eller satellittnettverk)

Meldingstyper

Koble

Eksempel på en MQTT -tilkobling (QoS 0) med koble til, publisere/abonnere og koble fra. Den første meldingen fra klient B lagres på grunn av beholdningsflagget.

Venter på at en forbindelse opprettes med serveren og oppretter en kobling mellom nodene.

Koble fra

Venter på at MQTT -klienten fullfører arbeidet han må gjøre, og på at TCP/IP -økten kobles fra.

publisere

Returnerer umiddelbart til applikasjonstråden etter å ha sendt forespørselen til MQTT -klienten.

MQTT v5.0

I 2019 ga OASIS ut den offisielle MQTT 5.0 -standarden. Versjon 5.0 inneholder følgende store nye funksjoner:

  • Årsakskoder: Bekreftelser støtter nå returkoder, som gir en årsak til en feil.
  • Delt abonnement: La belastningen balanseres på tvers av klienter og reduser dermed risikoen for lastproblemer
  • Utløp av melding: Meldinger kan inneholde en utløpsdato og slettes hvis de ikke blir levert innen denne tidsperioden.
  • Emne -alias: Navnet på et emne kan erstattes med et enkelt nummer

Kvalitet på tjenesten (QoS)

Hver tilkobling til megleren kan angi et kvalitetstjeneste . Disse er klassifisert i økende rekkefølge av overhead:

  • På det meste en gang - meldingen sendes bare én gang, og klienten og megleren tar ingen ytterligere skritt for å bekrefte levering (brann og glem).
  • Minst én gang - meldingen blir prøvd på nytt av avsenderen flere ganger til bekreftelse er mottatt (bekreftet levering).
  • Nøyaktig en gang - sender og mottaker deltar i et to -nivå håndtrykk for å sikre at bare én kopi av meldingen mottas (sikker levering).

Dette feltet påvirker ikke håndteringen av de underliggende TCP -dataoverføringene. den brukes bare mellom MQTT -avsendere og -mottakere.

applikasjoner

Flere prosjekter implementerer MQTT, for eksempel:

Se også

Referanser

Eksterne linker