NameCheap-Hosting

استفد من الخصومات على خدمات الاستضافة بمختلف انواعها

VPS hosting: up to 30% off!

الأحد، 11 يناير 2015

بروتوكول OSPF - الجزء الأول


بروتوكول OSPF

الـ (OSPF) هو بروتوكول مفتوح (open standard) يمكن أن يعمل على أجهزة الشبكات مصنعة من عدة شركات بما فيها شركة سيسكو. يمتاز الـ (OSPF) بخصائص ومبادئ (link state) والتي أهمها ارسال التحديثات لأجهزة الراوترات بسرعة عالية اي لحظة وقوع الحدث (event-triggered)، مما يؤدي لاستقرارية الـ (routing tables) للراوترات. يعمل الـ (OSPF) على منظومة تحتوي على عدد كبير من الشبكات، ولا يوجد تحديد لعدد الشبكات او عدد معين لأجهزة الراوتر العاملة في المنظومة كما هو الأمر بالنسبة لبروتوكول الـ (RIP).
يستخدم الـ (OSPF) خوارزمية الـ (Shortest Oath First) أو المسماة بـ (Dijkstra) وذلك من أجل حساب افضل مسار لكل شبكة. ويقوم الـ (OSPF) بارسال تفاصيل عن الشبكات الموجودة داخل المنظومة ولا يقتصر الأمر على عنوان الشبكة الـ (network address) فقط، بل تحتوي المعلومات المرسلة عن الشبكات، نوع الشبكة وعنوان الشبكة ورقم الرواتر الـ (Router ID) المعلن عن هذه الشبكة بالاضافة لتفاصيل أخرى.
يقوم كل راوتر بالاعلان عن الوصلات (links) التي لديه والمفعّلة ضمن عمل البروتوكول وكذلك الوصلات التي تعلّمها من خلال بروتوكول الـ (OSPF) والموجودة لدى الراوترات الأخرى. تستخدم الـ (Link State Advertisements "LSAs") لنشر التفاصيل عن الوصلات الموجودة داخل المنظومة. والجدير بالذكر بأن تفاصيل الشبكات التي تعنى بها الراوترات هي بالأساس موجودة على وصلات، أي أن طبيعة الوصلات وصفتها ينعكس على طبيعة الشبكة وصفتها، ولهذا السبب اعتمد تسمية الوصلات بدل من الشبكات.
يستخدم الـ (OSPF)  قيمة الـ (bandwidth) لحساب كلفة (metric) الوصول لأي شبكة، وتعتمد المعادلة المخصصة لحساب الكلفة على قيمة مرجعية تسمى الـ (reference bandwidth) وقيمتها الافتراضية (108) وتقسم القيمة المرجعية على قيمة الـ (bandwidth) لايجاد الكلفة.
metric = 108 / bandwidth
من أهم مزايا الـ (OSPF) أنه (classless) أي أنه يدعم نقل المعلومات عن الشبكات الجزئية (subnetworks)، حيث تحمل التحديثات المرسلة عن الشبكات قيمة الـ (subnet mask) لكل شبكة مهما كان طوله (VLSM).
وكذلك يمتاز الـ (OSPF) بنقل البيانات المتعلقة بالشبكات بموثوقية (reliability) نتيجة استخدام رسائلة مخصصة (ACK message) لتأكيد استلام الرسائل المختلفة المرسلة من الـ (OSPF). وهذا شبيه بمبدأ بروتوكول (TCP) الذي يمتاز بموثوقية نقل البيانات بين أجهزة المستخدمين لكنه يؤديها بطريقة مختلفة إذ يستخدم (TCP) خانة (Field) مخصصة لذلك ضمن الـ (header) المضاف على البيانات.
يعتمد بروتوكول الـ (OSPF) في عمله على خمسة أنواع من الرسائل (messages) وهي:
1-     Hello تستخدم للتعرف عن الراوترات المجاورة والتي يعمل عليها الـ (OSPF) لتكوين علاقة تبادلية معها
2-     Data Base Description (DBD) تستخدم لارسال ملخص لقاعدة البيانات التي تحتوي على تفاصيل الوصلات الموجودة داخل المنظومة
3-     Link State Request (LSR) تستخدم لطلب تفاصيل عن عدد من الوصلات المعروفة لدى أحد الراوترات المجاورة
4-     Link State Update (LSU) تستخدم لارسال التفاصيل عن عدد من الوصلات او لارسال تحديثات (updates) التي تجري على الوصلات. تحتوي الـ (LSU) على عدد كبير من الـ (LSAs)
5-     Acknowledgement تستخدم لتأكيد استلام أي ارسالية للـ (OSPF) عدا الـ (Hello)
ويتم استخدام العنوان (224.0.0.5) لتوجيه هذه الرسائل اي يكون هذا العنوان بمثابة عنوان المرسل إليه الـ (destination address) لهذه الرسائل.
الاكتشاف والتبادل
يعمل الـ (OSPF) على اكتشاف راوترات مجاورة (automatic neighbor discovery) يعمل عليها نفس البروتوكول وذلك ليتم تبادل المعلومات الخاصة بالشبكات (الوصلات) (routing information exchange)، ولا تتم عملية التبادل او ارسال تحديثات إلا من خلال منفذ يوصل لراوتر مجاور (neighbor router) اضيف بعد عملية الاكتشاف.
عند تشغيل بروتوكول الـ (OSPF) على الراوتر وتفعيل البروتوكول على أي منفذ (interface) للراوتر،  يقوم الـ (OSPF)  بارسال (Hello packet) عبر المنفذ حاملة رقم الراوتر (Router ID) ومعلومات أخرى، وفي حال وجود رواتر على الطرف الآخر للمنفذ يعمل عليه بروتوكول الـ (OSPF) فإنه يقوم بارسال الـ (Hello packet) للراوتر الأول ردا على طلبه في حال تحققت الشروط لذلك.
في الصورة التالية، نفترض أن الـ (OSPF) يعمل الراوتر (R2) بكل منافذه، بعد تشغيل الـ (OSPF) على الراوتر (R1) وتفعيل البروتوكول على المنفذ، تتم الخطوات التالية:
1-     يقوم الـ (OSPF) في الـ (R1) بارسال (Hello) عبر المنفذ آملا في ايجاد راوتر مجاور، تتغير الحالة عند الـ (R1) هنا من الـ (down) إلى الـ (initial).
2-     يقوم الـ (R2) بالتحقق من بعض المعلومات المحمولة في الـ (Hello packet) لمطابقتها الـ (R2). وسنأتي لاحقا على شروط المطابقة التي يجب أن تتم بين الراوترين لحصول المجاورة.
3-     في حال انطباق الشروط  يقوم الـ (R2) بالرد وارسال (Hello packet) تحمل رقم الراوتر (RID)   للراوتر (R1)، عندها تصبح الحالة بين الراوترين (2-way).
4-     يستمر ارسال الـ (Hello packets) بين الطرفين بشكل متكرر للمحافظة على العلاقة التي نشأت بينهما


 يتم انتخاب الراوترات الـ (DR/BDR) بعد تشكل حالة الـ (2-way) في حال كانت نوع الشبكة (الوصلة) بين الراوترات تتطلب اختيار الـ (DR/BDR). بعد ذلك تبدأ عملية تبادل المعلومات المتعلقة بالشبكات بين الطرفين حسب التالي:

1-     يتم تحديد ادوار الـ (master/slave)  بين الراوترات، الراوتر صاحب الرقم الأعلى  يكون هو الـ (master) ولنفرض أنه الـ (R2) ويكون البادئ بعملية التبادل وهنا تكون الحالة مع الراوتر الآخر في وضعية الـ (exstart).
2-     يقوم الـ (master)  بارسال ملخص عن قاعدة البيانات (Link State Database "LSDB")  التي لديه والتي تضم تفاصيل الوصلات والتي بناؤها من راوترات أخرى وكذلك الوصلات التي لديه والمفعلة ضمن بروتوكول الـ (OSPF). يتم ارسال الملخص عوضا عن التفاصيل لكبر حجمها حيث من المحتمل أن يكون الراوتر الآخر على دراية بتلك التفاصيل. يُحمل الملخص باستخدام الـ (DBD). تتغير الحالة  لتصبح (exchange).
3-     يقوم الراوتر الآخر بعد استلام الـ (DBD) بارسال الـ (LSR) لطلب تفاصيل عن الوصلات التي لا يعرفها أي غير موجودة في الـ (LSDB) الخاص به.
4-     يجهز الـ (R2) الرد ويقوم بارسال التفاصيل المطلوبة باستخدام الـ (LSU) والتي تحمل الـ (LSAs) عن الوصلات المطلوبة. وتتحول الحالة لتصبح (loading).
5-     وتتم نقل البيانات من الـ (salve) الى الطرف الآخر بنفس الآلية وتصبح الحالة  بين الراوترات (full)
الجداول التي يستخدمها OSPF
يعمل الـ (OSPF) على ثلاثة جداول (tables) خلال عمله تؤدي غايات مختلفة، وهي:
1-     جدول الراوترات المجاورة (neighbor table)
2-     جدول قاعدة بيانات للوصلات (topology database)
3-     جدول التوجيه (routing table)
يستخدم الـ (neighbor table) لتخزين بيانات الراوترات المجاورة التي تم التعرف عليها خلال مرحلة الـ (neighbor discovery)، وتشمل هذه البيانات رقم الراوتر (RID)، عنوان الراوتر (IP address)، رقم المنفذ الداخلي الذي يؤدي للراوتر المجاور، المؤقتات (timers)، عدد الرسائل الخاصة ب (OSPF) المرسلة لكل راوتر. الجدير بالذكر أن الـ (neighbor table) يتم بناؤه باستخدام الـ (hello packet). وتستمرارسال الـ (hello packet) بين الراوترات المتجاورة بتردد ثابت وتسمى ب (hello interval) وتبلغ القيمة الافتراضية لها (10 ثواني) على منفذ الـ (FastEthernet)، وهذا يعني أن كل راوتر يتوقع وصول (hello packet) كل (10 ثواني) وفي حال عدم استقبالها خلال مدة معينة تسمى (dead interval) وقيمتها الافتراضية (40 ثانية) يقوم الراوتر بحذف الراوتر المجاور الذي لم يرسل (hello packet) خلال هذه المدة وبالتالي حذف تفاصيل الشبكات التي تم معرفتها من خلال الراوتر المحذوف.
يتم تخزين تفاصيل الوصلات التي يتم التعرف عليها من خلال عملية التبادل بين الراوترات في جدول (topology database) على شكل قاعدة بيانات خاصة تسمى (LSDB)، تستخدم (LSAs) لنقل التفاصيل الموجودة في الـ (LSDB) للراوترات المجاورة إذ يجب أن تكون الـ (LSDB) متوافقة في الراوترات المتجاورة داخل نفس الـ (area). التفاصيل التي يتم ارسالها عن كل وصلة تشمل عنوان الشبكة (network address) و الـ (subnet mask) و نوع الشبكة (network type) وتفاصيل أخرى تعتمد على نوع الشبكة.
 تستخدم خورازمية (Shortest Path First "SFP") لايجاد افضل مسار (best route) لكل شبكة، ففي حال كان هناك عدة مسارات لكل شبكة (وصلة) يقوم الـ (SFP) بحساب افضل مسار اعتمادا على الكلفة الأقل (lowest metric)، ويكون هذا المسار هو الأفضل ويتم اضافته في الـ (routing table). وفي حال وجود أكثر من مسار لشبكة معينة ذات كلفة متساوية تضاف هذه المسارات في الـ (routing table). على أن يقوم الراوتر بارسال البيانات المتوجهة لهذه الشبكة من خلال هذه المسارات بالتناوب، مما يؤدي لتوزيع الحمل (load balancing) على هذه المسارات.
يحتوي الـ (topology table) على تفاصيل الوصلات (الشبكات) الموجودة في المنظومة ولا تقتصر هذه التفاصيل على عنوان الشبكة فقط بل يتعداها لمعلومات تفصيلية دقيقة تضمن أن تحقق المعرفة الكاملة لجميع الراوترات عن طبيعة الشبكة (grid) وطبوغرافيتها ومعرفة كافة التوصيلات بين الراوترات، أي أن كل راوتر لديه معرفة كاملة عن تفاصيل المنظومة التي يعمل بها. وعندما تكون المنظومة مركبة بطريقة (grid) فهذا يعني أنه يمكن أن تكون هناك عدة مسارات لأي شبكة بعكس تركيبة الـ (tree) والتي تتصف بوجود مسار واحد فقط لكل شبكة.
يعمل الـ (SFP) على الـ (topology table) ويقوم بحساب افضل مسار للشبكات وبالتالي فإن الـ (SFP) يحول الـ (grid) الموجودة في الـ (topology table) إلى (tree) في الـ (routing table).
انواع الشبكات Network Types
يتميز بروتوكول الـ (OSPF) بأنه ينقل تفاصيل دقيقة عن الوصلات (الشبكات) ومن هذه التفاصيل نوع الشبكة (الوصلة) والتي يمكن أن تكون واحدة من الأنواع التالية:
1-     شبكة (point-to-point) وتتكون من طرفين (جهازي راوتر) كما في شبكة القناة المستأجرة (leased line) لشبكة الـ (WAN)
2-     شبكة (Broadcast Multiaccess) وهي الشبكة التي تتكون من أكثر من طرف (راوتر) وتتميز بامكانية تمرير رسائل المرسلة بطريقة الـ (broadcast) كما هو الأمر في شبكات الـ (Ethernet).
3-     شبكة (nonbroadcast Multiaccess "NBMA") وهي الشبكة التي تتكون من أكثر من طرف (راوتر) ولا تستطيع تمرير رسائل الـ (broadcast) كما هو الأمر في شبكات الـ (frame relay).
4-     شبكة (point-to-multipoint) وهي التي تتكون من عدة أطراف (راوترات) لكنها تكون متصلة مع راوتر رئيسي كما هو الأمر في شبكات الـ (frame relay) عندما توصل بطريقة الـ (hub and spoke).


رقم الراوتر (Router ID)

عند تفعيل الـ (OSPF) على الراوتر يقوم البروتوكول باختيار رقم للراوتر، بحيث يكون الرقم فريد لا يتكرر على الراوترات. يتكون الرقم من (32-bit)، بحيث يكون الرقم بمثابة عنوان (IP addrss) أحد المنافذ للراوتر. وتكون عملية الاختيار الآلية على النحو التالي:
-         اختيار أعلى عنوان من بين عناوين المنافذ الوهمية (highest IP address for loopback interfaces)
-         إن لم يكن هناك منافذ وهمية يتم اختيار أعلى عنوان من بين عناوين المنافذ الحقيقية (highest IP address of physical interfaces)
يبقى عنوان الراوتر ثابث ما لم يعاد تشغيل الراوتر، يمثل هذا الرقم التعريف بالراوتر إذ يُستدل على الراوتر والوصلات الموجودة عليه من خلال هذا الرقم. ويرجع أولوية اختيار رقم الراوتر لتكون بداية من ضمن منافذ الـ (loopback interfaces) كونها تتصف بالاستقرارية عكس المنافذ الحقيقية (physical interfaces) التي تتعرض لها للتغيير باستمرار بين العاملة او غير العاملة مما يؤدي لعدم استقرار رقم الراوتر.
أيضا يمكن تحديد رقم الراوتر بطريقة يدوية عن طريق أحد الأوامر (commands) المخصصة لبروتوكول الـ (OSPF). ولا يشترط أن يكون الرقم المحدد من ضمن العناوين الموجودة على الراوتر.