एमटीयू / एमआरयू मुद्दा वास्तव में क्या है, इसके कारण क्या है और इसे कैसे ठीक किया जाए?


13

आदेशों की तरह शामिल फांसी के मामलों, ठंड, धीमी गति से, अनुत्तरदायी इंटरनेट कनेक्शन कारण आम तौर पर अनुचित रूप से कई जल्दी से प्रस्तावित "जादू इलाज" के साथ "के रूप में MTU / MRU मुद्दा" की पहचान की है (आम तौर पर अवैध या स्थिति के लिए अयोग्य) में iptablesया ifconfig, और अन्य " TSS के लिए MTU को क्लैंप करें "मंत्र।

मैं जानना चाहता हूं कि एमटीयू / एमआरयू मुद्दा क्या है, यह कनेक्शन की गति और विलंबता को क्यों प्रभावित करता है, और यह कैसे ठीक हो जाता है (ज्ञात और आधुनिक तरीके), क्योंकि मैं जानना चाहता हूं कि समस्या के समाधान के लिए क्या करना है, आदि जादुई रूप से नहीं।

जवाबों:


23

यह थोड़ा जटिल प्रश्न है, इसलिए मैं मूल बातों के साथ शुरू करूंगा। मुझे माफ़ कर देना अगर आप यह सब पहले से ही जानते हैं।

MTU अधिकतम ट्रांसमिशन यूनिट है, जो डेटा का सबसे बड़ा पैकेट है जिसे कंप्यूटर इंटरफ़ेस भेजेगा। ईथरनेट के लिए डिफ़ॉल्ट 1500 बाइट्स है। ईथरनेट फ्रेम आमतौर पर 1522-1542 तक निर्भर करता है (आप जो गिनती करते हैं उस पर निर्भर करता है) और अतिरिक्त स्थान हेडर जानकारी के लिए 'आरक्षित' है।

विभिन्न कनेक्शनों में अलग-अलग क्षमताएं हो सकती हैं। यह इंटरनेट पर एक लिंक को चलाने के लिए बहुत सामान्य है जिसमें MTU है जो 1500 से थोड़ा छोटा है। यह आमतौर पर अतिरिक्त हेडर जानकारी को रोजगार देने वाले लिंक के कारण या 'मानक' ईथरनेट के अलावा किसी अन्य माध्यम का उपयोग करने के कारण होता है (अधिकांश इंटरनेट वास्तव में चलता है एटीएम / सोनेट कनेक्शन)। आम तौर पर ऐसे लिंक का सामना करने वाले ट्रैफ़िक को बस कई टुकड़ों में तोड़ दिया जाता है और साथ भेज दिया जाता है।

क्योंकि यह आम है, और उस समय आईपी का आविष्कार किया गया था, ICMP प्रोटोकॉल की जिम्मेदारी MTUs के साथ किसी भी समस्या को संवाद करने के लिए थी। यदि किसी कारण से किसी पैकेट को तोड़ा और आगे नहीं भेजा जा सकता है, तो ICMP का उपयोग समस्या को कंप्यूटर पर वापस भेजने के लिए किया जाता है। भेजने वाला कंप्यूटर उचित कार्रवाई करता है, सूचना को छोटे-छोटे खंडों में तोड़ता है और सभी लोग खुश होते हैं। इस पूरी प्रक्रिया को पर्दे के पीछे से संभाला जाता है। एक में ठीक से कार्य नेटवर्क यह MTU सेटिंग्स के साथ गंदगी के लिए आवश्यक नहीं है

उस अंतिम वाक्य पर क्वालिफायर किकर है। स्वचालित प्रक्रिया के टूटने के तीन सामान्य कारण हैं:

  1. ब्रोकन इम्प्लीमेंटेशन - कुछ बिंदु पर सॉफ्टवेयर बस सादा काम नहीं करता है जैसा कि इसे करना चाहिए। ऐसा कोई कानून नहीं है जिसमें कहा गया है कि लोगों को इंटरनेट के प्रासंगिक मानक का पालन करना होगा और ऐसी कंपनियां हैं जो मानकों को तोड़ती हैं, आमतौर पर सस्ते होने के लिए।
  2. प्रशासनिक रूप से अक्षम कार्यान्वयन - ऐसा होता है कि अच्छे इरादों वाले लोग सॉफ़्टवेयर तोड़ देते हैं क्योंकि वे वास्तव में नहीं जानते कि वे क्या कर रहे हैं। मैंने व्यक्तिगत रूप से लोगों को ICMP को ब्लॉक करते हुए देखा है क्योंकि उन्हें लगता है कि यह केवल ICMP.0.0 पैकेट के लिए उपयोग किया जाता है (गूंज, ज्यादातर लोग इसे pingउपयोगिता द्वारा जानते हैं )।
  3. इस 'सामान्य' प्रक्रिया के बाहर अन्य कारण पूरी तरह से। ज्यादातर आमतौर पर इसका मतलब है कि कनेक्शन इतना नुकसानदेह है कि केवल छोटे पैकेट इसे कनेक्शन के माध्यम से मज़बूती से बनाते हैं (या बड़े पैमाने पर रिट्रीट के बिना)। कुछ शुरुआती DSL और CableModems में इस तरह के मुद्दे थे। और इससे पहले, डायल-अप आमतौर पर इस तरह की समस्याएं थीं जब बहुत खराब गुणवत्ता वाली फोन लाइनों और आक्रामक लाइन कोडिंग का उपयोग किया जाता था।

तो, क्यों आम है: आलसी तकनीशियनों / कंपनियों। ऊपर उल्लिखित समस्याओं में से एक को ठीक करने की तुलना में एक छोटे एमटीयू के साथ कनेक्शन को बाधा देना लगभग सार्वभौमिक रूप से 'आसान' है। जैसा कि ऊपर कहा गया है कि हर किसी को इन दिनों एमटीयू के साथ गड़बड़ नहीं करनी चाहिए (एक अपवाद मैं जंबो फ्रेम को सक्षम करने के बारे में सोच सकता हूं, लेकिन वास्तव में हम यहां चर्चा नहीं कर रहे हैं)। किसी भी मामले में सही इलाज अंतर्निहित समस्या का पता लगाना और उसे ठीक करना है; बीमारी का इलाज करने का क्लासिक मामला लक्षण नहीं।

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

अपडेट: - --clamp-mss-to-pmtu
व्यक्तिगत रूप से मैं एमटीयू के बारे में कभी नहीं सोचा था; मैं मानता हूं कि मैं एक पूर्णतावादी हूं और जब इस तरह से बदसूरत हैक्स के साथ प्रस्तुत किया जाता है तो मैं हमेशा समस्या की जड़ ढूंढता हूं और इसे ठीक करने में सक्षम हूं। उस अंत तक iptablesविकल्प --clamp-mss-to-pmtuमेरे लिए अपरिचित है। जाहिरा तौर पर यह हैक का उपयोग करने के लिए, ज्यादातर स्थितियों में बेहद आम है, और बहुत ही अनुचित है। उपरोक्त समस्याओं में से किसी एक की भरपाई करना अभी भी एक हैक है। मैं iptables के लिए लिनक्स मैनपेज से उद्धरण (8):

इस लक्ष्य का उपयोग क्रिमिनल ब्रेइंडेड आईएसपी या सर्वर को दूर करने के लिए किया जाता है जो 'ICMP फ्रेग्मेंटेशन नीड' या 'ICMPv6 पैकेट टू बिग' पैकेट को ब्लॉक करते हैं।

मैनपेज की अपेक्षाकृत कठोर भाषा इस बात का संकेत होनी चाहिए कि आईएसपी और नेटवर्क द्वारा कितनी अवमानना ​​की गई है जो आरएफसी का पालन नहीं करते हैं (और प्रयास या क्षतिपूर्ति के लिए कोई प्रयास नहीं करते हैं)।

वीपीएन में यूडीपी के उपयोग के लिए बोलते हुए, वीपीएन के ओवरहेड को कम करने और सत्र की जानकारी को प्रबंधित करने के लिए मौजूदा समापन बिंदुओं को अनुमति देने के लिए यह सबसे आम हुआ करता था। वीपीएन के लिए यह जानने का कोई तरीका नहीं है कि सत्र को कैसे संभाला जाना चाहिए, ताकि यह कार्य वास्तव में उन अनुप्रयोगों के लिए सबसे अच्छा बचा हो जो जानते हैं।

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

अपडेट 2: - एमटीयू / आईसीएमपी समस्याओं का निदान करना
इसलिए आपको लगता है कि आपको एमटीयू / आईसीएमपी समस्या मिल गई है और यह सुनिश्चित होना चाहता है। इस प्रक्रिया के दो बुनियादी चरण हैं। निर्देश एक लिनक्स या बीएसडी बॉक्स के लिए हैं, लेकिन इसे केवल किसी भी ओएस के लिए अनुकूलित किया जा सकता है।

  1. ICMP पिंग लक्ष्य (जैसे Google.com, Yahoo.com, Facebook.com, आदि) चुनें। निम्नलिखित कमांड के साथ उन्हें पिंग करने का प्रयास करें ping -c 2 -s 1472 -D google.com:।
    • यह सफल होना चाहिए । यदि यह सफल नहीं होता है, तो इसे "पैकेट को खंडित करने की आवश्यकता है" लौटना चाहिए। यदि इनमें से कोई भी सत्य है, तो रोकें, आपका कनेक्शन ठीक काम करता है।
    • यदि यह कुछ भी वापस नहीं करता है, या "टाइमआउट" संदेश देता है तो आपको एक समस्या है।
  2. केवल टूटे हुए कनेक्शन के लिए: चलाएं traceroute -F google.com 1472। इससे आपको पता चलेगा कि कौन सी उम्मीद टूटी है। नोट: यह CPE के लिए बहुत ही सामान्य बात है कि वह ट्रेसरआउट अनुरोधों का जवाब नहीं देता है, इसलिए यदि पहले हॉप का जवाब नहीं आता है, तो चिंतित न हों।
    • जो भी जवाब देने के लिए आखिरी उम्मीद है वह आखिरी है जो आपके लिए सही तरीके से काम कर रही है।
    • यदि उनमें से कोई भी जवाब नहीं देता है तो यह आपकी सीपीई या डीएसएल लाइन है (यह पता लगाना जो थोड़ा मुश्किल हो सकता है, लेकिन आधुनिक होने पर यह लगभग कभी सीपीई नहीं है)। नोट: यदि आपका कनेक्शन ठीक काम करता है, तो ट्रेसरूट सफलतापूर्वक पूरा हो जाएगा।

एक ओर ध्यान दें: क्या ISP इन दिनों PPTP का उपयोग करता है ?! यह प्राचीन और बेकार अतीत से एक विस्फोट है। उन्हें कम से कम पीपीपीओई का उपयोग करना चाहिए; लेकिन बस मैक और सेगमेंट द्वारा मॉडेम को अधिकृत करना इतना आसान (आईएसपी और ग्राहक दोनों के लिए आसान) होगा।


आईपी ​​ध्वज don't fragmentका अस्तित्व पैकेट को छोटे पैकेटों में नहीं तोड़ पाने का एक कारण है।
खलीद

शानदार, लेकिन आप वीपीएन / टनलिंग एनकैप्सुलेशन के मुद्दे को संबोधित नहीं करते हैं जो "clamp_mss_to_mtu" ट्रिक को सही ठहराते हैं
ओलिवियर एस

@ ऑलिवर्स यूडीपी पर वीपीएन ट्रैफिक चलाने के लिए तर्क नहीं है? मैं अपने सिर के ऊपर हो सकता हूं, इसलिए कृपया मुझे सही करें अगर मैं गलत हूं
जोएल ई सलास

हाँ, निम्नलिखित चाल क्या है:# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
mbaitoff

@ क्रिस: आप कहते हैं कि आप निदान करना पसंद करते हैं और कारण को खत्म करना पसंद करते हैं, लक्षण नहीं। मैं MTU / MRU के मामले का निदान कैसे कर सकता हूं? उदाहरण के लिए, मेरे पास आईएसपी से एक कनेक्शन है pptpजिसके माध्यम से कभी-कभी फ्रीज होता है, और हर कोई मुझे उस iptablesचाल को खेलने के लिए कहता है । मैं समस्या की जांच कैसे कर सकता हूं और कनेक्शन श्रृंखला में "ब्रेइंडेड" एक की पहचान कर सकता हूं?
mbaitoff
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.