मैं लिनक्स में टीसीपी मापदंडों के साथ प्रयोग कर रहा हूं (3.5 कर्नेल के साथ)। मूल रूप से इस संबंध में:
सर्वर: डेटाबेसेंटर में गिगाबिट अपलिंक, वास्तविक बैंडविड्थ (अपलिंक साझा करने के कारण) लगभग 70 एमबी / एस है जब दूसरे डेटासेंटर से जांच की जाती है।
ग्राहक: गीगाबिट स्थानीय लैन 200mbit फाइबर से जुड़ा है। परीक्षण-फ़ाइल प्राप्त करना वास्तव में 20 एमबी / एस प्राप्त करता है।
विलंबता: लगभग 50ms राउंडट्रिप।
रिमोट सर्वर का इस्तेमाल 10 से 100mb की रेंज में फाइलों के लिए फाइलर के रूप में किया जाता है। मैंने देखा कि इन फ़ाइलों के लिए 10-ट्रांसफ़र-टाइम का initcwnd का उपयोग टीसीपी स्लो-स्टार्ट से बहुत अधिक प्रभावित होता है, 10mb लोड करने के लिए 3.5 सेकंड लगते हैं (शीर्ष गति: 3.3 एमबी / एस) क्योंकि यह धीमा शुरू होता है और फिर इसे रैंप करता है अधिकतम गति तक पहुँचने से पहले समाप्त हो गया है। मेरा लक्ष्य उन फ़ाइलों के न्यूनतम लोड-समय के लिए धुन करना है (इसलिए उच्चतम कच्चे प्रवाह या न्यूनतम राउंडट्रिप विलंबता नहीं है, मैं दोनों को बलिदान करने के लिए तैयार हूं, अगर फ़ाइल लोड करने के लिए वास्तविक समय घटता है)
इसलिए मैंने यह निर्धारित करने के लिए एक सरल गणना की कोशिश की कि आदर्श initcwnd क्या होना चाहिए, किसी भी अन्य कनेक्शन की अनदेखी और दूसरों पर संभावित प्रभाव। बैंडविड्थ-देरी-उत्पाद 200 Mbit / s * 50ms = 10 Mbit या 1.310.720 बाइट्स है। यह ध्यान में रखते हुए कि initcwnd को MSS की इकाइयों में सेट किया गया है और माना जा रहा है कि MSS 1400 बाइट्स के आसपास है, इसके लिए सेटिंग की आवश्यकता होगी: 1.310.720 / 1400 = 936
यह मान डिफ़ॉल्ट (लिनक्स में 10 * MSS, विंडोज में 64kb) से बहुत दूर है, इसलिए इसे इस तरह सेट करना एक अच्छा विचार नहीं है। इस तरह इसे कॉन्फ़िगर करने की अपेक्षित डाउनसाइड क्या हैं? उदाहरण के लिए:
- क्या यह उसी नेटवर्क के अन्य उपयोगकर्ताओं को प्रभावित करेगा?
- क्या यह अन्य कनेक्शनों के लिए अस्वीकार्य भीड़ बना सकता है?
- रास्ते में कहीं पर राउटर-बफर?
- छोटी मात्रा के पैकेट-नुकसान के प्रभाव को बढ़ाएं?
70 MB/s
और मेगाबिट्स नहीं हैं? बस स्पष्टीकरण की तलाश है।