You are on page 1of 175

BGP ‫بروتوكول الــــ‬

Dynamic routing protocol ‫ كان عندك الــــ‬CCNA ‫لما كنت بتدرس‬


: ‫فيه نوعين‬
‫ و‬OSPF ‫ و‬RIP ‫ زى الـــ‬interior gateway protocol ‫ وده الـــ‬IGP ‫الــــ‬
Autonomous ‫ ودى بروتوكوالت بتستخدم داخل نفس الـــ‬IS-IS ‫ و‬EIGRP
System
MadeBY
MohamedAbdel
nas
ser
‫بالنسبة للـــ ‪ AS‬فده مجموعة من الــــ ‪ Routers‬بتمتلكها شركات الــــ ‪ ISP‬لكن‬
‫بيكون ليها ‪ Public AS‬وأى شركة ‪ ISP‬بيكون ليها ‪ AS‬خاص بيها وبيتم شراؤه من‬
‫مؤسسة ‪IANA‬‬

‫النوع التانى هو الــــ ‪ EGP‬وده الـــ ‪ exterior gateway protocol‬ودى عملية‬


‫الربط الخارجى اللى هتم بين ‪ Autonomous System‬المختلفة وبروتوكول الــــ‬
‫‪BGP‬هو اللى هيقدر يقوم بالمهمة دى‬

‫‪ -‬الــــ ‪ BGP‬اختصار لـــ ‪Border Gateway Protocol‬‬


‫‪ -‬بيربط الــــ ‪ Autonomous system‬ببعضها‬
‫‪ -‬بيستخدم من قبل شركات الـــ ‪ Service provider‬وكمان بعض المؤسسات‬
‫اللى ممكن تقدملك مثال خدمات زى الـــ ‪ Hosting‬وغيره‬
‫طيب هل مثال كل شركة محتاجه مثال إنها تشترى ‪ Public AS‬؟‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫أنا عندى نوع اسمه ‪: single homed AS‬‬

‫والنوع ده بتكون الشركة بتاعى أو المؤسسة مربوطة بالـــ ‪ ISP‬بـــ ‪ Link‬واحد فهنا‬
‫مش محتاج ‪ BGP‬وكل اللى هحتاجه بس‪Defualt Route‬‬

‫فيه نوع تانى إسمه ‪: Dual home autonomous system‬‬

‫النوع ده بتكون الشركة بتاعى أو المؤسسة مربوطة بالـــ ‪ ISP‬لكن بـــ ‪Link 2‬‬
‫علشان موضوع الـــ ‪ redundant‬فهنا برده مش محتاج ‪ BGP‬وكل اللى هحتاجه‬
‫بس ‪Defualt Route‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫عندى نوع تالت إسمه ‪: Single Multi-homed‬‬

‫النوع ده بتكون الشركة بتاعى أو المؤسسة مربوطة بالـــ ‪ISP 2‬‬


‫بيكون فيه ‪ link‬معموله ‪ connected‬على ‪ ISP‬و ‪ link‬معموله ‪ connected‬على‬
‫‪ ISP‬تانى وهنا ‪ recommended‬إنك تشتغل بالـــ ‪ BGP‬وبيتوافق عليه من‬
‫مؤسسة ‪IANA‬‬

‫ملحوظة ‪ :‬ممكن أشغل برده فى الموضوع ده الــــ ‪ Defualt Route‬وأعمل عندى‬


‫‪primary path‬على ‪ ISP 1‬و ‪ Backup path‬على ‪ ISP 2‬والدنيا هتشتغل عادى‬

‫لكن تخيل مثال لو عندى خدمة على ‪ISP 2‬‬

‫‪MadeBY‬‬
‫ومحتاج أستعملها مثال والـــ ‪ primary path‬على ‪ISP 1‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫والـــ ‪ ISP 1‬متوصل بــــ ‪ ISP‬تانى ‪ ...........‬لغاية لما يوصل لـــ ‪ ISP 2‬فهياخد‬
‫وقت كبير جدا غير إنه لفه طويله علشان يوصل فى حين إنك أساسا لما تشتغل بالـــ‬
‫‪BGP‬هيكون فيه ‪ connected‬بينك وبين ‪ ISP 2‬على طول‬

‫عندى نوع رابع ‪: Dual Multi-homed‬‬


‫النوع ده بتكون الشركة بتاعى أو المؤسسة مربوطة بإتنين ‪ ISP‬وبين كل ‪ISP‬‬
‫والمؤسسة بتاعى ‪links2‬‬

‫‪ -‬الــــ ‪ BGP‬بيعتبر‪unicast routing protocol‬‬


‫‪ -‬الــــ ‪ BGP‬بيستخدم ‪TCP port 179‬‬

‫‪ -‬الــــ ‪ BGP‬بيعتبر ‪ Path vector‬يعنى بيختار الـــ ‪ Path‬على حسب عدد الــ‬
‫‪ autonomous system‬القليلة اللى هيقدر يوصل من خاللها للـــ‬
‫‪Destination‬‬
‫‪ -‬الــــ ‪ Update‬فى الــــ ‪ BGP‬فى الـــ ‪ internal‬بيكون ‪ 5‬ثوانى‬
‫‪ -‬الــــ ‪ Update‬فى الــــ ‪ BGP‬فى الـــ ‪ External‬بيكون ‪ 30‬ثانية‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫عندى نوعين من الــــ ‪BGP‬‬
‫النوع األول ‪ IBGP‬و النوع التانى‪EBGP‬‬

‫الفرق بينهم إنى عندى مثال أكتر من ‪ autonomous system‬فلما الـــ ‪Routes‬‬
‫هتخرج من راوتر فى ‪ AS‬مثال رقمه ‪ 1‬إلى راوتر فى ‪ AS‬رقمه ‪ 2‬فهنا هيبقى النوع‬
‫‪External BGP‬‬

‫ولما الــــ ‪ Routes‬توصل للراوتر اللى فى ‪ AS‬رقم ‪ 2‬فهو عايز يبعتها للراوترات‬
‫اللى معاه فى نفس الــــ ‪ AS‬وهنا هقول عليه ‪internal BGP‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫أنواع الــــ ‪ Tables‬فى الـــــ ‪: BGP‬‬

‫عندى الــــ ‪ Neighbor Table‬وده بيحتوى على الــــ ‪Neighbor‬‬


‫والـــــ ‪ BGP Table‬وده بيحتوى على كل الـــ ‪ Routes‬اللى تم معرفتها من خالل الـــ‬
‫‪ Neighbors‬غير المسارات للـــ ‪Destination‬‬
‫والـــــ ‪ Routing Table‬وده بيكون فيه أفضل المسارات بعد اإلعتماد على الـــ ‪BGP‬‬
‫‪Table‬‬

‫أنواع الــــ ‪ messages‬فى الــــ ‪: BGP‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫أول نوع الـــ ‪: Open message‬‬
‫ودى بتستخدم فى فتح الـــ ‪ session‬مع الـــ ‪ Neighbor‬وبيكون فيها الـــ‬
‫‪ holdtime‬و الـــ ‪BGP router ID‬‬

‫عندى كمان الـــ ‪: keepalive message‬‬


‫وده بتستخدم علشان التأكد من إن الـــ ‪ TCP Session‬مازالت مفتوحة مع الـــ‬
‫‪Neighbor‬‬
‫والموضوع ده بيتم كل ‪ 60‬ثانية علشان التأكد‬
‫عندى كمان الــــ ‪: Update message‬‬
‫ودى لو فيه أى ‪ update‬حصل عندى فى الشبكة مثال فيه شبكة جديدة‬

‫عندى كمان الــــ ‪: Notification message‬‬


‫ودى بتحصل لو عندى ‪ error‬حصل سواء كان الـــ ‪ error‬ده خاص بالـــ ‪ Memory‬أو‬
‫الـــ ‪ CPU‬أو ‪ AS Mismatch‬وهكذا‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫بالنسبة للـــ ‪: Neighbors states‬‬

‫الحالة األولى بتكون ‪ Idle‬وفى الحالة دى الراوتر هيبدأ يبحث فى الـــ ‪Routing‬‬
‫‪ table‬إنه يوصل للـــ ‪ neighbor‬إزاى وهيبدأ يعمل ‪ listen‬للـــ ‪ neighbor‬فى‬
‫حالة إنه قدر يعمل إتصال‬

‫لو الراوتر قدر يوصل للـــ ‪ Neighbor‬بعد أما نجح إنه ينشئ إتصال فهنا الراوتر‬
‫بدأ يدخل فى الحالة التانية وهى الـــــ ‪ Connect‬وفى الحالة دى هتبدأ عملية ‪TCP‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫‪ three-way handshake‬ولو نجحت هنبدأ ندخل فى الحالة التالتة اللى هى الــــ‬
‫‪Open sent‬‬
‫لكن لو فشلت فهنا الراوتر هيكون فى حالة الـــ ‪Active state‬‬

‫لكن فى حالة إن الدنيا تمام وعملية ‪ TCP three-way handshake‬كملت فهنا‬


‫الراوتر هيدخل فى حالة الـــ ‪ Open sent‬وهنا هيتم ارسال ‪open message‬‬
‫وهيكون فيها بعض الـــ ‪ parameter‬عن الــــ ‪ BGP‬زى الـــ ‪ AS‬و الــــ ‪BGP‬‬
‫‪version‬‬
‫يعنى هيبدأ يعمل عملية ‪ check‬للموضوع ده‬
‫لو الدنيا تمام هتيجى مرحلة الــــ ‪ Open confirm‬وهنا هيبدأوا يرسلوا الـــ‬
‫‪ Keepalive time‬وبعد كده هيتم إنشاء اإلتصال وهتبقى الحالة ‪Establish‬‬

‫إزاى تأسس إتصال ‪eBGP‬‬

‫الــــ ‪ BGP‬زى معرفنا فيه نوعين ‪:‬‬


‫الـــ ‪ iBGP‬وده لما لما الراوتر عايز يبعت الـــ ‪ Routes‬لراوتر معاه فى نفس ‪AS‬‬
‫الـــ ‪ Administrative distance‬بتاع الــ ‪ iBGP‬بتساوى ‪200‬‬

‫و الـــ ‪ eBGP‬لما الراوتر هيبعت الـــ ‪ Routes‬لراوتر فى ‪ AS‬مختلف‬


‫الـــ ‪ Administrative distance‬بتاع الــ ‪ eBGP‬بتساوى ‪20‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫الب صغير لعمل ‪: eBGP‬‬

‫فيه شوية حجات الزم تكون معروفة ليك علشان تعرف تأسس إتصال ‪BGP‬‬
‫‪ -‬زى مثال الــــ ‪ AS‬ليك وللـــ ‪Neighbor‬‬
‫‪ -‬تعرف الـــ ‪ IP address‬بتاع الـــ ‪Neighbor‬‬
‫‪ -‬إن الـــ ‪ IP‬بتاع الـــ ‪ Neighbor‬يكون ‪ Reachable‬ودى بتعنى لو عندى‬
‫راوتر مثال عايز يأسس إتصال ‪ BGP‬مع راوتر بيبعد عنى مثال ‪ 5‬أو ‪6‬‬
‫راوترات ( مهمة )‬

‫بالنسبة للـــ ‪ command‬المهمة فعندك ‪:‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫الـــ ‪show ip bgp summary‬‬

‫وده هتالقى فيه الـــ ‪ Router ID‬و الـــ ‪ AS‬الخاص بيه‬


‫هتالقى عندك بيانات عن الــــ ‪ Neighbor‬والــــ ‪ AS‬الخاص بيه‬
‫هتشوف عدد الرسايل اللى استلمتها عن طريق الـــ ‪ BGP‬من الـــ ‪ Neighbor‬ده‬
‫والرسايل اللى بعتها‬
‫هتالقى عدد الرسايل اللى بيتعملها معالجة خالل عملية الـــ ‪ Processing‬مع الـــ‬
‫‪Neighbor‬‬
‫هتالقى المدة اللى فضل فيها الـــ ‪ Neighbor‬فيها ‪UP‬‬
‫هتالقى عدد الشبكات اللى استلمتها من الـــ ‪Neighbor‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫طيب محتاج أعرف الـ ‪ prefix‬اللى استلمتها من الــــ ‪ Neighbor‬وأفضل مسار ؟‬
‫هنا ممكن تكتب الـــ ‪show ip bgp‬‬
‫ممكن تعرف أفضل مسار أيضا من خالل الـــ ‪show ip route bgp‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫إزاى تأسس إتصال ‪iBGP‬‬
‫ومفهوم الــ ‪update Source loopback‬‬

‫أفضل طريقة لعمل إتصال فى الـــ ‪ iBGP‬هو بإستخدام الـــ ‪loopback‬‬


‫‪ interface‬والسبب إن الـــ ‪ loopback‬هو ‪ logical interface‬وليس‬
‫‪physical interface‬‬
‫والـــ ‪ Physical interface‬لو بقى ‪ Down‬يبقى مش هيكون فيه ‪reachability‬‬
‫على عكس الـــ ‪ loopback interface‬اللى مش هيتأثر بأى حاجة وبالتالى كده‬
‫بحافظ على الـــ ‪ Session‬إنها تبقى ‪ stable‬على قد مقدر‬
‫لكن يمكن عمل عالقة ‪ iBGP‬بإستخدام الـــ ‪ Physical interface‬عادى جدا‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫طيب احنا عارفين إن علشان تأسس إتصال يبقى الزم فيه حجات قلناها قبل كده ‪:‬‬
‫‪ -‬الـــ ‪ ip address‬بتاع الـــ‪Neighbor‬‬
‫‪ -‬الـــ ‪Autonomous System‬‬
‫‪ -‬يكون فيه ‪Reachability‬‬

‫لكن لو بدأت تعمل ‪ ping‬من ‪ R2‬على الـــ ‪ loopback R3‬مش هتالقي فيه‬
‫‪ Reachability‬وبالتالى أنا محتاج يكون فيه ‪ reachability‬بينه وبين الــــ‬
‫‪ loopback‬التانى ؟‬

‫والحل إنى أستخدم الـــ ‪Routing protocol‬‬


‫زى مثال الــــ ‪Static Route‬‬

‫وبعد عمل ‪ Routing protocol‬أصبح فيه ‪Reachability‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫نيجى للمشكلة اللى بعد كده وهى ‪:‬‬
‫لما جيت أعمل الـــ ‪ configuration‬ظهرت المشكلة التانية‬

‫وهى إن الــــ ‪ Neighbor‬مش راضى يقوم ؟‬

‫والسبب إن الـــ ‪ loopback interface‬اللى فى ‪R2‬‬

‫هيستخدم طبعا الـــ ‪ physical interface‬علشان يرسل للـــ ‪R3‬‬

‫لكن ‪ R3‬لما هيجى يقارن فى اللحظة دى هيالقى إن الــ ‪ Source address‬هو‬


‫الـــ ‪ physical interface‬وليس الــ ‪ loopback interface‬يعنى بالنسبة ليه‬
‫مش هو الـــ ‪Neighbor‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫طب الحل إيه ؟‬
‫الحل هنا إنى أخلى ‪ R2‬يرسل بـــ ‪ Source ip address‬بتاع الـــ ‪loopback‬‬
‫‪ interface‬وكإنى بقوله إن أى ‪ update‬هتبعته لـــ ‪ R3‬خلى الـــ ‪Source ip‬‬
‫‪ address‬هو الـــ ‪ loopback interface‬بتاعك‬

‫وفى اللحظة دى هتبدأ الــــ ‪ Neighbor‬تقوم معايا تمام‬


‫بعد كده اعلن الشبكات عادى داخل الــــ ‪BGP‬‬

‫مفهوم الــــ ] ‪[ disable-connected-check‬‬

‫عرفنا بفضل هللا يعنى إيه ‪ eBGP‬و ‪ iBGP‬والحمد هلل وضحناهم بــ ‪labs‬‬
‫لكن المرة دى هيكون ‪ Lab‬صغير لتوضيح مالحظة مهمة جدا وهى ‪:‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫ ؟‬eBGP ‫ فى الـــ‬loopback interface ‫ماذا لو تم استخدام الـــ‬

loopback ‫ بالـــ‬eBGP ‫ بعالقة‬R3 ‫ و‬R2 ‫ بين‬Coonfiguration ‫لما عملنا الـــ‬


‫ بالـــ‬Reachability ‫ وعملنا‬physical interface ‫ وليس الـــ‬interface
Static Route

‫ زى مهو باين فى الصورة‬Idle ‫هنالحظ إن الحالة‬

MadeBY
MohamedAbdel
nas
ser
: ‫لكن قبل حل المشكلة دى فيه مالحظة مهمة وهى‬

eBGP session ‫فى الـــ‬


1 ‫ بتساوى‬BGP Packet ‫ للـــ‬TTL - Time to live ‫قيمة الـــ‬

iBGP session ‫لكن الـــ‬


255 ‫ بتساوى‬BGP Packet ‫ للـــ‬TTL - Time to live ‫قيمة الـــ‬

MadeBY
MohamedAbdel
nas
ser
‫لذلك عند عمل عالقه ‪ eBGP‬بالـــ ‪loopback interface‬‬
‫فهناك احتمالين ‪:‬‬
‫‪ -‬االحتمال األول يكون فيه عالقة بين راوترين فقط‬
‫‪ -‬االحتمال التانى يكون فيه عالقة بين أكتر من راوتر‬

‫فى المثال ده أنا عندى عالقة ‪ eBGP‬بين راوترين فقط‬


‫إلما هزود قيمة الـــ ‪ TTL‬علشان الـــ ‪ Session‬تقوم‬
‫أو اكتب الـــ ] ‪[ disable-connected-check‬‬
‫بحيث إن الـــ ‪ Session‬تقوم ‪ Up‬من غير زيادة قيمة الـــ ‪TTL‬‬

‫لكن عند استخدام أكثر من راوترين يعنى عندى ‪ ٣‬راوترات وهعمل عالقة ‪eBGP‬‬
‫بين األول والتالت فالزم هنا نزود قيمة الـــ ‪ TTL‬بقيمة أكبر من ‪ 1‬مثال وممكن‬
‫تخليها ‪ 255‬عادى وإال لن تقوم الـــ ‪ Session‬حتى‬
‫لو تم كتابة هذا الـــ‪command‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫هبدأ أكتب الـــ ‪ command‬الخاص بالـــ ‪ebgp multihop‬‬
‫وبكده الــ ‪ neighbor‬هتقوم معايا أو أكتب ‪disable-connected-check‬‬

‫مفهوم الــــ ‪next-hop-self‬‬

‫لما عملنا عالقة ‪ ebgp‬بين ‪ R3‬و‪R2‬‬


‫وعملنا عالقة ‪ ibgp‬بين ‪ R2‬و‪R1‬‬
‫وعملنا عالقة بين ‪ R1‬و‪R4‬‬
‫بالــــ ‪ Configuration‬العادى جدا بالـــ ‪ Physical interface‬سواء هنا أو هنا‬

‫وضع الـــ ‪ PC‬لعمل ‪ Test‬فقط‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
PC6 ‫ لــــ‬PC5 ‫ من‬ping ‫لو جيت بعد كل ده تعمل‬
Destination host unreachable ‫هتالحظ‬

MadeBY
MohamedAbdel
nas
ser
‫طيب المشكلة فين ؟‬

‫المشكلة هنا لما ‪ R3‬أعلن شبكة ‪ 6.0/24‬بالـــ ‪ BGP‬فهنا وصلت للـــ ‪ R2‬وأصبح‬
‫‪ R2‬شايف الشبكة دى عن طريق الـــ ‪ Next-hop‬اللى هو ‪ 23.3‬إلنه‬
‫هيكون الـــ ‪ Best path‬وهنالقى الشبكة فى الـــ ‪ Routing table‬لكن شبكة‬
‫‪ 5.0/24‬مش هتكون فى الـــ ‪ Routing table‬بسبب الـــ ‪ next hop‬واللى‬
‫موضح فى الصورة إلن ‪ R2‬علشان يروح لشبكة ‪ 5.0/24‬المفروض‬
‫الـــ ‪ next hop‬تكون ‪ R1‬وليس ‪R4‬‬

‫نفس الكالم بينطبق الجهة المقابلة برده بالنسبة لـــ ‪ R4‬لما هيذيع الشبكة ‪5.0/24‬‬
‫وتوصل لـــ ‪ R1‬وتبقى فى الـــ ‪ Routing table‬بتاعه‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫طيب فين المشكلة برده ؟‬

‫المشكلة إن ‪ R1‬لما استلم الشبكة ‪ 5.0/24‬بعتها من غير تعديل للــــ ‪Next-hop‬‬


‫لـــ ‪ R2‬وبالتالى ‪ R2‬لما هيستلمها عن طريق الـــ ‪ BGP‬مش هتبقى ‪Best path‬‬
‫وبالتالى مش هتبقى موجودة فى الـــ ‪ Routing table‬وبالتالى مش هيتم إعالنها‬
‫للـــ ‪R3‬‬

‫نفس الكالم بينطبق فى الجهة المقابلة لما ‪ R2‬إستلم الشبكة ‪6.0/24‬‬


‫وبعتها برده لـــ ‪ R1‬وهنا ‪ R1‬مش هيعلنها لـــ ‪ R4‬إلنها مش فى الـــ ‪Routing‬‬
‫‪table‬‬

‫والحل ؟‬
‫إنى أخلى الـــ ‪ R2‬هو الـــ ‪ Next-hop‬لـــ ‪R1‬‬
‫وأخلى الـــ ‪ R1‬هو الـــ ‪ Next-hop‬لـــ ‪ R2‬بإستخدام ‪next-hop-self‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫ سواء هنا أو هنا اتغير‬Next-hop ‫وهتالحظ إن الـــ‬

MadeBY
MohamedAbdel
nas
ser
PC6‫ و‬PC5 ‫ هتم بين‬reachability ‫والنتيجة النهائية إن فيه‬

MadeBY
MohamedAbdel
nas
ser
‫مفهوم الــــ ‪The BGP split-horizon‬‬

‫أى ‪ Router‬هيستلم ‪ route‬من خالل ‪ iBGP peering‬مش هيذيعها ألى ‪Router‬‬


‫تانى داخل الـــ ‪ iBGP‬علشان أتفادى موضوع الـــ ‪ loop‬عندى‬

‫طيب ده معناه إيـــه ؟‬

‫خلينا نشوف المثال ده ونطبق عليه المشاكل اللى هتظهر واحدة واحدة‬

‫اللى اتعمل فى الــــ ‪ Lab‬ده ‪:‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫تم انشاء عالقة من نوع ‪ eBGP‬بين ‪ R1‬و ‪R6‬‬ ‫‪-1‬‬
‫تم انشاء عالقة من نوع ‪ eBGP‬بين ‪ R4‬و ‪R5‬‬ ‫‪-2‬‬
‫تم انشاء عالقة من نوع ‪ iBGP‬بين ( ‪ R1‬و ‪ ) R2‬و ( ‪ R1‬و ‪) R3‬‬ ‫‪-3‬‬
‫تم انشاء عالقة من نوع ‪ iBGP‬بين ( ‪ R4‬و ‪ ) R3‬و ( ‪ R4‬و ‪) R2‬‬ ‫‪-4‬‬
‫تم إستخدام الـــ ‪ OSPF protocol‬لتوفير الــــ ‪Reachability‬‬ ‫‪-5‬‬
‫تم إذاعة الشبكة ‪ 192.168.1.0/24‬بالــ ‪ BGP‬من خالل ‪R6‬‬ ‫‪-6‬‬
‫تم إذاعة الشبكة ‪ 192.168.2.0/24‬بالــ ‪ BGP‬من خالل ‪R5‬‬ ‫‪-7‬‬

‫وعرفنا إزاى نعمل تأسيس العالقات لكن الالب هيخليك تراجع اللى فات‬

‫لما عملنا الـــ ‪ lab‬ظهرت مشكلتين‬

‫أول مشكلة كانت لما عملنا عالقة ‪ iBGP‬بين ( ‪ R1‬و ‪ ) R2‬و ( ‪ R1‬و ‪) R3‬‬
‫ونفس الموضوع لما عملنا عالقة ‪ iBGP‬بين ( ‪ R4‬و ‪ ) R3‬و ( ‪ R4‬و ‪) R2‬‬

‫الــــ ‪ Neighbor‬مش راضى يقوم ؟‬


‫والسبب كان إن الـــ ‪ loopback interface‬اللى فى ‪ R1‬هيستخدم طبعا‬
‫الـــ ‪ physical interface‬علشان يرسل للـــ ‪R2‬‬
‫لكن ‪ R2‬لما هيجى يقارن فى اللحظة دى هيالقى إن الــ ‪ Source address‬هو الـــ‬
‫‪ physical interface‬وليس الــ ‪ loopback interface‬يعنى بالنسبة ليه مش هو‬
‫الـــ ‪Neighbor‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫طب الحل إيه ؟‬
loopback ‫ بتاع الـــ‬Source ip address ‫ يرسل بـــ‬R1 ‫الحل هنا إنى أخلى‬
Source ip ‫ خلى الـــ‬R2 ‫ هتبعته لـــ‬Update ‫ وكإنى بقوله إن أى‬interface
‫ بتاعك‬loopback interface ‫ هو الـــ‬address

‫ وكتبت‬R1 ‫يعنى جيت على‬


R1(config)#router bgp 100
R1(config-router)#neighbor 2.2.2.2 remote-as 100
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0
R2 ‫نفس الموضوع لـــ‬
R2(config)#router bgp 100
R2(config-router)#neighbor 1.1.1.1 remote-as 100
R2(config-router)#neighbor 1.1.1.1 update-source loopback 0

Routers ‫ على كل الـــ‬loopback 0 ‫ تم إستخدام الـــ‬: ‫ملحوظة‬


R3‫ و‬R1 ‫هيتم تطبيق الموضوع ده بين‬
) R3 ‫ و‬R4 ( ‫ ( وبين‬R3 ‫ و‬R4) ‫وبين‬
‫ تقوم معايا تمام‬Neighbor ‫وفى اللحظة دى هتبدأ الــــ‬

192.168.1.0 ‫ وأشوف هل هيقدر يشوف شبكة‬R2 ‫لكن لما جيت أدخل على الــــ‬

MadeBY
MohamedAbdel
nas
ser
‫لقيت إنه قادر يشوفها لكن فيه مشكله وهى إن الـــ ‪ Next-hop‬مش مظبوط وده‬
‫إلن داخل الــــ ‪ iBGP‬اليتم تحديث الـــ ‪ Next-hop‬وبالتالى لما ‪ R1‬بعت التحديث‬
‫لـــ ‪ R2‬بعته زى مهو وبالتالى مش هيقدر يوصل‬

‫نفس الموضوع بالنسبة لـــ ‪ R4‬لما يبعت شبكة ‪ 192.168.2.0/24‬لـــ ‪ R2‬مش‬


‫هيغير الـــ ‪ Next-hop‬وبالتالى ‪ R2‬مش هيقدر يوصل لشبكة ‪192.168.1.0/24‬‬

‫طيب كان الحل إيه ؟‬


‫إنى أطبق مفهوم الـــ ‪next-hop-self‬‬
‫وكان بإختصار إنى أخلى الـــ ‪ R1‬هو الـــ ‪ Next-hop‬بحيث يوصل من خالله‬
‫وبالتالى هدخل على ‪ R1‬وأكتب ‪:‬‬
‫‪R1(config)#router bgp 100‬‬
‫‪R1(config-router)#neighbor 2.2.2.2 next-hop-self‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
R1(config)#router bgp 100
R1(config-router)#neighbor 3.3.3.3 next-hop-self

MadeBY
MohamedAbdel
nas
ser
‫وهنا أصبح ‪ R2‬شايف شبكة ‪ 192.168.1.0/24‬من خالل الــ ‪ Best path‬اللى‬
‫هو ‪ R1‬ولو كتبت ‪ show ip bgp‬هتشوف إن ‪ R2‬أصبح يقدر يوصل لشبكة‬
‫‪192.168.1.0/24‬‬

‫السؤال بقى هنا ‪:‬‬


‫ياترى ‪ R4‬شايف الشبكة ‪ 192.168.1.0/24‬حتى لو الــ ‪ next-hop‬فيه مشكلة ؟‬

‫هتالحظ إن ‪ R4‬مستلمشى الشبكة أصال يعنى استحالة ‪ PC7‬هيقدر يوصل‬


‫وده يرجعنا لمفهوم الــــ ‪: The BGP split-horizon‬‬
‫أى ‪ Router‬هيستلم ‪ route‬من خالل ‪ iBGP peering‬مش هيذيعها ألى ‪Router‬‬
‫تانى داخل الـــ ‪ iBGP‬علشان أتفادى موضوع الـــ ‪ loop‬عندى‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫يعنى ‪ R2‬مش هيبعتها لـــ ‪R4‬‬

‫ولو جيت أشوف ‪ R4‬هتالحظ إنه شايف شبكة ‪ 192.168.2.0/24‬فقط‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫وبالتالى ‪ PC7‬استحالة يقدر يوصل لـــ ‪PC8‬‬

‫طيب الحل إيه ؟‬


‫الحل إنى أطبق الــــ ‪ Full mesh‬يعنى كمان هعمل عالقة ‪ iBGP‬بين ‪ R4‬و ‪R1‬‬
‫وبالتالى لما تتعمل عالقة الــ ‪ iBGP‬بينهم هتالحظ إن الشبكة بقت داخل ‪ R4‬من‬
‫خالل الـــ ‪BGP‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
PC8 ‫ يوصل لجهاز‬PC7 ‫وهنا يقدر جهاز‬

MadeBY
MohamedAbdel
nas
ser
‫مفهوم الــــــ ‪ Route Reflector‬أو ‪RR‬‬

‫اتكلمنا فوق عن مفهوم الــــ ‪The BGP split-horizon‬‬


‫ووضحنا إن أى ‪ Router‬هيستلم ‪ route‬من خالل ‪ iBGP peering‬مش هيذيعها إلى أى‬
‫‪ Router‬تانى داخل الـــ ‪ iBGP‬علشان أتفادى موضوع الــــ ‪ loop‬وبالتالى كنت محتاج‬
‫أعمل الـــ ‪ Full mesh‬علشان أقدر أوفر الــــ ‪ Connectivity‬داخل الشبكة عندى‬

‫لكن كان فيه مشكلة وهى ‪:‬‬


‫تخيل مثال عندك ‪ 50‬راوتر فكل راوتر المفروض يعمل عالقة ‪ iBGP‬مع كل الـــ‬
‫‪ Neighbor‬وبالتالى فى النهاية هيكون عندك‬
‫‪ Neighbor 1225‬يعنى ‪BGP Sessions 1225‬‬
‫المعادلة المستخدمة = ‪n(n-1)/2‬‬
‫حيث الـــ ‪ N‬هى عدد الـــ ‪Routers‬‬

‫وبالتالى الـــ ‪ TCP Session‬هتبقى كبيرة جدا غير إن كل روتر محتاج ‪ CPU‬و ‪Memory‬‬
‫يقدروا يتحملوا الوضع ده غير كمان الـــ ‪ Configuration‬والـــ ‪Troubleshooting‬‬

‫وهنا تم عمل الــــ ‪ Route Reflector‬بحيث يبقى فيه حاجة مركزية تعملى ‪ reflect‬للـــ‬
‫‪ Route‬للـــ ‪ Neighbors‬وبالتالى هتقل عدد الـــ ‪ BGP Sessions‬داخل الـــشبكة عندى‬
‫وبالتالى الـــــ ‪ Troubleshooting‬مش هيبقى فيه تعقيد‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫وبالتالى أصبح الـــ ‪ Route Reflector‬تقدر تقوم هو التعديل لمفهوم الـــ ‪split-horizon‬‬
‫اللى كان بيمنع إن أى ‪ Router‬استلم ‪ Update‬داخل الـــ ‪ iBGP‬يبعته للـــ ‪Neighbor‬‬
‫اللى جنبه علشان يمنع الـــ ‪Loop‬‬

‫وبالتالى الـــ ‪ BGP Session‬فى اللحظة دى لـــ ‪ 50 Routers‬هتكون ‪49 Session‬‬


‫ولو هعمل ‪ Redundancy‬واستخدام ( ‪ ) 2 RR‬هتبقى الـــ ‪97 Session‬‬
‫لكن فى النهاية عدد الـــ ‪ Session‬قليل جدا مقارنة بالـــ ‪ Full mesh‬فى األول‬

‫بالنسبة لطريقة عمل الــــ ‪Configuration‬‬

‫فى المثال اللى معانا ده‬


‫‪ -‬تم تفعيل بروتوكول الـــ ‪ OSPF‬بين ) ‪ R1‬و ‪ R2‬و ‪ R3‬و ‪ R4‬و ‪ R5‬و ‪) R7‬‬
‫‪ -‬تم عمل ‪ Loopback‬لكل ‪Router‬‬
‫‪ -‬تم إضافة ‪ Loopback‬إضافى لكل من ‪ R2‬و ‪ R4‬حتى يتم عمل ‪ Advertise‬ليهم داخل‬
‫الــــ ‪BGP‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
: ‫المطلوب‬

R6 ‫ و‬R1 ‫ بين‬eBGP ‫ عمل عالقة‬: ‫أوال‬


MadeBY
MohamedAbdel
nas
ser
R6 ‫ من خالل‬BGP ‫ داخل الـــ‬Loopback ‫ للـــ‬advertise ‫ عمل‬: ‫ثانيا‬

MadeBY
MohamedAbdel
nas
ser
) R7 ‫ و‬R3 – R5 ‫ و‬R3 ( ‫ بين‬iBGP ‫ عمل عالقة‬: ‫ثالثا‬
) R5 ‫ و‬R3 ( ‫بين‬

) 7R ‫ و‬R3 ( ‫بين‬

MadeBY
MohamedAbdel
nas
ser
‫رابعا وده لب الموضوع النهاردة ‪:‬‬
‫عمل ‪ R3‬كـــــ ‪ Route Reflector‬لكل من ‪ R1‬و ‪ R2‬و ‪R4‬‬
‫أوال هنعمل عالقة ‪ iBGP‬بين ‪ R3‬والراوترات دى يعنى‬
‫بين ( ‪ R3‬و ‪ ) R1‬و ( ‪ R3‬و ‪ ) R2‬و ( ‪ R3‬و ‪) R4‬‬

‫بعد كده هنبدأ نعمل ‪ R3‬كــــ ‪ Route-Reflector‬للروترات دى‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
R1 ‫ و‬R3 ‫أوال بين‬

R2 ‫ و‬R3 ‫ثانيا بين‬

MadeBY
MohamedAbdel
nas
ser
‫ونفس األمر بين ‪ R3‬و ‪R4‬‬
‫الــــ ‪ Command‬ده ‪:‬‬
‫‪Neighbor …………. Route-reflector-client‬‬

‫يعنى كإنى بقوله إنته هتكون الـــ ‪ Client‬وأنا الـــ ‪Route Reflector‬‬

‫الحظ إن ‪ R1‬و ‪ R2‬و ‪ R4‬أسسوا فقط ‪ Neighborship‬مع ‪R3‬‬


‫لكن بينهم وبين بعض مفيش حد أسس ‪ Neighborship‬ودى قوة الـــ ‪ RR‬اللى بتخلصنى‬
‫من موضوع الــــ ‪Full mesh‬‬

‫طيب احنا محتاجين نتأكد إن ‪ R3‬لما تتذاع شبكة من راوتر فيهم هيبعتها للباقى‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫هنا هنعمل ‪ advertise‬لشبكة ‪ 20.20.20.0/24‬اللى موجودة على ‪R2‬‬
‫ونشوف هل هتقدر توصل لـــ ‪ R4‬و ‪ R1‬وال‬

‫هندخل على ‪ R4‬ونشوف هل فعال إستلم الشبكة ‪ 20.20.20.0‬اللى أعلنها ‪ R2‬وال ؟‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫وهكذا لو تم عمل ‪ advertise‬لشبكة ‪ 40.40.40.0/24‬من خالل ‪ R4‬هتوصل لـــ ‪R2‬‬
‫لكن إزاى بيتم منع الــــ ‪ loop‬بعد عمل الــــ ‪Route-Reflector‬‬
‫أو إيه هى اآلليـــة اللى بتم علشان يتم منع الـــ ‪Loop‬‬
‫إلن زى منته شفت إن ‪ R3‬إستلم شبكة ‪ 20.20.20.0/24‬وبعدين بعتها لــــ ‪R4‬‬
‫واحنا عارفين إن بسبب الــــ ‪ BGP split-horizon Rule‬فأى ‪ Router‬هيستلم ‪route‬‬
‫من خالل ‪ iBGP peering‬مش هيذيعها إلى أى ‪ Router‬تانى داخل الـــ ‪ iBGP‬علشان‬
‫أتفادى موضوع الــــ ‪ loop‬لكن هنا ‪ R3‬إستلم شبكة ‪ 20.20.20.0/24‬من ‪ R2‬وبعدين‬
‫بعتها لــــ ‪!...... R4‬؟‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
Originator ID and Cluster List ‫مفهوم‬
Route-Reflector ‫فى المثال السابق تم شرح تطبيق عمل الـــ‬

R4 ‫ و‬R2 ‫ و‬R1 ‫ لكل من‬Route-Reflector ‫ كــــ‬R3 ‫وفى المثال ده تم عمل‬

MadeBY
MohamedAbdel
nas
ser
‫وبالتالى فأى شبكة الـــ ‪ R2‬هيعملها ‪ Advertise‬من خالل الـــ ‪ iBGP‬هتوصل لـــ ‪ R1‬و‬
‫‪ R4‬على الرغم إن مفيش تأسيس إتصال ‪ iBGP‬بينهم من األساس‬
‫يعنى لما ‪ R2‬أعلن شبكة ‪ 20.20.20.0/24‬وصلت لــــ ‪ R1‬و ‪ R4‬من خالل ‪R3‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫وكذلك بالنسبة لــ ‪ R4‬لما أعلن شبكة ‪40.40.40.0/24‬‬
‫هنالحظ إنها وصلت لــــ ‪ R1‬و ‪ R2‬من خالل ‪R3‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫يعنى ‪ R3‬هيعتبر نقطة مركزية بتعمل ‪ Reflect‬للـــ ‪ Route‬لبقية الـــ ‪Routers‬‬
‫ويبقى السؤال ‪:‬‬
‫إزاى ‪ R3‬لما استلم شبكة من ‪ R2‬بعتها لـــ ‪ R1‬و ‪R4‬‬
‫ولما استلم شبكة من ‪ R4‬بعتها لـــ ‪ R1‬و ‪R2‬‬
‫واحنا عارفين إن بسبب الــــ ‪BGP split-horizon Rule‬‬
‫فأى ‪ Router‬هيستلم ‪ route‬من خالل ‪ iBGP peering‬مش هيذيعها إلى أى ‪ Router‬تانى‬
‫داخل الـــ ‪ iBGP‬علشان أتفادى موضوع الــــ ‪loop‬‬
‫فإزاى هيتمنع الـــ ‪ loop‬بعد عمل الـــ ‪ Route-Reflector‬؟‬

‫وهنا هيجى مفهوم ‪Originator ID and Cluster List‬‬


‫واللى من خاللهم هقدر أمنع الـــ ‪loop‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫طيب إيه هو الـــ ‪ Originator ID‬؟‬
‫ده اللى من خالله الـــ ‪ Routers‬اللى هتبقى ‪ client‬للـــ ‪Route-reflector‬‬
‫هتقدر تمنع الـــ ‪ loop‬اللى هيحصل بالنسبة ليها‬

‫يعنى إيه مش فاهم ؟‬


‫يعنى هنا ‪ R1‬استلم من ‪ R3‬الشبكات اللى أعلنها ‪ R2‬و ‪R4‬‬

‫لكن الشبكات دى قبل متروح لــ ‪R1‬‬


‫‪ -‬الـــ ‪ R2‬وضع الـــ ‪ Router ID‬تبعه فى خانة الـــ ‪Originator‬‬
‫‪ -‬والـــ ‪ R4‬عمل نفس األمر ووضع الـــ ‪ Router ID‬تبعه فى خانة الـــ ‪Originator‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫وبالتالى لما ‪ R2‬هيجى يستلم الشبكة ‪ 20.20.20.0/24‬مرة تانية هيبدأ يشوف الـــ‬
‫‪ Originator‬ولو طلع هو الـــ ‪ Router ID‬تبعه فهيقوم عامل ‪ ignore‬للـــ ‪ update‬ده‬

‫أيضا لو الحظت هنا لما ‪ R1‬و ‪ R2‬استلموا شبكة ‪ 40.40.40.0/24‬من ‪R3‬‬


‫الــــ ‪ R4‬وضع الـــ ‪ Router ID‬تبعه فى خانة الـــ ‪ Originator‬قبل ميبعتها لــــ ‪R3‬‬
‫واللى بدوره بعتها لـــ ‪ R1‬و ‪R2‬‬

‫فلما الـــ ‪ R4‬لما هيجى يستلم الشبكة ‪ 40.40.40.0/24‬مرة تانية هيعمل برده نفس األمر‬
‫ويبص على الـــ ‪ Originator‬ولو طلع هو الـــ ‪ Router ID‬تبعه هيقوم عامل ‪ ignore‬للـــ‬
‫‪ update‬ده‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫طيب بالنسبة للــــ ‪ Cluster List‬؟‬
‫ده اللى هيستعمله الـــ ‪ Route-Reflector‬نفسه علشان يمنع الـــ ‪loop‬‬
‫يعنى لما يجيله شبكة ويبدأ يعملها ‪ Reflect‬للـــ ‪ Neighbor‬هيبدأ يضع الـــ ‪Router ID‬‬
‫تبعه فى خانة الــــ ‪Cluster List‬‬

‫يعنى ‪ R3‬لما استلم الشبكات من ‪ R2‬و ‪ R4‬وضع الـــ ‪ Router ID‬تبعه فى خانة الــــ‬
‫‪ Cluster List‬قبل ميبعتها لـــ ‪R1‬‬

‫وبالتالى لما هيستلم أى شبكة تجيله تانى فيها نفس الـــ ‪ Cluster List‬تبعه فهنا هيعمل‬
‫‪ ignore‬للـــ ‪ update‬لكن لو مشفشى الـــ ‪ Router ID‬تبعه فى خانة ‪ Cluster List‬فهنا‬
‫هيستلم الـــ ‪ update‬عادى ويبعته لبقيه الـــ ‪Routers‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫مفهوم الــــ ‪The BGP confederation‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫عرفنا مفهوم ‪ BGP split-horizon Rule‬وهو إن أى ‪ Router‬هيستلم ‪ route‬من‬
‫خالل ‪ iBGP peering‬مش هيذيعها ألى ‪ Router‬تانى داخل الـــ ‪ iBGP‬علشان‬
‫أتفادى موضوع الـــ ‪ loop‬عندى‬
‫وبالتالى كنت محتاج أعمل الـــ ‪ Full mesh‬علشان أقدر أوفر الــــ ‪ Connectivity‬داخل‬
‫الشبكة عندى لكن المشكلة إنى لو عندى راوترات كتير جدا وبالتالى لو عملت الـــ ‪Full‬‬
‫‪ mesh‬فالـــ ‪ TCP Session‬هتبقى كبيرة جدا غير إن كل روتر محتاج ‪ CPU‬و‬
‫‪ Memory‬يقدروا يتحملوا الوضع ده غير كمان الـــ ‪ Configuration‬والـــ‬
‫‪Troubleshooting‬‬
‫وكان الحل فى الموضوع ده هو عمل الــــ ‪ Route Reflector‬بحيث يبقى فيه حاجة‬
‫مركزية تعملى ‪ reflect‬للـــ ‪ Route‬للـــ ‪ Neighbors‬وبالتالى هتقل عدد الـــ ‪BGP‬‬
‫‪ Sessions‬داخل الـــشبكة عندى وبالتالى الـــــ ‪ Troubleshooting‬مش هيبقى فيه تعقيد‬

‫هل ده الحل الوحيد فقط للتخلص من عملية الـــ ‪ Full mesh‬؟‬


‫فيه حل تانى وهو لب موضوع النهاردة وهو ‪The BGP confederation‬‬
‫يعنى إيه ‪ The BGP confederation‬؟‬
‫يعنى بإختصار هتقسم الشبكة إلى مجموعة من الـــ ‪private autonomous‬‬
‫‪system‬‬
‫يعنى إيه برده ؟‬
‫يعنى كإنك بتعمل جروبات وتعطيها ‪ Private AS‬والكل هيبقى تحت الـــ ‪AS‬‬
‫األساسي وجوه الـــ ‪ Groups‬دى ممكن أعمل الـــ ‪ Full mesh‬لو عدد الروترات‬
‫قليل أو أطبق الـــ ‪Route Reflector‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫طيب بالنسبة للـــ ‪ Routers‬خارج الـــ ‪ AS‬بتاعى هل هتشوف الـــ ‪ Sub AS‬؟‬
‫مش هتشوف إال الـــ ‪ Public AS‬فقط‬

‫طيب بالنسبة لتأسيس العالقة فهتكون فى اللحظة دى بين الـــ ‪ Sub AS‬عالقة‬
‫‪ eBGP‬لكن بداخل الـــ ‪ Sub AS‬هتبقى عالقة ‪iBGP‬‬
‫وفى النهاية الموضوع ده بيستخدم فى سيناريوهات معينة لكن يبقى الحل األمثل‬
‫واألكثر شيوعا فى معظم الحاالت هو تنفيذ الـــ ‪Route Reflector‬‬
‫اللى تم عمله فى الـــ ‪: Lab‬‬
‫تم إضافة الـــ ‪ IP‬لكل روتر‬ ‫‪-‬‬
‫تم إستخدام بروتوكول الـــ ‪ OSPF‬لتوفير اإلتصال‬ ‫‪-‬‬
‫تم عمل ‪ loopback 5‬و ‪ loopback 50‬على راوتر ‪5‬‬ ‫‪-‬‬
‫تم عمل ‪ loopback 6‬و ‪ loopback 60‬على راوتر ‪6‬‬ ‫‪-‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫بالنسبة للــــ ‪Configuration‬‬
‫المطلوب ‪:‬‬
‫عمل عالقة ‪ eBGP‬بين ‪ R1‬و ‪R6‬‬ ‫‪-1‬‬
‫عمل ‪ advertise‬لشبكة ‪ 6.6.6.0/24‬و ‪60.60.60.60/24‬‬ ‫‪-2‬‬
‫عمل عالقة ‪ eBGP‬بين ‪ R4‬و ‪R5‬‬ ‫‪-3‬‬
‫عمل ‪ advertise‬لشبكة ‪ 5.5.5.0/24‬و ‪50.50.50.0/24‬‬ ‫‪-4‬‬
‫عمل عالقة ‪ iBGP‬بين ‪ R1‬و ‪ R2‬بإستخدام الــ ‪Sub AS‬‬ ‫‪-5‬‬
‫عمل عالقة ‪ iBGP‬بين ‪ R3‬و ‪ R4‬بإستخدام الـــ ‪Sub AS‬‬ ‫‪-6‬‬
‫عمل عالقة ‪ eBGP‬بين ‪ R2‬و ‪ R3‬بإستخدام الـــ ‪Sub AS‬‬ ‫‪-7‬‬
‫التأكد فى النهاية من الـــ ‪ Reachability‬من ‪ R6‬إلى ‪R5‬‬ ‫‪-8‬‬

‫أوال ‪ :‬عمل عالقة ‪ eBGP‬بين ‪ R1‬و ‪R6‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫طيب بالنسبة لـــ ‪ R6‬هيعمل إتصال مع الـــ ‪ Public‬وال الـــ ‪ Private‬؟‬


‫هنا الـــ ‪ R6‬ملوش عالقة بالـــ ‪ private‬فالزم هنا يعمل إتصال مع الـــ ‪public‬‬

‫‪R6(config)#router bgp 6‬‬


‫‪R6(config-router)neighbor 192.168.16.1 remote-as 1234‬‬
‫طيب على ‪ R1‬لما هيجى يعمل إتصال ‪ BGP‬مع ‪ R6‬هستخدم الـــ ‪Public AS‬‬
‫وال الــــ ‪Private AS‬‬
‫هنا هستخدم الــــ ‪ Private AS‬علشان أسس بعد كده العالقة داخل الـــ ‪Sub‬‬
‫والـــ ‪ public AS‬دوره هيبقى مهم لما عندى شبكة هتبدأ تطلع بره يعنى لو عندى‬
‫روتر داخل الشبكة وهيعمل عالقة مع ‪ AS‬خارجى هنضع الـــ ‪Sub AS‬‬
‫وهضيف ‪ command‬أعرفه فيه إنه تابع للـــ ‪ Public AS‬كذا‬
‫‪R1(config)#router bgp 65001‬‬
‫‪R1(config-router)#bgp confederation identifier 1234‬‬
‫‪R1(config-router)#neighbor 192.168.16.6 remote-as 6‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫ثانيا ‪:‬‬
‫عمل ‪ advertise‬لشبكة ‪ 6.6.6.0/24‬و ‪ 60.60.60.60/24‬داخل الــ ‪BGP‬‬
60.60.60.0/24 ‫ و‬6.6.6.0/24 ‫ شايف شبكة‬R1 ‫وهنا أصبح‬

MadeBY
MohamedAbdel
nas
ser
R5 ‫ و‬R4 ‫ بين‬eBGP ‫ عمل عالقة‬: ‫ثالثا‬
50.50.50.0/24 ‫ و‬5.5.5.0/24 ‫ لشبكة‬advertise : ‫رابعا‬
MadeBY
MohamedAbdel
nas
ser
‫خامسا ‪ :‬عمل عالقة ‪ iBGP‬بين ‪ R1‬و ‪ R2‬بإستخدام الــ ‪Sub AS‬‬

‫سادسا ‪ :‬عمل عالقة ‪ iBGP‬بين ‪ R3‬و ‪ R4‬بإستخدام الـــ ‪Sub AS‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫سابعا ‪ :‬عمل إتصال ‪ eBGP‬بين ‪ R2‬و ‪R3‬‬
‫لما جيت أعمل على ‪ R2‬العالقة فجأى هتالقى قدامك الرسالة دى‬

‫‪MadeBY‬‬
‫وهيكون نفس الكالم على ‪R3‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫فهنا مفيش تأسيس للعالقة و الــــ ‪ neighbor‬مش هتبقى ‪up‬‬

‫علشان كده الزم تاخد بالك‬


‫‪MadeBY‬‬
‫فى الــــ ‪ BGP Confederation‬لما نيجى نعمل إتصال ‪eBGP‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫الزم نعرف الـــ ‪ Routers‬على الـــ ‪External peers‬‬
‫يعنى هقول لـــ ‪ R2‬إن الـــ ‪ External peers‬تبعك هو ‪ R3‬وأكتب الـــ ‪Sub AS‬‬
‫تبع ‪R3‬‬
up ‫ بقى‬neighbor ‫ هنا و هنا هتالقى الـــ‬command ‫بعد كتاتة الـــ‬
MadeBY
MohamedAbdel
nas
ser
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫التأكد فى النهاية من الـــ ‪ Reachability‬من ‪ R6‬إلى ‪R5‬‬


‫لما ‪ R5‬عمل ‪ advertise‬للشبكات اللى عنده ‪ R4‬استقبلهم لكن ياترى ‪ R3‬شايفهم‬
‫بالنسبة لـــ ‪ R3‬فهو عامل عالقة مع ‪ R4‬من اتجاه و ‪ R2‬من اتجاه‬
‫لكن بالنسبة للشبكات ‪ 5.5.5.0/24‬و ‪ 50.50.50.0/24‬فهنا فيه مشكلة وهى إن‬
‫الـــ ‪ next Hop‬متغيرتشى داخل الـــ ‪ iBGP‬وبالتالى أنا محتاج أغير الـــ ‪Next‬‬
‫‪ Hop‬بحيث يبقى ‪ R4‬هو الـــ ‪ Next Hop‬لـــ ‪R3‬‬
‫فكل اللى هعمله هدخل على ‪ R4‬وهكتب‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
Routing Table ‫غير إن الشبكة أصبحت عندى داخل الـــ‬

MadeBY
MohamedAbdel
nas
ser
‫نفس األمر هيكون بالنسبة لــ ‪ R1‬و ‪R2‬‬
‫‪ R2‬مش شايف الشبكات ‪ 6.6.6.0/24‬و ‪60.60.60.0/24‬‬
‫بسبب مشكلة الــ ‪Next Hop‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫دمتم سالمين وبخير‬

MadeBY
MohamedAbdel
nas
ser
‫‪BGP Attributes‬‬
‫ياترى الــــ ‪ BGP‬بيحسب أفضل مسار إزاى ؟‬
‫ياترى هيحسبه زى الـــ ‪ RIP‬بالـــ ‪ Hop count‬؟‬
‫وال الـــ ‪ EIGRP‬باإلعتماد على الـــ ‪ Bandwidth‬و الـــ ‪ Delay‬؟‬
‫‪MadeBY‬‬ ‫وال الـــ ‪ OSPF‬باإلعتماد على الـــ ‪ Cost‬؟‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫الــــ ‪ BGP‬بيحسب أفضل مسار بناء على كذا حاجة‬


‫بيطلق عليها الـــ ‪ Attributes‬ودى الخصائص لتحديد أفضل مسار علشان أوصل‬
‫لـــ ‪ Destination‬معين وبستخدم الــــ ‪ BGP Attributes‬فى حالة وجود أكثر‬
‫من مسار لكن لو مسار واحد فقط مش هيكون ليها أى تأثير‬

‫الـــ ‪BGP Attributes‬‬


‫‪1- Weight‬‬
‫‪2- Local preferenc‬‬
‫‪3- Locally Originate‬‬
‫‪4- AS-PAth‬‬
‫‪5- Origin‬‬
‫‪6- MED‬‬
‫الـــ ‪ BGP‬هيبدأ يعمل ‪ Check‬األول على ‪ Weight‬لو متساوى هيبدأ باللى بعده‬
‫اللى هو الـــ ‪ Local preferences‬وهكذا‬
‫( أوال الــــ ‪) Weight‬‬
‫‪ -‬بيعتبر ‪ Cisco Proprietary‬يعنى خاص بسيسكو فقط يعنى هتشوفه فقط على‬
‫أجهزة سيسكو لكن أى أجهزة خاصة بــ ‪ vendors‬تانية مش هتشوفه فيهم‬
‫‪ -‬الـــ ‪ Weight‬بيبقى ‪Assigned locally on Router‬‬
‫ودى بتعنى إن قيمة الــ ‪ weight‬بتفضل موجودة بداخل الــ ‪ Router‬فقط يعنى مش‬
‫بيتبعت فى الـــ ‪ BGP update message‬يعنى الـــ ‪ internal Routers‬حتى‬
‫هتشوفه بـــ ‪0‬‬
‫‪ -‬أعلى قيمة للـــ ‪ Weight‬هى المفضله‬
‫‪ -‬الــــ ‪ Default weight‬ألى ‪ Router‬بتساوى ‪0‬‬

‫‪MadeBY‬‬ ‫فيه طريقيتن للتحكم فى الــ ‪ weight‬؟‬


‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫‪ -‬طريقة لو أنا عاوز أوصل لشبكة معينة من مسار معين‬
‫‪ -‬الطريقة الثانية وهى إنى أوصل لكل الشبكات من مسارمعين‬
‫الـــ ‪ configuration‬اللى اتعمل فى الـــ ‪ Lab‬هو الـــ ‪ configuration‬الطبيعى‬
‫العالقة داخل الـــ ‪ AS‬عالقة ‪iBGP‬‬ ‫‪-‬‬
‫العالقة خارج الـــ ‪ AS‬عالقة ‪eBGP‬‬ ‫‪-‬‬
‫تفعيل الـــ ‪ OSPF‬داخل الـــ ‪ AS‬لتوفير الـــ ‪Reachability‬‬ ‫‪-‬‬
‫عمل ‪ advertise‬لشبكة ‪ 8.8.8.0/24‬داخل الـــ ‪ BGP‬من خالل ‪R8‬‬ ‫‪-‬‬
‫عمل ‪ advertise‬لشبكة ‪ 9.9.9.0/24‬داخل الـــ ‪ BGP‬من خالل ‪R9‬‬ ‫‪-‬‬

‫الطريقة األولـــــى تحديد الـــ ‪ weight‬لشبكة معينة‬


‫الـــ ‪ R3‬هيشوف شبكة ‪ 9.9.9.0/24‬من مسارين مختلفين‬
‫نفس األمر لشبكة ‪ 8.8.8.0/24‬شايفها من مسارين مختلفين‬
‫المسار األول هو من خالل ‪R4‬‬
‫المسار التانى هو من خالل ‪R5‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫طبعا هيفضل المسار من ‪ R5‬إلنه فضل يعمل ‪ check‬على الـــ ‪Attributes‬‬
‫لقاهم كلهم متساويين ولما جيه على الـــ ‪ AS-Path‬لقى إنه هيروح لشبكة‬
‫‪ 9.9.9.0/24‬من خالل ‪ R4‬لكن هيعدى على ‪ autonomous system‬أكتر من‬
‫‪ R5‬وبالتالى ‪ R5‬هو المسار المفضل‬
‫نفس األمر لشبكة ‪8.8.8.0/24‬‬

‫طيب أنا عايز أحدد الـــ ‪ weight‬لشبكة معينة‬


‫يعنى عايز وأنا رايح لشبكة ‪ 9.9.9.0/24‬أروح من مسار ‪R4‬‬
‫لكن شبكة ‪ 8.8.8.0/24‬تفضل من مسار ‪ R5‬عادى‬

‫الــــ ‪: configuration‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬ ‫األول إنى أحدد الشبكة واللى هى ‪9.9.9.0/24‬‬ ‫‪-‬‬
‫إما بالــ ‪ Access-list‬أو الــ ‪prefix-list‬‬
‫هبدأ أعمل ‪ Route-map‬وأبدأ أتحكم فى قيمة الـــ ‪weight‬‬ ‫‪-‬‬
‫هسمح لباقى الشبكات‬ ‫‪-‬‬
‫بعد كده هبدأ أربط الـــ ‪ Route-map‬مع الـــ ‪neighbor‬‬ ‫‪-‬‬

‫األول حددت الشبكة اللى هى ‪ 9.9.9.0/24‬بإستخدام الـــ ‪prefix-list‬‬


‫وأعطيت الـــ ‪ Prefix-list‬إسم وهو ‪Net9‬‬
net9 ‫ وأعطيت ليها إسم‬Route-map ‫تانى حاجة هعمل الـــ‬
MadeBY prefix-list ‫ للـــ‬match ‫وبعد كده هعمل‬
MohamedAbdel
nas
ser
‫بعد كده هبدأ أحدد الـــ ‪weight‬‬

‫بعد كده هسمح للشبكات التانية‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫بعد كده هبدأ أربط مع الـــ ‪ Neighbor‬فهدخل على الـــ ‪Router bgp‬‬

‫اتجاه الــــ ‪ weight‬ديما بيكون اتجاه الـــ ‪ in‬إلن زى مقولنا فوق‬


‫إن قيمة الـــ ‪ weight‬أصال بتبقى قيمة ‪ local‬يعنى داخل الـــ ‪Router‬‬

‫كده المفروض لما ‪ R3‬يحب يروح لشبكة ‪ 9.9.9.0/24‬هيسلك مسار ‪R4‬‬


‫إلن احنا حددنا الشبكة دى بـــ ‪weight‬‬
‫والـــ ‪ weight‬مقارنة بأى ‪ Attribute‬طبعا هيكون ليه األولوية‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫دى كانت قبل عمل الـــ ‪ weight‬وكان مسار ‪ R5‬هو المفضل‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫بعد عمل الـــ ‪ weight‬تم اختيار مسار ‪ R4‬لشبكة ‪9.9.9.0/24‬‬


‫الطريقة الثانية وهى إنى أوصل لكل الشبكات من مسار أفضله‬

‫يعنى أنا محتاج لما أوصل لكل الشبكات مثال أختار مسار ‪R4‬‬
‫فكل اللى هعمله إنى أحدد الـــ ‪ weight‬مع الـــ ‪ Neighbor‬فقط‬
‫من غير أى ‪ route-map‬أو تحديد شبكة‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫لو ملقتشى تغيير حصل وقتى معاك فحاول تكتب الـــ ‪ command‬ده‬
‫* ‪R3#clear ip bgp‬‬
‫وبعد تحديد الـــ ‪ weight‬اصبح المسار المفضل هو ‪ R4‬وليس ‪ R5‬للوصول‬
‫لكل الشبكات سواء شبكة ‪ 9.9.9.0/24‬أو شبكة ‪8.8.8.0/24‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫الــــ ‪BGP Attributes – Local preference‬‬
‫الـــ ‪ local preference‬بيعتبر تانى ‪ Attribute‬من الـــ ‪ Attributes‬اللى بيعتمد‬
‫عليها الـــ ‪ BGP‬لتحديد أفضل مسار لكن يظل الـــ ‪ weight‬متفوق عليه فى تحديد‬
‫المسار األفضل‬
‫المميز فى الــ ‪ Local preference‬إنه ‪ open standard‬يعنى مش خاص‬
‫بسيسكو فقط وبالتالى دى ميزة قوية للـــ ‪Local preference‬‬

‫الـــ ‪ Default value‬للــ ‪100 = Local preference‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬ ‫المسار‬
‫‪er‬‬ ‫كل أما القيمة بقت أعلى فده هيكون أفضل إلختيار‬

‫بيستخدم فقط بين الـــ ‪iBGP Routers‬‬


‫بيتم عمل ‪ advertise‬للـــ ‪ local preference‬داخل الـــ ‪ iBGP‬لنفس الــ ‪AS‬‬
‫يعنى مع الـــ ‪ Routers‬اللى فى نفس الـــ ‪Autonomous System‬‬

‫هنا ‪ R1‬يقدر يروح لشبكة ‪ 9.9.9.0/24‬و شبكة ‪ 8.8.8.0/24‬من طريقين‬


‫طريق ‪ R2‬وطريق ‪ R3‬وحاليا ‪ R2‬هو الطريق المفضل بالنسبة ليه‬
‫ولو الحظنا هنالقى إن الـــ ‪ local preference‬بتاع طريق ‪ R2‬و ‪ R3‬متساويين‬
‫الـــ ‪ local preference‬معموله ‪ advertise‬حاليا بين ‪iBGP‬‬

‫لكن لو بصينا على ‪ R4‬هنالقى إن الـــ ‪ local preference‬مش معموله‬


‫‪ advertise‬بسبب إن العالقة بين ‪ R3‬و ‪ R4‬عالقة ‪ eBGP‬وبالتالى مش فى نفس‬
‫الـــ ‪Autonomous System‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫طيب حاليا ‪ R1‬يقدر يروح لشبكة ‪ 9.9.9.0/24‬و شبكة ‪ 8.8.8.0/24‬من طريق ‪R2‬‬
‫وأنا محتاج أخلى ‪ R1‬يروح لكل الشبكات من طريق ‪R3‬‬

‫الحل هنا ممكن أستخدم الـــ ‪ local preference‬فى إنى أعلى القيمة بتاع على ‪R3‬‬
‫وبالتالى ‪ R1‬هيبدأ يختار األعلى فى الـــ ‪local preference‬‬
‫الــــ ‪configuration‬‬
‫أنا محتاج ‪ R1‬يروح لكل الشبكات من ‪ R3‬بدل ‪ R2‬فهنا هدخل على ‪R3‬‬
‫وأبدأ أعدل الـــ ‪ Default value‬بتاع الــ ‪ local preference‬لــ ‪R3‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫لو دخلنا على ‪ R1‬مرة تانية فهنا هيبدأ يروح للشبكات الخارجية من ‪R3‬‬
‫الطريقة التانية إنى أتحكم فى الشبكات‬
‫أنا عايز أتحكم فى شبكة معينة‬
‫يعنى محتاج أخلى ‪ R1‬لما يخرج لشبكة ‪ 8.8.8.0/24‬فقط يطلع من ‪R3‬‬

‫حاليا ‪ R1‬بيطلع لكل الشبكات من خالل ‪R2‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫علشان أعمل الموضوع ده هستخدم الـــ ‪ local preference‬مع الـــ ‪Route-map‬‬

‫علشان أخلى ‪ R1‬لما يخرج لشبكة ‪ 8.8.8.0/24‬يختار ‪ R3‬بدل ‪R2‬‬


‫هبدأ أعمل الـــ ‪ Route-map‬على الــــ ‪ edge Route‬واللى هيكون ‪R3‬‬
‫هدخل على ‪R3‬‬

‫أول حاجة حدد الشبكة من خالل الــ ‪ Prefix-list‬وأعطيت ليها إسم ‪Net8‬‬ ‫‪-‬‬
‫عملت الـــ ‪ Route-map‬وأعطيت ليها إسم ‪m.a.elnaser‬‬ ‫‪-‬‬
‫بدأت أعمل ‪ match‬للــ ‪ Route-map‬مع الـــ ‪prefix-list‬‬ ‫‪-‬‬
‫‪MadeBY‬‬ ‫حدد الــ ‪ local preference‬بـــ ‪950‬‬ ‫‪-‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫سمحت لبقية الشبكات‬ ‫‪-‬‬
‫بعد كده بدأت أحدد الـــ ‪ neighbor‬اللى هو ‪ R1‬واضيف الــ ‪ Route-map‬اللى‬ ‫‪-‬‬
‫عملتها وهخليها ‪out‬‬

‫حاول تعمل ‪ clear‬للـــ ‪ BGP‬علشان تشوف النتيجة لو مظهرتشى معاك بإستخدام‬


‫* ‪R3#Clear ip bgp‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫ودى كانت النتيجة‬

‫الـــ ‪ R1‬طلع لشبكة ‪ 9.9.9.0/24‬من مسار ‪R2‬‬


‫لكن لما حب يطلع لشبكة ‪ 8.8.8.0/24‬بدأ يسلك مسار ‪R3‬‬
‫الــــ ‪AS-Path‬‬
‫الــــ ‪ AS-Path‬يعتبر رابع ‪ Attribute‬فى الـــ ‪ BGP‬واللى بيعتمد عليهم الـــ ‪BGP‬‬
‫فى تحديد أفضل مسار بمعنى إن لو الـــ ‪ BGP‬شاف إن الــ ‪ weigh‬و الــ ‪local‬‬
‫‪ preference‬و ‪ Locally Originate‬متساويين هيبدأ يشوف الـــ ‪AS-path‬‬

‫بإختصار شديد لو عندى مسارين‬


‫المسار فوق فيه عدد ‪ Autonomous System‬بيساوى ‪3‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬ ‫ومسار تحت فيه الــ ‪ Autonomous System‬بيساوى ‪2‬‬
‫فهنا هيختار أقل عدد ‪ Autonomous System‬واللى هو ‪2‬‬

‫فى الــ ‪ Topology‬دى ‪ R6‬شايف شبكة ‪ 1.1.1.0/24‬و ‪11.11.11.0/24‬‬


‫من مسارين مسار ‪ R4‬اللى بيعدى على ‪ 200 autonomous systme‬ثم ‪100‬‬
‫ومسار ‪ R7‬واللى بيعدى على ‪ 300 autonomous systme‬ثم ‪ 200‬ثم ‪100‬‬
‫فالطبيعى هيبدأ يختار المسار األفضل واللى فيه عدد ‪ autonomous System‬قليل‬

‫ممكن أتحكم فى إنه يسلك ‪ R7‬بدل طريق ‪ R4‬عن طريق الـــ ‪AS-Path‬‬
‫عن طريق عمليــــة الـــ ‪ Perpend‬ودى تقدر تقول عليها إنى بوهم الـــ ‪Routers‬‬
‫إنه هيمر على ‪ autonomous System‬كتيروبالتالى مش هيبقى المسار المفضل‬
‫بالنسبة ليه‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫شرح بسيط ومختصر للعملية اللى هتحصل‬


‫الـــ ‪ R6‬مستلم الـــ ‪ update‬بخصوص شبكة ‪ 1.1.1.0/24‬و ‪11.11.11.0/24‬‬
‫من ‪ R4‬و من ‪ R7‬وبالتالى علشان أتحكم إنى أخلى ‪ R6‬يسلك طريق ‪ R7‬بدل ‪R4‬‬
‫يبقى الزم أخلى ‪ R4‬يوهم ‪ R6‬إنه فيه عدد كبير من الـــ ‪autonomous system‬‬
‫هيعدى عليها وبالتالى ‪ R6‬لما يجيله الــ ‪ update‬من ‪R4‬‬
‫هيالقى إن الــ ‪ autonomous system‬كتير وبالتالى هيبدأ يسلك مسار ‪R7‬‬
‫وده ليـــه ؟‬
‫إلنى أنا عملت عملية فرض أو إجبار للـــ ‪ outgoing traffic‬اللى طالع من ‪R4‬‬
‫فى إنه يختار الــ ‪ Best Path‬بالنسبة للـــ ‪ incoming traffic‬اللى داخل لـــ ‪R6‬‬

‫حاليا ‪ R6‬شايف مسار ‪ R4‬هو الـــ ‪Best Path‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫علشان أبدأ أخلى ‪ R6‬يشوف شبكة ‪ 1.1.1.0/24‬و ‪ 11.11.11.0/24‬من مسار ‪R7‬‬
‫هدخل على ‪ R4‬وأوهم ‪ R6‬إنه هيمر على ‪ Autonomous system‬كتير‬

‫الـــــ ‪configuration‬‬
‫أول حاجة هحدد الشبكة من خالل الــ ‪ Prefix-list‬وهعطى ليها إسم ‪Net1-11‬‬ ‫‪-‬‬
‫هعمل الـــ ‪ Route-map‬وهعطي ليها إسم ‪m.a.elnaser‬‬ ‫‪-‬‬
‫هبدأ أعمل ‪ match‬للــ ‪ Route-map‬مع الـــ ‪prefix-list‬‬ ‫‪-‬‬
‫هبدأ حدد عدد الــ ‪ autonomous system‬الوهمى اللى هيعدى عليه‬ ‫‪-‬‬
‫هسمح لبقية الشبكات على افتراض إن فيه شبكات غير ‪ 1.1.1.0/24‬و‬ ‫‪-‬‬
‫‪ 11.11.11.0/24‬موجودين‬
‫بعد كده هبدأ أحدد الـــ ‪ neighbor‬اللى هو ‪ R6‬وأحدد الــ ‪ Route-map‬اللى‬ ‫‪-‬‬
‫عملتها وهخليها فى اتجاه الــــ ‪out‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫حاول تعمل ‪ clear‬لل ‪ BGP‬علشان تشوف النتيجة لو مظهرتشى معاك بإستخدام‬
‫* ‪R4#clear ip bgp‬‬ ‫‪and‬‬ ‫* ‪R6#clear ip bgp‬‬

‫هتالحظ إن ‪ R6‬بدأ يشوف إن فيه أكتر من ‪ autonomous system‬فى مسار ‪R4‬‬


‫وبالتالى هيبدأ يختار مسار ‪ R7‬علشان يكون ده أفضل مسار لشبكة ‪1.1.1.0/24‬‬
‫وشبكة ‪11.11.11.0/24‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫الـــــ ‪BGP Attributes – Origin‬‬
‫الــــ ‪ Origin‬تعتبر خامس خاصية عن طريقها بيحدد الــ ‪ BGP‬أفضل مسار‬
‫بعد الــ ‪ weigh‬و الـــ ‪ local preference‬و الـــ ‪locally originated‬‬
‫و ‪AS-Path‬‬

‫ودى بإختصار معناها ‪:‬‬


‫‪MadeBY‬‬ ‫إزاى الشبكة تم إعالنها داخل الـــ ‪BGP‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫معروف إنى علشان أعمل ‪ advertise‬لشبكة داخل الـــ ‪ BGP‬إلما هستخدم‬


‫‪ Command‬الـــ ‪ network‬أو ‪ command‬الـــ ‪redistribution‬‬

‫الــ ‪ command‬الخاص بالـــ ‪network‬‬


‫ببدأ أحدد الشبكات اللى محتاج أعملها ‪ Advertise‬فقط‬
‫طيب بالنسبة للـــ ‪ command‬الخاص بالـــ ‪redistribution‬‬
‫لو جيت على ‪ R4‬وعملت الــ ‪ command‬فهتالقى إنه بيعملى ‪ advertise‬لكل‬
‫الشبكات المتصلة بــ ‪R4‬‬

‫ولو جيت على ‪ R6‬هتالحظ إنه استلم كل الشبكات بــ ‪ R4‬من خالل الـــ ‪BGP‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫علشان مفهوم الــ ‪ origin‬يوضح خلينا نشوف الـــ ‪lab‬‬

‫محتاج أعمل ‪ advertise‬لشبكة ‪ 192.168.23.0/24‬داخل الـــ ‪BGP‬‬


‫لكن ‪ R2‬هيعملها ‪ advertise‬بإستخدام ‪ command‬الـــ ‪network‬‬
‫و ‪ R3‬هيعملها ‪ advertise‬بإستخدام ‪ command‬الـــ ‪redistribution‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬ ‫على ‪R2‬‬
‫على ‪R3‬‬
‫لو عملت ‪ command‬الــ ‪ redistribution‬على ‪R3‬‬
‫يبقى كده هعمل ‪ advertise‬لكل الشبكات يعنى شبكة ‪ 192.168.23.0/24‬وشبكة‬
‫‪ 33.33.33.0/24‬وأنا مش عاوز كده أنا عاوز فقط أستخدم الـــ ‪redistribution‬‬
‫لشبكة ‪ 192.168.23.0/24‬فقط‬
‫بدام هبدأ أحدد يبقى هستخدم الــــ ‪Route-map‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫وهنا ‪ R3‬هيعلن فقط شبكة ‪ 192.168.23.0/24‬فقط‬
‫بإستخدام ‪ command‬الــــ ‪redistribution‬‬
‫لو دخلنا على ‪ R6‬هنالحظ إنه استلم شبكة ‪ 192.168.23.0/24‬من مسارين‬
‫مسار ‪ R2‬و مسار ‪R3‬‬
‫‪ R2‬أعلنها بإستخدام ‪ command‬الـــ ‪network‬‬
‫‪ R3‬أعلنها بإستخدام ‪ command‬الـــ ‪redistribution‬‬
‫والـــ ‪ Router‬بيفضل إستخدام ‪ command‬الـــ ‪network‬‬
‫طيب إزاى عرف ‪ R6‬إن ‪ R2‬مستخدم الــ ‪ network‬على عكس ‪ R3‬؟‬
‫هيعرف بإستخدام الـــ ‪origin codes‬‬

‫هنالقى ‪ IGP‬برمز الـــ ( ‪ ) i‬لما بنعمل ‪ advertise‬بإستخدام ‪ command‬الـــ‬


‫‪ network‬داخل الـــ ‪ BGP‬لكن هنالقى رمز ( ؟ ) لما لما بنعمل ‪advertise‬‬
‫بإستخدام ‪ command‬الـــ ‪redistributed‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫الـــ ‪BGP Attributes – MED‬‬

‫الــــ ‪ MED‬إختصار لـــ ‪ Multi-Exit-Discriminator‬والشهير بالـــ ‪Metric‬‬

‫‪MadeBY‬‬
‫المسار األقل فى الـــ ‪ MED‬هو األفضل‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬ ‫القيمة الـــ ‪ Default‬بتساوى ‪0‬‬
‫الـــ ‪ MED‬بينتقل بين الــ ‪ eBGP Peers‬فقط ‪ .....‬يعنى إيه ؟‬
‫يعنى فى الرسمة دى الــ ‪ R2‬و ‪ R3‬لو استلموا شبكة ‪ 8.8.8.0‬مع ‪metric‬‬
‫هتوصل لـــ ‪ R1‬و ‪ R2‬و ‪ R3‬مع الـــ ‪ metric‬لكن هتقف داخل الــ ‪AS‬‬
‫لكن ‪ R4‬هيشوف الشبكة ‪ 8.8.8.0‬من غير الـــ ‪metric‬‬

‫هنا ‪ R2‬شايف شبكة ‪ 8.8.8.0/24‬بـــ ‪ metric‬يساوى ‪10‬‬


‫و الــــ ‪ R3‬شايف شبكة ‪ 8.8.8.0/24‬بـــ ‪ metric‬يساوى ‪20‬‬

‫أما ‪ R1‬فهيستلم شبكة ‪ 8.8.8.0/24‬من مسارين‬


‫مسار ‪ R2‬واللى الـــ ‪ metric‬فيه بيساوى ‪10‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫ومسار ‪ R3‬واللى الـــ ‪ metric‬فيه بيساوى ‪20‬‬
‫وطبعا هيختار المسار اللى الـــ ‪ metric‬بتاعه أقل واللى هو مسار ‪R2‬‬
‫لكن ‪ R4‬مش هيقدر يشوف الشبكة مع الـــ ‪ Metric‬وده معنى‬
‫الـــ ‪ MED‬بينتقل بين الــ ‪ eBGP Peers‬فقط ‪ .....‬يعنى إيه ؟‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫بالنسبة للـــ ‪configuration‬‬


‫حاليا ‪ R5‬يقدر يوصل لشبكة ‪ 8.8.8.0/24‬عن طريق ‪R2‬‬
‫إلنه المسار المفضل بالنسبة لــ ‪R1‬‬

‫أنا محتاج ‪ R5‬يوصل لشبكة ‪ 8.8.8.0/24‬عن طريق ‪ R3‬عن طريق الــ ‪MED‬‬

‫فى الـــ ‪ Topology‬الـــ ‪ R7‬هيبعت شبكة ‪ 8.8.8.0‬لـــ ‪ R1‬من مسارين‬


‫‪MadeBY‬‬ ‫مسار الـــ ‪ R2‬و مسار الـــ ‪R3‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫والمسار األفضل حاليا هو مسار الـــ ‪R2‬‬


‫وعلشان أخلى ‪ R1‬يشوف شبكة ‪ 8.8.8.0/24‬من مسار ‪ R3‬عن طريق الــــ ‪MED‬‬
‫يبقى الزم أخلى الـــ ‪ metric‬لشبكة ‪ 8.8.8.0/24‬فى مسار ‪ R3‬أقل من الـــ ‪ metric‬فى‬
‫مسار ‪R2‬‬

‫يعنى والشبكة طالعة من ‪R7‬‬

‫عندى حلين للموضوع ده‬


‫إلما هخلى كل مسار بـــ ‪ metric‬وأخلى مسار ‪ R3‬بــ ‪ metric‬أقل‬
‫أو أعلى الـــ ‪ metric‬الخاص بمسار ‪ R2‬فقط وكده كده الــ ‪ Default‬بــ ‪ 0‬فى‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫مسار ‪ R3‬وبالتالى أقل فهيكون األفضل‬

‫والموضوع ده هعمله بالـــ ‪Route-map‬‬


‫حددت شبكة ‪ 8.8.8.0‬واللى ‪ R1‬هيقدر يوصلها‬
‫بعد كده عملت إتنين ‪Route-map‬‬
‫واحدة لمسار ‪ R2‬واللى هتاخد ‪ metric‬الـــ ‪50‬‬
‫وواحدة لمسار ‪ R3‬واللى هتاخد الــ ‪ metric‬الــ ‪ 30‬علشان يبقى المسار األفضل‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫بعد كده هربط كل ‪ route-map‬بالــــ ‪neighbor‬‬

‫بدأت أربط الـــ ‪ Route-map‬األولى اللى اسمها ‪m.a.elnaser‬‬


‫واللى الــ ‪ metric‬بتاعها بـــ ‪ 50‬بالـــ ‪ neighbor‬الخاص بـــ ‪R2‬‬

‫وبدأت أربط الـــ ‪ Route-map‬األولى اللى اسمها ‪m.a.elnaser-2‬‬


‫واللى الــ ‪ metric‬بتاعها بـــ ‪ 30‬بالـــ ‪ neighbor‬الخاص بـــ ‪R3‬‬
‫حاول تعمل ‪ clear‬للـــ ‪ BGP‬بإستخدام ‪command‬‬
‫* ‪R7 #Clear ip bgp‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫لو دخلنا على ‪ R1‬علشان نشوف الوضع هنالحظ إن شبكة ‪ 8.8.8.0/24‬وصلت لـــ‬
‫‪ R1‬من مسار ‪ R3‬وليس ‪ R2‬وده إلن الــ ‪ metric‬أقل من مسار ‪R2‬‬
‫فيه حل تانى‬
‫إنى أعمل ‪ Route-map‬واحدة فقط وأربطها بـــ ‪ neighbor‬الـــ ‪R2‬‬
‫وأعلى الـــ ‪ metric‬فقط بحيث يبقى أكبر من ‪ 0‬وأسيب مسار ‪ R3‬زى مهو بــ‬
‫‪ metric‬يساوى ‪0‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬ ‫بالنسبة لــ ‪ R5‬علشان يوصل لشبكة ‪ 8.8.8.0/24‬كان بيوصل كده‬

‫لكن حاليا هيوصل كده‬


‫‪How to control advertise networks in BGP‬‬

‫تخيل لوعندك كذا شبكة معمولها ‪ advertise‬داخل الـــ ‪ BGP‬وانته عايز تتحكم فى‬
‫الموضوع ده ‪ ......‬يعنى انته عندك الوقتى أربع شبكات على ‪ R1‬تم عمل‬
‫‪ advertise‬ليهم داخل الـــ ‪: BGP‬‬
‫شبكة ‪1.1.1.0/24‬‬
‫وشبكة ‪10.10.10.0/24‬‬
‫‪MadeBY‬‬ ‫وشبكة ‪11.11.11.0/24‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫وشبكة ‪12.12.12.0/24‬‬

‫وعندك على ‪ R3‬شبكة ‪ 3.3.3.0/24‬و شبكة ‪ 33.33.33.0/24‬نفس الكالم‬


‫هنا الـــ ‪ R4‬يقدر يشوف الشبكات من مسار ‪ R2‬كـــ ‪Best path‬‬

‫لكن ‪ R8‬يقدر يشوف بعض الشبكات من مسار ‪R2‬‬


‫‪MadeBY‬‬
‫وبعض الشبكات من مسار ‪R3‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫طيب بالنسبة لـــ ‪R10‬‬

‫لما الشبكات دى بدأت توصل لـــــ ‪ R10‬عن طريق الـــ ‪ BGP‬فهيبدأ يشوف الشبكات‬
‫دى من طريقين طريق ‪ R11‬وهو ال ُمفضل ليه وطريق ‪R12‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬ ‫يعنى ‪ R10‬علشان يوصل للشبكات دى هيسلك مسار ‪R11‬‬
‫المطلوب يشوف شبكة ‪ 1.1.1.0/24‬من مسار ‪ R11‬فقط‬
‫وبقية الشبكات من مسار ‪R12‬‬

‫إزاى أتحكم أنا فى الموضوع ده ؟‬


‫بحيث أخلى شبكة مثال ‪ 1.1.1.0/24‬هى بس اللى تبقى من مسار ‪R11‬‬
‫والباقى من مسار ‪ R12‬يعنى كإنك بتعمل ‪Filter‬‬

‫الموضوع ده ممكن يتعمل عن طريق الـــ ‪Prefix-list‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫‪ R2‬هو المسار المفضل للشبكات اللى على ‪ R1‬وبالتالى علشان أتحكم فيها‬
‫فهدخل على ‪ R2‬وهبدأ أعمل الـــ ‪ prefix-list‬وأحدد الشبكة اللى محتاج أعملها‬
‫‪ advertise‬فقط‬
‫لما هعمل الـــ ‪ control‬ده على ‪ R2‬واربطه بالـــ ‪ neighbor‬اللى هو ‪R4‬‬
‫فهتالقى شبكة ‪ 1.1.1.0/24‬هى فقط اللى هتتبعت لــ ‪ R4‬وبالتالى ‪ R4‬هيقدر يوصلها‬
‫من المسار المفضل اللى هو ‪R2‬‬

‫وبعد أما كان ‪ R10‬يقدر يروح لكل الشبكات من مسار ‪R11‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫أصبح يقدر يروح للشبكة ‪ 1.1.1.0/24‬فقط من مسار ‪R11‬‬
‫وبقية الشبكات من مسار ‪R12‬‬

‫ملحوظة ‪ :‬فى الواقع العملى ممكن تتحكم فى الشبكات اللى عندك فقط‬

‫ملحوظة أخيره مهمة جدا ‪:‬‬


‫اتجاه الترافيك بيكون عكس اتجاه الـــ ‪ policy‬اللى أنا عاملها علشان أتحكم‬
‫يعنى إيه ؟‬
‫يعنى أنا عامل الــ ‪ prefix-list‬فى اتجاه الـــ ‪out‬‬
‫معنى كده إنك بتتالعب بالترافيك اللى داخل عندك ( ‪) Download‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫طيب أنا لو عامل الــ ‪ prefix-list‬فى اتجاه الــــ ‪in‬‬
‫معنى كده إنك بتتالعب بالترافيك اللى طالع من عندك ( ‪) upload‬‬
‫الــــ ‪Local AS‬‬
‫تخيل عندك ‪ customer 1‬مربوط بــــ ‪SP-1‬‬
‫‪MadeBY‬‬ ‫وعندك ‪ customer 2‬مربوط بــــــ ‪SP-2‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫وحد طلب منك فى يوم نقل الـــ ‪ customer 2‬إلى ‪SP-1‬‬


‫من غير تغيير إعدادات عند الـــ ‪customer 2‬‬

‫بالنسبة إلى ‪SP-1‬‬


‫‪ -‬فهو عامل عالقة ‪ eBGP‬مع ‪ R3‬و ‪R6‬‬
‫‪ -‬وشايف الشبكات اللى معمولها ‪ advertise‬داخل الـــ ‪BGP‬‬
‫ العادى خالص‬configuration ‫يعنى عملنا الـــ‬
MadeBY
MohamedAbdel
nas
ser
SP-2 ‫نفس األمر بالنسبة للـــ‬

MadeBY
MohamedAbdel
nas
ser
‫طيب إزاى هنقل الـــ ‪ customer 2‬إلى ‪ SP-1‬من غير معمل أى تغيير‬
‫عند الــ ‪ customer 2‬أو عمل ‪ relationship‬من جديد بين‬
‫الــ ‪ customer 2‬و الـــ ‪ SP-1‬؟‬

‫هنا هيجى دور الـــ ‪Local AS‬‬


‫أول حاجة هعملها ‪:‬‬
‫هشوف الـــ ‪ customer 2‬عامل عالقة أى ‪ IP‬مع الـــ ‪SP-2‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
SP-2 ‫ مع‬BGP Neighborship ‫ عامل‬R8 ‫الـــ‬
192.168.28.2 = IP ‫واللى الــ‬

MadeBY
SP-1 ‫ على‬IP ‫وهنا الزم أعمل نفس الـــ‬
MohamedAbdel
nas
ser
‫وهنا أصبح فيه ‪ reachability‬بين ‪ SP-1‬وبين ‪ R8‬اللى عند ‪customer 2‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬
‫نيجى للخطوة التانية وهى إقامة العالقة بين ‪ R8‬وبين ‪: SP-1‬‬
‫‪er‬‬

‫الطبيعى إنى لو جيت أعمل عالقة ‪ eBGP‬حاليا بين ‪ SP-1‬وبين ‪R8‬‬


‫هيجيبلى الرسالة دى واللى بتقول إن الـــ ‪ AS‬غلط إلن ‪ R8‬كان عامل‬
‫عالقة ‪ eBGP‬مع ‪ SP-2‬واللى الـــ ‪ AS‬بتاعه بيساوى ‪500‬‬
‫فإزاى هخلى ‪ R8‬يشوف ‪ SP-1‬بــ ‪ AS‬بيساوى ‪ 500‬والـــ ‪ SP-1‬الـــ ‪ AS‬بتاعه‬
‫بيساوى ‪ 300‬؟‬
‫الحل إنى هعمل الـــ ‪ Local AS‬على الـــ ‪SP-1‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫وهنا بدأت العالقة تقوم بين الـــ ‪ SP-1‬والــــ ‪ customer 2‬عادى‬
‫لكن لو دخلنا الوقتى على ‪ R8‬علشان نشوف الوضع‬
‫لو دخلنا على ‪ R2‬هنالحظ إنه شايف برده الـــ ‪ AS‬اللى بيساوى ‪500‬‬
‫وهنا أصبح الـــ ‪ AS‬األساسى اللى هو ‪ 300‬موجود والـــ ‪ Local AS‬أيضا‬
‫لكن أنا مش عايز الـــ ‪ local AS‬يوصل لـــ ‪R2‬‬
‫هنا هدخل على الـــ ‪ SP-1‬وأبدأ أختار ‪no-prepend‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫وبعد أما كان ‪ R2‬شايف الـــ ‪ AS‬اللى بيساوى ‪ 500‬أصبح مش موجود عنده‬
‫لو مفيش نتيجة اعمل ‪| Clear ip bgp * | command‬‬
‫طيب بالنسبة لــــ ‪ R8‬اللى شايف الـــ ‪ main AS‬والــ ‪Local AS‬‬

‫محتاج أخلى الـــ ‪ R8‬يشوف فقط الـــ ‪ local AS‬اللى كان ‪500‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬ ‫هنا هدخل على ‪SP-1‬‬
‫علشان منخليش الـــ ‪ customer 1‬يشوف الـــ ‪ local AS‬عملنا ‪no prepend‬‬
‫وعلشان نخلى الـــ ‪ customer 2‬يشوف فقط الــ ‪ local AS‬هنزود‬
‫وبالتالى لما هعمل األمر ده هنالقى إن ‪ R8‬بعد أما كان شايف الـــ ‪ AS‬اللى‬
‫بيساوى ‪ 300‬أصبح شايف فقط الــ ‪ AS‬اللى بساوى ‪500‬‬

‫وأخيرا ‪! .........‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫الـــــ ‪Allowas-in‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫تخيل عندك فرعين كل فرع متصل بالـــ ‪ISP‬‬


‫وكل فرع منهم ليه نفس الـــ ‪autonomous System‬‬
‫ومحتاج إنهم يوصلوا لبعض ‪!....‬‬

‫اللى تم فى الـــ ‪ Lab‬هو الـــ ‪ configuration‬العادى جدا‬


‫عالقة ‪ iBGP‬بإستخدام الـــ ‪ loopback‬فى الـــ ‪ Branch‬رقم ‪1‬‬ ‫‪-‬‬
‫عالقة ‪ iBGP‬بإستخدام الـــ ‪ loopback‬فى الـــ ‪ Branch‬رقم ‪2‬‬ ‫‪-‬‬
‫عالقة ‪ eBGP‬بين كل فرع والـــ ‪ISP‬‬ ‫‪-‬‬
‫عمل ‪ advertise‬للشبكات الموضحة داخل الــــ ‪BGP‬‬ ‫‪-‬‬
‫الطبيعى إن ‪ ISP‬شايف الشبكات اللى من هنا واللى من هنا‬
‫يعنى مثال لو دخلنا على ‪ R15‬مثال‬

‫ولو جينا على ‪ R18‬اللى موجود فى الـــ ‪Branch 2‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫هنالحظ إنه مستلمشى الشبكات ‪ 30.30.30.0/24‬وال الشبكة‬
‫‪ 40.40.40.0/24‬من الــــ ‪ Branch 1‬عن طريق الــــ ‪ ISP‬رغم إنى‬
‫عاملهم ‪ advertise‬داخل الــ ‪BGP‬‬

‫نفس األمر لو بصينا على ‪ R1‬هنالحظ إنه أيضا مستلمشى الشبكات اللى‬
‫معمولها ‪ advertise‬من الـــ ‪Branch 1‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫طيب إيه السبب اللى ممكن يخلى الفرع ده ميستلمشى الشبكات اللى معمولها‬
‫‪ advertise‬بالـــ ‪ BGP‬؟‬
‫السبب هو إن لما ‪ R18‬هيجى يستلم الشبكات من ‪ Branch 1‬هيالقى إن الـــ‬
‫‪ Autonomous System‬الخاص بيه واللى هو ‪ 100‬موجود ضمن الــ‬
‫‪ Path‬وبالتالى هيعمل ‪ ignore‬علشان يمنع الـــ ‪ loop‬وبالتالى مش هيعرف‬
‫يستلم الشبكات نهائى‬

‫علشان أشوف الموضوع ده‬


‫هدخل على ‪ R18‬وهكتب الـــ ‪ command‬ده علشان أشوف إيه اللى‬
‫بيحصل وإيه السبب اللى يخلى ‪ R18‬ميستقبلشى الشبكات من ‪Branch 1‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫لما هبدأ أشوف الرسايل اللى هتجيلى هالحظ إن فييه رسالة بتبين سبب عدم‬
‫إستقبال الشبكات ‪ 30.30.30.0/24‬و ‪40.40.40.0/24‬‬

‫طيب إيه الحل ‪!....‬؟‬


‫هنا هيجى دور الـــــ ‪Allowas-in‬‬
‫واللى هيسمح إن الفرع األول يستلم من الفرع التانى والعكس‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬ ‫هبدأ أدخل على ‪ R18‬فى الـــ ‪Branch 2‬‬
‫والـــ ‪ R1‬فى الــــ ‪Branch 1‬‬

‫وهبدأ أكتب الـــ ‪ command‬ده‬


MadeBY
Branch 1 ‫ شايف الشبكات اللى فى‬R18 ‫وهنا أصبح‬
MohamedAbdel
nas
ser
R1 ‫نفس األمر بالنسبة لـــ‬

MadeBY
MohamedAbdel
nas
ser
‫الـــــ ‪peer-Group in BGP‬‬

‫فى الــ ‪ lab‬الموجود ده لو حبيت أعمل الـــ ‪ R1‬هو الـــ ‪Route Reflector‬‬
‫لكل الـــ ‪ Routers‬اللى عندى داخل الــــ ‪autonomous System 100‬‬
‫عن طريق الـــ ‪ loopbacks‬بالتالى أنا محتاج أعمل مع كل ‪ Router‬موجود‬
‫تقريبا ‪4 commands‬‬
‫يعنى أنا تقريبا محتاج ‪ 20 commands‬هكتبهم على ‪ R1‬علشان أعمل عالقة‬
‫‪ iBGP‬وبالتالى الموضوع مرهق وهنا ظهر مفهوم ‪:‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫الـــــ ‪peer-Group in BGP‬‬


‫فالـــ ‪ peer-Group‬بكل إختصار فايدتها إنى أجمع كل المعلومات فى ‪group‬‬
‫وأنا بعمل عالقة مع الـــ ‪ Neighbor‬هخليه يتربط بالـــ ‪ group‬دى وبالتالى‬
‫هياخد منها كل المعلومات اللى أنا وضعتها‬

‫بعد أما عملت ‪peer-Group‬‬


‫هبدأ أضع فيها كل البيانات اللى هحتاجها وأنا بعمل عالقة ‪iBGP‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫وبعد كده هبدأ وأنا بعمل الـــ ‪ Neighborship‬استعين بالـــ ‪peer-group‬‬


‫الموضوع بيستخدم أيضا مع الـــ ‪ eBGP‬عادى جدا‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
BGP – community ‫الــــ‬

BGP ‫ من المواضيع المهمة فى الـــ‬community ‫الـــ‬


MadeBY ‫وتقدر تعرفها بإنها‬
MohamedAbdel
nas
ser

A tag attached to the BGP routes exchanged between two


BGP peers
Routes ‫ بقدر أضيفه للــ‬tag ‫يعنى‬
‫ معين‬Action ‫ ده بقدر أتخذ‬tag ‫ومن خالل الــــ‬
eBGP ‫ و‬iBGP ‫ بينتقل للـــ‬community ‫الـــ‬
‫ يعنى أنا الزم أحدد‬By Default ‫ مش بينتقل‬community ‫الـــ‬
neighbor ‫ اللى هيتم إرساله للـــ‬community ‫الــ‬
: community ‫عندى كذا نوع من الــــ‬
Well-Known community : ‫النوع األول‬
private community : ‫النوع الثانى‬
‫بالنسبة للنوع األول‬
Well-Known community
: ‫ زى‬router ‫ داخل الـــ‬By Default ‫منه أنواع بتكون موجودة‬
no-advertise :
Don’t advertise the prefix to any BGP neighbors

no-export :
Don’t advertise the prefix to any eBGP neighbors
MadeBY
Local-AS : MohamedAbdel
nas
ser

Don’t advertise the prefix outside of the sub-AS


(this one is used for BGP confederations)

Internet :
Advertise the prefix to all BGP neighbors

‫بالنسبة للنوع الثاني‬


private community
: ‫منه أنواع‬
standard community ‫ الـــ‬-
Extended community ‫ الـــ‬-
‫بإذن هللا كل حاجة هتتضح من خالل الـــ ‪Labs‬‬

‫أول نوع من أنواع الـــ ‪Well-Known community‬‬


‫هو الـــ ‪ no-advertise‬والنوع ده بقدر من خالله أتحكم فى الشبكات اللى‬
‫مش هيتم إعالنها للـــ ‪ neighbors‬اللى عندى سواء ‪ iBGP‬أو ‪eBGP‬‬

‫اللى تم فى الـــ ‪ lab‬هو الـــ ‪ configuration‬العادى وعمل ‪advertise‬‬


‫داخل الــ ‪ BGP‬للشبكات ‪8.8.8.0‬‬
‫و ‪ 18.18.18.0‬و ‪ 80.80.80.0‬من خالل ‪R8‬‬
‫و ‪ 5.5.5.0‬و ‪ 50.50.50.0‬و ‪ 15.15.15.0‬من خالل ‪R5‬‬

‫المطلوب فى الـــ ‪ lab‬ده ‪:‬‬


‫‪MadeBY‬‬ ‫‪ -1‬محتاج ‪ R7‬ميعلنشى شبكة ‪8.8.8.0‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫‪ -2‬محتاج ‪ R4‬ميعلنشى شبكة ‪5.5.5.0‬‬
Well-Known community no-advertise ‫علشان أعمل‬
‫ سواء‬Neighbors ‫ للـــ‬Routes ‫واللى تعريفها ببساطة عدم إعالن الـــ‬
External ‫ أو‬internal

R7 ‫ للشبكات اللى عنده هتوصل لـــ‬advertiser ‫ لما يعمل‬R8 ‫الطبيعى إن‬

MadeBY
MohamedAbdel
nas
ser
‫وبالنسبة لـــــ ‪ R2‬فهيكون هو الـــ ‪ Best path‬للشبكات دى‬

‫ولو بصينا على ‪ R1‬فهيكون الـــ ‪ R2‬هو الــ ‪ Best Path‬للشبكات دى‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫والمطلوب األول ‪:‬‬
‫محتاج ‪ R7‬ميعلنشى الشبكة ‪ 8.8.8.0‬للــــ ‪Neighbors‬‬

‫هنا هبدأ أستخدم الـــ ‪ community‬اللى إسمها ‪no-advertise‬‬


‫هدخل على ‪R8‬‬

‫هبدأ أحدد الشبكة األول وهستخدم الـــــ ‪Access list‬‬ ‫‪-‬‬


‫بعدها هعمل ‪ route-map‬وأعطيتها إسم ‪mohamed‬‬ ‫‪-‬‬
‫هبدأ أعمل ‪ match‬مع الــ ‪Access list‬‬ ‫‪-‬‬
‫هبدأ بعد كده أحدد الــ ‪ community‬واللى بتكون ‪no-advertise‬‬ ‫‪-‬‬
‫وبعدها هسمح لبقية الشبكات‬ ‫‪-‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫فاضل حاجة أخيره وهى إنى أربط الـــ ‪ Route-map‬مع الـــ ‪Neighbor‬‬

‫طيب بالنسبة لإلتجاه هيكون ‪ in‬وال ‪ out‬؟‬


‫الطبيعى إنها تبقى ‪ out‬إلنها هتطلع من ‪ R8‬بإتجاه ‪ R7‬واللى بدوره هيبدأ‬
‫ياخد الـــ ‪ Action‬من خالل الـــ ‪ community‬اللى وصلته واللى بتقول امنع‬
‫الشبكة دى إنها تتعلن للـــ ‪Neighbors‬‬
‫مالحظة أخيره ‪:‬‬
‫بالنسبة لـــ ‪ R7‬اللى مش هيعلن شبكة ‪ 8.8.8.0‬لـــ ‪R2‬‬
‫‪MadeBY‬‬ ‫هل هو عارف حاجة عن الـــ ‪ community‬ده ؟‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫طبعا ميعرفشى بسبب إن الـــ ‪ community‬لسه متبعتتشى ليه من ‪R8‬‬


‫واللى بناء عليها هيبدأ ياخد الـــ ‪Action‬‬
‫ علشان اشوف النتيجة بسرعة‬ip clear bgp * soft ‫بعدها هعمل‬
MadeBY
MohamedAbdel
nas
ser
‫ولو بصينا على ‪ R2‬هنالحظ إن شبكة ‪ 8.8.8.0‬مش موجودة‬

‫ونفس األمر هيكون على ‪ R1‬و ‪ R4‬و ‪ R5‬و ‪R6‬‬

‫سؤال ‪ :‬هل ممكن أعمل الـــ ‪ community‬على ‪ R7‬بدل ‪R8‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬ ‫ينفع تطبق الخطوات اللى فاتت على ‪R7‬‬
‫ولما تربط الـــ ‪ route-map‬مع الـــ ‪ neighbor‬اللى هو ‪R8‬‬
‫هيبقى اإلتجاه ‪ in‬علشان هى داخله ليه وأنا هبدأ أخد الـــ ‪Action‬‬
‫المطلوب التانى ‪:‬‬
‫محتاج ‪ R4‬ميعلنشى شبكة ‪ 5.5.5.0‬لـــ ‪R1‬‬

‫ممكن أعمل الـــ ‪ community‬على ‪ R5‬وأبدأ أرسلها لـــ ‪ R4‬وهو هياخد‬


‫الـــ ‪ Action‬زى معملتها فى المثال السابق لكن المرة دى هعمل الخطوات‬
‫اللى فاتت على ‪ R4‬بحيث يبقى فيه طريقتين بس زى مقولنا هيبقى اإلتجاه ‪in‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫بعدها هعمل ‪ ip clear bgp * soft‬علشان اشوف النتيجة بسرعة‬

‫علشان أنا عملت الموضوع على ‪ R4‬فأنا مش محتاج بقى الــ ‪command‬‬
‫بتاع ‪ send community‬إلن كده كده ‪ R4‬أصبح الموضوع عليه‬
‫ولو بصينا على ‪ R1‬فهنالحظ إن شبكة ‪ 8.8.8.0‬مستلمهاش‬
‫وشبكة ‪ 5.5.5.0‬أيضا مستلمهاش‬

‫وبالتالى من خالل الــــ ‪ community‬أقدر أتحكم فى إيه الشبكات‬


‫اللى أنا عايزها توصل للــــ ‪ Neighbors‬بتوعى وإيه الشبكات‬
‫اللى مش عايزها توصل‬

‫ده كان بالنسبة للــــ ‪Well-Known community no-advertise‬‬


‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫تانى نوع من أنواع الـــ ‪Well-known community‬‬

‫هو الـــ ‪ No Export‬والنوع ده ببساطة مش هيعلن أى شبكة للــ ‪eBGP‬‬


‫‪Don’t advertise the prefix to any eBGP neighbors‬‬
‫مالحظة مهمة ‪:‬‬
‫الــ ‪ ebgp‬ممكن يتم تطبيقه لو أنا عامل ‪confederation‬‬
‫فخالى بالك إلن لو عندك تطبيق للـــ ‪ confederation‬وموجود عالقة‬
‫‪ eBGP‬فهنا الشبكة الممنوعة هتوصل عادى لكن بين الـــ ‪ eBGP‬العادية أو‬
‫الــ ‪ Real‬مش هتوصل‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫اللى تم فى الـــ ‪: lab‬‬
‫الـــ ‪ configuration‬العادى خالص فى الـــ ‪BGP‬‬ ‫‪-‬‬
‫عمل ‪ advertise‬للشبكات ‪ 3.3.3.0‬و ‪ 30.30.30.0‬و ‪33.33.33.0‬‬ ‫‪-‬‬
‫عمل ‪ advertise‬للشبكات ‪ 10.10.10.0‬و ‪100.100.100.0‬‬ ‫‪-‬‬
‫داخل الـــ ‪ AS‬اللى هو ‪ 200‬تم عمل ‪confederation‬‬ ‫‪-‬‬
‫ولو نسيت الـــ ‪ confederation‬فممكن ترجع تراجع عليه من الدرس‬
‫اللى وضحناها بخصوص الـــ ‪ confederation‬قبل تكلمة الــ ‪ lab‬ده‬
‫علشان تكون الصورة واضحة عندك‬

‫لما أعلنت الشبكات الطبيعى إنها توصل لـــ ‪ R4‬وبقية الروترات داخل‬
‫الــــ ‪ Autonomous System‬المختلفة‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫يعنى ‪ R4‬شايف الشبكات ال ُمعلنة‬
‫الـــ ‪ R11‬نفس الكالم شايف الشبكات ال ُمعلنة‬

‫نفس الكالم على ‪ R7‬شايف كل الشبكات ال ُمعلنة‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫المطلوب ‪:‬‬
‫‪ -‬تطبيق الــــ ‪ No export‬بحيث شبكة ‪ 3.3.3.0‬توصل لـــ ‪R4‬‬
‫ومتوصلشى لــ‬

‫تعالى ناخدها واحدة واحدة‬


‫الشبكات لما ‪ R1‬هيستلمها هيبدأ يبعتها بالــــ ‪ BGP‬للــــ ‪Neighbors‬‬
‫وبالتالى هتوصل لــــ ‪ R4‬واللى بدوره هيبدأ يبعتها هو كمان وهكذا‬
‫فعندى حلين إما إنى أعمل الـــ ‪ Community‬على ‪ R1‬وهى طالعة‬
‫أو أعملها على ‪ R4‬وهى داخله ليه‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫وبدام ‪ R4‬اللى هيبعت الشبكات للـــ ‪ Neighbors‬فهعملها عليها عادى‬


‫هبدأ أدخل على الــــ ‪R4‬‬

‫هبدأ أحدد الشبكة األول وهستخدم الـــــ ‪Access list‬‬ ‫‪-‬‬


‫بعدها هعمل ‪ route-map‬وأعطيتها إسم ‪mohamed‬‬ ‫‪-‬‬
‫هبدأ أعمل ‪ match‬مع الــ ‪Access list‬‬ ‫‪-‬‬
‫هبدأ بعد كده أحدد الــ ‪ community‬واللى بتكون ‪no-export‬‬ ‫‪-‬‬
‫وبعدها هسمح لبقية الشبكات‬ ‫‪-‬‬

‫بعدها هعمل ‪ ip clear bgp * soft‬علشان اشوف النتيجة بسرعة‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫ياترى الشبكة ‪ 3.3.3.0‬وصلت لـــ ‪ R7‬وال ال‬
‫لو بصينا على ‪R7‬‬

‫هنالحظ إن الشبكة وصلت إلن الــ ‪ Best path‬بالنسبة لــ ‪ R7‬هو ‪R5‬‬
‫والشبكة مش بتتمنع فى ‪ eBGP‬داخل بيئة الـــ ‪confederation‬‬
‫وبالتالى وصلت لــ ‪ R6‬وبعدين لـــ ‪R5‬‬
‫وبالتالى الشبكة مازالت هتوصل لـــ ‪R7‬‬
‫الــــ ‪ R5‬حاليا ميعرفشى عن الـــ ‪ community‬اللى موجودة على ‪R4‬‬
‫وبالتالى محتاج حد يبلغ الـــ ‪ community‬دى لـــ ‪R5‬‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫فالمفروض اللى يبلغ الـــ ‪ community‬دى هو ‪R6‬‬

‫طيب ‪ R6‬يعرف عنها حاجة ؟‬


‫لألسف ال وبالتالى أنا محتاج األول أخلى ‪ R6‬يعرف الـــ ‪community‬‬
‫وبعدين يبعتها لـــ ‪R5‬‬
‫يعنى هرجع لـــ ‪ R4‬وابعتها لـــ ‪ R6‬والـــ ‪ R6‬يبعتها لـــ ‪R5‬‬

‫هدخل على ‪R4‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫كده ‪ R6‬بقى عارف الـــ ‪community‬‬
‫لكن ‪ R7‬مازال شايف الشبكة‬

‫إلن زى مقلنا ‪ R5‬ميعرفشى حاجة عن الـــ ‪ community‬دى‬


‫فالزم ‪ R6‬يبلغ ‪ R5‬بالموضوع ده فهدخل على ‪R6‬‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫وهنا الـــ ‪ R7‬مش هيشوف الشبكة دى إلن ‪ R5‬خالص بقى عارف الــ‬
‫‪ community‬اللى المفروض من خاللها هياخد الــ ‪action‬‬

‫‪MadeBY‬‬
‫حتى الـــ ‪ R11‬مبقاش شايف الشبكة ‪3.3.3.0‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫ثالث نوع من أنواع الـــــ ‪known community-Well‬‬
‫هو الــــ ‪ local-AS‬والنوع ده ببساطة مش هيعلن أى شبكة للـــــ ‪eBGP‬‬
‫حتى عالقة الـــ ‪ eBGP‬اللى بتم داخل بيئة الـــ ‪Confederation‬‬

‫والنوع ده مختلف عن الـــ ‪ no export‬اللى كان مش بيعلن أى شبكة‬


‫للـــ ‪ eBGP‬لكن لو فيه ‪ eBGP‬داخل بيئة الـــ ‪ Confederation‬فهيتم‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬ ‫إعالنها عادى زى مشرحنا سابقا‬

‫اللى تم فى الـــــ ‪Lab‬‬


‫‪ -‬ال ‪ configuration‬العادى خالص فى الـــــ ‪BGP‬‬
‫‪ -‬عمل ‪ advertise‬للشبكات ‪ 3.3.3.0‬و ‪ 30.30.30.0‬و ‪33.33.33.0‬‬
‫‪ -‬عمل ‪ advertise‬للشبكات ‪ 10.10.10.0‬و ‪100.100.100.0‬‬
‫‪ -‬داخل ال ‪ AS‬اللى هو ‪ 200‬تم عمل ‪confederation‬‬
‫ولو نسيت الــــ ‪ confederation‬فممكن ترجع تراجع عليه من الدرس‬
‫اللى وضحناها بخصوص ال ‪ confederation‬قبل تكلمة الــــ ‪ lab‬ده‬
‫علشان تكون الصورة واضحة عندك‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫بعد إعالن الشبكات لو جينا إلى ‪ R4‬هنالحظ إنه شايف الشبكات‬

‫ولو جينا على ‪ R6‬واللى بينه وبين ‪ R4‬عالقة ‪ eBGP‬لكن داخل بيئة الـــ‬
‫‪ confederation‬هنالحظ إنه شايف الشبكات كلها‬
‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬
‫ولو جينا على ‪R7‬‬
‫هنالحظ إنه شايف الشبكات اللى تم عمل ‪ advertise‬ليها داخل الـــ ‪BGP‬‬
‫المطلوب ‪:‬‬
‫منع إعالن الشبكات دى ‪ 3.3.3.0‬و ‪ 30.30.30.0‬للـــ ‪ eBGP‬سواء كان‬
‫الـــ ‪ eBGP‬العادى أو حتى الـــ ‪ eBGP‬داخل بيئة الـــ ‪confederation‬‬

‫الــــ ‪: configuration‬‬
‫الشبكات لما ‪ R1‬هيستلمها هيبدأ يبعتها بالـــ ‪ BGP‬للــــ ‪Neighbors‬‬
‫وبالتالى هتوصل لـــ ‪ R4‬واللى بدوره هيبدأ يبعتها هو كمان وهكذا‬

‫‪MadeBY‬‬ ‫وبدام ‪ R4‬اللى هيبعت الشبكات للــــ‬


‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬‫‪er‬‬

‫‪ Neighbors‬فهعمل الـــ ‪ community‬عليه‬


‫‪ -‬هبدأ أحدد الشبكة األول وهستخدم الـــ ‪Access list‬‬
‫‪ -‬بعدها هعمل ‪ route-map‬وأعطيتها إسم ‪Net3-30‬‬
‫‪ -‬هبدأ أعمل ‪ match‬مع الـــــ ‪Access list‬‬
‫‪ -‬هبدأ بعد كده أحدد الــــ ‪ community‬واللى بتكون ‪local-as‬‬
‫‪ -‬وبعدها هسمح لبقية الشبكات‬
‫بعدها هعمل ‪ clear ip bgp * soft‬علشان اشوف النتيجة بسرعة‬

‫‪MadeBY‬‬
‫‪MohamedAbdel‬‬
‫‪nas‬‬
‫‪s‬‬ ‫وبعد أما ‪ R6‬كان شايف الشبكة ‪ 3.3.3.0‬و ‪30.30.30.0‬‬
‫‪er‬‬

‫فبعد تطبيق الـــ ‪ community‬هتالحظ النتيجة دى‬


R7 ‫حتى الـــ‬

local-as ‫ده كان بإختصار موضوع الـــــ‬

MadeBY
MohamedAbdel
nas
ser
‫الــــ ‪private community‬‬

‫قلنا إنى عندى كذا نوع من الــــ ‪community‬‬


‫النوع األول ‪Well-Known community‬‬
‫النوع الثانى ‪private community‬‬

‫وقلنا إن النوع األول بيسمى بالــــ ‪Known community-Well‬‬


‫ومنه أنواع بتكون موجودة ‪ By Default‬داخل ال ‪ router‬زى ‪:‬‬
‫‪Internet - AS-Local - no-export – no-advertise‬‬
‫والحمد هلل وضحنا كل نوع من ‪Known community-Well‬‬

‫أما النوع الثانى من الـــ ‪ community‬فهو ‪private community‬‬


‫ومنه أنواع ‪:‬‬
‫الـــــ ‪standard community‬‬
‫الــــــ ‪ ( Extended community‬بيستخدم فى الـــ ‪) MPLS VPN‬‬

‫ملحوظة ‪:‬‬
‫الـــ ‪ community‬عبارة عن ‪ 32 bit‬وممكن تتكتب بصيغتين‬
‫إما هتتكتب كجزء واحد عبارة عن ‪32 bit‬‬
‫أو تتكتب على جزئين كل جزء عبارة عن ‪16:16 = 16 bit‬‬
‫أول ‪ 16 bit‬يفضل يكونوا برقم الـــ ‪AS‬‬

‫اللى تم فى الــــ ‪: Lab‬‬


‫‪ -‬الــــ ‪ configuration‬العادى بالــــ ‪BGP‬‬
‫‪ -‬عمل ‪ advertise‬للشبكات ‪ 3.3.3.0‬و ‪ 30.30.30.0‬و ‪33.33.33.0‬‬
‫‪ -‬عمل ‪ advertise‬للشبكات ‪ 10.10.10.0‬و ‪100.100.100.0‬‬

‫تطبيق الــــ ‪ lab‬بإذن هللا هيبسطلك األمور بخصوص الموضوع ده‬


‫لكن خلينا ناخدها واحدة واحدة‬
‫لو بصينا على ‪ R11‬هنالحظ ‪ 3.3.3.0‬و ‪ 30.30.30.0‬و ‪33.33.33.0‬‬
‫يقدر يوصلها من طريقين طريق ‪ R5‬و ‪ R7‬لكن الـــ ‪ Best path‬هو ‪R5‬‬

‫أنا محتاج أتحكم فى الترافيك اللى داخل لـــ ‪ R11‬عن طريق الـــ‬
‫‪ community‬يعنى محتاج مثال شبكة ‪ 3.3.3.0‬و شبكة ‪30.30.30.0‬‬
‫يبقى الـــ ‪ Best Path‬هو الــــ ‪ R7‬وليس من مسار ‪R5‬‬

‫بعض المالحظات ‪:‬‬


‫الطبيعى إن ‪ R4‬أول الشبكات متوصل ليه هيبدأ يبعتها بالـــ ‪ BGP‬لـــ ‪ R5‬و‬
‫‪ R7‬وهتوصل لـــ ‪ R11‬من الـــ ‪ R5‬إلنه الـــ ‪ Best Path‬لكن أنا محتاج‬
‫الترافيك يروح لــ ‪ R11‬من الـــ ‪R7‬‬
‫وبالتالى هبدأ أعمل الـــ ‪ community‬على ‪ R4‬وهبدأ أخصص‬
‫‪ community‬للشبكات دى ‪ 3.3.3.0‬و ‪30.30.30.0‬‬
‫ولتكن مثال ‪ .... 200:10‬رقم ‪ 200‬هو رقم الــ ‪AS‬‬

‫زى معرفنا قبل كده علشان أحدد يبقى هعمل ‪ access-list‬أو ‪prefix-list‬‬

‫هبدأ أحدد الشبكة وهستخدم الـــ ‪Access list‬‬ ‫‪-‬‬


‫بعدها عملت الـــ ‪ route-map‬وأعطيتها إسم ‪N3-30‬‬ ‫‪-‬‬
‫عملت ‪ match‬مع الــــ ‪Access list‬‬ ‫‪-‬‬
‫بدأت أحدد الـــ ‪ community‬وهتالحظ إن ليها صيغتين صيغة‬ ‫‪-‬‬
‫بــ ‪ 32bit‬وصيغة على جزئين كل جزء ‪16bit‬‬
‫الجزء األول يفضل الـــ ‪ AS‬والجزء الثانى أى رقم تحتاجه‬
‫‪ -‬وبعدها هسمح لبقية الشبكات‬
‫بعد كده هبدأ أربطها مع الـــ ‪ Neighbor‬اللى هو طبعا ‪ R1‬واإلتجاه هيبقى ‪in‬‬
‫علشان هى داخله لـــ ‪R4‬‬

‫لو جيت عملت على ‪ sh ip bgp = R4‬وبعدين الشبكة هالحظ إنى حاطط‬
‫‪ 200:10‬مش الرقم اللى ظهر ده‬

‫علشان تظهره بالصيغة التانية يبقى هتكتب الـــ ‪ command‬ده‬


‫وبالتالى لو جيت تشوف تانى ‪ R4‬هتالقى الـــ ‪ community‬بالصيغة اللى‬
‫انته كاتبها واللى هى ‪200:10‬‬
‫طيب بالنسبة لـــ ‪ R5‬و ‪ R7‬هل همه يعرفوا حاجة عن الـــ ‪ community‬اللى‬
‫حصلت دى واإلجابة طبعا ال بدليل لو دخلت على ‪ R5‬أو ‪ R7‬هتالحظ‬

‫وبالتالى أنا محتاج إنى أخلى ‪ R4‬يبعت الـــ ‪ community‬دى لــ ‪ R5‬و ‪R7‬‬
‫ولو جينا ندخل مرة تانية على ‪ R5‬و ‪ R7‬هنالحظ إن الـــ ‪community‬‬
‫وصلت وطبعا ممكن أغير صيغة الـــ ‪ community‬للـــ ‪new format‬‬
‫وبعد تغيير الصيغة‬
‫أصبحت نفس الصيغة اللى أنا كنت كاتب بيها الــ ‪community‬‬

‫السؤال هل ‪ R11‬شايف الــ ‪ community‬دى علشان بعد كده أقدر اتحكم من‬
‫خاللها واإلجابة ال طبعا وبالتالى محتاج ‪ R5‬و ‪ R7‬يبعتوا‬
‫برده الــ ‪ community‬دى لـــ ‪R11‬‬
‫وبالتالى لو دخلت على ‪ R11‬هالحظ إنه فيه ‪ community‬مستلمها من مسارين‬
‫طيب إزاى أضيف ‪ community‬تانى مختلف لشبكة ليها ‪community‬‬
‫يعنى أنا لو محتاج حاليا أضيف مثال ‪ community‬بتساوى ‪300:10‬‬
‫لشبكة ‪ 3.3.3.0‬لكن على ‪ R7‬فقط ‪!....‬‬

‫يبقى هدخل على ‪ R7‬وهبدأ أحدد الشبكة زى معرفنا‬

‫بعد كده هبدأ اربطها من الـــ ‪ neighbor‬اللى هيكون ‪ R11‬واإلتجاه هيكون‬


‫‪ out‬إلنها هتطلع من ‪ R7‬وداخله لـــ ‪R11‬‬
‫حاليا لو دخلت على ‪ R11‬هالحظ إن شبكة ‪ 3.3.3.0‬مستلمها من مسار ‪R7‬‬
‫بإتنين ‪ community‬األول عملته على ‪ R4‬والتانى عملته على ‪R7‬‬
‫بعد الكالم اللى فوق ده‬
‫أصبح الترافيك اللى داخل لـــ ‪ R11‬من مسارين وتبقى الخطوة األخيرة وهى‬
‫إزاى أتحكم فى تغيير المسار عن طريق الــــ ‪ community‬اللى عملتها‬

‫حاليا الـــ ‪ R11‬كده‬

‫المطلوب ‪ :‬محتاج أى شبكة ليها ‪ community‬بيساوى ‪200:10‬‬


‫تجيلى من مسار الــــ ‪ R7‬وليس من مسار ‪R5‬‬
‫كنت األول علشان أعمل الـــ ‪ community‬كنت الزم أحدد األول الشبكة بالـــ‬
‫‪ Access-list‬وبعدين بعمل الـــ ‪ route-map‬وأعمل ‪match‬‬
‫وبعدين أضع قيمة الـــ ‪community‬‬
‫لكن حاليا أنا محتاج أحدد بناء على الـــ ‪ community‬ده إلن كده كده الـــ‬
‫‪ Routes‬واصلة للــ ‪ R11‬بالـــ ‪ community‬بتاعها‬
‫وأنا محتاج أتحكم بناء على قيمة الـــ ‪ community‬ده‬
‫وبالتالى أنا محتاج أعمل ‪community-list‬‬

‫بعد أما عملت الــــ ‪ community-list‬هبدأ أعمل الـــ ‪route-map‬‬


‫حدد الـــ ‪ route-map‬وأعطيتها إسم ‪com-3-30‬‬ ‫‪-‬‬
‫بدأت أعمل ‪ match‬مع الـــ ‪ community-list‬اللى رقمها ‪10‬‬ ‫‪-‬‬
‫هبدأ أستخدم الـــ ‪ as-path prepend‬علشان أخلى مسار ‪ R5‬يبقى‬ ‫‪-‬‬
‫طويل وبالتالى الترافيك هيدخل لــــ ‪ R11‬من مسار ‪R7‬‬
‫بعد كده هتضيف ‪ command‬تسمح فيه لبقية الشبكات واللى هو ‪:‬‬ ‫‪-‬‬
‫‪(config)#Route-map com-3-30 permit 2‬‬

‫فاضل خطوة أخيرة وهى ربط الـــ ‪ route-map‬بالـــ ‪ neighbor‬اللى محتاج‬


‫يبقى المسار بتاع طويل وبالتالى هيكون الـــ ‪ neighbor‬هو الـــ ‪R5‬‬
‫قبل مشوف النتيجة هفكرك بالــ ‪R11‬‬
‫لكن بعد أما أعمل ‪clear ip bgp‬‬

‫هالحظ النتيجة كالتالى ‪:‬‬


‫وبالتالى أصبح الترافيك اللى داخل لـــ ‪ R11‬من الشبكات دى هيبقى من مسار‬
‫الـــ ‪ R7‬وليس من ‪ R5‬اللى من الصورة هيعدى على ‪ AS‬كتيرة وبالتالى مش‬
‫هيبقى الـــ ‪Best path‬‬

‫ملحوظة ‪ :‬ممكن أستخدم الــــ ‪ community-list‬وأتحكم فى الترافيك اللى‬


‫خارج من عندى عن طريق الـــ ‪ weight‬بنفس الفكرة‬

‫ملحوظة أخيرة ‪:‬‬


‫موضوع الـــ ‪ community‬فى العموم محتاج إنك تشتغل على البات كتير‬
‫بحيث تفهم الموضوع وإزاى تتحكم فى الترافيك اللى داخل واللى خارج‬
‫يعنى لو حسيت إنك مش فاهمه من أول مرة فاألمر ده طبيعى خالص‬
‫وكل اللى عليك إنك تذاكره مره وإتنين وتشتغل على البات كتير وتطبق بإيدك‬
‫بحيث كل مرة هتالحظ إن األمور بدأت توضح معاك‬

‫دمتم سالمين وبخير والحمد هلل رب العالمين‬

You might also like