بعد أن تعرفنا على المشكلة وأضرارها نأتي الآن إلى أسبابها والتي قد تكون:
- عطل هاردوير في الذاكرة.
- أخطاء برمجية.
- استنزاف الذاكرة من قبل بعض الـ services أو البرامج.
- الإعدادات الخاطئة.
ولكن من أهم العوامل التي تؤدي إلى استنزاف الذاكرة هو بروتوكول الـ BGP فهو يقوم بمعالجة كميات كبيرة من الـ routes مقارنة مع بروتوكولات الـ routing الأخرى لذلك فهو يعتبر من أكثر البروتوكولات استهلاكا للذاكرة. حيث أصبح ذلك شائعا خصوصا عند عبور الـ count limit الخاص بالـ route.
حالات الذاكرة وخطورتها :
تتغير حالات استهلاك الذاكرة حسب خطورتها، لكن بشكل افتراضي يتعامل بروتوكول الـ BGP (والذي سنأخذه كمثال للتطبيق) مع حالات الذاكرة المنخفضة كالتالي (مع العلم إنها غير ثابتة ويمكن تغيير قيمها):
Minor alert (85%): تعتبر هذه الحالة اقل الحالات خطورة حيث يتوقف بروتوكول الـ BGP عن بدء أي route جديدة ولكن لحسن الحظ ستبقى الـ routes القديمة موجودة.
Severe alert (90%): هذه الحالة هي الثانية في درجة خطورتها حيث يقوم بروتوكول الـ BGP بإيقاف routes معينة كل دقيقتين حتى تتحول الحالة إلى minor. والتي تعتبر بالفعل حل جيد بدلا من فقدان جميع الـ routes. ولكن كيف يختار البروتوكول الـ route التي يجب إيقافها؟
الطريقة كالتالي: يقوم البروتوكول بحساب النسبة بين مجموع الـ paths التي تم استلامها و مجموع الـ paths التي حددت كأفضل path لكل راوتر. مثال: إذا فرضنا إن الـ paths التي استلمناها مجموعها 60 ومجموع الـ paths التي حددت كأفضل path هو 40 إذن ستكون النسبة 3:2 لذلك فالـroute ذات الأعلى نسبة سوف يتم إيقافها وهذا شيء منطقي لكونها الأقل أهمية.
الشيء الرائع أيضا في هذه الحالة هو أننا نستطيع تحديد الـ route التي يختارها الراوتر لكي يتم إيقافها بقصد المحافظة على route أكثر أهمية حسب اعتقادنا كما سنرى بعد قليل.
Critical alert (95%): الحالة الاستثنائية والأكثر خطورة لذلك يقوم الـ BGP بإيقاف جميع الـ routes بشكل نهائي وبصورة تدريجية.
بعد أن تعرفنا على هذه الحالات نأتي الآن لنلقي نظرة على رسائل الـ log التي تظهر في cli الراوتر عند حدوثها وهي كما وضحت سابقا:
وحين استعادة جزء من الذاكرة تتغير رسائل الـlog إلى:
%
أما عندما تتوقف إحدى الـ route كما رأينا في Severe alert تظهر هذه الرسالة :
كيف نعرف حالة الذاكرة الآن؟
لاستعراض حالة الذاكرة حاليا نستعمل الأمر show والتي يظهر فيها إن الذاكرة وصلت إلى حالة الـ Severe Alert:
كما يمكننا وبشكل آخر استعراض حالة الراوتر من حيث عدد الـ process التي يعالجها حاليا وحالة الـ CPU و الذاكرة وغيرها وبالتأكيد عن طريق الأمر Show:
تغيير إعدادات الذاكرة:
الآن وصلنا إلى أهم جزء في هذا المقال وهو تغيير إعدادات الذاكرة وكيف نستثني route من الإيقاف من قبل الراوتر، والطريقة كالتالي:
بداية نقوم بتفعيل الـ BGP في الراوتر:
لإعداد الراوتر المطلوب استبعاده:
تفعيل خيار الاستثناء لهذا الـ route:
ومثل ما وضحنا انه يمكن تغيير قيمة النسبة الذي تتغير عندها الحالة وكما يلي:
ولمنع الراوتر من إيقاف الـ routes عند الوصول إلى حالة الـcritical نستعمل الأمر التالي (على الرغم من إن سيسكو لا تنصح بهذه العملية):
أخيرا وكما ذكرت فان حالة الذاكرة المنخفضة لم تعد منتشرة في الشبكات البسيطة نظرا لوجود راوترات ذات مواصفات كافية ولكن قد تحدث غالبا في راوترات الانترنت ومجهزي الخدمة الرئيسيين ISP. إلى هنا ينتهي مقالنا اليوم ونلتقي في مقال آخر بإذن الله.