Haberleşme Protokollerinde Endüstri 4.0 Devrimi | MQTT

Endüstri devrimiyle birlikte adını sıkça duyduğumuz Nesnelerin İnterneti, hayatımıza MQTT terimini sokmuştur.  “Message Queuing Telemetry Transport” kavramının kısaltması olan MQQT, yayınlama ve abone olma esasına dayanan bir telemetri mesaj protokolüdür. Bu protokol makineler arasındaki iletişimi sağlar. Bu nedenle de Internet of Things (IoT)’de çok önemli bir role sahiptir. Bu yazımızda sizler için MQTT protokolünü ve kullanım alanlarını ayrıntılı bir biçimde inceledik.

27

MQTT (Message Queuing Telemetry Transport), özet kısmında da açıklandığı gibi yayınlama ve abone olma mantığına dayanan telemetri mesajlaşma protokolüdür. TCP/IP üzerinden mesaj yayınlayıp almayı sağlar ve oldukça hafif bir protokoldür. Hafif protokol olması diğer benzer protokollerden ayıran en önemli özelliklerinden biridir.

 

MQTT kısaca buluttan kontrol ve gözlenmeye ihtiyacı olan küçük cihazlar için network oluşturmaya imkan sağlayan protokoldür. MQTT, nadiren rastlanılan bant genişliği kısıtlamalarından ya da güvensiz bağlantılardan dolayı oluşan gecikmelerin yaşanıldığı kablosuz ağlar için iyi bir seçimdir. Abone olan birimden broker (aracı) birimine olan bağlantı yapılmalı ve broker, abone birim online olduğunda bu mesajı ona tekrar iletir. Yayınlayan birimden broker birimine olan bağlantı ise kesilmelidir ve broker birimi, bağlantıyı kapatabilir ve yayıncıdan aldığı komutu abone birime iletir.

MQTT, 1999 yılında IBM firmasında çalışan Dr. Andy Standford-Clark ve Arcom firmasından Arlen Nipper tarafından yaratılmıştır. Uygun maliyetli, görüntülenecek aygıtların bağlantısı kolay olan bu protokol, ilk başlarda uzaktan erişim cihazlarıyla yağ ve gaz endüstrisinde kullanılmak üzere yapılmıştır.

 

MQTT Çalışma Prensibi

MQTT dört bölümden oluşur. Bunlar:

► Bağlantı,

► Kimlik Doğrulama,

► İletim,

► Sonlandırmadır.

Müşteri, broker birimine TCP/IP bağlantısı kurar. Bunu kurarken, broker’in işlemcisi tarafından belirlenmiş standart port veya özel port kullanır.

Standart portlar; şifresiz bağlantılar için 1883, şifreli bağlantılar için 8883’tür. Bu portlar SSL/TLS kullanırlar. SSL/TLS uyuştuğu sırada, müşteri birim sunucu sertifikasını doğrular ve kimlik doğrulama işlemi gerçekleşir. Müşteri birim ayrıca broker birimine müşteri sertifikası da açabilir.

 

MQTT protokolü kaynak kısıtlaması olan aygıtlar için bir protokol olmayı hedeflediği için, SSL/TLS her zaman seçenek olmayabilir ve bazı durumlarda istenmeyebilir. Böyle durumlarda, kimlik doğrulama müşteri biriminden sunucuya gelen şifrelenmemiş kullanıcı adı ve parola ile yapılır. Bu CONNECT/CONNACK paket sıralamasının bir parçasıdır. Bazı broker birimler, özellikle internette yayınlanan broker birimleri, kimliği belirli olmayan müşteri birimlerini kabul ederler. Böyle durumlarda kullanıcı adı ve şifresi bölümü boş bırakılır.

MQTT hafif protokol olarak anılır. Çünkü tüm mesajlar küçük kodlara sahiptir. Her mesaj sabit 2 Byte büyüklüğünde bir başlığa (header) sahiptir. Opsiyonel olarak değişken bir başlığa da sahip olabilirler. Mesajın taşıma kapasitesi bilgi ve “Quality of Service” seviyesi olarak 256 MB’a sınırlandırılmıştır. Quality of Service, kısaca QoS, ağ iletişimi hizmet kapasitesi olarak bilinmektedir. Ağ üzerindeki uygulamaları öncelendirerek zaman kaybını azaltmayı hedefleyen bir ağ servisidir. Bir ağ bağlantısı üzerinden çalışan bir  trafik veya program türüne öncelik veren çeşitli tekniklere karşılık gelir. 3 farklı Quality of Service seviyesi vardır. Bu seviyeler MQTT protokolünün içerikleri nasıl yöneteceğini belirler. Yüksek seviyeli QoS’ler daha güvenilir olsa da daha fazla gecikme yaşarlar ve bant genişliği ihtiyaçları vardır. Bu nedenle abone birimler kendileri ne almak istiyorlarsa ona göre yüksek QoS seviyelerini belirleyebilir.

 

Quality of Service (QoS) seviyelerinin üç bölümden oluştuğunu söylemiştik. Bunlardan ilki “Unacknowledged Service” yani onaylanmamış servistir. Bu QoS seviyesi PUBLISH (YAYIN) paket sıralamasını kullanır. Yayıncı, broker birimine bir kere mesajı yollar ve broker birimi de bu mesajı bir kez abone birime yollar. Mesajın ulaşıp ulaşmadığından emin olunacak bir mekanizma yoktur ve mesaj kaydedilmez. Bu seviye “QoS0” olarak da adlandırılır. Özetlemek gerekirse bu seviyede mesaj iletilmeyebilir ama minimum trafik vardır.

QoS seviyelerinden ikincisi ise “Acknowledged Service” yani onaylanmış servistir. Bu QoS seviyesi PUBLISH/PUBACK paket sıralamasını kullanır. Onaylı bir paket, içeriğin alındığını ve eğer alınmadıysa belirli zaman aralıklarında içeriğin tekrar yollandığını doğrular. Bu durumda abone birim aynı mesajdan birden çok kopya alabilir. Bu seviye “QoS1” olarak da adlandırılır. Özetlemek gerekirse bu seviyede mesaj kesin iletilir fakat mesaj birden fazla kez iletilebilir.

 

QoS seviyelerinden üçüncüsü “Assured Service” yani garanti servis denilebilir. Bu QoS seviyesi mesajı iki çift paket halinde iletir. İlk çift PUBLISH/PUBREC olarak adlandırılırken ikinci mesaj paketi çifti PUBREL/PUBCOMP olarak adlandırılır. Bu servis seviyesinde mesaj kesin iletilir. Tek seferde iletilen bu QoS seviyesinde maksimum trafik vardır.

 

MQTT protokolünün genel karakteristikleri şöyle sıralanabilir:

► Asenkron protokoldür.

► Broker temelli haberleşme mekanizmasına sahiptir.

► Topic’e dayalı adresleme vardır.

► Güvenlik olarak SSL/TLS destekler.

► En az kaynak kullanımını hedefler.

Milisaniyeler seviyesinde bir haberleşme sunar.

TCP/IP bağlantı türünü kullanır.

Varsayılan port 1883’tür.

TCP/IP protokolünün yazılabildiği Linux, Windows, Android, iOS, MacOS işletim sistemlerinde çalışır.

 

IoT ile MQTT İlişkisi

Nesnelerin ve cihazların; gömülü elektronikler, sensörler, yazılım ve ağ bağlantısı ile çevresindeki veriyi toplayıp, bu veriyi diğer nesneler ile değiş tokuş edebilmesidir.

Özetle aşağıda ki resimde yer alan bisiklet, anahtar, fırın, uçak, saat, otobüs, lamba, televizyon, telefon, araba, tren, saksı, müzik seti, vantilator aklınıza kullandığınız hangi eşya gelirse gelsin. Bunların internete bağlı olmaları ve birbirleri ile konuşabilmesidir.

Nesnelerin interneti ile beraberinde birçok konu geliyor. Bunlardan biri MQTT’dir. Bu kadar çok nesnenin verisi inanılmaz büyük olacak ve anlık olarak akacak. Bu sensör ve telemetri verilerini nasıl işleyeceğiz? İşte burada sorunun cevabı MQTT standardıdır. 

Birçok uzman görüş MQTT’nin nesnelerin interneti kavramında önemli rol oynayacağını söylemektedir. Protokol sürekli gelişiyor ve WebSoketleri destekliyor. Websoketleri, müşteri ve aracı (broker) birimleri arasında çift yönlü iletişim sağlayan bir başka protokoldür.

 

Yazar: Burcu Yelis / Volkan İtfaiye Elektronik Tasarım ve Yazılım Mühendisi

Kaynak:

internetofthingsagenda.techtarget.com

industrial-iot

electronicdesign

IBM