بروتوكول BGP (Border Gateway Protocol) هو بروتوكول توجيه يستخدم في شبكات الإنترنت لتبادل معلومات التوجيه بين مختلف مزودي الخدمة الإنترنت (ISPs) والشبكات المختلفة. يُعد BGP البروتوكول الأساسي الذي يستخدمه مزودو الخدمة الإنترنت لتبادل معلومات التوجيه الخارجية وتحديد أفضل مسار لنقل حزم البيانات بين الشبكات.
مرحبًا سنناقش عن أحد أكبر بروتوكولات التوجيه المستخدمة في كل جزء من الشبكات تقريبًا وهو بروتوكول BGP .
ما هو بروتوكول BGP ؟
بروتوكول BGP هو بروتوكول التوجيه الخارجي الوحيد EGP يمكنك من تبادل المسار بين الـ AS المختلفة .
تم تعيين رقم ASn لكل مزود خدمة إنترنت بشكل عام يكون فريد على الشبكة العامة هذه تكون أرقام AS عامة.
ويوجد رقم AS آخر يسمى رقم AS خاص .
حقائق سريعة عن بروتوكول BGP
- Path Vector Routing Protocol
- نوعان : IBGP و EBGP
- الـ Administrative distance للـ IBGP هي 200
الـ Administrative distance للـ EBGP هي 20
- الـ Administrative distance للـ IBGP هي 200
- يستخدم بروتوكول TCP وبورت رقم 179 .
يستخدم معايير لأختيار أفضل مسار (metric attribute) وترتيبها كالتالي :-
- Weght : خاص بسيسكو (يتم أختيار أعلى Weight)
- Local Preference : (يتم أختيار أعلى Local Preference)
- AS Path : (يتم أختيار أقصر مسار بناء على أقل عدد AS للمسار)
- Originate : يتم نفضيل المسار الذي تم وضعه local على الروتر كـ next hop
- Lowest Origin Type (يوجد ثلاث Origin Code)
- IGP (تظهر كـ i)
- EGP (تظهر كـ e)
- Incomplete (تظهر كـ ?)
- IGP أقل من EGP و EGP أقل من INCOMPLETE.
- MED أو metric : (يتم أختيار أقل MED)
- الـ EBGP قبل IBGP
- Shortest IGP path to BGP next hop : (يتم أختيار أقل IGP metric للـ BGP next hop)
- Oldest Path : (أقدم مسار) .
- Router ID : (يتم أختيار الجار صاحب أقل RID)
- Neighbor IP address : (يتم أختيار الجار صاحب أقل IP address)
حالات BGP Neighbor هي :-
- Idle State : حالة bgp الأولية
- Connect State : أنتظار الـ TCP Connection مع الـ BGP Peer لو نجح الأتصال Open Message بتتبعت ، لو منجحشي الأتصال بتتحول الحالة لـ (Active State) .
- Active State : الـ BGP بيحاول يبدأ الـ TCP Connection مع الـ BGP Peer لو نجح الأتصال Open Message بتتبعت .
- Open sent : الـ BGP أنشأ الـ TCP Connection مع الـ BGP Peer وبعت Open Message ومنتظر Reply Open Message ، بمجرد أستلام Reply Open Message يرسل Keep-alive Message .
- Open confirm :الـ BGP يستلم Reply Keep-alive Message .
- Established : :الـ BGP تم إنشائها بشكل كامل ، و الـ Update Message بتتبعت بالـ Routing Information .
رسائل بروتوكول BGP :-
- Open Message : الرسالة اللي بتتبعت بين الـ Peers علشان تبدأ Session ، تحتوي على :-
- BGP Version : ولازم يكون متشابه بين الـ Peers
- رقم الـ AS الخاص به
- BGP Router ID
- Keep-alive Message : رسائل بتتبعت بشكل دوري (Every 60 Second By Default) علشان يتأكد أن الـ Remote Peer لسا متاح ولا فقد الأتصال ، لو الروتر مستلمشي Keep-alive خلال Hold-Time بيكون (Every 180 Second By Default) الروتر بيعتبر الـ Peer ده ميت .
- Update Message : لتبادل الـ Routes بين الـ Peers .
Notification Message : بترسل عند حدوث خطأ ، عندما ترسل الـ BGP بيقع ويعمل Reset .
نتحدث عن الحقائق المهمة الأخرى لـ BGP بالتفصيل على النحو التالي :-
حقائق هامة عن بروتوكول BGP
- يمكن إستخدام اي IP متاح كـ Router ID لتشغيل بروتوكول الـ BGP حتى لو كان الـ IP ده مش موجود على الروتر .
- يجب ان يكون الـ Router ID نفس الـ Router ID المعرف في الـ OSPF لإعادة توزيع المسارات من OSPF إلى BGP أو العكس .
- الـ Subnet mask المستخدم في الـ Routing table يجب استخدامه في الـ BGP لكي ينشر تلك المسارات في الـ BGP .
- أثناء إعادة توزيع OSPF إلى BGP ، بشكل افتراضي يتم فقط إعادة توجيه OSPF داخل الـ Area والمسارات بين الـ Areas إلى BGP .
- إذا تم إعداد الشبكة بدون “mask” يكون classful mask تلقائي مع تفعيل الـ auto-summary ، فإن BGP سيعلن عن الـ classful network فقط في حالة وجود أي شبكات فرعية للشبكة في ال Routing table .
وإذا تم إعداد الشبكة بدون “mask” مع إلغاء الـ auto-summary فيجب أن يحتوي هذا الروتر على الشبكة ال classful تمامًا في ال Routing table للإعلان عنه في BGP . - لقبول ومحاولة اتصالات BGP مع النظراء الخارجيين المقيمين على شبكات غير متصلة بشكل مباشر (في AS أخر) نحتاج إلى استخدام إما الأمر neighbor ebgp-multi-hop أو الأمر neighbor ttl-security ويمكننا استخدام أمر آخر هو “neighbor disable-connected-check” لإنجاز نفس المهمة إذا كان جار BGP على بعد خطوة – hop واحدة .
- تنص قاعدة المزامنة – synchronization على أنه لا يمكن اعتبار ال iBGP أفضل ما لم يكن هناك مسار IGP مطابق لبادئة BGP .
يعلن BGP فقط عن ما يعتبره أفضل مسار ويمكن حل هذه المشكلة إما عن طريق إعادة توزيع مسارات BGP في IGP أو عن طريق إنشاء شبكة كاملة من أجهزة توجيه iBGP وتعطيل المزامنة ، أو عن طريق إنشاء GRE tunnel .
عندما تتم مزامنة BGP مع OSPF ، يجب أن يتطابق ال router ID في كلا البروتوكولين حتى يعمل - أما يتم أستلام من eBGP neighbor بيتم نشره إلى الـ eBGP & iBGP ،
وأما يتم أستلام من IBGP neighbor بيتم نشره إلى الـ EBGP فقط ،
وللإعلان عن المسارات التي تعتمد على iBGP لأقران iBGP الأخرى ، يتطلب عمل إعدادت full-mesh of iBGP peers أو route-reflectors أو confederations . - أثناء إرسال تحديثات BGP يقوم نظراء eBGP بتعديل قيمة ال next-hop إلى ال IP الخاص به . لكن أقران iBGP لا يعدلونه .
- عندما يتم تكوين قيم متعددة في نفس بيان قائمة المجتمع ، يتم إنشاء شرط منطقي AND. يجب أن تتطابق جميع قيم المجتمع لتلبية شرط AND. عندما يتم تكوين قيم متعددة في عبارات قائمة المجتمع منفصلة ، يتم إنشاء شرط منطقي OR. تتم معالجة القائمة الأولى التي تطابق شرطًا.
- الـ peer-group هي عبارة عن مجموعة من الأقران – peers الذين لديهم بوليس مشتركة .
- يتطلب الأمر “default-information originate” إعادة توزيع صريحة للمسار 0.0.0.0 ،
يمكن إدخال المسارات في ال BGP بإحدى الطرق الثلاث :-
– (default route)
– (default-information originate)
– إعادة التوزيع – redistribution - الـ weight والـ local-preference بيتم تعيينه داخلي – inbound ولكنه يؤثر على حركة المرور الصادرة – outbound traffic ،
الـ as-path والـ med بيتم تعيينه خارجياً – outbound ولكنه يؤثر على حركة المرور الواردة والصادرة – inbound and outbound traffic . - يتم تفعيل الـ weight عام بإستخدام الأمر (set weight) أو بتخصيصه لجار بإستخدام الأمر (neighbor weight) .