ملاحظة
تمت الموافقة على هذا الاقتراح وهو الآن في Tunnel Creation ECIES specification اعتبارًا من API 0.9.65. لا توجد تطبيقات معروفة حتى الآن؛ تواريخ التنفيذ / نسخ API لم تتحدد بعد.
لمحة عامة
مع زيادة أداء الشبكة خلال السنوات الأخيرة ببروتوكولات جديدة، وأنواع تشفير، وتحسينات في التحكم في الازدحام، أصبح بإمكان التطبيقات الأسرع مثل بث الفيديو أن تصبح ممكنة. تتطلب هذه التطبيقات عرض نطاق ترددي عالٍ عند كل خطوة في أنفاق عملاءهم.
ومع ذلك، لا تملك أجهزة التوجيه المشاركة أي معلومات حول مقدار عرض النطاق الترددي الذي سيستخدمه النفق عندما يتلقون رسالة بناء النفق. يمكنهم فقط قبول أو رفض النفق بناءً على إجمالي عرض النطاق الترددي المستخدم حاليًا من قبل جميع الأنفاق المشاركة، وحد عرض النطاق الترددي الإجمالي للأنفاق المشاركة.
كما ولا تملك أجهزة التوجيه الطلبة أي معلومات حول مقدار عرض النطاق الترددي المتاح عند كل خطوة.
وعلاوة على ذلك، لا يوجد حاليًا أي وسيلة يمكن لأجهزة التوجيه بها تحديد حركة المرور الواردة على النفق. سيكون ذلك مفيدًا جدًا خلال أوقات التحميل الزائد أو هجمات DDoS على خدمة معينة.
يحل هذا الاقتراح هذه المشكلات بإضافة معلمات عرض النطاق الترددي إلى رسائل طلب بناء النفق والردود.
التصميم
إضافة معلمات عرض النطاق الترددي إلى السجلات في رسائل بناء النفق عبر ECIES (انظر Tunnel Creation ECIES specification) في حقل خرائط خيارات بناء النفق. استخدم أسماء قصيرة للمعلمات لأن المساحة المتاحة لحقل الخيارات محدودة. الرسائل في بناء النفق ثابتة الحجم لذا فإن ذلك لا يزيد من حجم الرسائل.
المواصفات
تحديث مواصفات رسائل بناء النفق عبر ECIES كما يلي:
للسجلات الطويلة والقصيرة في بناء ECIES:
خيارات طلب البناء
يمكن تعيين الخيارات الثلاثة التالية في حقل خرائط خيارات بناء النفق للسجل: يمكن لجهاز التوجيه الطالب أن يتضمن أيًا منها أو جميعها أو لا شيء منها.
- m := الحد الأدنى لعرض النطاق الترددي المطلوب لهذا النفق (عدد صحيح إيجابي بالكيوبايكس في الثانية كسلسلة)
- r := عرض النطاق الترددي المطلوب لهذا النفق (عدد صحيح إيجابي بالكيوبايكس في الثانية كسلسلة)
- l := تحديد عرض النطاق الترددي لهذا النفق؛ يتم إرساله فقط إلى IBGW (عدد صحيح إيجابي بالكيوبايكس في الثانية كسلسلة)
قيد: m <= r <= l
يجب على جهاز التوجيه المشارك رفض النفق إذا تم تحديد “m” ولم يتمكن من توفير ذلك المقدار الأقل من عرض النطاق الترددي.
يتم إرسال خيارات الطلب إلى كل مشارك في السجل المشفر المقابل لطلب البناء، ولا تكون مرئية للمشاركين الآخرين.
خيارات رد البناء
يمكن تعيين الخيار التالي في حقل خرائط خيارات رد البناء للسجل، عندما يكون الرد مقبول:
- b := عرض النطاق الترددي المتاح لهذا النفق (عدد صحيح إيجابي بالكيوبايكس في الثانية كسلسلة)
يجب على جهاز التوجيه المشارك تضمين هذا إذا تم تحديد “m” أو “r” في طلب البناء. يجب أن تكون القيمة على الأقل بقيمة “m” إذا تم تحديدها، ولكن قد تكون أقل أو أكثر من قيمة “r” إذا تم تحديدها.
يجب على جهاز التوجيه المشارك محاولة حجز وتوفير هذا القدر من عرض النطاق الترددي للنفق، إلا أن ذلك ليس مضمونًا. لا يمكن لأجهزة التوجيه التنبؤ بالأحوال المستقبلية بعد 10 دقائق، وتعتبر حركة المرور المشاركة ذات أولوية منخفضة مقارنة مع حركة المرور والأنفاق الخاصة بجهاز التوجيه.
قد تقوم أجهزة التوجيه أيضًا بتخصيص عرض نطاق ترددي متاح إذا لزم الأمر، وهذا ربما يكون مرغوبًا، حيث أن الخطوات الأخرى في النفق قد ترفضه.
لهذه الأسباب، يجب اعتبار رد جهاز التوجيه المشارك التزامًا بأفضل جهد، ولكن ليس كضمان.
يتم إرسال خيارات الرد إلى جهاز التوجيه الطالب في سجل رد البناء المشفر المقابل، ولا تكون مرئية للمشاركين الآخرين.
ملاحظات التنفيذ
معلمات عرض النطاق الترددي كما تُرى عند أجهزة التوجيه المشاركة عند طبقة النفق، أي عدد الرسائل الثابتة الحجم 1 كيوبايكس لكل ثانية. لا يتم تضمين حمل النقل (NTCP2 أو SSU2).
قد يكون عرض النطاق الترددي هذا أكبر بكثير أو أقل من عرض النطاق الترددي المرئي عند العميل. تحتوي رسائل النفق على حمل زائد كبير، بما في ذلك الحمل من الطبقات العليا بما في ذلك النسبة والدفق. سيتم توسيع الرسائل الصغيرة المتقطعة مثل إقرارات الدفق إلى 1 كيوبايكس لكل منها. ومع ذلك، قد يقلل الضغط عبر gzip في طبقة I2CP بشكل كبير من عرض النطاق الترددي.
أبسط تنفيذ عند جهاز التوجيه الطالب هو استخدام معدل، الحد الأدنى، و/أو الحد الأقصى لعرض النطاق الترددي للأنفاق الحالية في المجموعة لحساب القيم المراد وضعها في الطلب. يمكن استخدام خوارزميات أكثر تعقيدًا وهي تعود إلى المنفذ.
لا توجد خيارات I2CP أو SAM الحالية المحددة للعميل لإخبار جهاز التوجيه بمتطلبات عرض النطاق الترددي، ولا توجد خيارات جديدة مقترحة هنا. قد يتم تحديد الخيارات في وقت لاحق إذا لزم الأمر.
قد تستخدم العمليات التنفيذية عرض النطاق الترددي المتاح أو أي بيانات أخرى أو خوارزمية أو سياسة محلية أو تكوين محلي لحساب قيمة عرض النطاق الترددي المردودة في استجابة البناء. لم يتم تحديده في هذا الاقتراح.
يتطلب هذا الاقتراح من بوابات الدخول الواردة تنفيذ خنق لكل نفق إذا طُلب من الخيار “l”. لا يتطلب من الخطوات الأخرى المشاركة تنفيذ خنق لكل نفق أو خنق عالمي من أي نوع، أو تحديد خوارزمية معينة أو تنفيذ، إن وجدت.
لا يتطلب هذا الاقتراح أيضًا من أجهزة التوجيه العميلة خنق حركة المرور إلى القيمة “b” المستردة من قبل الخطوة المشاركة، واعتمادًا على التطبيق، قد لا يكون ذلك ممكنًا، خاصة للأنفاق الواردة.
يؤثر هذا الاقتراح فقط على الأنفاق التي تم إنشاؤها بواسطة المنشأ. لا توجد طريقة محددة لطلب أو تخصيص عرض نطاق ترددي للأنفاق “بعيدة الطرف” التي أنشأها مالك الطرف الآخر لاتصال من طرف إلى طرف.
تحليل الأمان
قد يتكون تفاهم بصمة العميل أو الترابط استنادًا إلى الطلبات. قد يرغب العميل (جهاز التوجيه المنشأ) في عشوائية قيم “m” و"r" بدلاً من إرسال نفس القيمة لكل خطوة؛ أو إرسال مجموعة محدودة من القيم التي تمثل “سلال” عرض النطاق الترددي، أو مزيج من كلا الخيارين.
هجوم توزيع فائض: في حين أنه قد يكون من الممكن هجوم توزيع الخدمات حاليًا على جهاز التوجيه الآن عن طريق بناء واستخدام عدد كبير من الأنفاق من خلاله، فإن هذا الاقتراح يجعل ذلك أسهل بكثير، ببساطة عن طريق طلب نفق أو أكثر مع طلبات عرض النطاق الترددي الكبيرة.
يمكن لتطبيقات التنفيذ ويجب عليها استخدام استراتيجيات واحدة أو أكثر من الاستراتيجيات التالية لتخفيف هذا الخطر:
- تخصيص فائض لعرض النطاق الترددي المتاح
- تحديد تخصيص النطاق الترددي لكل نفق لنسبة من عرض النطاق الترددي المتاح
- تحديد معدل الزيادة في النطاق الترددي المخصص
- تحديد معدل الزيادة في عرض النطاق الترددي المستخدم
- تحديد عرض النطاق الترددي المخصص للنفق إذا لم يُستخدم مبكرًا في عمر النفق (استخدمه أو افقده)
- تتبع متوسط عرض النطاق الترددي لكل نفق
- تتبع الطلبات مقابل عرض النطاق الترددي المستخدم الفعلي لكل نفق
التوافق
لا توجد مشاكل. جميع العمليات التنفيذية المعروفة حاليًا تتجاهل حقل التعيين في رسائل البناء، وتتخطى بشكل صحيح حقل الخيارات غير الفارغ.
الهجرة
قد تضيف العمليات التنفيذية الدعم في أي وقت، ولا يلزم التنسيق.
نظرًا لعدم وجود نسخة API محددة حاليًا حيث يتم فيها دعم هذا الاقتراح، يجب على أجهزة التوجيه التحقق من استجابة “b” لتأكيد الدعم.