2012-10-24 12 views
11

मैं अपने आवेदन में भेजने और प्राप्त करने के लिए PF_RING का उपयोग करने पर एक नज़र डाल रहा था।टीसीपी और पीएफ_रिंग

यदि मैं एक टीसीपी कनेक्शन बनाए रखने के लिए PF_RING का उपयोग करने की योजना बना रहा हूं, तो ऐसा लगता है कि मुझे आईपी और टीसीपी संदेशों को मैन्युअल रूप से "फोर्ज" करने की आवश्यकता होगी, क्योंकि pfring_send कच्चे पैकेट भेजता है। क्या इसका मतलब है कि मुझे PF_RING के शीर्ष पर मैन्युअल रूप से टीसीपी को फिर से कार्यान्वित करना होगा?

मुझे लगता है कि PF_RING का उपयोग करने के लिए एक स्पष्ट लाभ है, क्या किसी ने PF_RING के साथ डेटा भेजने का प्रयास किया है? क्या सामान्य प्रेषण कॉल पर कोई स्पष्ट लाभ है?

नोट: मैं डीएनए (डायरेक्ट एनआईसी एक्सेस) का उपयोग नहीं कर रहा हूं, मैं सिर्फ एनआईसी जागरूक ड्राइवरों के साथ कर्नेल आंशिक बाईपास का उपयोग कर रहा हूं।

उत्तर

11

अपने पहले प्रश्न का उत्तर देने के लिए, हाँ, आपको ग्राउंड अप, मैक पते और सभी से मैन्युअल रूप से टीसीपी/आईपी संदेश बनाना होगा। उदाहरण के लिए pfsend.cntop.org पर एक नज़र डालें।

ntop.org ने PF_RING user guide भी उपलब्ध कराया है जिसमें स्पष्टीकरण शामिल हैं।

PF_RING का उपयोग कर डेटा भेजने के लिए, यह बिल्कुल संभव है, विचार है कि वास्तव में तार पर डेटा क्या है और जितनी जल्दी हो सके भेज दें, 0topntop.org से देखें। टीसीपी/आईपी के लिए कर्नेल का उपयोग करके सामान्य प्रेषण कॉल पर इसका एकमात्र लाभ यह है कि आप डेटा 1 भेज सकते हैं। तेज़ और 2. तार पर पूरी तरह से बिना स्वरूपित। 2 उदाहरण के लिए आसान हो सकता है जब आप पहले से कब्जे वाले पैकेट/एकाधिक पैकेट को नेटवर्क पर वापस खेलना चाहते हैं।


जब तक आप एक विशिष्ट उपयोग के है कि आप वहाँ बिल्कुल किसी भी तरह से PF_RING उपयोग करने के लिए कोई अच्छा कारण है कर्नेल के हस्तक्षेप के बिना कच्चे अंतर्निहित डेटा तक पहुँच प्राप्त करने की आवश्यकता है है। आपकी सबसे अच्छी शर्त मानक socket() के उपयोग के लिए उपलब्ध होगी, ज्यादातर मामलों में जो प्रदर्शन आप प्राप्त कर सकते हैं वह पर्याप्त से अधिक है।

आपके मन में क्या विशिष्ट उपयोग केस था?

+0

सामान्य सॉकेट बनाम प्रदर्शन लाभ के बारे में कैसे? मैं सामान्य सॉकेट भेजने में असंगतताओं को खत्म करने के लिए देख रहा हूँ। आम तौर पर मुझे लगता है कि यह औसतन 0-> 1 उपयोगक लेता है, लेकिन बड़े आउटलेटर्स (कर्नेल गतिविधियों के कारण) होते हैं जो कभी-कभी 100 उपयोगों तक पहुंचते हैं। मैं इस सिस्टम कॉल को खत्म करने की कोशिश कर रहा हूं। – Alex

+0

आप उस बिंदु पर उपयोगकर्ता स्थान में एक टीसीपी/आईपी स्टैक को फिर से कार्यान्वित कर रहे हैं, लगभग कोई मामला नहीं है कि यह कर्नेल में बनाए गए एक से अधिक तेज़ या अधिक प्रदर्शनशील होगा, विशेष रूप से जब ट्रांसमिशन विफलता पर पैकेट को पुन: भेजने की बात आती है , या सभी किनारे मामलों का ख्याल रखना। आप किस विशेष उपयोग के मामले को अनुकूलित करने की कोशिश कर रहे हैं? अंतिम लक्ष्य क्या है? –

+0

अंतिम लक्ष्य प्रदर्शन भेजने में आउटलायर को कम करना है। मेरा आवेदन भेजने की प्रकृति में "विस्फोट" है (एक पंक्ति में एक गुच्छा भेज सकता है और फिर दोबारा भेजने से पहले थोड़ी देर इंतजार कर सकता है - थोड़ी देर के लिए 1ms +)। आप शायद पूछ रहे हैं कि मेरा आवेदन क्या करता है, जो मुझे डरता है मैं नहीं कह सकता। – Alex