टीसीपी ऑफलोड इंजन

टीसीपी ऑफलोड इंजन (टीओई) नेटवर्क नियंत्रक को पूरे टीसीपी/आईपी स्टैक के प्रसंस्करण को ऑफलोड करने के लिए कुछ नेटवर्क इंटरफेस कार्ड (एनआईसी) में उपयोग की जाने वाली विधि है। यह मुख्य रूप से हाई-स्पीड नेटवर्क इंटरफेस के साथ प्रयोग किया जाता है, जैसे गीगाबिट ईथरनेट और 10 गीगाबिट ईथरनेट, जहां नेटवर्क स्टैक के ओवरहेड को प्रोसेस करना महत्वपूर्ण हो जाता है।

टीओई का अधिकांशतः उपयोग किया जाता है आईएससीएसआई और नेटवर्क फ़ाइल प्रणाली (एनएफएस) जैसे इंटरनेट प्रोटोकॉल (आईपी) संचयन प्रोटोकॉल से जुड़े ओवरहेड को कम करने के विधि के रूप में किया जाता है।

उद्देश्य
मूल रूप से प्रसारण नियंत्रण प्रोटोकॉल को अविश्वसनीय कम गति वाले नेटवर्क (जैसे प्रारंभिक डायल करें मोडम ) के लिए डिज़ाइन किया गया था, किन्तु  इंटरनेट रीढ़ ट्रांसमिशन गति (ऑप्टिकल कैरियर, गिगाबिट ईथरनेट और 10 गीगाबिट ईथरनेट लिंक का उपयोग करके) और तेज़ और इंटरनेट के विकास के साथ अधिक विश्वसनीय एक्सेस मैकेनिज्म (जैसे डिजिटल खरीदारों की पंक्ति और केबल मॉडेम ) इसका उपयोग अधिकांशतः डेटा केंद्रों और डेस्कटॉप निजी कंप्यूटर वातावरण में 1 गीगाबिट प्रति सेकंड की गति से किया जाता है। इस गति पर होस्ट प्रणाली पर टीसीपी सॉफ्टवेयर कार्यान्वयन के लिए महत्वपूर्ण कंप्यूटिंग शक्ति की आवश्यकता होती है। 2000 के दशक की प्रारंभिक में, फुल-डुप्लेक्स गीगाबिट टीसीपी संचार 2.4 गीगाहर्ट्ज़ पेंटियम 4 प्रोसेसर के 80% से अधिक की खपत कर सकता था, परिणामस्वरूप प्रणाली पर चलने वाले अनुप्रयोगों के लिए छोटे या कोई प्रसंस्करण संसाधन नहीं बचे हैं।

टीसीपी एक कनेक्शन-उन्मुख प्रोटोकॉल है जो जटिलता और प्रसंस्करण ओवरहेड जोड़ता है। इन पहलुओं में सम्मिलित हैं:
 * संचरण नियंत्रण प्रोटोकॉल या 3-वे हैंडशेक (सिंक्रोनाइज़; सिंक्रोनाइज़-एक्नॉलेज; एकनॉलेज) का उपयोग करके संबंध की स्थापना करना है ।
 * पैकेट की पावती, क्योंकि वे दूर के अंत तक प्राप्त होते हैं, समापन बिंदुओं के बीच संदेश प्रवाह और इस प्रकार प्रोटोकॉल लोड को जोड़ते हैं।
 * अंततः, और अनुक्रम संख्या की गणना - प्रदर्शन करने के लिए एक सामान्य उद्देश्य सीपीयू पर फिर से एक भार है ।
 * पैकेट पावती और भीड़ नियंत्रण के लिए स्लाइडिंग विंडो की गणना करना है।
 * प्रसारण नियंत्रण प्रोटोकॉल।

इनमें से कुछ या सभी कार्यों को समर्पित हार्डवेयर में स्थानांतरित करना, एक टीसीपी ऑफलोड इंजन, प्रणाली के मुख्य सीपीयू को अन्य कार्यों के लिए मुक्त करता है। 2012 तक, बहुत कम उपभोक्ता नेटवर्क इंटरफेस कार्ड टीओआई का समर्थन करते हैं।

फ्रीड-अप सीपीयू साइकिल
सामान्यतः स्वीकृत नियम यह है कि टीसीपी/आईपी के 1 बिट/एस भेजने या प्राप्त करने के लिए सीपीयू प्रसंस्करण के 1 हर्ट्ज की आवश्यकता होती है। उदाहरण के लिए, 5 जीबीटी / एस (625 एमबी/एस) नेटवर्क ट्रैफ़िक के लिए 5 गीगाहर्ट्ज सीपीयू प्रोसेसिंग की आवश्यकता होती है। इसका अर्थ यह है कि 2.5 गीगाहर्ट्ज़ मल्टी-कोर प्रोसेसर के 2 पूरे कोर को टीसीपी/आईपी ट्रैफिक के 5 जीबीटी/एस से जुड़े टीसीपी/आईपी प्रसंस्करण को संभालने की आवश्यकता होगी। चूंकि ईथरनेट (इस उदाहरण में 10GE) द्विदिश है, इसलिए 10 जीबीटी / एस (20 जीबीटी / एस के समग्र थ्रूपुट के लिए) भेजना और प्राप्त करना संभव है। 1 Hz/(bit/s) नियम का उपयोग करते हुए यह आठ 2.5 गीगाहर्ट्ज कोर के समान है।

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

पीसीआई ट्रैफिक में कमी
प्रोटोकॉल ओवरहेड के अतिरिक्त जिसे टीओई संबोधित कर सकता है, यह कुछ वास्तुशिल्प उद्देश्यो को भी संबोधित कर सकता है जो होस्ट आधारित (सर्वर और पीसी) एंडपॉइंट्स के बड़े प्रतिशत को प्रभावित करते हैं।

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

पीसीआई बस में पीसीआई बस से नेटवर्क इंटरफेस आईसी तक मुख्य मेमोरी से डेटा के छोटे विस्फोटों को स्थानांतरित करने के लिए पीसीआई अक्षम है, किन्तु डेटा विस्फोट आकार बढ़ने के साथ इसकी दक्षता में सुधार होता है। टीसीपी प्रोटोकॉल के अंदर, बड़ी संख्या में छोटे पैकेट बनाए जाते हैं (जैसे पावती) और जैसा कि ये सामान्यतः होस्ट सीपीयू पर उत्पन्न होते हैं और पीसीआई बस में और नेटवर्क भौतिक इंटरफ़ेस से बाहर प्रसारित होते हैं, यह होस्ट कंप्यूटर आईओ थ्रूपुट को प्रभावित करता है।

एक टीओइ समाधान, नेटवर्क इंटरफ़ेस पर स्थित, सीपीयू होस्ट से पीसीआई बस के दूसरी तरफ स्थित है, इसलिए यह इस I/O दक्षता समस्या को संबोधित कर सकता है, क्योंकि टीसीपी संबंध में भेजे जाने वाले डेटा को भेजा जा सकता है। पीसीआई बस में सीपीयू से टीओई बड़े डेटा फट आकार का उपयोग करते हुए पीसीआई बस को पार करने वाले छोटे टीसीपी पैकेटों में से कोई भी नहीं है।

इतिहास
यूडीपी ऑफलोड के लिए इस विधि में पहले पेटेंट में से एक, 1990 की प्रारंभिक में ऑस्पेक्स प्रणाली को जारी किया गया था। ऑस्पेक्स के संस्थापक लैरी बाउचर और कई ऑस्पेक्स इंजीनियरों ने 1997 में नेटवर्क स्टैक ऑफ़लोड की अवधारणा को टीसीपी तक विस्तारित करने और इसे कस्टम सिलिकॉन में प्रयुक्त करने के विचार के साथ अलाक्रिटेक की स्थापना की थी\। उन्होंने 1999 की प्रारंभिक में पहला समानांतर-स्टैक फुल ऑफलोड नेटवर्क कार्ड प्रस्तुत किया; कंपनी का एसएलआईसी (सेशन लेयर इंटरफेस कार्ड) इसके वर्तमान टीओइ प्रसाद का पूर्ववर्ती था। अलाक्रिटेक के पास टीसीपी/आईपी ऑफलोड के क्षेत्र में कई पेटेंट हैं।

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

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

प्रकार
टीसीपी स्टैक को पूरी तरह से टीओई के साथ बदलने के बजाय, ऑपरेटिंग प्रणाली के टीसीपी स्टैक के साथ सहयोग में कुछ परिचालनों को ऑफलोड करने के लिए वैकल्पिक विधि हैं। टीसीपी चेकसम ऑफलोड और बड़े खंड ऑफलोड आज के अधिकांश ईथरनेट एनआईसी द्वारा समर्थित हैं। नई विधि जैसे बड़े ऑफलोड प्राप्त करते हैं और टीसीपी पावती ऑफलोड पहले से ही कुछ हाई-एंड ईथरनेट हार्डवेयर में प्रयुक्त हैं, किन्तु सॉफ्टवेयर में पूरी तरह से प्रयुक्त होने पर भी प्रभावी हैं।

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

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

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

लार्ज ऑफलोड प्राप्त
लार्ज ऑफलोड प्राप्त (एलआरओ) सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) ओवरहेड को कम करके हाई-बैंडविड्थ (कंप्यूटिंग) नेटवर्क संबंध के इनबाउंड थ्रूपुट को बढ़ाने की एक विधि है। यह एक ही स्ट्रीम (कंप्यूटिंग) से आने वाले कई पैकेट (सूचना प्रौद्योगिकी) को एक बड़े बफर में एकत्रित करके काम करता है, इससे पहले कि वे नेटवर्किंग स्टैक के ऊपर से गुजरते हैं, इस प्रकार उन पैकेटों की संख्या कम हो जाती है जिन्हें संसाधित किया जाना है। लिनक्स कार्यान्वयन सामान्यतः की संख्या को कम करने के लिए नया एपीआई (एनएपीआई) के संयोजन में एलआरओ का उपयोग करता है।

बेंचमार्क के अनुसार, इस विधि को पूरी तरह से सॉफ्टवेयर में प्रयुक्त करने से भी नेटवर्क के प्रदर्शन में अधिक वृद्धि हो सकती है।, लिनक्स कर्नेल केवल सॉफ़्टवेयर में संचरण नियंत्रण प्रोटोकॉल के लिए एलआरओ का समर्थन करता है। फ्रीबीएसडी 8 एडेप्टर पर हार्डवेयर में एलआरओ का समर्थन करता है जो इसका समर्थन करता है।

एलआरओ को राउटर के रूप में कार्य करने वाली मशीनों पर काम नहीं करना चाहिए, क्योंकि यह एंड-टू-एंड सिद्धांत को तोड़ता है और प्रदर्शन को महत्वपूर्ण रूप से प्रभावित कर सकता है।

सामान्य ऑफलोड प्राप्त
जेनेरिक प्राप्त ऑफलोड (जीआरओ) सॉफ्टवेयर में एक सामान्यीकृत एलआरओ प्रयुक्त करता है जो टीसीपी/आईपीवी4 तक सीमित नहीं है या एलआरओ द्वारा बनाई गई समस्याएं हैं।

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

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

उदाहरण के लिए, 64 KiB (65,536 बाइट्स) डेटा की एक इकाई को सामान्यतः एनआईसी और नेटवर्क पर भेजे जाने से पहले प्रत्येक 1460 बाइट्स के 45 सेगमेंट में विभाजित किया जाता है। एनआईसी में कुछ बुद्धिमत्ता के साथ, होस्ट सीपीयू 64 KB डेटा को एनआईसी को एक ट्रांसमिट-अनुरोध में सौंप सकता है, एनआईसी उस डेटा को 1460 बाइट्स के छोटे भागो में तोड़ सकता है, टीसीपी, इंटरनेट प्रोटोकॉल और जोड़ सकता है। डेटा लिंक परत प्रोटोकॉल हेडर - होस्ट के टीसीपी/आईपी स्टैक द्वारा प्रदान किए गए टेम्पलेट के अनुसार - प्रत्येक खंड के लिए, और परिणामी फ़्रेम को नेटवर्क पर भेजें। यह सीपीयू द्वारा किए गए कार्य को अधिक कम कर देता है। बाजार में कई नए एनआईसी टीएसओ का समर्थन करते हैं।

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

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

आपूर्तिकर्ता
टीओई प्रौद्योगिकी पर वर्तमान कार्य 10 गिगाबिट ईथरनेट इंटरफेस कार्ड के निर्माताओं द्वारा किया जाता है, जैसे ब्रॉडकॉम, चेल्सी कम्युनिकेशंस, एमुलेक्स, मेलानॉक्स टेक्नोलॉजीज, क्यूलॉजिक |

यह भी देखें

 * स्केलेबल नेटवर्किंग पैक
 * I/O त्वरण प्रौद्योगिकी (I/OAT)
 * ऊर्जा कुशल ईथरनेट (ईईई)
 * स्वायत्त परिधीय संचालन

बाहरी संबंध

 * Article: टीसीपी Offload to the Rescue by Andy Currid at ACM Queue
 * Patent Application 20040042487
 * Windows Network Task Offload
 * GSO in Linux
 * Brief Description of LSO in Linux
 * Case Studies of Performance issues with LSO and Traffic Shaping (Linux)
 * FreeBSD 7.0 new features, brief discussion on TSO support
 * Case Studies of Performance issues with LSO and Traffic Shaping (Linux)
 * FreeBSD 7.0 new features, brief discussion on TSO support