MTU सेटिंग्स के साथ Ubuntu इंटरनेट स्पीड का अनुकूलन कैसे करें



समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें

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



अपनी मशीन के लिए सही MTU मान का पता लगाने का सबसे आसान तरीका एक टर्मिनल विंडो खोलना है। CTRL, ATL और T को दबाए रखें या शायद इसे एकता डैश से शुरू करें। यदि आप उबंटू सर्वर के साथ काम कर रहे हैं, तो आप सीएलआई इंटरफ़ेस के लिए डिफ़ॉल्ट होंगे, जिसमें कोई ग्राफिकल वातावरण नहीं होगा। एक बार जब आप टर्मिनल पर होते हैं, तो पिंग -s 1464 -c1 distrowatch.com में टाइप करें और आउटपुट की प्रतीक्षा करें। यदि आपको कुछ नहीं मिल रहा है, तो आपका नेटवर्किंग कनेक्शन सही तरीके से कॉन्फ़िगर नहीं किया गया है। यदि आपको उचित आउटपुट प्राप्त हुआ है, तो मान लें कि 1464 (1492) बाइट्स डेटा को पढ़ने वाले अनुभाग को देखें, जो आपको हेडर सूचना के 28 बाइट्स के साथ पैकेट भेजने का संकेत देता है।



विधि 1: पैकेट विखंडन के लिए पिंग आउटपुट की जांच करना

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



अपने सिस्टम के लिए सबसे अधिक अनुकूलित MTU खोजने के लिए, आप इस पिंग कमांड को एक छोटे पैकेट आकार के साथ चलाना चाहते हैं, और फिर समय के साथ इसे बढ़ा सकते हैं जब तक कि यह टुकड़े करना शुरू न हो जाए जिसके बाद आप इसे अपना कटऑफ पॉइंट मानते हैं। ध्यान रखें कि MTU = पेलोड + 28, क्योंकि हेडर डेटा के लिए कुछ जगह होनी चाहिए। अब, यदि आप किसी टुकड़े के बिना आकार को बहुत बड़े स्तर तक बढ़ा सकते हैं, तो हो सकता है कि आपका नेटवर्क इंटरफ़ेस टुकड़ों को उत्पन्न करने की आवश्यकता के बिना बड़े पैकेट को संभालने में सक्षम हो। जब आप अंत में एक फ्रैग की आवश्यकता वाली चेतावनी देखते हैं, तो इसका मतलब है कि आपके द्वारा भेजे गए या उससे अधिक आकार वाले पेलोड के साथ भेजे गए किसी भी पैकेट को कई पैकेट के रूप में भेजा जाएगा। मान लें कि यदि आप बिना किसी चेतावनी के ping -s 2464 -c1 distrowatch.com आज़माते हैं, लेकिन ping -s 2465 -c1 distrowatch.com एक चेतावनी भेजता है, तो इसका मतलब है कि 2,464 + 28 सबसे बड़ा MTU है जो अपने TCP / IP कॉन्फ़िगरेशन को संभाल सकता है कई खंडित पैकेट भेजने से पहले। सटीक मान को इंगित करने में कुछ क्षण लग सकते हैं।



एक बार जब आप कई बार पिंग कमांड चलाने से पहले एक मूल्य को ध्यान में रखते हैं, तो आपको चलाने की आवश्यकता होगी सूद इफकोफिग ज्ञात नेटवर्क इंटरफेस की एक सूची खोजने के लिए। उबंटू और उसके डेरिवेटिव ने रूट खाते को बाहर कर दिया है, लेकिन हमने अपने उदाहरणों के लिए सुडो बैश द्वारा बनाए गए शेल से संचालित किया। इसकी सिफारिश की गई है कि आप व्यक्तिगत रूप से सूडो के साथ प्रत्येक कमांड को केवल प्रस्तुत करें।

जैसे ही आपको सही उपकरण पता हो, कोशिश करें:

sudo ifconfig interfaceName आदमी ####

इंटरफ़ेसनाम को उस नेटवर्क अडैप्टर के नाम से बदलें जिसके साथ आप काम कर रहे हैं, और फिर हेडर की जानकारी के लिए आपने जो आकार पाया है, उसके साथ #### को बदलें। आप यह देखने के लिए ifconfig चला सकते हैं कि आपके NIC के लिए डिफ़ॉल्ट MTU क्या था और इसे फिर से चलाने के लिए कई बार यह देखने के लिए कि क्या यह पिछले संस्करण इसे बदलता है। कुछ नेटवर्क इंटरफ़ेस एडेप्टर ने आपको इसे बदलने नहीं दिया। यदि ऐसा मामला है, तो आगे का दुर्भाग्य दुर्भाग्यपूर्ण होगा। यदि, हालांकि, यह काम किया है, तो आप वास्तव में इसे स्थायी बना सकते हैं। दौड़ने की कोशिश करो ifconfig | grep MTU यदि आपके पास कई कनेक्टर हैं, तो सभी मानों को खोजने के लिए, और फिर आप उन कनेक्टरों से मिलान कर सकते हैं जिनके साथ आप काम कर रहे हैं।

विधि 2: MTU अनुकूलन स्टिक बनाना

अब तक आपने अपने सिस्टम में कोई स्थायी परिवर्तन नहीं किया है। यदि आप रिबूट करते हैं, तो आप किसी भी बदलाव को मिटा देंगे, जो अच्छा है यदि आपने किसी तरह की गलती की है और पाते हैं कि आप किसी भी समय इंटरनेट से कनेक्ट नहीं हो सकते हैं। दूसरी ओर, यदि आपको अपने MTU का सही मूल्य नहीं मिला है, तो आपको एडिट करने की आवश्यकता होगी दस्तावेज़। यदि ऐसा कुछ होता है, तो इसकी प्रतिलिपि बनाने के लिए यह एक अच्छा समय है। प्रयत्न या ऐसा कुछ होने पर आपके पास केवल एक कॉपी है। यदि आप इसे ग्राफिक रूप से संपादित करना चाहते हैं, तो टाइप करें और अपना पासवर्ड डालें। यदि आप कुबंटू, जुबांटु या लुबंटू का उपयोग कर रहे हैं, तो आपको ग्राफिकल टेक्स्ट एडिटर के साथ gedit को बदलने की आवश्यकता होगी जो आपके उबंटू रेस्पिन उपयोग करता है। उदाहरण के लिए, Xubuntu, gedit के बजाय माउसपैड का उपयोग करता है। यदि आप Ubuntu सर्वर का उपयोग कर रहे हैं या केवल कमांड लाइन के साथ काम करना पसंद करते हैं, तो इसके बजाय टाइप करें यह मानते हुए कि आप मूल शेल का उपयोग नहीं कर रहे हैं।

आप इसे संपादित करने के लिए किस विधि का उपयोग करते हैं, इंटरफ़ेस का नाम ifconfig थूकने से पहले खोजें। मान लें कि आप अपनी मशीन पर पहले Wifi कनेक्टर को देख रहे थे, जिसे संभवतः wlan0 या कुछ इसी तरह का नाम दिया जाएगा। इस स्थिति में, कोड का एक स्निपेट ढूंढें, जो iface wlan0 inet static या कुछ समान के साथ शुरू होता है। आपका माइलेज अलग-अलग हो सकता है, लेकिन अगली पंक्ति में ###। ###। #। # # प्रारूप में एक आईपी पते के बाद पता पढ़ा जाएगा। यदि आप मूल IPv6 कनेक्शन पर हैं, तो इसे अलग स्वरूपित किया जा सकता है। आपके पास एक नेटमैस्क और गेटवे लाइन होगी, उसके बाद कुछ ऐसा होगा जो एक होस्ट नाम या कुछ समान सूची को सूचीबद्ध करता है। सबसे नीचे, आपके पास एक और पंक्ति है जो mtu और एक नंबर पढ़ती है। उस नंबर को ऑप्टिमाइज़ MTU मान से बदलें, दस्तावेज़ को सहेजें और फिर टेक्स्ट एडिटर से बाहर निकलें। आप यह सुनिश्चित करने के लिए सिस्टम को रिबूट करना चाहते हैं कि उसने काम किया है।

कई रिबूट के बाद सब कुछ ठीक होना चाहिए, फिर अपने ~ / दस्तावेज़ निर्देशिका में interfaces.bak फ़ाइल को हटा दें। आप इसके बजाय sudo mv का उपयोग कर सकते हैं और फिर

अगर इस प्रक्रिया में कुछ भी गड़बड़ा गया।

विधि 3: TCP प्राप्त विंडो (RWIN) सेटिंग्स का संपादन

उबंटू डेटा की सबसे बड़ी राशि को संदर्भित करता है जिसे एक मेजबान स्वीकार करता है इससे पहले कि वह आरडब्ल्यूआईएन मूल्य के रूप में प्रेषक को स्वीकार करता है। यदि आप 30 एमबी की फ़ाइल डाउनलोड करते हैं, तो दूरस्थ सर्वर वास्तव में आपको तुरंत डेटा का 30 एमबी ब्लॉक नहीं भेजता है। जब आप फ़ाइल का अनुरोध करते हैं, तो आपका Ubuntu होस्ट एक विशिष्ट RWIN नंबर भेजता है, और तब सर्वर तब तक डेटा स्ट्रीमिंग करना शुरू कर देता है जब तक कि यह स्वीकार नहीं करता है कि आपके सिस्टम को डेटा मिला है। एक बार सर्वर इसे प्राप्त कर लेता है, यह एक और पावती की प्रतीक्षा करने से पहले अतिरिक्त ब्लॉक भेजना शुरू कर देता है।

विलंबता वह समय है जो दूरस्थ सर्वर से पैकेट को प्रसारित करने और प्राप्त करने में लेता है। कनेक्शन मूल्य इस मूल्य में योगदान करते हैं, लेकिन इसलिए कई अन्य देरी करते हैं। पिंग कमांड राउंड-ट्रिप टाइम (RTT) नंबरों के संदर्भ में विलंबता की व्याख्या करेगा। DistroWatch के हमारे पिछले पिंग से आउटपुट को देखें। आपको एक पंक्ति मिलेगी जो समय = 134 एमएस को पढ़ती है, जो कि हमारे उबंटू मशीन से राउंड ट्रिप के लिए विकृत डॉट कॉम और फिर से वापस जाने के लिए पैकेट के लिए कितना समय लेती है। हम 1,492-बाइट पैकेट भेज रहे थे, इसलिए 134 एमएस में हम कुल हस्तांतरण की गति का पता लगाने के लिए एक सूत्र की गणना कर सकते हैं:

1,492 / .134 सेकंड = 11,134.328 बाइट्स / सेकंड, जो लगभग 10.88 बाइनरी किलोबाइट्स प्रति सेकंड निकलता है। यह समग्र रूप से धीमा है, यही वजह है कि RWIN आपको व्यक्तिगत रूप से भेजे गए प्रत्येक पैकेट को स्वीकार करने से रोकने के लिए जगह में है।

Ubuntu में RWIN सेटिंग्स MTU सेटिंग्स से अलग हैं। इस सूत्र के साथ अपने इंटरनेट कनेक्शन के लिए बैंडविड्थ विलंब उत्पाद (BDP) की गणना करें:

(कुल अधिकतम बैंडविड्थ आपके इंटरनेट कनेक्शन को बाइट्स प्रति सेकंड में आपूर्ति करनी चाहिए) (सेकंड में आरटीटी) = बीडीपी

TCP पैकेट का आकार RWIN को प्रभावित नहीं करता है, लेकिन पैकेट आकार स्वयं विधि 1 में चयनित मान से प्रभावित होता है। RWIN से संबंधित कर्नेल चर खोजने के लिए इस कमांड का उपयोग करें:

कृपया ध्यान रखें कि _mem के बाद एक स्थान है, लेकिन उद्धृत पाठ में कहीं और नहीं है। आपको कई मान वापस मिल जाएंगे। जिन्हें जरूरत है net.ipv4.tcp_rmem, net.ipv4.tcp_wmem और net.ipv4.tcp_mem । इन मूल्यों के बाद की संख्या प्रत्येक के लिए न्यूनतम, डिफ़ॉल्ट और अधिकतम मूल्यों का प्रतिनिधित्व करती है। वे प्राप्त विंडो मेमोरी वेक्टर का प्रतिनिधित्व करते हैं, वेक्टर और टीसीपी स्टैक वेक्टर भेजते हैं। यदि आप उबंटू काइलिन चला रहे हैं, तो आपके पास अतिरिक्त लोगों की एक लंबी सूची हो सकती है। आप इनमें से किसी भी अतिरिक्त मान को सुरक्षित रूप से अनदेखा कर सकते हैं। काइलिन के कुछ उपयोगकर्ता अन्य लिपियों में चित्रित किए गए कुछ मूल्यों को भी देख सकते हैं, लेकिन एक बार और इन लाइनों के लिए देखें।

उबंटू में RWIN वैरिएबल नहीं है, लेकिन net.ipv4.tcp_rmem करीब है। ये चर स्मृति उपयोग को नियंत्रित करते हैं न कि केवल टीसीपी आकार को। वे बड़े सॉकर में डेटा सॉकेट संरचनाओं और छोटे पैकेटों द्वारा खाए गए मेमोरी को शामिल करते हैं। यदि आप इन मानों को अनुकूलित करना चाहते हैं, तो विधि 1 में निर्धारित अधिकतम आकार के पैकेट को किसी अन्य दूरस्थ सर्वर पर भेजें। शीर्ष लेख की जानकारी के लिए 28 बाइट घटाते हुए, फिर से 1,492-बाइट डिफ़ॉल्ट का उपयोग करें, लेकिन याद रखें कि आपके पास एक अलग मूल्य हो सकता है। अतिरिक्त RTT डेटा प्राप्त करने के लिए कमांड पिंग -s 1464 -c5 distrowatch.com का उपयोग करें।

आप इस परीक्षण को दिन और रात के अलग-अलग समय में एक से अधिक बार चलाना चाहते हैं। आरटीटी कितना भिन्न होता है, यह देखने के लिए कुछ अन्य दूरस्थ सर्वरों को भी देखें। चूँकि हमने हर बार औसतन 130 से अधिक एमएस की कोशिश की, इसलिए हम अपने बीडीपी का पता लगाने के लिए सूत्र का उपयोग कर सकते हैं। मान लें कि आप बहुत सामान्य 6 Mbit / second कनेक्शन पर हैं। बीडीपी होगा:

(6,000,000 बिट्स / सेक) ((133 सेकंड)) * (1 बाइट / 8 बिट्स) = 99,750 बाइट्स

इसका मतलब है कि डिफ़ॉल्ट net.ipv4.tcp_rmem मान लगभग 100,000 के आसपास होना चाहिए। यदि आप डरते हैं कि आप आरटीटी को आधे से एक सेकंड के लिए भी खराब कर सकते हैं, तो इसे और भी अधिक सेट कर सकते हैं। Net.ipv4.tcp_rmem और net.ipv4.tcp_wmem में पाए गए सभी मानों को समान रूप से सेट करने की आवश्यकता है, क्योंकि पैकेट का प्रसारण और रिसेप्शन एक ही इंटरनेट कनेक्शन पर होता है। आप आम तौर पर net.ipv4.tcp_mem को net.ipv4.tcp_wmem और net.ipv4.tcp_rmem द्वारा उपयोग किए जाने वाले समान मान पर सेट करना चाहते हैं क्योंकि यह पहला चर TCP लेनदेन के लिए कुल बफ़र मेमोरी आकार सेट है।

आदेश जारी करें और देखें कि क्या ये दोनों सेटिंग्स 0 या 1 पर सेट हैं, जो बंद या चालू होने की स्थिति को इंगित करता है।

Net.ipv4.tcp_no_metrics_save को 1 पर सेट करना लिनक्स कर्नेल को net.ipv4.tcp_rmem और net.ipv4.tcp_wm के बीच डायनामिक मानों को डायनामिक रूप से अनुकूलित करने के लिए मजबूर करेगा। जब net.ipv4.tcp_moderate_rcvbuf सक्षम किया जाता है, तो यह बाद की कनेक्टिविटी को प्रभावित करने से भीड़ को रोकता है। कोई भी स्थायी परिवर्तन करने से पहले, अपने माप पर एक हैंडल सुनिश्चित करने के लिए http://www.speedtest.net या http://www.bing.com/search?q=speed+test के माध्यम से स्पीड चेक करें।

अपने गणना किए गए मानों के साथ चर को अस्थायी रूप से बदलें। अपने गणना किए गए योगों के साथ # को प्रतिस्थापित करना सुनिश्चित करें।

sudo sysctl -w net.ipv4.tcp_rmem = '#### ##### #####' 'net.ipv4.tcp_wmem =' #### ########## ' net.ipv4.tcp_mem = '#### #### ######' 'net.ipv4.tcp_no_metrics_save = 1 net.ipv4.tcp_moderate_rcvbuf = 1

यह देखने के लिए कि गति में सुधार हुआ है या नहीं, और फिर से अपनी कमांड को फिर से शुरू करें और फिर से कनेक्ट करें। याद रखें कि आप अंतिम उपयोग की गई कमांड को दोहराने के लिए अपने टर्मिनल में ऊपर की ओर धक्का दे सकते हैं। एक बार जब आपको उपयुक्त मान मिल जाएं, तो खोलें उसके साथ gksu या sudo मेथड 1 से टेक्स्ट एडिटर कमांड, और पंक्तियों को निम्नलिखित रूप में पढ़ने के लिए संपादित करें, एक बार अपने गणना मूल्यों के साथ #s की जगह। आप निश्चित रूप से भी बैकअप करना चाहते हैं जिस तरह से आप गलती करते हैं, ठीक उसी तरह से भाग एक में दर्ज करें। यदि आपने एक बना दिया है, तो आप उसी तरह से भी बहाल कर सकते हैं।

net.ipv4.tcp_rmem = #### ##### ######

net.ipv4.tcp_wmem = #### ##### ######

net.ipv4.tcp_mem = #### ##### ######

net.ipv4.tcp_no_metrics_save = 1

net.ipv4.tcp_moderate_rcvbuf = 1

यह सुनिश्चित करने के बाद कि सब कुछ ठीक है, इसे सहेज लें। निम्नलिखित आदेश जारी करें:

sudo sysctl -p

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

8 मिनट पढ़े