क्यों ट्रेक्टरआउट की तुलना में mtr बहुत तेज है?


12

में mtrआदमी पृष्ठों, इसे पढ़ता है:

mtr एक एकल नेटवर्क डायग्नोस्टिक टूल में ट्रेसरआउट और पिंग कार्यक्रमों की कार्यक्षमता को जोड़ती है

मैं mtrबहुत उपयोग करता हूं , और पाता हूं कि यह बहुत तेजी से है traceroute। सहज रूप से, mtrमुझे हर उत्तर का जवाब देता है, जबकि tracerouteप्रत्येक सेकंड में प्रत्येक आईपी पते को सूचीबद्ध करता है। अपने स्वयं के कंप्यूटर पर, मैंने उपयोग किया time mtr www.google.comऔर time traceroute www.google.com, परिणाम 21.9 एस वीएस 6.1 एस है।

सवाल यह है कि क्यों? चूंकि mtr = ping + traceroute, इसका मतलब यह नहीं है कि यह धीमा है या कम से कम उतना ही है traceroute

क्या कोई मुझे उचित और विस्तृत जवाब दे सकता है?

जवाबों:


21

इन उपकरणों की गति में भिन्नता का एक प्रमुख कारण समानता है। एक अन्य योगदान कारक है कि कब तक वे उत्तर के लिए प्रतीक्षा करते हैं इससे पहले कि हॉप का जवाब नहीं दिया जाता है। यदि रिवर्स DNS किया जाता है, तो आपको उसके लिए भी इंतजार करना होगा। यदि आप रिवर्स DNS को निष्क्रिय करते हैं, तो सादा ट्रैसरआउट कमांड बहुत तेज हो जाती है।

एक और महत्वपूर्ण अंतर, जिसे मैंने उल्लेख नहीं देखा, वह यह है कि दो उपकरण आउटपुट कैसे प्रस्तुत करते हैं। Traceroute ऑर्डर टॉप डाउन में आउटपुट का उत्पादन करता है। एमटीआर आउटपुट को एक अलग तरीके से प्रस्तुत करता है, जहां एमटीआर वापस जा सकता है और पिछली लाइनों पर आउटपुट अपडेट कर सकता है।

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

उदाहरण के लिए यदि हॉप नंबर 2 जवाब नहीं दे रहा है (जो कि एक लक्षण जो मैंने कई आईएसपी पर देखा है), ट्रेसरआउट हॉप नंबर 1 को प्रदर्शित करेगा और फिर हॉप नंबर 2 और 3 को प्रदर्शित करने से पहले थोड़ी देर प्रतीक्षा करेगा। हालांकि हॉप नंबर से उत्तर 3 आ गया है यह प्रदर्शित नहीं किया जा रहा है क्योंकि ट्रेसरआउट अभी भी हॉप नंबर से उत्तर की प्रतीक्षा कर रहा है। 2. माउंट में वह प्रतिबंध नहीं है और हॉप नंबर 3 से उत्तर प्रदर्शित कर सकता है और फिर भी हॉप नंबर 2 से उत्तर प्रदर्शित करने के लिए वापस जा सकता है, यदि यह बाद में आता है।

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

इसका एक उदाहरण है जब मार्ग पर एक हॉप एआरपी अनुरोधों का जवाब नहीं देता है। आमतौर पर पहला पैकेट ARP रिक्वेस्ट को ट्रिगर करेगा, और ARP रिक्वेस्ट आउट होने से पहले अधिक पैकेट आने पर, केवल उन पैकेटों को बफर किया जाएगा और उन्हें उत्तर मिलेगा।

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


यह एक बेहतर उत्तर है।
निकव

3

अनुरेखक आदेश प्रति जांच में 3 जांच भेज रहा है यदि आप इसे 1 जांच तक सीमित करते हैं -q 1तो परिणाम तुलनीय हो जाते हैं

time mtr -r -c 1 google.com
.
.
.
real    0m2.640s
user    0m0.003s
sys     0m0.018s


time traceroute6 -q 1 google.com
.
.
.
real    0m0.445s
user    0m0.006s
sys     0m0.007s

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


2

मुझे लगता है कि यह मार्ग अनुरेखण लागू करने के तरीके से आता है। tracerouteक्रमिक रूप से गंतव्य के मार्ग में प्रत्येक हॉप के लिए कम से कम 3 पैकेट भेजे गए।

mtr पहले मार्ग में हॉप की खोज करें, और फिर समानांतर में प्रत्येक नोड को पैकेट भेजें।

मुझे यह भी लगता है कि mtrपिंग / प्रोब का जवाब नहीं देने के तरीके में अंतर होता है ; यह तब नजरअंदाज कर देता है, tracerouteजिससे लगता है कि इसके 3 पैकेट हर समय भेजे जाते हैं, भले ही पहला प्रयास प्रतिक्रिया पाने में विफल रहा हो।


1

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

mtr, पैकेट ले जाने वाले मार्ग का निर्धारण करने के बाद, समानांतर में सभी ICMP ECHO पैकेट भेजता है।


कैसे पता चलेगा कि पैकेट कहां भेजना है?
user9517

हाँ, मुझे इसे जोड़ना चाहिए, हालांकि यह "वास्तव में" कैसे पता चलता है कि मुझे लगता है कि मुझे स्रोत पढ़ने की आवश्यकता होगी :)
NickW

[mtr] investigates the network connection between the host mtr runs on and a user-specified destination host. After it determines the address of each network hop between the machines
निकव

2
@ यदि यह आपके द्वारा निर्दिष्ट एक पते पर सभी पैकेट भेजता है। अलग-अलग पैकेट एक त्रुटि वापस पाने से पहले कितनी दूर यात्रा करेंगे इसके लिए एक अलग अधिकतम दूरी निर्दिष्ट करते हैं। उत्तर के वापस आने पर केवल mtr या traceroute द्वारा प्रदर्शित पते ज्ञात हैं।
कास्परड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.