الخلاصة

  • تفصل RFC 9171 بين الاستلام وإعادة التوجيه والتسليم المحلي والحذف وتقارير الحالة؛ فالتقرير يصف الحالة التي تؤكدها العقدة التي أصدرته.
  • لا يضمن BPv7 بمفرده التسليم من طرف إلى طرف، ولم تعد custody transfer حالة في البروتوكول الأساسي. لذلك لا يثبت الاستلام الحضانة أو معالجة التطبيق أو السلطة أو نتيجة خارجية.

الشبكات المتقطعة لا تسمح بلغة الحوار المستمر. قد ينقطع الرابط، وقد يطول التأخير، وقد لا يكون الجار التالي موجوداً حين يرسل الطرف الأول. ينقل Bundle Protocol Version 7 بيانات تطبيقية مع المعلومات التي قد تجعلها قابلة للاستعمال عند التسليم. وفي هذا السياق، لا تصنع كلمتا «أُرسل» و«اكتمل» وحدهما سلسلة أدلة قابلة للمراجعة.

تمنح RFC 9171 كل مرحلة فعلاً خاصاً بها. فـ transmission هي محاولة Bundle Protocol Agent، أي BPA، جعل نسخ من الحزمة تصل إلى عقد endpoint. وforwarding هو استخدام واحد أو أكثر من convergence-layer adapter في جهد مستمر لكي تستلم عقدة أخرى نسخة. أما delivery فهو محلي على نحو أضيق: تُقدَّم الحمولة والبيانات الوصفية ذات الصلة إلى application agent في عقدة وفق registration محلي. والحذف والتخلص وretention constraint التي تمنع التخلص حالات أخرى مستقلة.

هذا ليس فرقاً لغوياً. إنه نطاق الدليل. فالحزمة التي أُعيد توجيهها قد لا تكون وصلت إلى العقدة التالية. والحزمة المستلمة قد لا تكون قابلة للتسليم محلياً. والحمولة التي عُرضت على application agent قد لا يكون قد عالجها. والتقرير الذي يصف إحدى هذه المراحل قد لا يكون قد وصل إلى الطرف الذي ينبغي أن يتصرف. إن ضغط كل ذلك في تسمية «تم التسليم» يجعل العرض أبسط، لكنه يمحو المكان الذي تغيّرت فيه المسؤولية.

تظهر الحدود منذ إجراء الاستلام. عندما يستلم BPA bundle من عقدة أخرى، يضيف retention constraint اسمها “Dispatch pending”. وإذا طُلب تقرير استلام وكانت تقارير الحالة مفعّلة، فينبغي أن ينشئ BPA تقرير استلام موجهاً إلى endpoint report-to. هذه حقيقة محددة: تلك العقدة بدأت معالجة الاستلام التي تصفها المواصفة.

لكن الاستمرار في المعالجة لا يضمن الاحتفاظ بالحزمة. يتحقق BPA من قيم CRC الملحقة. وإذا كانت الحزمة غير سليمة البنية، أو لم تطابق قيمة CRC المحسوبة عند الاستلام القيمة الملحقة، وجب حذفها وتجاوز ما بقي من خطوات الاستلام. وقد يسبب extension block لا يستطيع BPA معالجته تقريراً أيضاً، ثم يؤدي بحسب إشارات التحكم إلى حذف الحزمة أو إزالة الكتلة. لذلك لا يمكن تحويل وجود تقرير استلام إلى إثبات أن الحزمة سليمة أو محفوظة أو أعيد توجيهها أو وصلت إلى التطبيق.

إعادة التوجيه لها نطاق آخر. يختار BPA العقد وadapter المناسبة ويطلب الإرسال. والحكم بأن إجراءات إرسال البيانات انتهت إلى forwarding ناجح هو حكم خاص بالتنفيذ؛ وإذا لم تنجح، فقد يختار BPA محاولة أخرى وفق إعداده المحلي. تقرير forwarding يتكلم عن تلك الحالة. ليس إيصالاً من العقدة التالية، ولا ضماناً لاستمرار المسار، ولا دليلاً على الوصول إلى endpoint النهائي.

عند الوجهة تصبح الحدود أوضح. يعتمد التسليم المحلي على حالة registration المرتبط بـ endpoint الوجهة. وقد تحتاج fragments إلى إعادة تجميع؛ كما يمكن أن يؤدي registration سلبي أو فشل خاص بالتنفيذ إلى تأجيل التسليم أو التخلي عنه. وحتى إذا أُنشئ تقرير تسليم، تنص RFC صراحة على أنه يقول فقط إن الحمولة سُلّمت إلى application agent، لا إن ذلك agent عالج الحمولة.

هذه الجملة مهمة لأي سير عمل مؤتمت. فالتطبيق يمكنه أن يتحقق من البيانات، أو يضعها في طابور، أو يرفضها، أو يؤجلها، أو يحولها، أو يتجاهلها وفق قواعده الخاصة. حالة BP لا تكشف أي هذه الأفعال وقع. وهي لا تحدد صاحب قرار تجاري، ولا تثبت أن شخصاً مخولاً راجع النتيجة، ولا تثبت تنفيذ توجيه لا رجعة فيه. إن كانت هذه الوقائع مطلوبة، فعلى التطبيق ونظام القرار حفظ سجلاتهما المستقلة.

تقارير الحالة نافعة، لكنها ليست دفتر تدقيق شامل. تطلب RFC أن يكون إنشاؤها معطلاً افتراضياً، لأن كثرة الطلبات قد تنتج حركة مفرطة. وحتى عند التفعيل، يبقى قرار إصدار تقرير مطلوب ضمن تقدير BPA. وإذا احتوى التقرير على وقت، فهو وقت أبلغت عنه ساعة العقدة المحلية وهو مسألة تنفيذ. لذلك فالتقرير ادعاء محدود من عقدة واحدة، يُنقل كـ bundle أخرى إلى report-to؛ وليس خطاً زمنياً عالمياً بلا فقد، ولا إثباتاً أن القارئ المقصود استلمه.

وتستحق custody المقارنة التاريخية الدقيقة. فقد عرّفت RFC 5050 التجريبية custody acceptance وcustody signals. أما جدول RFC 9171 فيبقي الإشارات ذات الصلة كقيم للنسخة 6، ويقول الملحق A إن custody transfer انتقلت إلى Bundle-in-Bundle Encapsulation. يحتفظ BPv7 الأساسي بآليات نافعة للاحتفاظ وإعادة التوجيه والتسليم والتقرير والامتداد، لكنه لا يجعل الاستلام قبولاً للحضانة. من يحتاج التزاماً دائماً بالاحتفاظ عليه أن يسمّي الآلية وشروطها وطريقة فشلها؛ فلا يستخرج ذلك من بتّ استلام.

وتضع المواصفة الحد الأكبر بوضوح: لا يضمن Bundle Protocol وحده وصول الحزمة إلى وجهتها. يمكن لبروتوكولات convergence layer الموثوقة أن تقلل الفقد بين الجيران؛ أما ضمان التسليم من طرف إلى طرف فيحتاج امتدادات BP و/أو آليات طبقة التطبيق. هذا ليس وعداً مفقوداً، بل توزيع صريح للمسؤولية. يصف البروتوكول ما فعله BPA بحزمة في موضع محدد، ولا يدّعي إثبات ما اختارته التطبيقات أو الأشخاص أو المؤسسات بعد ذلك.

والسؤال القيادي ليس هل ينبغي الشك في كل تقرير استلام، بل هل يقول السجل ما يعرفه فقط. يجب فصل الاستلام وإعادة التوجيه والتسليم المحلي ومعالجة التطبيق والتأكيد والموافقة والتنفيذ الخارجي. ولكل سجل ينبغي ذكر من يصرح به، والقاعدة التي تسمح به، ووجهته، وساعته، وما الذي يعد فشلاً. الوقائع الضيقة والصادقة يمكن جمعها. أما إشارة خضراء واحدة تدعي أنها غطت كل شيء فلا تصبح دليلاً صالحاً بمجرد تكرارها.

يفيد هنا تمييز Lu Heng بين التمثيل والقرار المحلي والواقع الجاري بوصفه انضباطاً تحريرياً. تقرير BP هو تمثيل لحالة بروتوكولية محددة. ينبغي الوثوق به داخل هذا الحد، لا رفعه إلى إعلان سلطة أو نجاح. تصبح الأنظمة العاملة أصلب حين تفصل بين الحدث المرصود والنتيجة التي ما زال على فاعل آخر أن يختارها وينفذها.

المصادر