Kinerja MQTT dibandingkan TLS vs MQTT


10

Meskipun MQTT cukup fleksibel, MQTT juga tidak aman. Ini dengan desain.

Menurut Stanford-Clark, keamanan secara sadar ditinggalkan di luar protokol pada awalnya karena ia dan Nipper tahu mekanisme keamanan dapat melilit MQTT untuk meningkatkan keamanan. Juga, pada saat itu, Stanford-Clark mengatakan informasi yang dikirim melalui MQTT, seperti data kecepatan angin dari stasiun cuaca, tidak terlalu membutuhkan pengamanan. - Sumber

Salah satu mekanisme keamanan yang dapat melilit MQTT adalah TLS. Sebagian besar broker mendukung ini saat ini. Tentu saja ukuran pembungkus menghasilkan overhead. Overhead ini mungkin dapat diabaikan (lih. HiveMQ blog ).

Saat ini saya sedang mencari informasi (semoga sumber yang resmi) tentang kehilangan kinerja MQTT dibandingkan TLS vs MQTT biasa untuk mengevaluasi kelayakan MQTT untuk proyek saya. Terutama ketika teknologi tersebut berkembang menjadi sejumlah besar pelanggan.

Apakah ada cara selain membuat prototipe untuk mendapatkan data yang valid tentang kinerja MQTT melalui TLS?


1
Periksa jawaban ini di SO: stackoverflow.com/questions/1615882/…
Fraser

Jawaban:


10

Saya tidak akan berharap perbedaannya terlalu signifikan, setelah koneksi diatur .

Rincian overhead yang menghasilkan TLS secara umum dapat ditemukan di sini . Bit penting adalah:

  • Total overhead untuk membangun sesi TLS baru rata-rata sekitar 6.5k byte
  • Total overhead untuk melanjutkan sesi TLS yang ada mencapai rata-rata 330 byte
  • Total overhead dari data terenkripsi adalah sekitar 40 byte (20 + 15 + 5)
  • Mudah untuk memodifikasi perhitungan di atas untuk mencerminkan lebih spesifik dari suatu lingkungan, jadi ini harus dianggap sebagai dasar untuk overhead TLS dan bukan jawaban otoritatif untuk pertanyaan yang diajukan.

Layak dibaca untuk melihat bagaimana angka-angka ini dihitung — Anda harus keluar dengan pemahaman yang lebih besar tentang bagaimana TLS bekerja dengan semua itu. Sebagaimana dicatat dalam jawaban lain, transmisi radio kemungkinan menjadi salah satu penggunaan energi terbesar, yang sering menjadi kendala dalam IoT, jadi setelah sesi ditetapkan, overhead tidak terlalu signifikan, terutama jika pesan Anda tidak sepele.

Seperti dicatat oleh HiveMQ dalam artikel Bagaimana TLS memengaruhi kinerja MQTT? :

Kabar baiknya adalah, bahwa klien MQTT hanya perlu membuat koneksi sekali per sesi - bertentangan dengan protokol seperti HTTP, yang perlu membangun kembali koneksi pada setiap permintaan (jika tidak ada keep-hidup digunakan atau teknik lain seperti Long Polling sudah tersedia). Setelah terhubung ke broker, klien dapat mengirim dan menerima pesan tanpa overhead jabat tangan tambahan. Penggunaan TLS perlu mengalokasikan buffer tambahan, sehingga konsumsi RAM juga sedikit lebih tinggi per koneksi MQTT.

Mereka juga menyediakan grafik pemanfaatan CPU pada broker ketika 50.000 klien terhubung:

Gambar pemanfaatan CPU

Sumber Gambar: HiveMQ (lihat artikel tertaut di atas)

Perhatikan bahwa ini hampir pasti bukan pola penggunaan yang umum, tetapi datanya tetap menarik. Seperti yang Anda lihat, ada overhead besar sementara jabat tangan sedang berlangsung, tetapi setelah itu, overhead CPU hampir identik. Saya mengharapkan hal serupa pada klien.

Namun, saran umum di sini benar: tolok ukur yang dibuat tidak akan memberi Anda informasi yang Anda butuhkan; untuk mengetahui bagaimana TLS akan memengaruhi use case Anda, Anda perlu mengujinya di ... use case Anda !


7

Tidak juga, Anda harus menguji dan membandingkan situasi spesifik Anda. Berikut ini kemungkinan akan berdampak langsung pada kinerja.

  • Perangkat keras klien / broker apa yang Anda gunakan, apakah ada akselerasi perangkat keras untuk crypto?
  • Berapa ukuran muatan yang Anda kirim?
  • Apa profil hubungkan / hubungkan kembali untuk aplikasi Anda?

4

Membuat perkiraan kinerja yang bermanfaat sulit. Kemungkinan aplikasi Anda akan memerlukan enkripsi untuk setidaknya sebagian dari lalu lintasnya, sehingga tidak ada biaya implementasi untuk membuat keamanan tersedia untuk subset lalu lintas ini.

Untuk implementasi yang dibatasi energi, transmisi cenderung nirkabel. Bahkan dengan saluran radio yang sesuai, biaya energi untuk mengatur saluran dan negosiasi koneksi kemungkinan akan lebih besar daripada biaya pemrosesan untuk mengenkripsi pesan sederhana - terutama jika beberapa pesan memerlukan enkripsi.

Jika pesan Anda tidak sepele, mungkin ada beberapa pembenaran dalam melakukan lebih banyak pemrosesan di titik akhir untuk mengurangi lalu lintas jaringan.

Akhirnya, dalam skenario di mana saluran sangat dimuat, kinerja mungkin tidak sebagus yang Anda perkirakan dari menganalisis implementasi yang lebih sepele dari sistem lengkap Anda.

Bahkan jika Anda dapat menemukan referensi untuk data yang Anda cari, sepertinya tidak cukup untuk menjawab pertanyaan yang cukup untuk dijadikan dasar keputusan desain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.