الخلاصة

  • يضع RFC 3164 حداً قدره 1,024 بايت لحزمة syslog القديمة كاملة، ويلزم المُرحِّل بإضافة طابع زمني مفقود، ويوصي بإضافة اسم المضيف.
  • إذا تجاوزت الإضافات الحد، وجب على المُرحِّل اقتطاع الحزمة؛ ويحذّر RFC من احتمال ضياع معلومات مهمة من نهاية الرسالة الأصلية.

الترويسة تستهلك الميزانية نفسها

لنتصور جهازاً يرسل حزمة syslog شبه ممتلئة بلا طابع زمني صالح. يفحص المُرحِّل حقل PRI قبل إعادة الإرسال. وفق القسم 4.3.2 من RFC 3164، يجب أن يدرج الوقت المحلي الحالي للمُرحِّل بعد PRI، وينبغي أن يضيف اسم المضيف إذا أمكنه تحديده. ويصبح باقي المحتوى المستلَم حقل CONTENT في الرسالة.

هذه الإضافة تستهلك بايتات. فالقسم 4.1 يقيّد الحزمة كلها، لا نص الحدث وحده: تتقاسم PRI وHEADER وMSG سقف 1,024 بايت. إذا تجاوز الطابع الزمني واسم المضيف والفواصل هذا السقف، وجب على المُرحِّل فحص الطول واقتطاع الحزمة إلى 1,024 بايت. وينص RFC على أن ذلك قد يزيل معلومات حيوية من نهاية الحزمة الأصلية.

قد تظل السجلات تبدو سليمة. يرى المُجمِّع أولوية وترويسة واضحتين، بينما قد تكون بايتات نهاية الحدث قد اختفت: تفسير بعد كلمة «لأن»، أو نتيجة أمر، أو معرّف جهاز، أو قيمة تشخيصية. هذه احتمالات توضيحية وليست ادعاءً بوقوع حوادث. تجعل القاعدة نهاية الرسالة عرضة للخطر عندما تدفع الإضافات مدخلاً طويلاً فوق الحد المشترك.

قاعدة معيارية لا إحصاء للتنفيذ

RFC 3164 مذكرة Informational تعود إلى أغسطس 2001 وتصف بروتوكول BSD syslog؛ ولا تثبت أن كل مُرحِّل طبّق القاعدة. يسمح القسم 4.2 بأن يكون محتوى UDP المتجه إلى المنفذ 514 أي رسالة syslog صالحة، ويوصي بأن يضمّن المرسل PRI وHEADER وMSG كي لا يضطر المُرحِّل إلى تعديلها. ويطلب القسم 6.1 من المستقبِلات ألا تتعطل عند رسائل تتجاوز 1,024 بايت، كما يصف سلوكيات مختلفة. ولا يقيس أي منهما انتشار الرسائل الطويلة أو الاقتطاع الفعلي أو ما حفظته المُجمِّعات.

حد الرسالة ليس MTU المسار. فتجزئة IP ومعالجة UDP والاقتطاع في طبقة التطبيق آليات مختلفة. والوقت المُدرج هو الوقت المحلي الحالي للمُرحِّل، لا وقت الحدث بالضرورة. واسم المضيف هو الاسم كما يعرفه المُرحِّل أو عنوان IP؛ ولا يلزم RFC المستقبِل بالتحقق من مطابقته للمرسل.

التنسيقات اللاحقة توضّح الطبقات ولا تثبت اكتمال الترحيل

حل RFC 5424 محل RFC 3164 بترويسة أوضح وبيانات منظّمة. ويشرح RFC 6587 تأطير TCP ويشير إلى أن حد 1,024 أوكتتاً القديم وُسّع في syslog المعياري. أما RFC 3195 فيستخدم حساباً مختلفاً: ملفه RAW يحد متن كل حدث بـ 1,024 بايت من دون احتساب كلفة تأطير BEEP. توضح المقارنة أن الرقم نفسه قد يقيس أشياء مختلفة؛ لكنها لا تثبت اختفاء المرسلين أو المُرحِّلات القديمة عند نشر RFC أحدث.

الدرس التاريخي محدد: قد يستهلك المُرحِّل، عند إضافة السياق، الميزانية المحدودة نفسها التي تحمل المحتوى. وصول الحزمة وتحليلها وأرشفتها لا يثبت أن الرسالة الأصلية وصلت كاملة. ويتطلب إثبات ذلك بايتات المصدر، ومدخلات ومخرجات كل مُرحِّل، وتحليل المُجمِّع، ثم قراءة لاحقة.

المصادر