नोट
यह पृष्ठ 2010 तक के Java I2P implementation में peer profiling और selection का वर्णन करता है। हालांकि यह अभी भी व्यापक रूप से सटीक है, कुछ विवरण अब सही नहीं हो सकते हैं। हम नए खतरों, हमलों और network स्थितियों से निपटने के लिए banning, blocking, और selection रणनीतियों को लगातार विकसित करते रहते हैं। वर्तमान network में विभिन्न versions के साथ कई router implementations हैं। अन्य I2P implementations में पूरी तरह से अलग profiling और selection रणनीतियां हो सकती हैं, या हो सकता है वे profiling का उपयोग ही न करें।
अवलोकन
पीयर प्रोफाइलिंग
पीयर प्रोफाइलिंग अन्य routers या peers के देखे गए प्रदर्शन के आधार पर डेटा एकत्रित करने और उन peers को समूहों में वर्गीकृत करने की प्रक्रिया है। प्रोफाइलिंग peer द्वारा स्वयं network database में प्रकाशित किसी भी दावा किए गए प्रदर्शन डेटा का उपयोग नहीं करती है।
प्रोफाइल्स का उपयोग दो उद्देश्यों के लिए किया जाता है:
- हमारे ट्रैफिक को relay करने के लिए peers का चयन करना, जिसकी चर्चा नीचे की गई है
- Network database storage और queries के लिए उपयोग करने हेतु floodfill routers के सेट से peers का चयन करना, जिसकी चर्चा network database पृष्ठ पर की गई है
Peer Selection
Peer selection वह प्रक्रिया है जिसमें हम यह चुनते हैं कि नेटवर्क पर कौन से routers के माध्यम से हम अपने संदेशों को रिले करना चाहते हैं (किन peers से हम अपनी tunnels में शामिल होने के लिए कहेंगे)। इसे पूरा करने के लिए, हम प्रत्येक peer के प्रदर्शन पर नज़र रखते हैं (peer का “प्रोफाइल”) और उस डेटा का उपयोग करके यह अनुमान लगाते हैं कि वे कितने तेज़ हैं, कितनी बार वे हमारे अनुरोधों को स्वीकार कर पाएंगे, और क्या वे अधिक लोड में लगते हैं या किसी और कारण से वह काम विश्वसनीयता से करने में असमर्थ हैं जिससे वे सहमत होते हैं।
कुछ अन्य anonymous networks के विपरीत, I2P में, claimed bandwidth अविश्वसनीय है और केवल उन peers से बचने के लिए उपयोग किया जाता है जो बहुत कम bandwidth का विज्ञापन करते हैं जो routing tunnels के लिए अपर्याप्त है। सभी peer selection profiling के माध्यम से किया जाता है। यह उन peers द्वारा किए जाने वाले सरल हमलों को रोकता है जो बड़ी संख्या में tunnels को capture करने के लिए high bandwidth का दावा करते हैं। यह timing attacks को भी अधिक कठिन बनाता है।
पीयर चयन काफी बार किया जाता है, क्योंकि एक router कई सारे client और exploratory tunnel बनाए रख सकता है, और एक tunnel का जीवनकाल केवल 10 मिनट का होता है।
अधिक जानकारी
अधिक जानकारी के लिए PET-CON 2009.1 में प्रस्तुत किया गया पेपर Peer Profiling and Selection in the I2P Anonymous Network देखें। पेपर प्रकाशित होने के बाद से हुए मामूली बदलावों के बारे में नोट्स के लिए नीचे देखें।
प्रोफाइल
प्रत्येक peer के बारे में डेटा बिंदुओं का एक सेट एकत्र किया जाता है, जिसमें इस बारे में आंकड़े शामिल हैं कि उन्हें network database query का जवाब देने में कितना समय लगता है, उनकी tunnels कितनी बार fail होती हैं, और वे हमें कितने नए peers से परिचय कराने में सक्षम हैं, साथ ही साधारण डेटा बिंदु जैसे कि हमने उनसे अंतिम बार कब सुना था या अंतिम संचार त्रुटि कब हुई थी।
प्रोफाइल्स काफी छोटे होते हैं, कुछ KB के। मेमोरी उपयोग को नियंत्रित करने के लिए, प्रोफाइल्स की संख्या बढ़ने पर प्रोफाइल समाप्ति समय कम हो जाता है। प्रोफाइल्स को router शटडाउन तक मेमोरी में रखा जाता है, जब वे डिस्क पर लिखे जाते हैं। स्टार्टअप पर, प्रोफाइल्स को पढ़ा जाता है ताकि router को सभी प्रोफाइल्स को फिर से इनिशियलाइज़ करने की आवश्यकता न हो, इस प्रकार router को स्टार्टअप के बाद नेटवर्क में तेज़ी से पुनः एकीकृत होने की अनुमति मिलती है।
Peer सारांश
जबकि profiles को स्वयं एक peer के प्रदर्शन का सारांश माना जा सकता है, प्रभावी peer selection की अनुमति देने के लिए हम प्रत्येक सारांश को चार सरल मानों में विभाजित करते हैं, जो peer की गति, उसकी क्षमता, नेटवर्क में कितनी अच्छी तरह एकीकृत है, और क्या यह विफल हो रहा है, का प्रतिनिधित्व करते हैं।
गति
गति गणना केवल प्रोफ़ाइल के माध्यम से जाती है और अनुमान लगाती है कि हम एक मिनट में peer के माध्यम से एक tunnel पर कितना डेटा भेज या प्राप्त कर सकते हैं। इस अनुमान के लिए यह केवल पिछले मिनट की performance को देखती है।
क्षमता
क्षमता गणना बस profile के माध्यम से जाती है और अनुमान लगाती है कि peer एक निर्धारित समय अवधि में कितने tunnels में भाग लेने के लिए सहमत होगा। इस अनुमान के लिए यह देखती है कि peer ने कितने tunnel build requests को स्वीकार किया है, अस्वीकार किया है, और छोड़ा है, और सहमति वाले tunnels में से कितने बाद में विफल हो गए। जबकि गणना समय-भारित है ताकि हाल की गतिविधि बाद की गतिविधि से अधिक गिनती करे, 48 घंटे तक पुराने आंकड़े भी शामिल हो सकते हैं।
अविश्वसनीय और अपहुंचने योग्य peers को पहचानना और उनसे बचना अत्यंत महत्वपूर्ण है। दुर्भाग्य से, चूंकि tunnel निर्माण और परीक्षण के लिए कई peers की भागीदारी आवश्यक होती है, इसलिए dropped build request या test failure के कारण की सकारात्मक पहचान करना कठिन है। router प्रत्येक peer को failure की संभावना assign करता है, और capacity की गणना में उस संभावना का उपयोग करता है। Drops और test failures को rejections की तुलना में बहुत अधिक weightage दिया जाता है।
पीयर संगठन
जैसा कि ऊपर उल्लेख किया गया है, हम प्रत्येक peer के profile की गहराई से जांच करते हैं ताकि कुछ मुख्य गणनाएं निकाल सकें, और उनके आधार पर, हम प्रत्येक peer को तीन समूहों में व्यवस्थित करते हैं - तेज़, उच्च क्षमता, और मानक।
ये समूह पारस्परिक रूप से विशिष्ट नहीं हैं, और न ही ये असंबंधित हैं:
- एक peer को “high capacity” माना जाता है यदि उसकी capacity calculation सभी peers के median से मिलती या अधिक होती है।
- एक peer को “fast” माना जाता है यदि वे पहले से ही “high capacity” हैं और उनकी speed calculation सभी peers के median से मिलती या अधिक होती है।
- एक peer को “standard” माना जाता है यदि यह “high capacity” नहीं है
ग्रुप साइज़ सीमाएं
समूहों का आकार सीमित हो सकता है।
- तेज़ समूह 30 peers तक सीमित है। यदि इससे अधिक होते हैं, तो केवल सबसे अधिक गति रेटिंग वाले समूह में रखे जाते हैं।
- उच्च क्षमता समूह 75 peers तक सीमित है (तेज़ समूह सहित)। यदि इससे अधिक होते हैं, तो केवल सबसे अधिक क्षमता रेटिंग वाले समूह में रखे जाते हैं।
- मानक समूह की कोई निश्चित सीमा नहीं है, लेकिन यह स्थानीय network database में संग्रहीत RouterInfos की संख्या से कुछ कम होता है। आज के नेटवर्क में एक सक्रिय router पर लगभग 1000 RouterInfos और 500 peer profiles हो सकते हैं (तेज़ और उच्च क्षमता समूहों सहित)।
पुनर्गणना और स्थिरता
सारांश पुनर्गणना किए जाते हैं, और peers को समूहों में पुनः व्यवस्थित किया जाता है, हर 45 सेकंड में।
समूह काफी स्थिर होते हैं, यानी प्रत्येक पुनर्गणना में रैंकिंग में अधिक “चर्न” नहीं होता। तेज़ और उच्च क्षमता समूहों में peer अपने माध्यम से अधिक tunnel बनवाते हैं, जो उनकी गति और क्षमता रेटिंग बढ़ाता है, जो समूह में उनकी उपस्थिति को और मज़बूत बनाता है।
Peer Selection
router उपरोक्त समूहों से peers का चयन करके उनके माध्यम से tunnels का निर्माण करता है।
क्लाइंट tunnels के लिए Peer चयन
Client tunnels का उपयोग एप्लिकेशन ट्रैफिक के लिए किया जाता है, जैसे कि HTTP प्रॉक्सी और वेब सर्वर के लिए।
कुछ हमलों के प्रति संवेदनशीलता को कम करने और प्रदर्शन बढ़ाने के लिए, client tunnel बनाने के लिए peers को सबसे छोटे समूह से यादृच्छिक रूप से चुना जाता है, जो “fast” समूह है। उन peers का चयन करने में कोई पूर्वाग्रह नहीं है जो पहले समान client के लिए tunnel में भागीदार रह चुके हैं।
खोजी टनल के लिए पीयर चयन
एक्सप्लोरेटरी tunnel का उपयोग router प्रशासनिक उद्देश्यों के लिए किया जाता है, जैसे कि network database ट्रैफिक और क्लाइंट tunnel का परीक्षण। एक्सप्लोरेटरी tunnel का उपयोग पहले से न जुड़े router से संपर्क करने के लिए भी किया जाता है, इसीलिए इन्हें “exploratory” कहा जाता है। ये tunnel आमतौर पर कम-बैंडविड्थ वाले होते हैं।
खोजपरक tunnel बनाने के लिए peer आमतौर पर मानक समूह से यादृच्छिक रूप से चुने जाते हैं। यदि इन निर्माण प्रयासों की सफलता दर client tunnel निर्माण सफलता दर की तुलना में कम है, तो router इसके बजाय उच्च क्षमता समूह से peer का भारित औसत यादृच्छिक रूप से चुनेगा। यह नेटवर्क प्रदर्शन खराब होने पर भी संतोषजनक निर्माण सफलता दर बनाए रखने में मदद करता है। उन peer को चुनने में कोई पक्षपात नहीं है जो पहले खोजपरक tunnel में प्रतिभागी रहे हों।
चूंकि मानक समूह में router द्वारा ज्ञात सभी peers का एक बहुत बड़ा उपसमुच्चय शामिल होता है, exploratory tunnels मूल रूप से सभी peers के एक यादृच्छिक चयन के माध्यम से बनाए जाते हैं, जब तक कि निर्माण सफलता दर बहुत कम नहीं हो जाती।
प्रतिबंध
कुछ सरल हमलों को रोकने के लिए, और प्रदर्शन के लिए, निम्नलिखित प्रतिबंध हैं:
- एक ही /16 IP स्थान के दो peers एक ही tunnel में नहीं हो सकते।
- एक peer router द्वारा बनाए गए सभी tunnels के अधिकतम 33% में भाग ले सकता है।
- अत्यधिक कम bandwidth वाले peers का उपयोग नहीं किया जाता।
- जिन peers के लिए हाल की connection का प्रयास विफल हुआ है, उनका उपयोग नहीं किया जाता।
Tunnels में Peer Ordering
tunnel के भीतर peers को predecessor attack (2008 update ) से निपटने के लिए क्रमबद्ध किया जाता है। अधिक जानकारी tunnel page पर उपलब्ध है।
भविष्य का कार्य
- आवश्यकतानुसार गति और क्षमता गणनाओं का विश्लेषण और ट्यूनिंग जारी रखें
- नेटवर्क के बढ़ने पर मेमोरी उपयोग को नियंत्रित करने के लिए यदि आवश्यक हो तो अधिक आक्रामक ejection रणनीति लागू करें
- समूह आकार सीमाओं का मूल्यांकन करें
- यदि कॉन्फ़िगर किया गया हो तो कुछ peers को शामिल करने या बाहर करने के लिए GeoIP डेटा का उपयोग करें
नोट्स
जो लोग पेपर Peer Profiling and Selection in the I2P Anonymous Network पढ़ रहे हैं, कृपया पेपर के प्रकाशन के बाद से I2P में निम्नलिखित छोटे बदलावों को ध्यान में रखें:
- Integration गणना का अभी भी उपयोग नहीं किया जा रहा है
- पेपर में, “groups” को “tiers” कहा जाता है
- “Failing” tier का अब उपयोग नहीं किया जाता है
- “Not Failing” tier को अब “Standard” नाम दिया गया है