व्यस्त इंटरफेस पर tcpdumping होने पर बहुत सारे गिराए गए पैकेज


12

मेरी चुनौती

मुझे बहुत सारे डेटा का tcpdumping करने की आवश्यकता है - वास्तव में 2 मोड से प्रोमिसस मोड में छोड़ दिया गया है जो बहुत सारे ट्रैफ़िक देखने में सक्षम हैं।

इसका सारांश प्रस्तुत करना

  • सभी ट्रैफ़िक को 2 इंटरफ़ेस से प्रॉम्पस मोड में लॉग इन करें
  • उन इंटरफेस को एक आईपी पता नहीं सौंपा गया है
  • pcap फाइलें ~ 1G प्रति घुमाई जानी चाहिए
  • जब 10 टीबी फ़ाइलों को संग्रहीत किया जाता है, तो सबसे पुरानी ट्रंकिंग शुरू करें

वर्तमान में मैं क्या करता हूं

अभी मैं इस तरह tcpdump का उपयोग करता हूं:

ifconfig ethX promisc
ifconfig ethX promisc
tcpdump -n -C 1000 -z /data/compress.sh -i any -w /data/livedump/capture.pcap $FILTER

$FILTERकि मैं उपयोग कर सकते हैं तो src / डीएसटी फ़िल्टर हैं -i any। इसका कारण यह है, कि मेरे पास दो इंटरफेस हैं और मैं दो के बजाय एक ही थ्रेड में डंप चलाना चाहूंगा।

compress.sh एक और सीपीयू कोर को टार असाइन करने का ख्याल रखता है, डेटा को संपीड़ित करता है, इसे एक उचित फ़ाइल नाम देता है और इसे एक संग्रह स्थान पर ले जाता है।

मैं दो इंटरफेस निर्दिष्ट नहीं कर सकता, इस प्रकार मैंने anyइंटरफ़ेस से फिल्टर और डंप का उपयोग करने के लिए चुना है ।

अभी, मैं कोई हाउसकीपिंग नहीं करता हूं, लेकिन मैं डिस्क पर नजर रखने की योजना बनाता हूं और जब मेरे पास 100 जी बचता है तो मैं सबसे पुरानी फाइलों को मिटा देना शुरू कर दूंगा - यह ठीक होना चाहिए।

और अब; मेरी समस्या

मुझे गिरा हुआ पैकेट दिख रहा है। यह एक ऐसे डंप से है जो कुछ घंटों से चल रहा है और लगभग 250 गीगा पाई फाइलों को इकट्ठा किया गया है:

430083369 packets captured
430115470 packets received by filter
32057 packets dropped by kernel  <-- This is my concern

मैं इतने सारे पैकेट गिराए जाने से कैसे बच सकता हूं?

इन चीजों को मैंने पहले ही आजमा लिया या देख लिया

के मूल्य को बदल दिया /proc/sys/net/core/rmem_maxऔर /proc/sys/net/core/rmem_defaultजिसने वास्तव में मदद की - वास्तव में इसने गिराए गए पैकेटों के लगभग आधे हिस्से का ध्यान रखा।

मैंने gulp पर भी गौर किया है - gulp के साथ समस्या यह है, कि यह एक प्रक्रिया में कई इंटरफेस का समर्थन नहीं करता है और इंटरफ़ेस के आईपी एड्रेस नहीं होने पर यह गुस्सा हो जाता है। दुर्भाग्य से, यह मेरे मामले में एक सौदा ब्रेकर है।

अगली समस्या यह है, कि जब ट्रैफ़िक एक पाइप से बहता है, तो मुझे स्वचालित घुमाव नहीं मिल सकता है। एक बहुत बड़ी 10 टीबी फ़ाइल प्राप्त करना बहुत कारगर नहीं है और मेरे पास 10TB + RAM वाली मशीन नहीं है जिस पर मैं वायरशर्क चला सकता हूं, इसलिए यह बाहर है।

क्या तुम्हारे पास कोई सुझाव है? शायद पूरी तरह से मेरे यातायात डंप करने का एक बेहतर तरीका।


मेरे मामले में मैं विकल्प -s0 का उपयोग कर रहा था, इसे -s1600 (MTU के ठीक ऊपर) में बदलकर इसे मेरे लिए हल कर दिया।
लातिनसुद

जवाबों:


11

tcpdump एक रिंग बफर में आने वाले डेटा को स्टोर करता है। यदि tcpdump से पहले बफर ओवरफ्लो करता है, तो इसकी सामग्री संसाधित होती है, तो आप पैकेट खो देते हैं।

डिफ़ॉल्ट रिंग बफर का आकार संभवतः 2048 (2MiB) है।

बफर आकार बढ़ाने के लिए, -Bविकल्प जोड़ें :

tcpdump -B 4096 ...

आपको तेज डिस्क संग्रहण का उपयोग करके भी देखना चाहिए।


मैं बफर आकार बदलने की कोशिश करूंगा। मैं लगभग निश्चित हूं कि डिस्क भंडारण की गति मुद्दा नहीं है। यह डंपिंग के दौरान लगभग 15M / सेकेंड के साथ डेटा लिखता है और जब एक 17 टमटम फ़ाइल को dd'ing करता है: 17179869184 बाइट्स (17 GB) कॉपी की गई, 23.5737 s, 729 MB / s (bs = 8k = 2048k का उपयोग करके)
फ़्रैंक्स हेंसन

7

मैंने एक ऐसा समाधान ढूंढना शुरू कर दिया है, जिसके साथ जीना है। गिराए गए पैकेज .0047% से .00013% तक कम हो गए हैं - जो पहली बार में बहुत ज्यादा नहीं लगता है, लेकिन जब हम लाखों पैकेटों की बात कर रहे हैं, तो यह काफी है।

समाधान में कई चीजें शामिल थीं। माइकल हैम्पटन द्वारा सुझाए गए अनुसार रिंग बफर आकार को बदलना था।

इसके अलावा, मैंने एक रम्फ बनाया और डंपिंग को लाइव किया, रैंप से डिस्क पर डंप को स्थानांतरित करने की देखभाल करने के लिए अपनी कंप्रेस्ड स्क्रिप्ट को फिर से लिखा। इससे केवल मात्रा बहुत कम हो गई, लेकिन उल्लेखनीय होने के लिए पर्याप्त है - भले ही डिस्क के सभी परीक्षण और बेंचमार्किंग से पता चलता है, कि डिस्क में अड़चन नहीं होनी चाहिए। मुझे लगता है कि यहां उच्चारण बहुत महत्वपूर्ण है।

हाइपर थ्रेडिंग को अक्षम करना आपके द्वारा सोचे गए से भी अधिक था।


क्या आपका मतलब है "हाइपर थ्रेडिंग को अक्षम करना" बहुत मदद करता है? यह कितना मदद कर सकता है? धन्यवाद।
पॉडवर्डेवेलर

सच कहूँ तो, मैं किसी भी विशेष को याद नहीं कर सकता। मैंने तब से कार्यस्थल बदल दिया है, लेकिन मैंने जो लिखा है उससे ऐसा लगता है कि हाइपर थ्रेडिंग को अक्षम करने से इस मुद्दे को सुलझाने में मदद मिली।
फ्रांसेस हेन्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.