مقدمة#
تناولنا سابقا بروتوكول RIP وعرضنا أهم ميزاته وكيفية استخدامه ومتى نستخدمه، وإحدى النقاط التي ذكرناها أنه مناسب للشبكات الصغيرة وتقل فاعليته كلما كبرت الشبكة لمحدودية قدرته على توجيه البيانات حتى 15 hop، أي إذا افترضنا أن الباكيت هي مسافر يود ركوب المترو فإنه لن يستطيع الوصول إلى وجهته إذا تجاوز 15 محطة بدء من صعوده
هنا تأتي الحاجة إلى استخدام بروتوكول آخر يستطيع أن يعمل في بيئة الشبكات الكبيرة والمعقدة وأن يكون سريعا ومرنا في اختيار المسار الأنسب لتوجيه البيانات، وكما يقال الحاجة أم الإختراع…
سنستعرض بروتوكول EIGRP ولماذا طور وعلى ماذا، طريقة عمله، ما يميزه عن غيره، الخوارزمية المستخدمة لتحديد أفضل مسار وكيف نستخدمه، سأذكر النقاط والمصطلحات الأساسية لعمل البروتوكول وبعدها سأشرح كيف يعمل بدء من التعرف على جيرانه حتى وصول البيانات إلى وجهتها
قامت شركة سيسكو سنة 1992 بتطوير بروتوكول EIGRP ليكون خلفا لـ بروتوكول IGRP الذي كان يعاني من البطئ في التكيف مع التغيرات الطارئة على الشبكة ومشاكل في حساب عرض النطاق الترددي (Bandiwdth) والتأخير (Latency)، ولم تقم سيكسو بنشره للعلن حتى 2016 ولكن مع قيود فبقي مخصوصا بأجهزتها وحدها وإذا أردنا حصر الإختلاف بينعها فيمكننا القول أن الفارق الأكبر هي في طريقة القياس (Metric) المتبعة، حيث يستخدم EIGRP 32bit مقارنة بسلفه ذو الـ 24bit وهذا مايؤثر على سرعة وذكاء اتخاذ القرارات وإدارة الشبكات الكبيرة والمعقدة بشكل أفضل
قبل أن نخوض في تفاصيل هذا البروتوكول يتوجب علينا بضعة أشياء وهي:
- الـ Autonomous System
- موقع EIGRP بين الداخلي والخارجي (Inerior and Exterior Routing) وقد سبق وشرحتهم في مقدمة إلى التوجيه
جوهر البروتوكول#
قلنا سابقا أنه بروتوكول هجين، لكن ما معنى هذا؟ كما نعلم أن بروتوكلات التوجيه تنقسم إلى قسمين من ناحية نوعية الخوارزميات المستخدمة لإيجاد أفضل مسار، وهي Link State و Distance Vector لكن في حالة EIGRP فإنه لا يعتمد على نوع واحد، بل يأخذ أفضل ميزات النوعين ليكون بروتوكول التوجيه الأسرع في التكيف مع تغيرات الشبكة على الإطلاق، فهو لا يعتمد على عدد القفزات (Hops) فحسب كبروتوكول RIP أو على LSDB كـ OSPF وبخوارزمية DUAL التي سنذكر طريقة عملها بعد قليل
إدارة البيانات#
لكن ليدير بياناته باحترافية مع السيناريوهات المعقدة فإنه يعتمد على ثلاثة جداول يخزن فيها المعلومات التي تلزمه، وهي:
- جدول الجيران (Neighbors Table): يحتوي على الأجهزة المتصلة بالمنافذ المفعل عليها البروتوكول، ويستعلم عنها عن طريق إرسال رسالة Hellow
- جدول الطوبولوجيا (Topology Table): يحتوي على تفاصيل هيكلة الشبكة كالمسارات المؤدية إلى نقطة ما، والمسافة التي تفصلها بينه وبينها والجيران الذين يساعدون في الوصول إليها، وليحصل على هذه التفاصيل فإنه يستخدم خوارزمية DUAL
- جدول التوجيه (Routing Table): يحتوي على بيانات التوجيه الأفضل بين المسارات كسرعة المسار وثبات إتصاله، ويحدث معلوماته فور حدوث تغيير في الجدولين السابقين
خوارزمية DUAL (Diffusing Update Algorithm)#
قلب EIGRP النابض… الخوارزمية التي يستخدمها هذا البروتوكول في إيجاد المسار الأقصر، الأسرع، الأقل تأخيرا والأكثر ثباتا وضمان عدم وجود loop في المسار
ولنفهمه يتوجب علينا معرفة عدة مصطلحات، هي:
الـ Feasible Distance (FD): هي التكلفة الإجمالية التي يحسبها الموجه لإرسال البيانات منه حتى وجهتها النهائية
الـ Reported Distance (RD): هي التكلفة التي يخبرنا فيها الجار (الموجه) حتى الوصول إلى وجهة البيانات النهائية من منظوره، أي بمعنى آخر هي الـ FD لجارنا، وتدعى أيضا بـ Advertised Distance
الـ Successor: هو الجار صاحب ال FD الأقل، أي ذو التكلفة الأقل وهو الذي يوضع في جدول التوجيه
الـ Feasibility Successor: هو الموجه الجار الذي يمتلك مسارا احتياطيا
شرط الـ Feasibility Condition، حتى يعتبر EIGRP الجار Successor يجب أن يكون قيمة الـ RD أقل من الـ FD، وإلا ما يضمن عدم وجود loop
مثلا، لدينا أربعة نقاط A, B, C, D
بين A و B تكلفته 5
بين B و D تكلفته 7
بين A و C تكلفته 4
وبين C و D تكلفته 3
الآن A يود الوصول إلى D، الـ RD من جهة B تساوي 7 فـ FD تساوي 12
بينما الـ RD من جهة D تساوي 4 أي إن FD تساوي 7، وبما أن مسار D هو صاحب التكلفة الأقل فإنه يختار كالمسار الأنسب ويسجل في جدول التوجيه
أما حساب تكلفة المسارات فتتم عبر عملية معقدة تستند لعدة أشياء كالباندويث واستقرار المسار (Reliabilitiy) وغيرها، لا داعي لمعرفتها حين تعلم الأساسيات هكذا نكون قد شرحنا طريقة عمل الخوارزمية بشكل مبسط ويسير
رحلة البيانات#
الآن بعد شرحنا المفاهيم الأساسية للبروتوكول، حان وقت ربط المعلومات ببعضها وفهم البروتوكول من بداية عمله حتى وصول البيانات إلى وجهتها بعد تفعيل البروتوكول على المنفذ مباشرة يرسل رسالة Hello إلى الجهاز المقابل تتضمن معلومات كـ ASN وإذا ما كان هنالك Authontication، ليرد عليه الجهاز المقابل برسالة تحتوي على الأجوبة وإذا ما كانت متطابقة مع ما لديه فيسجله ضمن جدول الجيران (Neighhbor Table)
ترسل رسالة Hello إفتراضيا كل 5 ثواني وتبقى حتى 15 ثانية في المسارات عالية السرعة أو تكون 15/60 في المسارات البطيئة
بعد أن يضاف الموجه الجار إلى جدول الجيران، يتبادلان جداول التوجيه لمرة واحدة فقط حتى حدوث تغيير في الشبكة ومن الآن وصاعدا لن يتبادلا إلى رسائل Hello دوريا للتحقق من استقرار الاتصال وعدم حدوث أي تغيير في الشبكة
تطبيق عملي#
الآن بعد أن انتهينا من الشرح النظري سنفعل البرتوكول في معمل صغير ونرى كيف نعد أجهزة التوجيه وكيف يحدث الإتصال خطوة بخطوة
بداية لدينا شبكة من مكونة من ثلاثة موجهات:
تم تعيين العناوين التالية لكل منفذ:
| R1 | R2 | R3 | |
|---|---|---|---|
| G0/0 | 20.0.0.1/30 | 30.0.0.1/30 | 30.0.0.2/30 |
| G0/1 | 40.0.0.1/30 | 20.0.0.2/30 | 40.0.0.1/30 |
لتفعيل EIGRP ننفذ الأمر التالي:
Router(config)#router eigrp <autonomous system number>
يجب أن يكون الـ ASN ذاته في جميع الموجهات حتى تصبح العناوين المدخلة ضمن نفس الشبكة، بعدها نضيف العناوين
R1(config-router)#network <ip-address> wildcard-mask
بعد ادخال عنوان شبكة إلى قائمة التوجيه سيبدأ الموجه بإرسال رسائل الـ Hello على العنوان 227.0.0.10 (multicaast)
في مثالنا، سنبدأ بـ R2:
R2(config-router)#network 30.0.0.0 0.0.0.3
R2(config-router)#network 20.0.0.0 0.0.0.3
وهنا يظهر أن المنفذ G0/0 بدء يرسل رسائل hello ليعرف عن نفسه

ننفذ نفس الأوامر على باقي الموجهات:
R1(config-router)#network 20.0.0.0 0.0.0.3
R1(config-router)#network 40.0.0.0 0.0.0.3
R3(config-router)#network 30.0.0.0 0.0.0.3
R3(config-router)#network 40.0.0.0 0.0.0.3
الآن بعد أن تم تفعيل البروتوكول على باقي الموجهات، سنحصر مراقبتنا على المنفذ G0/0 30.0.0.1 وعلى المنفذ المقابل له G0/0 30.0.0.2
نرى هنا بعد ظهور العنوان 30.0.0.2 تم البدء بـ ARP لتبادل عناوين الـ MAC بين الجهازين
ثم أرسل 30.0.0.2 رسالة hello ليعرف نفسه كمستخدم لـ EIGRP
ثم قام 30.0.0.2 بإرسال update init مباشرة (unicast) إلى 30.0.0.1 لبدء تبادل قواعدة البيانات

بعدها قام 30.0.0.2 بإرسال update تحتوي على acknowledgment لتأكيد وصوله رسالة ال update init وبعدها 30.0.0.1 يرسل قاعدة البيانات الخاصة به



