एक प्रोसेसर 10 गीगाबिट प्रति सेकंड या अधिक डेटा दर कैसे संभाल सकता है?


11

मुझे नहीं पता कि यह पूछने के लिए सही जगह है या नहीं। यह एक बहुत ही मूर्खतापूर्ण सवाल हो सकता है। मुझे लगता है कि कुछ प्रोसेसर को स्विचिंग / राउटिंग के लिए डेटा फ़्रेम को प्रोसेस करना पड़ता है। आधुनिक प्रोसेसर में कुछ गीगाहर्ट्ज़ की गति होती है। वे उन डेटा को कैसे संभालते हैं जो उनके द्वारा संचालित होने की तुलना में तेज गति से आ रहे हैं?

जवाबों:


16

आप पूरी तरह से सही हैं, यदि हमें प्रति बिट एक अनुदेश चक्र का उपयोग करना है तो 10 जीबीपीएस अस्वीकार्य होगा। तो पहली बात यह ध्यान देने की है कि हम प्रति सीपीयू निर्देश के अनुसार एक शब्द को संभालते हैं - 64 बिट्स।

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

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

अंत में हमारे पास विशेष-केस शॉर्टकट हैं, जैसे कि कर्नेल की सेंडफाइल () कॉल जो कि डिस्क से नेटवर्क तक काम की न्यूनतम राशि का उपयोग करके एक एक्सप्रेस पथ है।

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

पूरी तरह से सीपीयू से दूर, हम विशेष-प्रयोजन राउटर भी बना सकते हैं जहां सभी अग्रेषण कार्य हार्डवेयर में होते हैं। चूंकि PCI बस तब एक सीमा होगी, जिसमें वे कई समानांतर busses चलाएंगे; या कई समानांतर क्रॉसबार स्विच असेंबली के लिए कई समानांतर busses। बाजार के एक छोर पर एक छोटा टीसीएएम-आधारित ईथरनेट स्विच एक उदाहरण होगा; बाजार के दूसरे छोर पर जुनिपर M40 एक विहित डिजाइन होगा।

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

एक विशिष्ट राउटर एक पैकेट प्राप्त करेगा और इसे एक छोटी कतार में रखेगा। गंतव्य आईपी पते को स्थिर रैम में देखा जाएगा, पैकेट को फिर से विलंबता को कम करने के लिए कोशिकाओं में विस्फोट किया जाएगा, और प्रत्येक सेल एक क्रॉस-बार स्विच को इगोर कार्ड में भेज देगा। वह कार्ड एक पैकेट में कोशिकाओं को फिर से इकट्ठा करेगा, और पैकेट को बाहर निकाल देगा। इगोर इंटरफेस पर कतार परिष्कृत हो सकती है।


बहुत बढ़िया जवाब। क्या आप विस्तार से बता सकते हैं the packet will then be exploded into cells to reduce latency?
एडी

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

मुझे पता है कि यह उत्तर दो साल पहले का है, लेकिन आपको बहुत धन्यवाद। मेरे पास मूल पोस्टर के समान प्रश्न था, और मेरी खोज में आपका उत्तर मिला। यह बहुत अच्छी तरह से लिखा है और पूरी तरह से है। धन्यवाद!
लोनबोट

0

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

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


1
यह भ्रम की स्थिति को कम करता है। डिस्क आमतौर पर तब होता है जब ईथरनेट इंटरफ़ेस का रिंग-बफर अधिक भरा होता है - जैसा कि तब होता है जब सीपीयू डेटा की आगमन दर के साथ तालमेल नहीं रख सकता है। RED लागू होने के लिए वह रिंग-बफर बहुत छोटा है।
vk5tu

@ vk5tu, आपने मेरी बात को याद किया कि ट्रैफ़िक हर समय गिरा रहता है, चाहे अंतर्ग्रहण हो या अवनति। यदि सिस्टम का कोई भी हिस्सा यातायात की मात्रा को संभाल नहीं सकता है, तो कुछ को गिरा दिया जाएगा, और कुछ को उद्देश्य पर छोड़ दिया जाएगा।
रॉन Maupin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.