وصلنا اليوم إلى القسم الثالث من شرح بروتوكول الـBGP والذي سوف أخصصه لشرح كيفية عمل البروتوكول بشكل عام منذ أول لحظة لتشغيله وصولا إلى اللحظة التى يبدأ فيه بتوجية الترافيك إلى مخدمات أنترنت آخرى وسوف يتضمن الشرح أيضا كيفية أعداد البروتوكول على الروتر
كيف يعمل بروتوكول الـBGP ؟
بداية أحب أن أذكر بأن بروتوكول الـBGP يعمل على الطبقة الرابعة وهو يستخدم الـTCP لتمرير الترافيك والأتصال مع الروترات الموججودة في AS آخرى وكما هو معروف عن الـTCP بأن أول شيء يقوم به هو فتح جلسة أو Session مع الطرف الآخر لذا الخطوة الاولى هي فتح جلسة مع الطرف الآخر من خلال البورت 179 الخاص بي بروتوكول الـBGP وأحب أن أعبر عن هذه الخطوة باللغة الأنكليزية بي establish connections with the other BGP router والخطوة الثانية هي تبادل الـRouting Table مع الطرف الآخر وهو يقوم فيها مرة واحدة فقط وبعدها يقتصر التبادل بين الجاران على شكل تحديثات فقط Update message ومن هنا أحب أن اذكر انواع الـ Messages التي تتم بين الروترات في الـBGPوهي كما مذكورة في الـ RFC 1771 أربع انواع بينما نجد في RFC 2918 قد تم أضافة نوع خامس وهم بالترتيب التالي :
Open message: وهي تستخدم اول مرة من أجل عمل اتصال بين الروترين او كما يتم التعبير عنهم PEERS ومحتويات الـHeader على الشكل التالي:
Optional parameters
|
Optional parameters length
|
BGP identifier
|
Hold-Time
|
Autonomies system
|
Version
|
Update message: وهو النوع الأكثر تبادلا بين الـPeers وهو خاص بتبادل المعلومات والتحديثات بين الجيران ويتضمن نوعين من الرسائل:
الأول : Withdrawn routes وفيه يقوم بأخبار الروتر بأن أحد الأيبيات لم يعد موجودا أو لا يمكن الوصول إليه .
الثاني: Paths وهو يقوم بأعلام الروتر بوجود طريق أو Path أفضل للوصول إلى شبكة أو أيبي معين وتتضمن الرسالة عنوان الأيبي وأيبي الـNext router الخاص بالمسار الجديد ومحتويات الـHeader على الشكل التالي:
Network Layer
Reach ability
Information
|
Path
Attributes
|
Total Path
Attribute
Length
|
Withdrawn
Routes
|
Unfeasible Routes Length
|
Notification message: وهي خاصة بتبليغ الطرف الثاني بوجود خطأ في الأتصال وبأن الـ Session سوف يتم أغلاقه وهي تبين أيضا سبب أغلاق الجلسة ومحتويات الـHeader على الشكل التالي:
Error Data
|
Error Subcode
|
Error Code
|
Keep alive message: وهو من النوع المألوف على الجميع وهي تهدف إلى التأكد من وجود اتصال أو Connective بين الـ Peers وهي تتم مع جميع الجيران المتصلين مع الروتر وكل 30 ثانية وحجمه 19 بايت وهو لايحوي أي شيء أي عبارة عن BGP Packet فارغة سوف نأتي على شرحه لاحقا
Route-refresh message: وهو النوع الخامس الذي تحدثت عنه وهو خاص بطلب family routing information (الصراحة لا أعلم ماهي وظيفة هذا النوع من الرسائل بالتحديد أتمنى الأفادة من الخبراء!)ومحتوياته تكون على الشكل التالي:
Subsequent Address Family Identifier
|
Reserved
|
Address Family Identifier
|
وآخيرا أحب أضيف ملاحظة هامة وهي محتوى هذه الرسائل ليس إلا جزء من محتوى BGP Packet وهو محدد تحت قسم الـ Data وهو بشكل عام يكون على الشكل التالي:
-
Marker: قسم خاص بي الـ Authentication الخاص بي الـ BGP وهو بحجم 16 بايت
-
Length: مفهوم وهو بحجم 2 بايت
-
Type: نوع الرسالة open, update, notification, keepalive route-refresh وهي تكون على شكل أرقام من 1-5 وهو بحجم 1 بايت
-
Data: المعلومات الخاصة بكل رسالة والتى تحدثنا عنها سابقا
ومن هنا نستنتج أن شكل الـ Keep alive يكون على الشكل التالي
طبعا أنا لا أريد أن ادخل في تفاصيل أكثر حول البروتوكول لان هذا الشيء تابع اكثر لشهادة CCIP الخاصة بمقدمي الخدمة ولنتحدث الآن عن طريقة أعداد بروتوكول الـ BGP
قد تتفأجا قليلا إذا أخبرتك أن تشغيل الـBGP ليس بذلك التعقيد ويتطلب منك في المقام الأول تعريف الروتر بالـ Peers المتصل معهم بشكل يدوي وتعريف الروتر بالشبكات المتصل معها كما تعودنا في أعداد أي بروتوكول توجيه ويبقى التعقيد الموجود في الـBGP هو في أعداد الـ Attributes والبوليسي والخ………
لذا لنبدأ اولا بطريقة تعريف الجيران ببعضهم البعض وسوف نأخذ المثال الموضح بالصورة التالية
في هذا المثال نجد 3 روترات يمثل كل واحد منها Autonomies system وهي موضحة بالصورة ولنقوم أولا بأعداد الروتر رقم واحد في الـAS 650001
Router1(config)#router bgp 65001
Router1(config-router)#neighbor 10.10.10.2 remote-as 65002
Router1(config-router)#neighbor 10.10.20.2 remote-as 65003
Router1(config-router)#network 10.10.10.0 mask 255.255.255.0
Router1(config-router)#network 10.10.20.0 mask 255.255.255.0
وبالنسبة للروتر رقم أثنان
Router2(config)#router bgp 65003
Router2(config-router)#neighbor 10.10.20.1 remote-as 65001
Router2(config-router)#network 10.10.10.0 mask 255.255.255.0
Router2(config-router)#network 192.168.10.0 mask 255.255.255.0
وآخيرا الروتر رقم 3
Router3(config)#router bgp 65002
Router3(config-router)#neighbor 10.10.10.1 remote-as 65001
Router3(config-router)#network 10.10.10.0 mask 255.255.255.0
Router3(config-router)#network 192.168.1.0 mask 255.255.255.0
بهذه الأعدادات نكون قد قمنا بتشغيل الـBGP وهي نقطة التوقف لهذا اليوم وسوف أتابع معكم في الأجزاء القادمة أعدادات أكثر تخص هذا البروتوكول مع انني تحدثت في بداية شرحي لهذا البروتوكول بأن الشرح مقسم إلى ثلاثة أقسام لكن زيادة الخير خير وآخيرا أرجو منك الدعوة لي ولوالداي وبالفرج ان شاء الله ودمتم بود