أداء شبكة I2P: السرعة والاتصالات وإدارة الموارد
شبكة I2P ديناميكية بالكامل. كل عميل معروف للعقد الأخرى ويختبر العقد المعروفة محلياً للتحقق من إمكانية الوصول والقدرة. فقط العقد القابلة للوصول والقادرة يتم حفظها في NetDB محلية. أثناء عملية بناء الأنفاق، يتم اختيار أفضل الموارد من هذا المجموع لبناء الأنفاق. نظراً لأن الاختبار يحدث بشكل مستمر، فإن مجموع العقد يتغير. كل عقدة I2P تعرف جزءاً مختلفاً من NetDB، مما يعني أن كل router لديه مجموعة مختلفة من عقد I2P لاستخدامها في الأنفاق. حتى لو كان لدى router-ين نفس المجموعة الفرعية من العقد المعروفة، فإن اختبارات إمكانية الوصول والقدرة ستظهر على الأرجح نتائج مختلفة، حيث أن الrouter-ات الأخرى قد تكون تحت حمولة عالية عندما يختبر أحد الrouter-ات، لكنها تكون متاحة عندما يختبر الrouter الثاني.
هذا يوضح لماذا كل عقدة I2P لديها عقد مختلفة لبناء الـ tunnels. لأن كل عقدة I2P لديها زمن استجابة وعرض نطاق مختلف، فإن الـ tunnels (التي يتم بناؤها عبر تلك العقد) لها قيم زمن استجابة وعرض نطاق مختلفة. ولأن كل عقدة I2P لديها tunnels مختلفة مبنية، فلا توجد عقدتان I2P لهما نفس مجموعات الـ tunnel.
يُعرف الخادم/العميل باسم “destination” (وجهة) ويحتوي كل destination على tunnel واحد على الأقل للبيانات الواردة وآخر للصادرة. الافتراضي هو 3 قفزات لكل tunnel. هذا يصل إلى 12 قفزة (أي 12 عقدة I2P مختلفة) لرحلة ذهاب وإياب كاملة من العميل إلى الخادم ثم العودة للعميل.
يتم إرسال كل حزمة بيانات عبر 6 عقد I2P أخرى حتى تصل إلى الخادم:
client - hop1 - hop2 - hop3 - hopa1 - hopa2 - hopa3 - server
وفي طريق العودة 6 عقد I2P مختلفة:
server - hopb1 - hopb2 - hopb3 - hopc1 - hopc2 - hopc3 - client
يحتاج حركة البيانات على الشبكة إلى إقرار استلام (ACK) قبل إرسال بيانات جديدة، وتحتاج إلى الانتظار حتى يعود الإقرار من الخادم: إرسال البيانات، انتظار الإقرار، إرسال المزيد من البيانات، انتظار الإقرار. نظراً لأن وقت الرحلة الكاملة (RTT) يتراكم من زمن الاستجابة لكل عقدة I2P فردية وكل اتصال في هذه الرحلة الكاملة، عادة ما يستغرق الأمر من ثانية إلى 3 ثوانِ حتى يعود الإقرار إلى العميل. بسبب تصميم نقل TCP وI2P، فإن حزمة البيانات لها حجم محدود. معاً تضع هذه الظروف حداً أقصى لعرض النطاق الترددي لكل tunnel يبلغ 20-50 كيلوبايت/ثانية. ومع ذلك، إذا كان لدى قفزة واحدة فقط في الtunnel عرض نطاق ترددي قدره 5 كيلوبايت/ثانية فقط للإنفاق، فإن الtunnel بأكمله يقتصر على 5 كيلوبايت/ثانية، بصرف النظر عن زمن الاستجابة والقيود الأخرى.
التشفير والكمون وكيفية بناء tunnel يجعلها مكلفة جداً في وقت المعالج لبناء tunnel. لهذا السبب يُسمح للوجهة أن تملك حداً أقصى من 6 tunnels داخلة و6 tunnels خارجة لنقل البيانات. مع حد أقصى 50 كيلوبايت/ثانية لكل tunnel، يمكن للوجهة أن تستخدم حوالي 300 كيلوبايت/ثانية من حركة البيانات مجتمعة (في الواقع يمكن أن يكون أكثر إذا تم استخدام tunnels أقصر مع إخفاء هوية منخفض أو معدوم). tunnels المستخدمة يتم التخلص منها كل 10 دقائق وبناء أخرى جديدة. هذا التغيير في tunnels، وأحياناً العملاء الذين يتوقفون أو يفقدون اتصالهم بالشبكة سيكسر أحياناً tunnels والاتصالات. مثال على هذا يمكن رؤيته في شبكة IRC2P في فقدان الاتصال (انتهاء مهلة ping) أو عند استخدام eepget.
مع مجموعة محدودة من الوجهات ومجموعة محدودة من tunnels لكل وجهة، فإن عقدة I2P واحدة تستخدم فقط مجموعة محدودة من tunnels عبر عقد I2P الأخرى. على سبيل المثال، إذا كانت عقدة I2P هي “hop1” في المثال الصغير أعلاه، فإننا نرى فقط tunnel مشارك واحد ينشأ من العميل. إذا جمعنا شبكة I2P بأكملها، فإن عدد محدود فقط من tunnels المشاركة يمكن بناؤه بكمية محدودة من عرض النطاق الترددي إجمالاً. إذا وُزعت هذه الأرقام المحدودة عبر عدد عقد I2P، فإن جزءًا فقط من عرض النطاق الترددي/السعة المتاحة يكون متاحًا للاستخدام.
للبقاء مجهول الهوية، يجب ألا يستخدم router واحد من قبل الشبكة بأكملها لبناء الأنفاق. إذا قام router واحد بالعمل كـ tunnel router لجميع عقد I2P، فإنه يصبح نقطة فشل مركزية حقيقية بالإضافة إلى نقطة مركزية لجمع عناوين IP والبيانات من العملاء. لهذا السبب تقوم الشبكة بتوزيع الحركة عبر العقد في عملية بناء الأنفاق.
اعتبار آخر للأداء هو الطريقة التي يتعامل بها I2P مع الشبكات الشبكية. كل اتصال من عقدة لأخرى يستخدم اتصال TCP أو UDP واحد على عقد I2P. مع 1000 اتصال، يرى المرء 1000 اتصال TCP. هذا كثير جداً، وبعض أجهزة التوجيه المنزلية وأجهزة المكاتب الصغيرة تسمح فقط بعدد قليل من الاتصالات. يحاول I2P تحديد هذه الاتصالات إلى أقل من 1500 لكل نوع UDP وTCP. هذا يحد من كمية حركة البيانات التي يتم توجيهها عبر عقدة I2P أيضاً.
إذا كان العقدة قابلة للوصول، ولديها إعداد عرض نطاق >128 كيلوبايت/ثانية مشترك وقابلة للوصول 24/7، فيجب استخدامها بعد فترة من الوقت للمشاركة في حركة البيانات. إذا كانت معطلة في المنتصف، فإن اختبار عقدة I2P المنجز من قبل العقد الأخرى سيخبرها أنها غير قابلة للوصول. هذا يحجب العقدة لمدة 24 ساعة على الأقل على العقد الأخرى. لذلك، العقد الأخرى التي اختبرت تلك العقدة كمعطلة لن تستخدم تلك العقدة لمدة 24 ساعة لبناء الأنفاق. هذا هو السبب في أن حركة البيانات الخاصة بك تكون أقل بعد إعادة التشغيل/إيقاف التشغيل لـ I2P router الخاص بك لمدة أدنى 24 ساعة.
بالإضافة إلى ذلك، تحتاج عقد I2P الأخرى إلى معرفة I2P router لاختباره من ناحية إمكانية الوصول والسعة. يمكن تسريع هذه العملية عندما تتفاعل مع الشبكة، على سبيل المثال باستخدام التطبيقات، أو زيارة مواقع I2P، مما سينتج عنه المزيد من بناء tunnel وبالتالي المزيد من النشاط وإمكانية الوصول للاختبار من قبل العقد على الشبكة.
تحسينات الأداء
للاطلاع على التحسينات المحتملة للأداء في المستقبل، راجع تحسينات الأداء المستقبلية .
لمعرفة تحسينات الأداء السابقة انظر تاريخ الأداء .