2010-06-25 8 views
6

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

उत्तर

9

यूडीपी किसी ऑर्डरिंग की गारंटी नहीं देता है। यह आवेदन की ज़िम्मेदारी है। वास्तव में यह भी गारंटी नहीं देता है कि पैकेट को दोहराया/गिराया नहीं जाएगा। मेरा सुझाव है कि आप पढ़ते हैं: http://en.wikipedia.org/wiki/User_Datagram_Protocol

कर्नेल के लिए ऐसी कोई गारंटी नहीं है, विशेष रूप से आने वाले पैकेट स्वयं आदेश से बाहर हो, क्योंकि कर्नेल (उचित रूप से) उम्मीद कर सकता है कि आवेदन के साथ निपटने की आवश्यकता है, अगर आवेदन आदेश की आवश्यकता है।

+0

मैं समझता हूं कि, और समझता हूं कि एक पुनरावृत्ति बफर होना चाहिए, लेकिन मैं जो कह रहा हूं वह यह है कि वे आदेश में आ रहे हैं, लेकिन ऐसा लगता है कि कर्नेल आदेश को तंग कर रहा है। क्या यह कर्नेल के लिए स्वीकार्य है? – tylernol

+0

@tylernol: हां, कर्नेल के लिए किसी भी क्रम में ऐप को udp पैकेट देने में सक्षम होना स्वीकार्य है। हमें इसकी अपेक्षा क्यों करनी चाहिए? प्रोटोकॉल स्वयं इसकी गारंटी नहीं देता है, और कर्नेल को यह सुनिश्चित करने के लिए कि यह पैकेट को क्रम में प्रदान करता है, यह केवल किसी भी प्रकार के उपयोग के बिना मामलों (कर्नेल में) जटिल करेगा। –

+1

@tylernol: शायद यह आपकी मदद करेगा: http://lkml.indiana.edu/hypermail/linux/net/0211.2/0036.html –

0

आपको गारंटी नहीं दी जा सकती है कि ट्रांसमिशन के दौरान यूडीपी पैकेट गिराया नहीं जाएगा, इसलिए आपके पास ऑर्डरिंग गारंटी नहीं हो सकती है। जब सिस्टम प्राप्त होता है, उदाहरण के लिए, पैकेट # 14 और पैकेट # 16, तो इसका पता लगाने का कोई तरीका नहीं है कि क्या पैकेट # 16 देने से पहले पैकेट # 15 के लिए इंतजार करना चाहिए, या यदि पैकेट # 15 गिरा दिया गया था और कभी नहीं आएगा इन सिस्टम आपको सिर्फ पैकेट का एक गुच्छा सौंप देगा, और यह आपके लिए क्रम में रखेगा।

+0

हां यही है जो हम यूडीपी के साथ प्राप्त करते हैं, यह इसे प्राप्त करने के रूप में इसे बंद कर देता है, लेकिन क्या कर्नेल को ऑर्डर-ऑफ-ऑर्डर अनुक्रमित करना चाहिए क्योंकि यह पैकेट को संभालता है नेटवर्क से आ रहा है? – tylernol

+0

@ tylernol- क्या इससे कोई फर्क पड़ता है कि कर्नेल ऑर्डर बदलता है? आपका ऐप उस क्रम को नहीं जानता जिसमें कर्नेल को पैकेट प्राप्त हुए थे, इसलिए सवाल अप्रासंगिक है। आपके सभी ऐप को पता है कि यह पैकेट को फिर से ऑर्डर करने के लिए तैयार होना चाहिए, इस कारण पर कि वे आउट-ऑर्डर क्यों हो सकते हैं। – bta

+0

बहुत सच है, अब अगर मैं केवल ऐप में इस विशेष इंटरफ़ेस के लेखक को ऐसा करने के लिए राजी कर सकता हूं जो उन्हें करना है .. धन्यवाद! – tylernol

संबंधित मुद्दे