I2P नेटवर्क प्रदर्शन: गति, कनेक्शन और संसाधन प्रबंधन
I2P network पूर्णतः dynamic है। प्रत्येक client अन्य nodes के लिए ज्ञात है और स्थानीय रूप से ज्ञात nodes को पहुंच-योग्यता और क्षमता के लिए परीक्षण करता है। केवल पहुंच-योग्य और सक्षम nodes को स्थानीय NetDB में सहेजा जाता है। tunnel निर्माण प्रक्रिया के दौरान, इस pool से सर्वोत्तम संसाधनों का चयन करके tunnels बनाए जाते हैं। क्योंकि परीक्षण निरंतर होता रहता है, nodes का pool बदलता रहता है। प्रत्येक I2P node NetDB के एक अलग हिस्से को जानता है, जिसका अर्थ है कि प्रत्येक router के पास tunnels के लिए उपयोग होने वाले I2P nodes का एक अलग सेट होता है। भले ही दो routers के पास ज्ञात nodes का समान उपसमुच्चय हो, पहुंच-योग्यता और क्षमता के परीक्षण संभावित रूप से अलग परिणाम दिखाएंगे, क्योंकि अन्य routers भार में हो सकते हैं जैसे ही एक router परीक्षण करता है, लेकिन जब दूसरा router परीक्षण करता है तो वे मुक्त हो सकते हैं।
यह बताता है कि क्यों हर I2P node के पास tunnel बनाने के लिए अलग-अलग nodes होते हैं। क्योंकि हर I2P node की latency और bandwidth अलग होती है, tunnels (जो उन nodes के माध्यम से बनाए जाते हैं) की latency और bandwidth values भी अलग होती हैं। और क्योंकि हर I2P node के पास अलग-अलग tunnels बनाए जाते हैं, कोई भी दो I2P nodes के पास समान tunnel sets नहीं होते।
एक server/client को “destination” के रूप में जाना जाता है और प्रत्येक destination में कम से कम एक inbound और एक outbound tunnel होता है। प्रति tunnel डिफ़ॉल्ट 3 hops हैं। इससे एक पूर्ण roundtrip client-server-client के लिए कुल 12 hops (यानी 12 अलग-अलग I2P nodes) बनते हैं।
प्रत्येक डेटा पैकेज 6 अन्य I2P nodes के माध्यम से भेजा जाता है जब तक कि यह server तक नहीं पहुंच जाता:
client - hop1 - hop2 - hop3 - hopa1 - hopa2 - hopa3 - server
और वापसी के रास्ते में 6 अलग I2P nodes:
server - hopb1 - hopb2 - hopb3 - hopc1 - hopc2 - hopc3 - client
नेटवर्क पर ट्रैफिक को नया डेटा भेजने से पहले एक ACK की आवश्यकता होती है, इसे सर्वर से ACK वापस आने तक प्रतीक्षा करनी पड़ती है: डेटा भेजें, ACK की प्रतीक्षा करें, अधिक डेटा भेजें, ACK की प्रतीक्षा करें। चूंकि RTT (RoundTripTime) प्रत्येक व्यक्तिगत I2P node की लेटेंसी और इस roundtrip पर प्रत्येक कनेक्शन से जुड़ता है, आमतौर पर client तक ACK वापस आने में 1-3 सेकंड लगते हैं। TCP और I2P transport डिज़ाइन के कारण, एक डेटा package का आकार सीमित होता है। इन सभी स्थितियों को मिलाकर प्रति tunnel अधिकतम bandwidth 20-50 kbyte/sec की सीमा निर्धारित होती है। हालांकि, यदि tunnel में केवल एक hop के पास खर्च करने के लिए केवल 5 kb/sec bandwidth है, तो पूरी tunnel 5 kb/sec तक सीमित हो जाती है, लेटेंसी और अन्य सीमाओं से स्वतंत्र।
Encryption, latency, और tunnel कैसे बनाया जाता है, यह सब CPU time के लिहाज से tunnel बनाना काफी महंगा बनाता है। यही कारण है कि एक destination को डेटा ट्रांसपोर्ट करने के लिए अधिकतम 6 IN और 6 OUT tunnels की अनुमति है। प्रति tunnel अधिकतम 50 kb/sec के साथ, एक destination लगभग 300 kb/sec संयुक्त ट्रैफिक का उपयोग कर सकता है (वास्तव में यह अधिक हो सकता है यदि कम या बिना anonymity के साथ छोटे tunnels का उपयोग किया जाए)। उपयोग किए गए tunnels को हर 10 मिनट में छोड़ दिया जाता है और नए बनाए जाते हैं। Tunnels का यह परिवर्तन, और कभी-कभी clients जो shutdown हो जाते हैं या network से अपना connection खो देते हैं, कभी-कभी tunnels और connections को तोड़ देते हैं। इसका उदाहरण IRC2P Network पर connection के नुकसान (ping timeout) में या eepget का उपयोग करते समय देखा जा सकता है।
गंतव्यों के सीमित सेट और प्रति गंतव्य tunnels के सीमित सेट के साथ, एक I2P node केवल अन्य I2P nodes पर tunnels का एक सीमित सेट ही उपयोग करता है। उदाहरण के लिए, यदि एक I2P node उपरोक्त छोटे उदाहरण में “hop1” है, तो हम केवल client से उत्पन्न होने वाले 1 participating tunnel को देखते हैं। यदि हम पूरे I2P network का योग करते हैं, तो केवल एक सीमित मात्रा में bandwidth के साथ कुल मिलाकर केवल एक सीमित संख्या में participating tunnels का निर्माण किया जा सकता है। यदि कोई इन सीमित संख्याओं को I2P nodes की संख्या में वितरित करता है, तो उपयोग के लिए केवल available bandwidth/capacity का एक अंश ही उपलब्ध है।
गुमनाम रहने के लिए एक router का उपयोग पूरे network द्वारा tunnel बनाने के लिए नहीं किया जाना चाहिए। यदि एक router सभी I2P nodes के लिए tunnel router के रूप में काम करता है, तो यह एक वास्तविक केंद्रीय विफलता बिंदु बन जाता है और साथ ही clients से IPs और data एकत्रित करने का केंद्रीय बिंदु भी बन जाता है। यही कारण है कि network tunnel निर्माण प्रक्रिया में nodes के बीच traffic वितरित करता है।
प्रदर्शन के लिए एक और विचारणीय बात यह है कि I2P mesh networking को कैसे संभालता है। प्रत्येक कनेक्शन hop-hop I2P nodes पर एक TCP या UDP कनेक्शन का उपयोग करता है। 1000 कनेक्शन के साथ, एक व्यक्ति को 1000 TCP कनेक्शन दिखाई देते हैं। यह काफी ज्यादा है, और कुछ घरेलू और छोटे कार्यालय के router केवल थोड़ी संख्या में कनेक्शन की अनुमति देते हैं। I2P इन कनेक्शन को प्रति UDP और प्रति TCP प्रकार 1500 से कम रखने की कोशिश करता है। यह एक I2P node के माध्यम से रूट किए जाने वाले ट्रैफिक की मात्रा को भी सीमित करता है।
यदि कोई नोड पहुंच योग्य है, और इसकी बैंडविड्थ सेटिंग >128 kbyte/sec साझा है और यह 24/7 पहुंच योग्य है, तो कुछ समय बाद इसका उपयोग participating traffic के लिए किया जाना चाहिए। यदि यह बीच में डाउन हो जाता है, तो अन्य नोड्स द्वारा किए गए I2P नोड के परीक्षण से उन्हें पता चल जाएगा कि यह पहुंच योग्य नहीं है। यह अन्य नोड्स पर कम से कम 24 घंटे के लिए एक नोड को ब्लॉक कर देता है। इसलिए, वे अन्य नोड्स जिन्होंने उस नोड को डाउन के रूप में परीक्षण किया है, वे tunnels बनाने के लिए 24 घंटे तक उस नोड का उपयोग नहीं करेंगे। यही कारण है कि आपके I2P router के restart/shutdown के बाद कम से कम 24 घंटे तक आपका traffic कम होता है।
इसके अतिरिक्त, अन्य I2P nodes को एक I2P router को जानने की आवश्यकता होती है ताकि वे इसकी पहुंच और क्षमता का परीक्षण कर सकें। यह प्रक्रिया तब तेज हो सकती है जब आप नेटवर्क के साथ बातचीत करते हैं, उदाहरण के लिए applications का उपयोग करके, या I2P साइटों पर जाकर, जिसके परिणामस्वरूप अधिक tunnel building होगी और इसलिए नेटवर्क पर nodes द्वारा परीक्षण के लिए अधिक गतिविधि और पहुंच होगी।
प्रदर्शन सुधार
संभावित भविष्य के प्रदर्शन सुधारों के लिए भविष्य के प्रदर्शन सुधार देखें।
पिछले प्रदर्शन सुधारों के लिए Performance History देखें।