मुझे पता है कि यह बहुत व्यक्तिपरक है और कई प्रकार के चर पर निर्भर है, लेकिन मैं सोच रहा हूं कि जब किसी दिए गए सिस्टम पर पैकेट नुकसान का निदान करने की आवश्यकता होती है, तो अधिकांश लोग किस चरण से गुजरते हैं?
मुझे पता है कि यह बहुत व्यक्तिपरक है और कई प्रकार के चर पर निर्भर है, लेकिन मैं सोच रहा हूं कि जब किसी दिए गए सिस्टम पर पैकेट नुकसान का निदान करने की आवश्यकता होती है, तो अधिकांश लोग किस चरण से गुजरते हैं?
जवाबों:
मैं एक नेटवर्क इंजीनियर हूं, इसलिए मैं अपने दृष्टिकोण से इसका वर्णन करूंगा।
मेरे लिए, पैकेट नुकसान का निदान आमतौर पर "यह बहुत अच्छी तरह से काम नहीं कर रहा है" से शुरू होता है। वहां से, मैं आम तौर पर संचार के दोनों सिरों (आमतौर पर, एक कार्यालय में एक कार्य केंद्र और एक सर्वर कहीं) के पास किट खोजने की कोशिश करता हूं और संभव के रूप में दूसरे छोर के करीब पिंग करता हूं (आदर्श रूप से "रिमोट एंड-पॉइंट", लेकिन कभी-कभी ऐसे फ़ायरवॉल होते हैं जिनके माध्यम से मैं पिंग नहीं भेज सकता, इसलिए एक राउटर पर लैन इंटरफ़ेस के लिए समझौता करना होगा) और देखें कि क्या मुझे कोई नुकसान हो सकता है।
अगर मैं नुकसान देख सकता हूं, तो यह आमतौर पर "इन-बीच में पर्याप्त बैंडविड्थ" या "मुद्दों के साथ लिंक" का मामला नहीं है, इसलिए नेटवर्क के माध्यम से मार्ग ढूंढें और बीच से शुरू करें, जो आमतौर पर आपको एक छोर या दूसरे को देता है।
यदि मुझे नुकसान नहीं दिख रहा है, तो अगले दो चरण "अधिक पिंग भेजना" या "बड़े पिंग भेजना" हैं। यदि वह समस्या का संकेत नहीं देता है, तो यह समय समाप्त होने वाले बिंदुओं के बीच पूरे रास्ते के माध्यम से QoS नीतियों और इंटरफ़ेस आँकड़ों को देखना शुरू करने का समय है।
यदि वह कुछ भी नहीं पाता है, तो यह आपकी मान्यताओं पर सवाल उठाने का समय है, क्या आप वास्तव में पैकेट नुकसान से पीड़ित हैं। यह खोजने का एकमात्र निश्चित तरीका है कि दोनों सिरों पर एक साथ कब्जा करना है, या तो मेजबानों पर वायरशर्क (या समतुल्य) का उपयोग करके या नेटवर्क नल के माध्यम से स्निफर मशीनों (शायद वायरशर्क या समान का उपयोग करके) को हुक करके। फिर आता है दो पैकेट की तुलना करने का मजा ...
कभी-कभी, "पैकेट लॉस" के रूप में जो जिम्मेदार ठहराया जाता है, वह सर्वर साइड पर कुछ धीमा होता है (जैसे, कहते हैं, डेटाबेस को "उसी लैन पर" से "20 एमएस दूर" पर ले जाना और प्रश्नों का उपयोग करना जो एक भयानक बहुत आवश्यकता है फ्रंट-एंड और डेटाबेस के बीच आगे-पीछे।
लिनक्स सिस्टम के नजरिए से, मैं सबसे पहले नेटवर्क इंटरफेस पर पैकेट लॉस की तलाश करूंगा ethtool -S ethX
।
ज्यादातर समय, रिंग बफ़र को बढ़ाकर इसे ethtool -G ethX rx VALUE
हल करता है।
कभी-कभी व्यवधान संतुलन नहीं कर रहे हैं क्योंकि सिस्टम में असमानता वाली सेवा याद आ रही है, इसलिए यह देखने के लिए कि क्या यह सेवा चल रही है chkconfig
(ईएल) या update-rc
(देबंटु) में देखें। आप यह बता सकते हैं कि क्या व्यवधान संतुलन नहीं कर रहे हैं क्योंकि /proc/interrupts
सभी IRQ चैनलों को केवल कोर 0 दिखाएगा।
इसे विफल करने पर, आपको net.core.netdev_max_backlog
सिस्टम के कुछ गिगाबिट से अधिक गुजरने पर और शायद हो सकता है net.core.netdev_budget
।
यदि वह काम नहीं करता है, तो आप बीच-बीच में आने वाले तालमेल मूल्यों को तोड़ सकते हैं ethtool -C
।
यदि नेटवर्क इंटरफ़ेस पर कोई पैकेट ड्रॉप्स नहीं हैं, netstat -s
तो देखें और देखें कि सॉकेट बफ़र्स में कोई ड्रॉप्स हैं या नहीं, इन्हें " pruned from receive queue
" और " dropped from out-of-order queue
" जैसे आँकड़ों के साथ रिपोर्ट किया जाएगा ।
आप उपयुक्त प्रोटोकॉल के लिए डिफ़ॉल्ट और अधिकतम सॉकेट बफ़र्स बढ़ाने की कोशिश कर सकते हैं (जैसे: net.ipv4.tcp_rmem
टीसीपी के लिए)।
यदि एप्लिकेशन अपना स्वयं का सॉकेट बफर आकार सेट करता है, तो एप्लिकेशन को कॉन्फ़िगरेशन परिवर्तन की आवश्यकता हो सकती है। यदि आपके आवेदन में हार्ड-कोडेड सॉकेट बफर आकार है, तो अपने आवेदन विक्रेता से शिकायत करें।
व्यक्तिगत रूप से मैं NIC पर प्रोटोकॉल ऑफलोडिंग को नापसंद करता हूं (चेकसमिंग, सेगमेंटेशन ऑफलोड, लार्ज रिसीव ऑफलोड) क्योंकि यह मूल्य से अधिक परेशानी का कारण लगता है। का उपयोग ethtool -K
कर इन सेटिंग्स के साथ खेल शॉट के लायक हो सकता है।
अपने एनआईसी ( modinfo <drivername>
) के लिए मॉड्यूल विकल्पों को देखें क्योंकि आपको कुछ सुविधाओं को बदलने की आवश्यकता हो सकती है। एक उदाहरण देने के लिए जो मैंने सामना किया है, इंटेल के फ्लो डायरेक्टर का उपयोग करके एक सिस्टम पर जो एक बड़ी टीसीपी स्ट्रीम को संभालता है, शायद उस स्ट्रीम की दक्षता को नुकसान पहुंचाएगा, इसलिए एफडीआईआर को बंद कर दें।
इसके अलावा आप अपने विशिष्ट कार्यभार के लिए इस विशिष्ट प्रणाली को हाथ से जोड़ रहे हैं, जो मुझे लगता है कि आपके प्रश्न के दायरे से परे है।
अलग, फिर खत्म।
समस्या के साथ पथों का सबसे छोटा सबसेट खोजें। अलग-अलग संयोजनों और / या डिस्टिलिंग उपयोगकर्ता रिपोर्ट का परीक्षण करके ऐसा करें। बराबरी में कारक समय के लिए मत भूलना। हो सकता है कि यह केवल एक विशिष्ट नेटवर्क के सभी ट्रैफ़िक पर ही पैकेट हो, या हो सकता है कि केवल वायरलेस क्लाइंट ही पीड़ित हों। विभिन्न ट्रैफ़िक प्रकारों को ध्यान में रखें (पिंग्स पर दर सीमा)। इसका परीक्षण करने के लिए सबसे विश्वसनीय और आसानी से दोहराने योग्य तरीका खोजें।
फिर संभावित कारणों को खत्म करें। लिंक पर ट्रैफ़िक कम करें (अस्थायी रूप से), स्पेक्ट्रम से हस्तक्षेप स्रोतों को हटा दें, कुछ ग्राहकों को डिस्कनेक्ट करें। आखिरकार आपको समस्या का स्रोत मिल जाएगा।
आप कभी-कभी पैकेट डंप को देखकर या अनुमान लगाकर शॉर्टकट ले सकते हैं (यह हमेशा बिटटोरेंट है)। इसके अलावा, अपने प्रोफेसर सर्वरफॉल्ट भयानक है बताओ।
जब तक आप बड़े पिंग नहीं भेजते पिंग्स पैकेट नुकसान नहीं दिखा सकते हैं! मैंने अपने नेटवर्क पर पैकेट खो दिया था जो अदृश्य था जब तक मैंने अपना पिंग पैकेट आकार नहीं लिया।
विंडोज के लिए:
ping -n 30 -l <largevalue> <target>
के लिए largevalue
मैं 40960 इस्तेमाल किया (40k पैकेट)
के लिए target
मैं से पहले कुछ आईपी पते का इस्तेमाल कियाtracert google.com
(जो मेरा राउटर और केबल मॉडेम था)। श्रृंखला में नीचे दिए गए उपकरणों में से एक में बड़े पैकेट के लिए भयानक पैकेट नुकसान (> 60%) था लेकिन छोटे के लिए 0%। मैंने इसे फिर से शुरू करके इसे ठीक किया लेकिन यह एक केबल या कुछ आंतरिक भी हो सकता है जिसे बदलने की आवश्यकता है।