الخلاصة

  • يقيس HoldTimer التقليدي آخر رسالة BGP صالحة وصلت من الجار؛ وقد يبقى متجدداً فيما تكون رسائل UPDATE والسحب وKEEPALIVE المحلية محجوزة في الاتجاه المعاكس.
  • يضيف RFC 9687 مؤقت SendHoldTimer بإعداد محلي. إذا لم تنجح أي عملية إرسال BGP خلال المهلة، يسجل النظام السبب، ويحرر الموارد، ويغلق TCP، ثم يعود إلى Idle.
  • يتطلب النشر الآمن فصل إنشاء الرسالة عن تقدم الإرسال ومعالجة الطرف البعيد والتمرير الفعلي، واختيار قيمة أكبر من HoldTime المتفاوض عليه، ومنع إعادة الاتصال من التحول إلى موجة ضغط.

كان موجه الحافة قد أزال مساراً فاشلاً من قراره المحلي وأنشأ رسالة السحب. ومع ذلك ظل الجار يرسل KEEPALIVE كل ثلاثين ثانية، فيتجدد HoldTimer. في الاتجاه الآخر لم يعد تطبيق الجار يقرأ تدفق TCP، فنمت قائمة الإرسال وبقي آخر إعلان وصل إليه هو الحقيقة النافذة لديه.

القرار الصحيح موجود، لكن الجلسة فقدت قدرتها على جعله حقيقة مشتركة.

ثنائية الاتجاه لا تعني تقدماً متناظراً

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

يعيد RFC 4271 تشغيل HoldTimer عند استقبال UPDATE أو KEEPALIVE مؤهلة. هذا دليل استقبال لا دليل تسليم عكسي. إنشاء UPDATE لا يثبت خروجه، وقبول النواة للبايتات لا يثبت أن التطبيق البعيد قرأها، وبقاء TCP في Established لا يثبت سلامة BGP.

إذا احتُجز السحب، ظل مسار قديم يجذب الحركة. لذلك فإن زمن آخر رسالة BGP أُرسلت بنجاح مقياس مستقل للسلطة التشغيلية.

ساعة محلية للطرف المحجوز

يضيف RFC 9687 العناصر SendHoldTime وSendHoldTimer والحدث 29 SendHoldTimer_Expires. القيمة سياسة محلية لكل جار وليست قدرة تفاوضية؛ ولا يحتاج الطرف الآخر إلى تطبيق الآلية.

عند الانتقال من OpenConfirm إلى Established يبدأ المؤقت إن لم تكن القيمة صفراً. تعيد كل رسالة BGP ناجحة الإرسال تشغيله. ويتوقف عند مغادرة Established أو عندما تكون SendHoldTime أو HoldTime المتفاوض عليه صفراً. ويجب أن تكون أي SendHoldTime غير صفرية أكبر من HoldTime.

يوصي RFC بالتفعيل الافتراضي وبالقيمة الأكبر بين ثماني دقائق وضعف HoldTime. هذه نقطة بدء وليست رقماً موحداً. فخادم المسارات والعاكس ونظير العبور والجهاز محدود الموارد تختلف أحمالها وكلفة إعادة ضبطها.

عند الانتهاء يجب تسجيل Send Hold Timer Expired، وتحرير موارد BGP، وإغلاق TCP، وتحديث حالة المحاولة، والانتقال إلى Idle. يمكن محاولة NOTIFICATION فقط إن لم تؤخر الإغلاق. خصصت IANA الرمز 8 والرمز الفرعي 0. ولأن العطل نفسه قد يمنع وصول الإشعار، يبقى السجل المحلي المرجع الأول.

أربعة كواشف لأربعة أسئلة

يراقب HoldTimer استقبال BGP، ويراقب SendHoldTimer تقدم الإرسال المحلي، ويفحص BFD استمرارية مسار التمرير، بينما تعالج إعادة TCP وkeepalive حالة النقل. قد تكون نتائجها المختلفة صحيحة في آن واحد.

يمكن أن يبقى BFD وTCP سليمين، وأن تُجدد KEEPALIVE الواردة HoldTimer، ومع ذلك ينتهي SendHoldTimer لأنه لم تتقدم رسالة محلية واحدة. ينبغي أن يحفظ التحقيق أربع قضايا منفصلة: الاستقبال المحلي، الإرسال المحلي، معالجة المسار البعيدة، وتمرير الحزم.

لا يكتشف المؤقت كل «زومبي» BGP ولا يثبت فشل مستوى البيانات. إنه يضع حداً للانتظار عندما يستمر العجز عن الإرسال.

الإغلاق إجراء تصحيحي له ثمن

يؤدي إنهاء الجلسة إلى إبطال المسارات المتعلمة وإعادة اختيار الأفضل وتحديث FIB والإعلانات البديلة. وقد تتبع إعادة الاتصال عملية نقل جدول كامل. أما الانتهاءات المتزامنة عند عاكس أو خادم مسارات فتولد موجة تقارب.

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

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

اختبار الكناري يحافظ على المسار

فصل الواجهة يختبر BFD أو HoldTimer قبل الآلية المطلوبة. الاختبار الصحيح يبقي مسار التمرير وBGP الوارد حيين، ويوقف قراءة BGP البعيدة بصورة مضبوطة.

يوثق BIRD 3.3.0 الأمر disable rx للاختبار فقط ويحذر من الإنتاج. في مختبر معزول، تُسجل البنية البرمجية وHoldTime وSendHoldTime وحالة المؤقت والقوائم الطبيعية قبل العطل. وأثناءه تُثبت KEEPALIVE المستمرة، وتوقف آخر إرسال، وقائمة الإرسال أو نافذة الصفر، وسحب مضبوط بقي محجوزاً.

عند الانتهاء تُلتقط العلة والتوقيت ومحاولة NOTIFICATION وإغلاق TCP والانتقال إلى Idle. وبعد إزالة العطل تُثبت إعادة الاتصال بلا حلقة وتصحيح المسار وFIB والحزم. قائمة دعم FRRouting وخيار BIRD ادعاءان عن التطبيق؛ أما النسخة المنشورة فتحتاج إلى برهان تشغيلها.

سلطة القرار تستلزم حيازة الدليل

من يستطيع قطع ترابط حرج يجب أن يحتفظ بآخر رسالة أُنشئت، وآخر إرسال ناجح، وعمر القائمة وعمقها، ونافذة TCP، وإعادة الإرسال، وأوقات الوارد، وتاريخ المؤقت والسبب النهائي. كما يجب تحديد السحوبات المحجوزة ومدة الرؤية القديمة وكيفية التقارب.

تتوزع هذه البيانات عادة بين برنامج التوجيه ونظام التشغيل والمجمّع وبوابة الجار ومركز العمليات. سيادة البيانات العملية هي القدرة على جمعها وحفظها واستخدامها. السلطة بلا دليل اعتباطية، والدليل بلا حق تصرف لا يصلح المسار.