الخلاصة

  • صُمم عداد SNMP الأصلي ذو 32 بت ليعود من الحد الأقصى إلى الصفر. لذلك لا تثبت القراءة الأصغر وحدها عطلاً أو إعادة تشغيل أو حركة عكسية.
  • قصّرت سرعات الوصلات مدة الالتفاف. أضافت MIB عدادات عالية السعة من 64 بت، مع إبقاء البتات الدنيا الـ32 كي تستمر أدوات الإدارة القديمة.
  • الاتساع لا يعالج إعادة الضبط. يحدّد sysUpTime وifCounterDiscontinuityTime حقبة القياس؛ وإذا تغيّرت بين قراءتين وجب إسقاط الفرق المحسوب.

الرقم عاد إلى الخلف ولم تعد الرزم

تقرأ منصة الإدارة قيمة تقترب من 4.3 مليارات ثُمانيّة على واجهة بسرعة 1 Gb/s. بعد قليل تظهر قيمة صغيرة، مع أن الوصلة لم تهبط. يعطي الطرح العادي رقماً سالباً، لكن الواقع التشغيلي لم يتحرك إلى الوراء.

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

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

كان الالتفاف جزءاً من النوع منذ البداية

عرّف RFC 1155 عام 1990 النوع Counter كعدد صحيح غير سالب يزيد حتى 2^32-1 ثم يبدأ من الصفر. الالتفاف خليفة طبيعي في فضاء محدود؛ لا يلغي الأحداث السابقة ولا يشخّص حالة المنفذ.

نقل RFC 1213 هذه الدلالة إلى MIB-II. احتوت صفوف الواجهات ifInOctets وifOutOctets وعدادات الرزم، إلى جانب sysUpTime وifLastChange. وُجد سياق زمني، لكن العداد لم يحمل نقطة بداية مطلقة أو عدد الدورات التي أتمها.

جاء RFC 2578 في SMIv2 بحد أوضح: لا قيمة ابتدائية معرّفة لـCounter32 أو Counter64، ولذلك لا تحمل عينة منفردة، عموماً، معنى كافياً. كلاهما يلتف؛ الفرق أن فضاء 64 بت يؤخر إعادة استخدام الرقم.

إذا انتمت العينتان إلى حقبة واحدة وكان التفاف واحد فقط ممكناً، تستعيد الحسابات المعيارية الزيادة. أما إذا اتسع الغياب لعدة دورات، فلا يكشف الطرفان عدد الدورات المفقودة.

جعلت السرعة عرض العدد مهلة تشغيلية

ضيّقت الوسائط الأسرع نافذة القراءة. يبيّن RFC 1573 أنه، في شروط الحمل المذكورة، يمكن لعداد ثُمانيّات من 32 بت أن يلتف بعد أكثر بقليل من 57 دقيقة على Ethernet بسرعة 10 Mb/s، وبعد 5.7 دقائق على FDDI، وبعد نحو 34 ثانية عند 1 Gb/s. وأبقى RFC 2863 التحليل نفسه.

ليس تقصير زمن الاستطلاع حلاً بلا حد؛ فهو يستهلك معالجة وحركة إدارة، وتكفي عينة ضائعة لإخفاء دورة. كما رُفض تكبير وحدة العد، مثل زيادة العداد مرة لكل 1,024 ثُمانيّة، لأنه يجعل الحركة الهادئة تبدو دفعات: يبقى الرقم ثابتاً حتى يكتمل بلوك ثم يقفز.

كان الحل توسيع النوع. أدخل RFC 1573 مجموعات عالية السعة. ثم ألزم RFC 2863 بعدادات ثُمانيّات ورزم من 32 بت حتى 20 Mb/s، وبعدادات ثُمانيّات من 64 بت فوقها، وبعدادات رزم من 64 بت أيضاً عند 650 Mb/s فأكثر.

كانت الحدود موازنة بين كلفة الـagent وتوفر التنفيذ وخطر الالتفاف، لا شهادة بأن العرض وحده يضمن الصحة.

بقيت النافذة القديمة داخل الجديدة

لم تختفِ كائنات 32 بت. عند توفر العداد العالي السعة، تبقى النسخة القديمة وتعرض البتات الدنيا الـ32 من قيمة 64 بت. يستطيع manager قديم الاستمرار، بينما يملك آخر زمناً أطول قبل الغموض.

تتوافق القراءتان بترديد 2^32، لكنهما لا تسندان التاريخ نفسه بعد انقطاع طويل. إذا انتقل collector بصمت من ifInOctets إلى ifHCInOctets تغير نطاق السلسلة، ولو بقي اسم المنفذ ثابتاً.

وCounter64 ليس سجلاً أبدياً؛ يفرض RFC 2578 التفافه بعد 2^64-1. الاتساع يقلل الالتفاف الطبيعي، ولا يلغي إعادة التهيئة أو إنشاء الكائن من جديد أو فقد العينات.

أمكن للاسم أن يستمر بعد انقطاع القياس

قد تُنزع بطاقة وتعود، أو يعاد ضبط عداد العتاد فيما يبقى SNMP agent عاملاً. تشغيلياً هي الواجهة نفسها، والاحتفاظ بـifIndex مفيد. لكن وصل القيم القديمة بالجديدة يصنع تاريخاً كاذباً.

كان الاختيار القديم إما حفظ كل القيم أثناء الغياب أو منح الواجهة index جديداً. أضاف RFC 2233 ifCounterDiscontinuityTime، فصار ممكناً إبقاء هوية الصف والتصريح بحقبة جديدة للعداد.

يعرّفه RFC 2863 بأنه قيمة sysUpTime عند أحدث انقطاع أصاب واحداً من كائنات Counter32 أو Counter64 المرتبطة بالواجهة. وتكون القيمة صفراً إذا لم يحدث انقطاع منذ إعادة تهيئة نظام الإدارة.

وهكذا يسمّي ifIndex الواجهة داخل سياق الإدارة، ولا يعد بأن تراكم اليوم امتداد لتراكم الأمس.

حدّد الطابع الزمني موضع القطع لا سببه

قاعدة manager صريحة: إذا اختلف ifCounterDiscontinuityTime بين الاستطلاعين وجب إسقاط الفرق. ويجب فحص sysUpTime بصورة مستقلة، لأن إعادة تهيئة agent قد تغيّر سياق الزمن والفهارس والعدادات معاً.

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

ولا يشرح الطابع الزمني السبب؛ فهو لا يفرّق بين استبدال بطاقة، وتحديث برمجيات، وإعادة إنشاء كائن، وخطأ تنفيذ. يطبق RFC 3635 الحد نفسه على عدادات Ethernet من دون تحويله إلى تشخيص موثّق أو إثبات هوية.

لذلك تسمح العلامة الثابتة بالمقارنة داخل النموذج، لكنها لا تثبت مطابقة المنتج أو وصول الرزم أو صحة فاتورة أو أثر خدمة.

المصادر وحدود الدليل

تتكون المجموعة التاريخية المغلقة من RFC 1155 وRFC 1213 وRFC 1573 وRFC 2233 وRFC 2578 وRFC 2863 وRFC 3635. تثبت الأنواع وتطورها وواجبات الإدارة، ولا تقيس الانتشار الحالي أو مطابقة منتج، ولا تفسر حادثة حية أو تثبت التسليم والفوترة.