आप पैकेट नुकसान का निदान कैसे करते हैं?


27

मुझे पता है कि यह बहुत व्यक्तिपरक है और कई प्रकार के चर पर निर्भर है, लेकिन मैं सोच रहा हूं कि जब किसी दिए गए सिस्टम पर पैकेट नुकसान का निदान करने की आवश्यकता होती है, तो अधिकांश लोग किस चरण से गुजरते हैं?


"सिस्टम" क्या है? क्या आपका मतलब है कि आपके पास एक एकल सर्वर (या डेस्कटॉप) पैकेट नुकसान का सामना कर रहा है? या यह एक पूरे नेटवर्क खंड है? आपने इसे पैकेट हानि के रूप में कैसे पहचाना है (जो मैं आपको मतलब बता रहा हूं कि नेटवर्क-कारण है) और नहीं, उदाहरण के लिए, एक एप्लिकेशन सर्वर पर खराब प्रदर्शन, क्षणिक बंदरगाहों या जावा हीप या एक मिलियन अन्य संभावनाओं से बाहर निकलना?
mfinni

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

जवाबों:


29

मैं एक नेटवर्क इंजीनियर हूं, इसलिए मैं अपने दृष्टिकोण से इसका वर्णन करूंगा।

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

अगर मैं नुकसान देख सकता हूं, तो यह आमतौर पर "इन-बीच में पर्याप्त बैंडविड्थ" या "मुद्दों के साथ लिंक" का मामला नहीं है, इसलिए नेटवर्क के माध्यम से मार्ग ढूंढें और बीच से शुरू करें, जो आमतौर पर आपको एक छोर या दूसरे को देता है।

यदि मुझे नुकसान नहीं दिख रहा है, तो अगले दो चरण "अधिक पिंग भेजना" या "बड़े पिंग भेजना" हैं। यदि वह समस्या का संकेत नहीं देता है, तो यह समय समाप्त होने वाले बिंदुओं के बीच पूरे रास्ते के माध्यम से QoS नीतियों और इंटरफ़ेस आँकड़ों को देखना शुरू करने का समय है।

यदि वह कुछ भी नहीं पाता है, तो यह आपकी मान्यताओं पर सवाल उठाने का समय है, क्या आप वास्तव में पैकेट नुकसान से पीड़ित हैं। यह खोजने का एकमात्र निश्चित तरीका है कि दोनों सिरों पर एक साथ कब्जा करना है, या तो मेजबानों पर वायरशर्क (या समतुल्य) का उपयोग करके या नेटवर्क नल के माध्यम से स्निफर मशीनों (शायद वायरशर्क या समान का उपयोग करके) को हुक करके। फिर आता है दो पैकेट की तुलना करने का मजा ...

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


+1। एक ग्राहक समर्थन नेटवर्क इंजीनियर को पीटते हुए, मैं आमतौर पर इस पथ का अनुसरण करता हूं।
पेट्रस

1
@Vatine आदेशों और विकल्पों की खोज के बिना इसका अभ्यास करने में सक्षम होने के लिए कुछ कोड उदाहरण देना अच्छा होगा ...
फिलिप गाचौड

11

लिनक्स सिस्टम के नजरिए से, मैं सबसे पहले नेटवर्क इंटरफेस पर पैकेट लॉस की तलाश करूंगा 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>) के लिए मॉड्यूल विकल्पों को देखें क्योंकि आपको कुछ सुविधाओं को बदलने की आवश्यकता हो सकती है। एक उदाहरण देने के लिए जो मैंने सामना किया है, इंटेल के फ्लो डायरेक्टर का उपयोग करके एक सिस्टम पर जो एक बड़ी टीसीपी स्ट्रीम को संभालता है, शायद उस स्ट्रीम की दक्षता को नुकसान पहुंचाएगा, इसलिए एफडीआईआर को बंद कर दें।

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


4

मैं पैकेट कैप्चरिंग टूल जैसे कि: वर्शार्क (विंडोज पर) और tcpdump (लिनक्स टर्मिनल पर) का उपयोग करके शुरू करूंगा।

मैं फ़ायरवॉल कॉन्फ़िगरेशन (होस्ट फ़ायरवॉल के साथ-साथ नेटवर्क फ़ायरवॉल) की भी जाँच करूँगा।


3

अलग, फिर खत्म।

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

फिर संभावित कारणों को खत्म करें। लिंक पर ट्रैफ़िक कम करें (अस्थायी रूप से), स्पेक्ट्रम से हस्तक्षेप स्रोतों को हटा दें, कुछ ग्राहकों को डिस्कनेक्ट करें। आखिरकार आपको समस्या का स्रोत मिल जाएगा।

आप कभी-कभी पैकेट डंप को देखकर या अनुमान लगाकर शॉर्टकट ले सकते हैं (यह हमेशा बिटटोरेंट है)। इसके अलावा, अपने प्रोफेसर सर्वरफॉल्ट भयानक है बताओ।


यह "निर्वासित" है और "समाप्त" नहीं है।
एंड्रयू स्मिथ

0

जब तक आप बड़े पिंग नहीं भेजते पिंग्स पैकेट नुकसान नहीं दिखा सकते हैं! मैंने अपने नेटवर्क पर पैकेट खो दिया था जो अदृश्य था जब तक मैंने अपना पिंग पैकेट आकार नहीं लिया।

विंडोज के लिए:

ping -n 30 -l <largevalue> <target>

के लिए largevalueमैं 40960 इस्तेमाल किया (40k पैकेट)

के लिए targetमैं से पहले कुछ आईपी पते का इस्तेमाल कियाtracert google.com

(जो मेरा राउटर और केबल मॉडेम था)। श्रृंखला में नीचे दिए गए उपकरणों में से एक में बड़े पैकेट के लिए भयानक पैकेट नुकसान (> 60%) था लेकिन छोटे के लिए 0%। मैंने इसे फिर से शुरू करके इसे ठीक किया लेकिन यह एक केबल या कुछ आंतरिक भी हो सकता है जिसे बदलने की आवश्यकता है।

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