ملاحظة
تصف هذه الصفحة تنفيذ Java I2P لتوصيف واختيار الأقران اعتباراً من عام 2010. رغم أنها لا تزال دقيقة إلى حد كبير، قد تكون بعض التفاصيل لم تعد صحيحة. نحن نواصل تطوير استراتيجيات الحظر والمنع والاختيار لمواجهة التهديدات والهجمات وظروف الشبكة الأحدث. الشبكة الحالية تحتوي على تنفيذات متعددة للـ router مع إصدارات مختلفة. قد تحتوي تنفيذات I2P الأخرى على استراتيجيات توصيف واختيار مختلفة تماماً، أو قد لا تستخدم التوصيف على الإطلاق.
نظرة عامة
تحليل الأقران
تحليل الأقران هو عملية جمع البيانات بناءً على الأداء المُلاحظ لـ routers أو أقران أخرى، وتصنيف هؤلاء الأقران إلى مجموعات. التحليل لا يستخدم أي بيانات أداء مزعومة ينشرها القرين نفسه في قاعدة بيانات الشبكة .
تُستخدم الملفات الشخصية لغرضين:
- اختيار النظراء لنقل حركة المرور الخاصة بنا من خلالهم، والذي يتم مناقشته أدناه
- اختيار النظراء من مجموعة floodfill routers لاستخدامها في تخزين قاعدة بيانات الشبكة والاستعلامات، والذي يتم مناقشته في صفحة قاعدة بيانات الشبكة
اختيار النظراء
اختيار النظراء هو عملية اختيار أي router على الشبكة نريد أن نمرر رسائلنا من خلالها (أي النظراء الذين سنطلب منهم الانضمام إلى tunnel الخاصة بنا). لتحقيق ذلك، نتتبع كيفية أداء كل نظير (“profile” الخاص بالنظير) ونستخدم هذه البيانات لتقدير مدى سرعتها، وكم مرة ستكون قادرة على قبول طلباتنا، وما إذا كانت تبدو محملة بشكل زائد أو غير قادرة على تنفيذ ما توافق عليه بشكل موثوق.
على عكس بعض الشبكات المجهولة الأخرى، في I2P، النطاق الترددي المُعلن غير موثوق ويُستخدم فقط لتجنب النظراء الذين يُعلنون عن نطاق ترددي منخفض جداً غير كافٍ لتوجيه tunnels. يتم اختيار جميع النظراء من خلال التشكيل الجانبي. هذا يمنع الهجمات البسيطة المبنية على ادّعاء النظراء لنطاق ترددي عالي بهدف الاستيلاء على أعداد كبيرة من tunnels. كما أنه يجعل هجمات التوقيت أكثر صعوبة.
يتم اختيار الأقران بشكل متكرر جداً، حيث يمكن لل router أن يحافظ على عدد كبير من الأنفاق الخاصة بالعملاء والاستكشافية، وعمر النفق هو 10 دقائق فقط.
مزيد من المعلومات
لمزيد من المعلومات راجع الورقة البحثية Peer Profiling and Selection in the I2P Anonymous Network المقدمة في PET-CON 2009.1 . راجع أدناه للاطلاع على ملاحظات حول التغييرات الطفيفة منذ نشر الورقة البحثية.
الملفات الشخصية
كل نظير لديه مجموعة من نقاط البيانات المجمعة عنه، بما في ذلك إحصائيات حول المدة التي يستغرقها للرد على استعلام قاعدة بيانات الشبكة، وكم مرة تفشل tunnels الخاصة به، وكم عدد الأنظار الجدد الذين يمكنهم تعريفنا عليهم، بالإضافة إلى نقاط بيانات بسيطة مثل آخر مرة سمعنا منهم فيها أو متى حدث آخر خطأ في الاتصال.
الملفات الشخصية صغيرة نسبياً، بضعة كيلوبايت. للتحكم في استخدام الذاكرة، يقل وقت انتهاء صلاحية الملف الشخصي كلما زاد عدد الملفات الشخصية. تُحفظ الملفات الشخصية في الذاكرة حتى إيقاف تشغيل الراوتر، عندها تُكتب على القرص. عند بدء التشغيل، تُقرأ الملفات الشخصية بحيث لا يحتاج الراوتر إلى إعادة تهيئة جميع الملفات الشخصية، مما يسمح للراوتر بإعادة الاندماج بسرعة في الشبكة بعد بدء التشغيل.
ملخصات النظراء
في حين أن الملفات الشخصية نفسها يمكن اعتبارها ملخصاً لأداء النظير، للسماح بالاختيار الفعال للنظراء نقسم كل ملخص إلى أربع قيم بسيطة، تمثل سرعة النظير وسعته ومدى اندماجه في الشبكة وما إذا كان يواجه فشلاً.
السرعة
حساب السرعة ببساطة يمر عبر الملف الشخصي ويقدر كمية البيانات التي يمكننا إرسالها أو استقبالها في tunnel واحد عبر النظير في دقيقة واحدة. لهذا التقدير ينظر فقط إلى الأداء في الدقيقة السابقة.
السعة
حساب السعة يمر ببساطة عبر الملف الشخصي ويقدر عدد الأنفاق التي سيوافق النظير على المشاركة فيها خلال فترة زمنية معينة. لهذا التقدير ينظر إلى عدد طلبات بناء الأنفاق التي قبلها النظير أو رفضها أو أسقطها، وكم من الأنفاق المتفق عليها فشلت لاحقاً. بينما الحساب مرجح زمنياً بحيث يحسب النشاط الحديث أكثر من النشاط اللاحق، قد تُدرج إحصائيات يصل عمرها إلى 48 ساعة.
إن التعرف على الأقران غير الموثوقين وغير القابلين للوصول وتجنبهم أمر بالغ الأهمية. للأسف، نظراً لأن بناء واختبار tunnel يتطلب مشاركة عدة أقران، فمن الصعب تحديد السبب الإيجابي لطلب بناء مسقط أو فشل الاختبار. يقوم router بتعيين احتمالية فشل لكل من الأقران، ويستخدم تلك الاحتمالية في حساب السعة. يتم ترجيح الإسقاطات وفشل الاختبارات بشكل أكبر بكثير من الرفض.
تنظيم النظراء
كما ذُكر أعلاه، نقوم بفحص ملف تعريف كل نظير للوصول إلى بعض الحسابات الأساسية، وبناءً على ذلك، ننظم كل نظير إلى ثلاث مجموعات - سريع، وعالي السعة، وقياسي.
التجمعات ليست حصرية متبادلة، كما أنها ليست غير مترابطة:
- يُعتبر الـ peer “عالي السعة” إذا كان حساب سعته يلبي أو يتجاوز المتوسط لجميع الـ peers.
- يُعتبر الـ peer “سريع” إذا كان بالفعل “عالي السعة” وكان حساب سرعته يلبي أو يتجاوز المتوسط لجميع الـ peers.
- يُعتبر الـ peer “عادي” إذا لم يكن “عالي السعة”
حدود حجم المجموعة
قد يكون حجم المجموعات محدوداً.
- المجموعة السريعة محدودة بـ 30 نظير. إذا كان هناك المزيد، فقط الأنظار التي لديها أعلى تقييم سرعة سيتم وضعها في المجموعة.
- مجموعة السعة العالية محدودة بـ 75 نظير (بما في ذلك المجموعة السريعة). إذا كان هناك المزيد، فقط الأنظار التي لديها أعلى تقييم سعة سيتم وضعها في المجموعة.
- المجموعة القياسية ليس لها حد ثابت، لكنها أصغر نوعاً ما من عدد RouterInfos المخزنة في قاعدة بيانات الشبكة المحلية. على router نشط في شبكة اليوم، قد يكون هناك حوالي 1000 RouterInfo و 500 ملف تعريف نظير (بما في ذلك تلك الموجودة في المجموعات السريعة وعالية السعة).
إعادة الحساب والاستقرار
يتم إعادة حساب الملخصات، وإعادة ترتيب الأقران إلى مجموعات، كل 45 ثانية.
تميل المجموعات إلى أن تكون مستقرة إلى حد كبير، أي أنه لا يوجد الكثير من “التغيير” في التصنيفات عند كل إعادة حساب. الأقران في مجموعات السرعة العالية والسعة الكبيرة يحصلون على المزيد من tunnels المبنية من خلالهم، مما يزيد من تقييمات السرعة والسعة لديهم، الأمر الذي يعزز وجودهم في المجموعة.
اختيار النظراء
يختار الـ router النظراء من المجموعات المذكورة أعلاه لبناء الأنفاق من خلالها.
اختيار الأقران لأنفاق العميل
يتم استخدام tunnels العميل لحركة التطبيقات، مثل بروكسي HTTP وخوادم الويب.
لتقليل التعرض لـبعض الهجمات ، وزيادة الأداء، يتم اختيار النظراء لبناء أنفاق العميل عشوائياً من أصغر مجموعة، وهي المجموعة “السريعة”. لا يوجد تحيز نحو اختيار النظراء الذين كانوا مشاركين سابقاً في tunnel للعميل نفسه.
اختيار النظراء للأنفاق الاستكشافية
تُستخدم tunnel الاستكشافية لأغراض إدارية في router، مثل حركة بيانات قاعدة بيانات الشبكة واختبار tunnel العميل. كما تُستخدم tunnel الاستكشافية للاتصال بـ router لم يتم الاتصال بها من قبل، وهذا هو سبب تسميتها “استكشافية”. هذه tunnel عادة ما تكون منخفضة النطاق الترددي.
يتم اختيار النظراء لبناء الأنفاق الاستكشافية عمومًا بشكل عشوائي من المجموعة القياسية. إذا كان معدل نجاح محاولات البناء هذه منخفضًا مقارنة بمعدل نجاح بناء tunnel العميل، فسيقوم router بتحديد متوسط مرجح للنظراء بشكل عشوائي من مجموعة السعة العالية بدلاً من ذلك. هذا يساعد في الحفاظ على معدل نجاح بناء مُرضٍ حتى عندما يكون أداء الشبكة ضعيفًا. لا يوجد تحيز نحو اختيار النظراء الذين كانوا مشاركين سابقًا في tunnel استكشافي.
نظراً لأن المجموعة القياسية تشمل مجموعة فرعية كبيرة جداً من جميع الأقران التي يعرفها الـ router، فإن الأنفاق الاستكشافية يتم بناؤها بشكل أساسي من خلال اختيار عشوائي من جميع الأقران، حتى يصبح معدل نجاح البناء منخفضاً جداً.
القيود
لمنع بعض الهجمات البسيطة، ولتحسين الأداء، هناك القيود التالية:
- لا يمكن لنظيرين من نفس مساحة IP /16 أن يكونا في نفس tunnel.
- يمكن للنظير المشاركة في حد أقصى 33% من جميع tunnels التي ينشئها router.
- لا يتم استخدام النظراء ذوي النطاق الترددي المنخفض للغاية.
- لا يتم استخدام النظراء الذين فشلت محاولة الاتصال الأخيرة معهم.
ترتيب النظراء في الأنفاق
يتم ترتيب الأقران داخل الأنفاق للتعامل مع هجوم المتقدم (تحديث 2008 ). المزيد من المعلومات متوفرة في صفحة tunnel .
العمل المستقبلي
- المتابعة في تحليل وضبط حسابات السرعة والسعة حسب الضرورة
- تطبيق استراتيجية طرد أكثر عدوانية إذا لزم الأمر للتحكم في استخدام الذاكرة مع نمو الشبكة
- تقييم حدود حجم المجموعة
- استخدام بيانات GeoIP لتضمين أو استبعاد peers معينة، إذا تم تكوينها
ملاحظات
بالنسبة لأولئك الذين يقرؤون البحث Peer Profiling and Selection in the I2P Anonymous Network ، يرجى وضع التغييرات البسيطة التالية في I2P في الاعتبار منذ نشر البحث:
- حساب التكامل لا يزال غير مستخدم
- في البحث، تُسمى “المجموعات” بـ “الطبقات”
- طبقة “الفشل” لم تعد مستخدمة
- طبقة “عدم الفشل” تُسمى الآن “المعيارية”