MQTT Nedir ?

 

MQTT (Message Queuing Telemetry Transport)  kaynakları kısıtlı ağ istemcilerine uzaktan izlenmesi veya uzaktan kontrol edilmesi (telemetri)  gibi bilgileri düşük bant genişliğine sahip ortamlarda dağıtmanın basit bir yolunu sağlayan hafif bir açık haberleşme veya mesajlaşma protokolüdür. Bant genişliği ve CPU sınırlamalarına uyum sağlamak için düşük maliyetli bir protokol olarak oluşturulan MQTT, iletişim için güvenilir ve etkili bir yol sağlayabildiği gömülü bir ortamda çalışacak şekilde tasarlanmıştır. MQTT protokolünün bu yapısı sayesinde ‘’makineden makineye’’ (M2M) veya ‘’nesnelerin interneti (IoT) dünyası için ideal hale getirmektedir.  MQTT Nedir MQTT Nedir MQTT Nedir MQTT Nedir MQTT Nedir MQTT Nedir MQTT Nedir MQTT Nedir MQTT Nedir MQTT Nedir MQTT Nedir

 

MQTT Nedir

 

MQTT Çalışma Prensibi

 

Kullanılabilir bant genişliğini en üst düzeye çıkarmayı amaçlayan MQTT’ nin yayınla/abone ol (pub/sub) iletişim modeli, bir uç nokta ile doğrudan iletişim kuran geleneksel istemci-sunucu mimarisine bir alternatiftir. Buna karşılık, pub/sub modelinde , bir mesaj gönderen istemci (yayıncı), istemciden veya mesajları alan istemcilerden (veya abonelerden) ayrılır. Ne yayıncılar ne de aboneler birbirleriyle doğrudan iletişim kurduğundan, üçüncü taraflar – aracılar – aralarındaki bağlantılarla ilgilenir.

MQTT istemcileri, yayıncıları ve aboneleri, istemcinin mesaj yayınlayıp yayınlamadığını veya mesaj almak için abone olup olmadığını ifade eden terimleri içerir. Bu iki işlev aynı MQTT istemcisinde uygulanabilir. Bir aygıt (veya istemci) bir sunucuya (veya aracıya) veri göndermek istediğinde buna yayın adı verilir. İşlem tersine çevrildiğinde buna abone denir. Pub/sub modeli altında, birden fazla müşteri bir Broker’ a bağlanabilir ve ilgilendikleri konulara abone olabilir.

Abone olan bir istemciden bir aracıya bağlantı koparsa, aracı iletileri ara belleğe alır ve tekrar çevrimiçi olduğunda bunları aboneye gönderir. Yayımlama istemcisinden aracıya olan bağlantı haber verilmeksizin kesilirse, aracı bağlantıyı kapatabilir ve yayıncıdan gelen yönergelerle birlikte abonelere önbelleğe alınmış bir ileti gönderebilir.

MQTT – Yayınla/Abone Ol

İlk konsept,  yayınla ve abone ol  sistemidir. Yayınla ve abone ol sisteminde, bir cihaz bir konu hakkında mesaj yayınlayabilir veya mesaj almak için belirli bir konuya abone olabilir.

 

MQTT Nedir

 

  • Örneğin Cihaz 1 bir konuda yayın yapıyor.
  • Cihaz 2, cihaz 1’in yayınladığı aynı konuya abonedir.
  • Böylece cihaz 2 mesajı alır.

MQTT – Mesajlar

Mesajlar, cihazlarınız arasında değiş tokuş etmek istediğiniz bilgilerdir. İster komut ister veri olsun.

MQTT – Konular

Bir diğer önemli kavram ise konulardır. Konular, gelen mesajlara ilgi kaydetme şekliniz veya mesajı nerede yayınlamak istediğinizi nasıl belirlediğinizdir.

MQTT – Broker

MQTT aracısı, bir bilgisayarda çalışan (şirket içinde veya bulutta çalışan) bir yazılımdır ve kendi kendine oluşturulabilir veya üçüncü bir tarafça barındırılabilir. Hem açık kaynak hem de tescilli uygulamalarda mevcuttur.

Aracı bir postane gibi davranır, MQTT hedeflenen alıcının adresini kullanmaz, ancak “Konu” adlı konu satırını kullanır ve bu mesajın bir kopyasını isteyen herkes o konuya abone olur. Birden çok istemci, mesajı tek bir aracıdan alabilir (birden çoğa yetenek). Benzer şekilde, birden çok yayıncı, konuları tek bir aboneye (birden çok kişiye) yayınlayabilir.

Her müşteri hem yayınlayarak hem de abone olarak veri üretebilir ve alabilir, yani cihazlar sensör verilerini yayınlayabilir ve yine de konfigürasyon bilgilerini veya kontrol komutlarını alabilir (MQTT iki yönlü bir iletişim protokolüdür). Bu, hem veri paylaşımına hem de cihazları yönetmeye ve kontrol etmeye yardımcı olur.

MQTT aracı mimarisi ile cihazlar ve uygulama birbirinden ayrılır ve daha güvenli hale gelir. MQTT, kullanıcı adı, parola korumalı bağlantılar ve istemcilerin sunucununkiyle eşleşen bir sertifika dosyası sağlamasını gerektiren isteğe bağlı sertifikalarla Aktarım Katmanı Güvenliği (TLS) şifrelemesini kullanır . İstemciler birbirlerinin IP adresinden habersizdir.

Tek bir arıza kaynağı olması durumunda, aracı yazılımı ve istemciler, Yedekli/otomatik yedekleme aracısına otomatik geçişe sahiptir. Yedekleme aracısı, istemcilerin yükünü yerinde, bulutta veya her ikisinin birleşiminde birden çok sunucuda paylaşacak şekilde de ayarlanabilir.

Aracı, Sparkplug gibi uyumlu özellikler için hem standart MQTT’yi hem de MQTT’yi destekleyebilir, aynı sunucuyla, aynı zamanda ve aynı güvenlik seviyeleriyle yapılabilir.

Aracı, konuya yeni abonelerin son değeri hemen alabilmesi için verileri tutulan mesajlar (veritabanı istemcisi ile abone olması gerekir) biçiminde depolayabilir.

Aracı, “kalıcı oturumlar” adı verilen aygıtlar açılıp kapanırken tüm oturum bilgilerini de takip eder.

MQTT brokerinin başlıca avantajları şunlardır:

  1. Savunmasız ve güvenli olmayan istemci bağlantılarını ortadan kaldırır
  2. Tek bir cihazdan binlerce cihaza kolayca ölçeklenebilir
  3. Güvenlik kimlik bilgileri ve sertifikalar dahil tüm istemci bağlantı durumlarını yönetir ve izler
  4. Güvenlikten ödün vermeden azaltılmış ağ yükü (hücresel veya uydu ağı)

 

MQTT Broker

 

Neden IoT’ de MQTT Protokolü Kullanılıyor?

 

Basitleştirmek için, bir IoT sistemi, birbiriyle iletişim kuran bağlı cihazlardan oluşan bir ağdır. MQTT bu konsepte çok iyi uyuyor. Hızlı tepki süresi olan hafif bir protokoldür. Cihaz sayısı ne olursa olsun cihazlar arasındaki etkileşimi verimli hale getirir.

MQTT IoT protokolü, kararsız bağlantılarda bile veri aktarabilir. Mesaj tesliminden sorumlu olan Hizmet Kalitesi (QoS) için üç seçenek sunar. Seçeneğin seçimi, veri kritikliğine ve bağlantı kararlılığına bağlıdır.

  • QoS 0 (varsayılan olarak ayarlanır): Bir yayıncı, garantili teslimat talep etmeden bir mesaj gönderir. Aktarılan bilgiler kritik olmadığında ve bağlantı kararlı olduğunda kullanabilirsiniz.
  • QoS 1 : Bir yayıncı, teslimat onayı alana kadar bir mesaj gönderir. Aktarılan bilgiler kritik olduğunda ve bağlantı sabit olmadığında kullanabilirsiniz. QoS 1, abonenin mesajı almasını sağlar.
  • QoS 2 : Bir yayıncı, garantili teslimat ile yalnızca bir kez mesaj gönderir. Aktarılan bilgiler kritik olduğunda ve bağlantı sabit olmadığında kullanabilirsiniz. QoS 2, abonenin mesajı kopyaları ve ek yükü olmadan yalnızca bir kez almasını sağlar.

MQTT, standart belgelere sahip açık bir protokoldür. C/C++, Java, JavaScript, Python ve diğer programlama dilleri için bir dizi hazır kitaplığa sahiptir. 

Açık kaynaklı MQTT kitaplıkları ve kamu aracıları, geliştirme maliyetlerini en aza indirir ve geliştirme sürecini hızlandırır. 

Ücretsiz olarak sunulan belgeler ve geniş bir geliştirici topluluğu, önceden hazırlanmış veya özel kitaplıklar ile MQTT protokolünün uygulanmasını her ortamda kolay ve mümkün kılar.

IoT cihazları için MQTT protokolünü dağıtmak için bir kitaplığa ve yerel sunucunuz olabilecek bir aracıya veya bulut tabanlı bir aracıya ihtiyacınız vardır. Dağıtım maliyeti, geliştirme araçları ve ortamının seçimine bağlı olacaktır.

 

MQTT’nin Avantajları ve Dezavantajları

 

MQTT protokol mimarisinin hafif özellikleri ve minimum ek yükü, düşük bant genişliği ile sorunsuz veri aktarımı sağlamaya ve CPU ve RAM üzerindeki yükü azaltmaya yardımcı olur. MQTT’nin rakip protokollere göre avantajları arasında şunlar bulunmaktadır:

  • hafif bir protokol olması nedeniyle verimli veri iletimi ve uygulanması hızlı;
  • minimize edilmiş veri paketleri nedeniyle düşük ağ kullanımı;
  • verimli veri dağıtımı;
  • uzaktan algılama ve kontrolün başarılı bir şekilde uygulanması;
  • hızlı, verimli mesaj teslimi;
  • bağlı cihazlar için iyi olan az miktarda güç kullanır; ve
  • ağ bant genişliğini optimize eder.

 

MQTT’ nin dezavantajları şunlardır;

  • MQTT, Kısıtlı Uygulama Protokolü’ne ( CoAP ) kıyasla daha yavaş iletim döngülerine sahiptir .
  • MQTT’nin kaynak keşfi esnek konu aboneliği üzerinde çalışırken, CoAP sabit bir kaynak keşif sistemi kullanır.
  • MQTT şifrelenmemiş. Bunun yerine, güvenlik şifrelemesi için TLS/SSL (Aktarım Katmanı Güvenliği/Güvenli Yuva Katmanı) kullanır.
  • Küresel olarak ölçeklenebilir bir MQTT ağı oluşturmak zordur.
  • Diğer MQTT zorlukları güvenlik, birlikte çalışabilirlik ve kimlik doğrulama ile ilgilidir.