МКТТ: отворени мрежни протокол и његов значај у ИоТ-у

МКТТ протокол мрежа ИоТ

Запамти име МКТТ, будући да ће то бити мрежни комуникацијски протокол типа М2М (Мацхине то Мацхине) који ће звучати прилично мало. Постаје прилично популаран захваљујући новој ери Интернета ствари или ИоТ (Интернет оф Тхингс) због своје кратице на енглеском језику. Поред тога, то је отворени протокол, који даје многе предности.

У ствари, постао је један од централних стубова ИоТ-а, јер је прилично добар на уређајима са одређеним ограничењима преноса попут ових. Скраћеница МКТТ потиче из Телеметријски транспорт у реду чекања порука, отворени стандард ОАСИС-а и ИСО-а (ИСО / ИЕЦ 20922) за мрежне комуникације и који се углавном користи на познатом ТЦП / ИП-у.

Мрежни протоколи

ОСИ модел и његови слојеви

Л протоколи комуникације То су правила која омогућавају да два или више уређаја или система међусобно комуницирају. Односно, то је протокол за пренос информација на различита средства и у дефинисаном формату, било да их имплементира софтвер и хардвер (или обоје).

El стандардно протокола дефинише мноштво комуникационих карактеристика. Може ићи од правила синхронизације, семантике, синтаксе, формата пакета итд. И истина је да они нису нешто занемарљиво, јер захваљујући овим протоколима данас можемо да користимо Интернет и друге комуникационе мреже ...

И наравно, не постоји само један протокол, већ и многи. На пример, познати ДНС, ФТП, МКТТ, ХТТП и ХТТПС, ИМАП, ЛДАП, НТП, ДХЦП, ССХ, Телнет, СНМП, СМТП, итд., За слој апликације. Док у транспортном слоју можете пронаћи неке познате попут ТЦП, УДП итд., Као и оне са Интернет слоја као што су ИПв4 или ИПв6 (онај који је омогућио највећи број доступних ИП-ова и долазак ИоТ), ИПСец итд. и други из слоја везе, као што су ДСЛ, Етхернет, ВиФи, АРП итд.

О ИоТ протоколима

МКТТ протокол

Наравно, постоје специфични комуникацијски протоколи или се они могу применити на ИОТ. То ће рећи, узимајући у обзир претходни одељак, они би били низ дефинисаних стандарда тако да два или више ИоТ уређаја могу да комуницирају и разумеју се, а они су углавном М2М, односно комуникација машина-машина. многи ИоТ уређаји су повезани и деле информације из сензора или других извора.

Због великог броја ИоТ уређаја, ови протоколи морају да задовоље захтеве који превазилазе ограничења ширине опсега, брзине итд. (имајте на уму да су многи уређаји уграђени и јефтини), што је обично у неким уређајима. И мислим на чињеницу да мора бити скалабилно, да бисте могли да додате више повезаних уређаја ако је потребно и без утицаја на глобални систем.

Такође, они морају да имају мала зависност спрега између уређаја, тако да се проблеми не генеришу ако се уређај уклони. И наравно, истовремено се тражи висока интероперабилност тако да ради са великим бројем уређаја и врло разноврсним системима, јер је свет ИоТ-а прилично хетероген.

Остале корисне функције биле би једноставност њихове примене, сигурноститд. Имајте на уму да ИоТ ствара велике изазове у безбедносном аспекту. Чак и више када су многи повезани уређаји обично критични у одређеним случајевима ... на пример, играчке за малолетнике.

Важни концепти

Треба рећи да се мора рећи да решења за ИоТ користе централизовани сервер за пријем порука са свих повезаних уређаја који их емитују и дистрибуирају на све повезане ИоТ уређаје који слушају. Тај сервер је оно што је познато рутер или брокер. Нешто што је на неки начин далеко од уобичајеног односа клијент-сервер.

Поред тога, методологије које можете пронаћи у овим комуникационим протоколима за ИоТ су:

  • ПубСуб: Објави / препиши је образац за размену порука где уређај (Суб) обавештава брокера да жели да прими поруку, док други уређај (Пуб) објављује поруке које брокер дистрибуира на друге уређаје који их чекају.
  • рРПЦ: Позиви поступка поновног кодирања рутера је још један образац даљинског извршавања процеса. У њему уређај (Цаллее) обавештава брокера да ће извршити одређену процедуру, а брокер га дистрибуира другом уређају (позиваоцу) на коме се наведени поступак извршава.

Да бисмо извршили ове методологије или обрасце, а инфраструктура за размену порука. И у овом смислу се могу разликовати две:

  • Ред порука: услуга размене порука где се генерише један ред порука за све клијенте који покрену претплату на брокера. Потоњи ће чувати поруке ускладиштене док се не доставе клијенту. Ако клијент или прималац нису повезани, одржаваће се док се не повежу. Ове врсте услуга су попут оних које се користе у апликацијама за размену тренутних порука као што су Телегра, ВхатсАпп, Мессенгер итд.
  • Мессаге Сервице: то је још једна услуга у којој брокер шаље поруке повезаном клијенту примаоцу, филтрирајући према типу поруке. Ако је клијент или уређај за пријем прекинут, поруке се губе (иако можда има неки систем за евидентирање).

ИоТ протоколи

Видевши горе наведено, сада ћемо погледати изблиза ИоТ протоколи који су познатији. Међу најистакнутијим М2М су:

  • АМКП (Напредни протокол чекања порука): је ПубСуб тип протокола Реда порука. Дизајниран да има добру интероперабилност и осигурава поузданост. Нарочито за корпоративне апликације, високе перформансе, мреже са великим кашњењем, критичне итд.
  • ВАМП (протокол за размену порука путем веб апликација): то је још један отворени протокол типа ПубСуб попут рРПЦ и ради на ВебСоцкетс.
  • ЦоАП (протокол ограничене апликације): је протокол специјално дизајниран за апликације малог капацитета.
  • ТОМП (протокол протока текстуално оријентисаних порука): врло једноставан протокол и за постизање максималне интероперабилности. ХТТП се користи за пренос текстуалних порука.
  • КСМПП (прошириви протокол за размену порука и присутности): још један протокол који се у ИоТ користи за апликације тренутних порука и заснован је на КСМЛ-у. Јан, овај случај је такође отворен.
  • ВМК (ВебСпхере Мессаге Куеуе): протокол који је развио ИБМ. Тип је реда за поруке, као што му само име говори, и оријентисан је на поруке.
  • МКТТ: (види следећи одељак)

Све о МКТТ

МКТТ пакет

El МКТТ протокол То је комуникациони протокол реда за поруке, који следи ПубСуб образац, и типа М2М, као што сам већ поменуо. Широко се користи у ИоТ-у, а заснован је на ТЦП / ИП стеку који се користи на Интернету.

У случају МКТТ, свака веза остаје отворена и поново се користи у свакој неопходној комуникацији. Нешто другачије од онога што се дешава у другим познатим протоколима, да се свака комуникација одвија захтева нову везу.

предност

Предности МКТТ протокола сасвим су очигледне у погледу М2М комуникације за ИоТ. Поред свега горе реченог, то је протокол који пружа:

  • Скалабилност за повезивање све више и више купаца.
  • Невезање између клијената, ради мање зависности.
  • Асинхроност.
  • Једноставност.
  • Лакоћа како не би потрошила превише ресурса (мада са ТЛС / ССЛ сигурношћу расте).
  • Енергетски ефикасан за уређаје који зависе од батерије или раде 24/7, не треба му велика пропусност (идеално за споре везе, попут неких бежичних).
  • Сигурност и квалитет за већу поузданост и робусност у комуникацијама.

Историја

МКТТ је створен 90-их, са раном верзијом протокола 1999. године. Креирали су га др Анди Станфорд-Цларк из ИБМ-а и Арлен Ниппер из компаније Циррус Линк (раније Еуротецх).

La почетна идеја је био да се створи протокол за надгледање цевовода који је путовао кроз пустињу, са ефикасним протоколом комуникације (мала потрошња пропусног опсега), светлошћу и да је мала потрошња енергије. У то време био је врло скуп, али сада је постао јефтин и отворен протокол.

Почетни протокол је побољшан изгледом нове верзије, као што је МКТТ в3.1 (2013) према спецификацији ОАСИС (Организација за унапређење структурираних информационих стандарда) итд. Требало би да знате да је на почетку то био власнички ИБМ протокол, али да ће бити објављен 2010. године и на крају је постао стандард у ОАСИС-у ...

Како функционише МКТТ веза

МКТТ протокол користи филтер, за поруке које се шаљу сваком клијенту на основу тема или тема које су хијерархијски организоване. На тај начин купац може да пошаље поруку на одређену тему. На тај начин ће сви они клијенти или повезани уређаји који се претплате на тему добити поруке преко посредника.

Као и МК, поруке ће остати у реду и они се не губе док клијент не добије ту поруку.

Везе су, како сам такође назначио, успостављене преко ТЦП / ИП, а сервер или посредник ће водити евиденцију о повезаним клијентима. Уређаји ће подразумевано користити комуникационе портове број 1883, мада ћете можда наићи и на порт 8883 ако за додатну сигурност користите ССЛ / ТЛС.

Да би веза била могућа, нису потребни само клијенти, сервери и портови. Такође и други послати пакети или поруке за комуникацију:

  • Успоставите везу: ЦОННЕЦТ поруку / пакет који клијент шаље са свим потребним информацијама. Те информације укључују ИД купца, корисничко име, лозинку итд. Посредник или сервер одговара пакетом ЦОННАЦК који ће обавестити клијента да је веза прихваћена, одбијена итд.
  • Слање и примање порука: након успостављања везе користе се ПУБЛИСХ пакети или поруке са темом и корисним оптерећењем поруке послате посреднику. С друге стране, заинтересовани клијент или клијенти користе претплату и УНСУСЦРИБЕ пакете за претплату или повлачење претплате. Посредник ће такође одговорити пакетом СУБАЦК и УНСУБАЦК како би известио успех операције коју захтева клијент.
  • Одржавање везе: да би се гарантовало да веза остаје отворена, клијенти могу повремено да пошаљу ПИНГРЕК пакет који ће се подударати са ПИНГРЕСП пакетом са сервера.
  • Крај везе: када се клијент прекине, шаље ДИСЦОННЕЦТ пакет да пријави тај догађај.

Они поруке или пакете Они о којима сам говорио имају структуру исту као и други пакети других мрежних протокола:

  • Заглавље или фиксно заглавље: је фиксни део који заузима између 2-5 бајтова. Садржи контролни код, ИД типа послате поруке и њену дужину. За кодирање дужине користи се између 1-4 бајта, користећи првих 7 битова сваког октета као податке о дужини и додатни бит континуитета како би се утврдило да постоји више од једног бајта који чини дужину поруке.
  • Променљиво заглавље: није увек обавезно, већ необавезно. Садржи га само неки пакети у одређеним ситуацијама или одређеним порукама.
  • Садржај или подаци: пакетни подаци су оно што заправо садржи поруку коју треба послати. Може бити од неколико кБ до ограничења од 256 МБ.

Ако вас занима одговарајући код у хексадецималном облику за врсте послатих порука су:

порука Код
Цоннецт 0x10
ЦОННАЦК 0x20
ОБЈАВИ 0x30
ПУБАЦК 0x40
ПУБРЕЦ 0x50
ПУБРЕЛ 0x60
ПУБЦОМП 0x70
ПРЕТПЛАТИТЕ СЕ 0x80
СУБАЦК 0x90
УНСУСЦРИБЕ 0кА0
УНСУБАЦК 0кБ0
ПИНГРЕК 0кЦ =
ПИНГРЕСП 0кД0
ДИСЦОННЕЦТ КСНУМКСкЕКСНУМКС

Квалитет и сигурност комуникација

Још један важан детаљ МКТТ-ових порука је квалитет услуге или КоС, и сигурност. О томе ће зависити робусност комуникационог система у случају квара и његова сигурност.

Што се тиче његовог квалитета, може се утврдити 3 различитих нивоа:

  • КоС 0 (непризнавање)- Порука се шаље само једном, а у случају неуспеха не би била испоручена. Користи се када није критично.
  • КоС 1 (потврда): порука ће бити послата онолико пута колико је потребно како би се гарантовала испорука купцу. Лоша страна је та што је клијент могао да прими исту поруку неколико пута.
  • КоС 2 (осигуран)- Слично као горе, али гарантује се испорука само једном. Често се користи за критичније системе где је потребна већа поузданост.

С друге стране, што се тиче МКТТ сигурност, могу се користити разне мере како би се осигурала његова снага у том погледу. Као што сам већ раније поменуо, потврда идентитета корисничког имена и лозинке, као и многи други протоколи, може се осигурати помоћу ССЛ / ТЛС. Иако би многи ИоТ уређаји малих капацитета или ресурса могли да имају проблема са преоптерећењем посла када користе ову врсту сигурне комуникације ...

Из тог разлога, многи ИоТ уређаји који користе МКТТ користе лозинке и кориснике у текст равни, што би могло натерати некога да њушка мрежни саобраћај да би га врло лако привукао. А ако то није довољно, посредник се такође може конфигурисати да прихвати анонимне везе, што би сваком кориснику омогућило успостављање комуникације, што укључује већи ризик.

Коришћење МКТТ-а са Ардуином

Arduino UNO са МКТТ

Наравно да можете користите МКТТ протокол са Ардуином и друге развојне плоче, као и Рапсберри Пи итд. Да бисте то урадили, морате својој плочи Ардуино пружити могућност повезивања, ако је нема. Такође, библиотека Клијент Ардуино за МКТТ помоћи ће вам у овим задацима. Ова библиотека је компатибилна са:

Већ знате да можете преузети и инсталирати библиотеку у свој Ардуино ИДЕ помоћу команде: гит клон хттпс://гитхуб.цом/кноллеари/пубсубцлиент.гит

Чим коду за коришћење МКТТ у некој примени је истина да је то једноставно. На Фритзинговој слици можете видети плакету Arduino UNO којој је додата повезаност Ардуино Етхернет-ом и такође је повезана сензор влажности и температуре ДХТ22, мада је могло бити и било шта друго ...

Ок, уз то, за код који морате генерисати Ардуино ИДЕ Да бисте радили са МКТТ протоколом на Ардуину, то је тако једноставно:

  • у слати поруке МКТТ
#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>
#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT22

// Direccion MAC del adaptador Ethernet
byte mac[] = { 0xCE, 0xAB, 0x0E, 0x3F, 0xFE, 0xD4 };

// IP del servidor (broker)
IPAddress mqtt_server(192, 168, 1, 4);

// Topic o tema con el que se trabaja
const char* topicName = "test";

DHT dht(DHTPIN, DHTTYPE);
EthernetClient ethClient;
PubSubClient client(ethClient);

void setup()
{
  Serial.begin(9600);
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Fallo en Ethernet usando DHCP");
  }
// Puerto 1883 de comunicación
  client.setServer(mqtt_server, 1883);
  dht.begin();
}

void loop()
{
  if (!client.connected()) {
    Serial.print("Conectando ...\n");
    client.connect("Cliente Arduino");
  }
  else {
    // Envío de informacion del sensor de temperatura y humedad
    float temp = dht.readTemperature();
    char buffer[10];
    dtostrf(temp,0, 0, buffer);
    client.publish(topicName, buffer);
  }
  // Tiempo entre envíos en ms (cada 10 segundos)
  delay(10000);
}

  • у примање порука МКТТ вам треба само тањир Arduino UNO и веза са Ардуино Етхернет-ом или било којим другим елементом. Што се тиче кода, пример би био:
#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>

// Direccion MAC del adaptador Ethernet
byte mac[] = { 0xCE, 0xAB, 0x0E, 0x3F, 0xFE, 0xD4 };

// IP del servidor (broker)
IPAddress mqtt_server(192, 168, 1, 4);

// Topic o tema con el que trabajr
const char* topicName = "test";

EthernetClient ethClient;
PubSubClient client(ethClient);

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("El mensaje ha llegado [");
  Serial.print(topic);
  Serial.print("] ");
  int i=0;
  for (i=0;i<length;i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
}

void setup()
{
  Serial.begin(9600);
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Fallo en Ethernet al usar configuración DHCP");
  }
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback)
}

void loop()
{
  if (!client.connected()) {
      Serial.print("Conectando ...");
      if (client.connect("rece_arduino")) {
        Serial.println("conectado");
        client.subscribe(topicName);
      } else {
        delay(10000);
      }
  }
  // Cliente a la escucha
  client.loop();
}

Имајте на уму да морате променити ИП у одговарајућу за сервер, а такође морате променити МАЦ адресу мрежног адаптера Етхернет или оне коју користите, као и остатак кода ако га намеравате прилагодити другачији пројекат. Ово је само пример!

За више информација можете преузмите бесплатно нуестро ПДФ приручник са Ардуино ИДЕ курсом за започињање програмирања.


Будите први који ће коментарисати

Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.