अधिक उन्नत एनआईसी पर सकल (सामान्य प्राप्त ऑफलोड) कैसे काम करता है?


14

मुझे विशेष उत्तरों में दिलचस्पी है:

  1. क्या सकल संपादन के साथ एनआईसी टीसीपी एसीके या कोई अन्य पैकेट बनाता है (या क्या यह सुविधा रिसीवर / प्रेषक टीसीपी स्टैक्स के लिए पारदर्शी है)?
  2. एनआईसी को टीसीपी स्टैक को "चिपके हुए खंड" पास करना चाहिए, तो एक समयबाह्य / घटना होनी चाहिए? वे क्या हैं?
  3. पैकेट फ़ॉरवर्डिंग सेटअप में - क्या ग्रोस फीचर रिसीवर ACK को पढ़ने की कोशिश करता है (नीचे देखें कि मैं यह क्यों पूछ रहा हूं)?
  4. कोई भी स्रोत जो सकल और अन्य एनआईसी ऑफलोडिंग फीचर्स (टीएसओ, एलएसओ ...) की व्याख्या करता है, वे विकिपीडिया और लिनक्स मैन पेजों से बेहतर हैं जो वास्तव में सराहे जाएंगे।

अधिक जानकारी:

मैं एक IPSec कार्यान्वयन के साथ एक प्रदर्शन समस्या का निवारण कर रहा हूं। समस्या यह है कि उपलब्ध बैंडविड्थ सभी 4 वीपीएन सुरंगों में समान रूप से वितरित नहीं किया जाता है (लगभग 200 एमबीपीएस / 200 एमबीपीएस / 1 एमबीपीएस / 1 एमबीपीएस के रूप में वितरित किया जाता है; प्रत्येक वीपीएन सुरंग सिंगल टीसीपी कनेक्शन को एन्क्रिप्ट करती है)। PCAP में एक बार में मुझे लगता है कि वेबसर्वर बेकार है जैसे ~ 2 सेकंड (ACK की प्रतीक्षा)। जब वेबसर्वर अनजाने खंडों को पुन: प्रदर्शित करता है तो डाउनलोडिंग फिर से शुरू होती है।

पीसीएपी से मेरी आंतरिक फीलिंग यह है कि एनआईसी ग्रोस में एक साथ ग्लूट्स पैकेट की सुविधा होती है, लेकिन कभी-कभी उन्हें टीसीपी स्टैक के लिए समय पर पास नहीं किया जाता है और इससे समस्याएं पैदा होती हैं।

चूंकि इस वीपीएन सर्वर में टीसीपी कनेक्शन को समाप्त करने वाले इंटरफेस नहीं हैं, बल्कि केवल फॉरवर्ड पैकेट हैं। तब मैंने सकल को निष्क्रिय करने की कोशिश की और उसके बाद मैंने देखा कि यातायात सभी सुरंगों में समान रूप से वितरित किया गया था। इसके अलावा जब Webserver पर TCP विंडो स्केलिंग अक्षम की जाती है, तो बैंडविड्थ को सकल सक्षम के साथ भी वितरित किया जाता है (यही कारण है कि मेरे पास प्रश्न # 3 था)।

मैं Ubuntu 10.04 सर्वर (64-बिट) पर 2.6.32-27 लिनक्स का उपयोग कर रहा हूं। एनआईसी इंटेल 82571EB है। सभी इंटरफेस (HTTP क्लाइंट, वीपीएन क्लाइंट, वीपीएन सर्वर, वेबसर्वर) 1Gbit ईथरनेट केबल के साथ सीधे श्रृंखला में जुड़े हुए हैं।

जवाबों:


15

मैंने इस लेख को आश्चर्यजनक रूप से उपयोगी पाया है: JLS2009: जेनेरिक ऑफ़लोड प्राप्त करता है । यह कैसे कार्य करता है, इसका एक महान अवलोकन देता है।

  1. कुछ एडेप्टर ऐसा कर सकते हैं, लेकिन संबंधित ड्राइवरों को इसके बारे में भी जागरूक होना होगा। इसके अलावा, ड्राइवर खुद सॉफ्टवेयर में ऐसा कर सकते हैं। जैसा कि कर्नेल टीसीपी / आईपी स्टैक में प्रवेश करने से पहले होता है, जब तक कि कर्नेल-स्पेस टीसीपी / आईपी स्टैक पूरी तरह से प्रवेश नहीं हो जाता है तब तक पैकेटों को पुनर्निर्धारित किया गया है।
  2. टाइमआउट को सकल युक्ति द्वारा एक टीसीपी / आईपी 'टिक' (टाइम स्टैम्प क्षेत्र की वृद्धि) के रूप में परिभाषित किया गया है, जो कि एक बहुत छोटी संख्या है, लेकिन फास्ट नेटवर्क पर कई पैकेट अभी भी प्राप्त हो सकते हैं।
  3. जीओआर फारवर्डर के प्राप्त पक्ष पर खेल में आ जाएगा, और वास्तव में जीईआर बनाया गया था ताकि अधिक लालची एलआरओ विधि फारवर्डरों पर पैकेट को पेंच करना बंद कर देगा।
  4. वह लेख जो मैंने ऊपर से जोड़ा है, वास्तव में मदद करता है।

Ethtool विशिष्ट इंटरफेस पर सकल को सक्षम / अक्षम करने में सक्षम हो सकता है। संस्करण पर निर्भर करता है।


1
मैंने अपना प्रश्न अपडेट किया। ऐसा लगता है कि आपने सभी ऑफलोडिंग सुविधाओं के संदर्भ में # 1 का जवाब दिया (IMHO GRO अकेले ACKs उत्पन्न नहीं करता है - यह केवल एक टीसीपी / आईपी टिक के लिए सभी पैकेटों को "glues" करता है और फिर उन्हें OS पर हैंडल करता है)। धन्यवाद!
user389238
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.