TLS बनाम MQTT पर MQTT का प्रदर्शन


10

जबकि MQTT काफी बहुमुखी है, यह भी अपने आप में सुरक्षित नहीं है। यह डिजाइन द्वारा है।

स्टैनफोर्ड-क्लार्क के अनुसार, सुरक्षा को जानबूझकर प्रोटोकॉल से शुरू में छोड़ दिया गया था क्योंकि वह और Nipper जानते थे कि सुरक्षा को बढ़ावा देने के लिए MQTT के चारों ओर सुरक्षा तंत्र को लपेटा जा सकता है। इसके अलावा, स्टैनफोर्ड-क्लार्क ने कहा कि मौसम के स्टेशन से हवा की गति के डेटा जैसे एमक्यूटीटी के माध्यम से भेजी गई जानकारी, विशेष रूप से सुरक्षित करने की आवश्यकता नहीं थी। - स्रोत

उन सुरक्षा तंत्रों में से एक जिन्हें MQTT के चारों ओर लपेटा जा सकता है, वे TLS हैं। आजकल ज्यादातर ब्रोकर इसका समर्थन करते हैं। बेशक कोई रैपिंग उपाय ओवरहेड पैदा करता है। यह ओवरहेड नगण्य हो सकता है (cf. HiveMQ ब्लॉग )।

वर्तमान में मैं अपनी परियोजना के लिए MQTT की व्यवहार्यता का मूल्यांकन करने के लिए TLS बनाम सादे MQTT पर MQTT के प्रदर्शन हानि के बारे में जानकारी (उम्मीद है कि एक आधिकारिक स्रोत) की तलाश कर रहा हूं। खासकर जब प्रौद्योगिकी बड़ी संख्या में ग्राहकों के साथ जुड़ती है।

क्या टीएलएस पर एमक्यूटीटी के प्रदर्शन पर वैध डेटा प्राप्त करने के लिए प्रोटोटाइप के अलावा कोई रास्ता है?


1
इस उत्तर को एसओ पर देखें: stackoverflow.com/questions/1615882/…
फ्रेजर

जवाबों:


10

एक बार कनेक्शन सेट हो जाने के बाद , मैं अंतर को बहुत महत्वपूर्ण होने की उम्मीद नहीं करूंगा ।

सामान्य रूप से टीएलएस का उत्पादन करने वाले ओवरहेड का टूटना यहां पाया जा सकता है । महत्वपूर्ण बिट्स हैं:

  • एक नया टीएलएस सत्र स्थापित करने के लिए ओवरहेड औसतन लगभग 6.5k बाइट्स आता है
  • मौजूदा टीएलएस सत्र को फिर से शुरू करने के लिए ओवरहेड औसतन लगभग 330 बाइट्स आता है
  • एन्क्रिप्टेड डेटा का कुल ओवरहेड लगभग 40 बाइट्स (20 + 15 + 5) है
  • किसी वातावरण की बारीकियों को अधिक सटीक रूप से दर्शाने के लिए उपरोक्त गणनाओं को संशोधित करना आसान है, इसलिए इसे टीएलएस ओवरहेड के लिए एक आधार माना जाना चाहिए न कि प्रश्न के आधिकारिक उत्तर।

यह देखने लायक है कि इन आंकड़ों की गणना कैसे की गई है - आपको इस बात की अधिक समझ होनी चाहिए कि टीएलएस उस सभी के साथ कैसे काम करता है। जैसा कि अन्य उत्तरों में कहा गया है, रेडियो ट्रांसमिशन ऊर्जा के सबसे बड़े उपयोगों में से एक होने की संभावना है, जो अक्सर IoT में एक बाधा है, इसलिए एक बार सत्र की स्थापना के बाद, ओवरहेड बहुत महत्वपूर्ण नहीं है, खासकर यदि आपके संदेश हैं तुच्छ छोटा नहीं है।

जैसा कि लेख में HiveMQ ने नोट किया है कि TLS MQTT के प्रदर्शन को कैसे प्रभावित करता है? :

अच्छी खबर यह है, कि एक MQTT क्लाइंट को केवल प्रति सत्र एक बार कनेक्शन स्थापित करने की आवश्यकता होती है - HTTP जैसे प्रोटोकॉल के विपरीत, जिसे हर अनुरोध पर एक कनेक्शन को फिर से स्थापित करने की आवश्यकता होती है (यदि कोई रख-रखाव नहीं किया जाता है या अन्य तकनीकों जैसे लंबे समय तक मतदान जारी है)। एक बार ब्रोकर से कनेक्ट हो जाने के बाद, क्लाइंट बिना किसी अतिरिक्त हैंडशेक ओवरहेड के संदेश भेज और प्राप्त कर सकता है। टीएलएस के उपयोग के लिए अतिरिक्त बफ़र्स आवंटित करने की आवश्यकता होती है, इसलिए रैम की खपत भी एमक्यूटीटी कनेक्शन के अनुसार थोड़ी अधिक होती है।

जब वे 50,000 क्लाइंट कनेक्ट करते हैं, तो वे ब्रोकर पर सीपीयू उपयोग का एक ग्राफ भी प्रदान करते हैं:

CPU उपयोग की छवि

छवि स्रोत: HiveMQ (ऊपर दिए गए लेख देखें)

टिप्पणी है कि यह लगभग निश्चित रूप से है नहीं विशिष्ट उपयोग पैटर्न, लेकिन डेटा फिर भी दिलचस्प है। जैसा कि आप देख सकते हैं, एक बड़ा ओवरहेड है जबकि हैंडशेक प्रगति पर हैं, लेकिन उसके बाद, सीपीयू ओवरहेड लगभग समान है। मैं क्लाइंट पर एक समान बात की उम्मीद करूंगा।

फिर भी, यहाँ सामान्य सलाह सही है: एक वंचित बेंचमार्क आपको वह जानकारी नहीं देगा जिसकी आपको वास्तव में आवश्यकता है; यह जानने के लिए कि टीएलएस आपके उपयोग के मामले को कैसे प्रभावित करेगा, आपको इसे ... अपने उपयोग के मामले में परीक्षण करने की आवश्यकता है !


7

वास्तव में नहीं, आपकी बहुत अधिक अपनी विशिष्ट स्थिति का परीक्षण और बेंचमार्क करना होगा। प्रदर्शन पर सीधा प्रभाव पड़ने की संभावना है।

  • आप किस क्लाइंट / ब्रोकर हार्डवेयर का उपयोग कर रहे हैं, क्या इसमें क्रिप्टो के लिए कोई हार्डवेयर त्वरण है?
  • आपके द्वारा भेजे जा रहे पेलोड का आकार क्या है?
  • आपके एप्लिकेशन के लिए कनेक्ट / पुनः कनेक्ट प्रोफ़ाइल क्या है?

4

उपयोगी प्रदर्शन का अनुमान लगाना कठिन है। यह संभावना है कि आपके एप्लिकेशन को कम से कम कुछ ट्रैफ़िक के लिए एन्क्रिप्शन की आवश्यकता होगी, इसलिए ट्रैफ़िक के इस सबसेट के लिए सुरक्षा उपलब्ध कराने के लिए कोई कार्यान्वयन लागत होने की संभावना नहीं है।

एक ऊर्जा-विवश कार्यान्वयन के लिए, प्रसारण वायरलेस होने की संभावना है। यहां तक ​​कि एक उपयुक्त रेडियो चैनल के साथ, चैनल स्थापित करने और कनेक्शन को बातचीत करने की ऊर्जा लागत एक सरल संदेश को एन्क्रिप्ट करने के लिए प्रसंस्करण लागत को पछाड़ने की संभावना है - खासकर अगर कुछ संदेशों को एन्क्रिप्शन की आवश्यकता होती है।

यदि आपके संदेश गैर-तुच्छ हैं, तो नेटवर्क ट्रैफ़िक को कम करने के लिए समापन बिंदु पर अधिक प्रसंस्करण करने में कुछ औचित्य हो सकता है।

अंत में, ऐसे परिदृश्य में जहां चैनल बहुत अधिक लोड होता है, प्रदर्शन उतना अच्छा नहीं हो सकता जितना आप अपने पूर्ण सिस्टम के अधिक तुच्छ कार्यान्वयन का विश्लेषण करने से अनुमान लगाते हैं।

यहां तक ​​कि अगर आप अपने द्वारा मांगे गए डेटा के लिए एक संदर्भ पा सकते हैं, तो इसके आधार पर डिजाइन निर्णयों के लिए पर्याप्त प्रश्न का उत्तर देने की संभावना नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.