Download as pdf or txt
Download as pdf or txt
You are on page 1of 73

‫إعداد م‪ /‬محمد شايع‬

‫‪Basic BGP Concepts‬‬


‫‪Inter-Domain Concept‬‬
‫‪Introduction to autonomous systems‬‬
‫دقق معي في الشكل ادناه‪ .‬يمثل الهيكل الرئيسي لألنترنت حول العالم حسب ما تم تنظيمه من قبل ‪.IANA‬‬
‫تحت كل ‪ region‬يوجد العديد من )‪.Autonomous Systems (AS‬‬

‫ما هو )‪Autonomous System (AS‬؟‬


‫‪ AS‬وهي عبارة عن مجموعة من (‪ )Internet Protocol (IP) routing prefixes‬المتصلة‪ .‬تحت تحكم لواحد او أكثر‬
‫من ‪ ،network operators‬أي ما نطلق عليه ‪ single administrative‬او ‪.domain‬‬
‫بمعنى ادق أكثر تحدد لها ‪ routing policy‬لكل ‪ domain‬الى ‪.Internet‬‬
‫بالطبع من سيكون لديه أكثر من ‪ connection links‬الى عدة شبكات‬
‫مثل ‪ Internet service provider‬او اختصارا ‪ISP‬‬
‫او تلك المنظمات العمالقة سوف تستخدم بروتوكول معروف جدا لديها‬
‫هو )‪.Border Gateway Protocol (BGP‬‬
‫أي سوف يستخدم ‪ BGP‬من اجل الربط بين ‪ .ASs‬سوف يقوم ‪ISP‬‬
‫بشكل رسمي بتحديد رقم يسمى )‪.autonomous system number (ASN‬‬
‫‪ ASN‬يعتبر رقم فريد يستخدم بواسطة ‪.BGP routing‬‬
‫حتى ‪ ،2007‬كان ‪ AS numbers‬عبارة عن ‪ ،16-bit integers‬أي كانت‬
‫تعطينا ‪.65536‬‬
‫‪ RFC 4893‬قامت بعملية التوسيع ليصبح استخدام ‪.32-bit AS numbers‬‬
‫والتي بدأت )‪ Internet Assigned Numbers Authority (IANA‬بعملية توزيعها على )‪.regional Internet registries (RIRs‬‬
‫تم استبدال االقتراح بـ ‪ .RFC 6793‬لتصبح طريقة كتابتها ‪ .x.y‬حيث ان ‪ x and y‬يعتبران ‪ .16-bit numbers‬سوف نشرح ذلك الحقا‪.‬‬

‫إذا ما هو )‪Border Gateway Protocol (BGP‬؟‬


‫وهو عبارة عن ‪ open standards‬يعتمد ‪ path-vector‬ويصنف على انه )‪ ،exterior gateway protocol (EGP‬ويستخدم عدة ‪attributes‬‬
‫من اجل اتخاذ قرار ‪.routing‬‬
‫بمعنى انه يستخدم من اجل عمل ‪ route‬ألي ‪ traffic‬بين ‪ autonomous systems‬ويسمى بروتوكول االنترنت‪.‬‬
‫ويوجد أكثر من ‪ 500,000 IPv4 prefixes‬وما زال في اتساع‪ ،‬وبالمقارنة مع ‪ IPv6‬الذي اليزال صغير الحجم وينمو لكن بشكل ببطء‪ ،‬ويمكنك‬
‫التعرف على ‪ BGP table‬من خالل الدخول الى الرابط التالي (‪.)http://bgp.potaroo.net‬‬
‫وهنا قد نعتبر ان ‪ BGP‬ليس ‪ routing protocol‬بل يمكن القول انه ‪ application‬وقد يطلق عليه ‪ .reachability protocol‬وحاليا يوجد ما‬
‫يسمى بـ ‪BGP-4‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪IGP vs. BGP‬‬

‫‪ IGP ‬يملك رؤية كاملة عن ‪ topology‬مثال ‪.SPF and DUAL‬‬


‫‪ IGP ‬يعمل على اتخاذ قرار ‪ routing‬بناء على ‪ link attributes‬مثال ‪...cost‬‬
‫‪ IGP policy application ‬يعتبر معقد‪.‬‬
‫‪ BGP o‬ال يملك أي رؤية واضحة عن ‪ topology‬حيث ان ‪ BGP‬يمثل فقط ناقل لـ ‪.IGP‬‬
‫‪ BGP o‬يتخذ قرار ‪ routing‬بناء على ‪ ،prefix vector attributes‬أي ان ‪ attribute‬تنتمي الى ‪ prefix‬وليس للـ ‪.link‬‬
‫‪ BGP o‬يعتبر بسيط في ‪.policy application‬‬

‫?‪Why Use BGP‬‬

‫يعتبر ‪Policy application‬‬ ‫‪‬‬


‫سهل في عملية اجبار ‪ egress traffic‬أي أنك تستطيع تحديد كيفية توجيه ‪ traffic‬الخارجة‪.‬‬ ‫‪‬‬
‫سهل في عملية اجبار ‪ ingress traffic‬أي أنك تستطيع تحديد كيفية استقبال ‪ traffic‬الداخلة‪.‬‬ ‫‪‬‬

‫?‪When to Use BGP or Not‬‬

‫في حالة كان النوع ‪ Provider Aggregable (PA) addresses‬أي كان ‪ ISP‬هو المالك لـ ‪ addresses‬فلن تحتاج الى ‪.BGP‬‬ ‫‪‬‬
‫في حالة كان النوع ‪ Provider Independent (PI) addresses‬أي أنك تملك ‪ addresses and BGP ASN‬البد من ‪.BGP‬‬ ‫‪‬‬

‫مما سبق يتضح لنا ان هناك اختالف ما بين ‪ AS‬في ‪ IGP‬و في ‪ ،EGP‬ففي ‪ BGP‬يسمح بوجود اكثر من ‪ ،administrative domains‬ويعمل‬
‫‪ IGPs‬داخل ‪ .AS‬أي تعمل على التوجيه بين ‪.nodes‬‬
‫دعنا نوضح الفكرة من الشكل ادناه انه تم الربط بطريقة ‪.Full mesh‬‬

‫في الشكل السابق سوف نواجه عيوب ومنها‪:‬‬

‫‪ ‬ال يوجد أي ‪ Scale‬في حالة تم استخدام‬


‫أي ‪ routing protocols‬معها‬
‫مثل ‪.RIP,OSPF,EIGRP or IS-IS‬‬
‫‪ ‬ال يوجد أي ‪ policies‬نستطيع تطبيقها‪.‬‬
‫‪ ‬أي ‪ upgrades‬سوف يكون غير ممكن‪.‬‬

‫الحل‪:‬‬
‫لكن ماذا لو كان هناك تحكم بشكل منفصل لكل مجموعة‬
‫من ‪ routers‬أي فصلها كما في الشكل المقابل‪.‬‬
‫إعداد م‪ /‬محمد شايع‬
‫وبالتالي سوف يعمل على مجموعة من ‪routers‬‬
‫أي ‪ IGP routing protocols‬كما في الشكل المقابل‪.‬‬

‫وبالتالي كل ‪ routing protocols‬سوف يتولى‬


‫عملية ‪ routing‬بين ‪.routers‬‬
‫لكن كيف سيتم التوجيه بين ‪routing protocols‬‬
‫أي مثال من ‪ OSPF‬الى ‪ EIGRP‬او العكس‪.‬‬
‫وهنا يبرز دور ‪ BGP‬في انه يتولى عمليه التوجيه داخل ‪،AS‬‬
‫بينما ‪ EGP‬يتولى التوجيه بين ‪ .AS‬كما في الشكل المقابل‪.‬‬

‫لكن كيف يصل او كيف يميز ‪ BGP‬بين كل ‪ AS‬واخرى؟‬


‫الجواب من خالل رقم مميز لدي ‪ RIR‬مثل ‪ IP Addresses‬وهو مكون من‪:‬‬

‫‪ ‬في االصل يتكون من ‪ 16 bits‬ويكون‪:‬‬


‫‪ 64511-1 ‬يكون بشكل ‪.Public‬‬
‫‪ 65534-64512 ‬يكون بشكل ‪.Private‬‬
‫‪ ‬بينما ‪ 0 and 65535‬تعتبر ‪.Reserved‬‬
‫‪ ‬حاليا يتكون ‪4-byte field‬‬
‫يكتب بالشكل ‪65535.65535 – 0.0‬‬

‫ويسمى كل ‪ destination‬بـ ‪.Prefix‬‬


‫‪Internal versus external gateway protocols‬‬
‫‪IGP and BGP‬‬
‫للمقارنة‪:‬‬
‫‪ IGP‬يستطيع ايجاد المسارات بين ‪ routers‬كما في الشكل‪.‬‬

‫‪ BGP‬لدية نظرة عن الشبكة بشكل اكبر حيث انه يستطيع ايجاد المسار بين ‪ AS‬واخرى‪.‬‬
‫ محمد شايع‬/‫إعداد م‬
.Intra-routing protocol ‫ يعتبر‬IGP
.Inter-AS protocol ‫ يعتبر‬BGP
‫ بشكل تام بين‬information ‫ كما انه يتم فيه تبادل‬،‫ ويكون التحكم فيه تحت أدارة محددة‬domain ‫ بسبب وجوده داخل‬Trusted ‫ يعتبر‬IGP
.routers
‫ في اتجاه واحد او في كال‬information ‫ كما انه يمكن ان يحمل‬.administrators ‫ بسبب وجود تحكم من العديد من‬Untrusted ‫ يعتبر‬BGP
.‫االتجاهين‬

routing ‫ ما يسمى بـ‬Path attribute ‫ ويوجد في‬،path attributes and prefix ‫ فانة يتم إرسال‬BGP ‫ في‬updates ‫وعندما يتم ارسال‬
.policy

Types of autonomous systems


:‫ عبارة عن‬AS ‫من الممكن ان تكون‬

default ‫ وذلك لوجود‬incoming BGP ‫ فليس هناك حاجة لـ‬.external peer ‫ الى‬one link ‫ والتي تعني وجود فقط‬Single-homed 
static routes ‫ وقد يستخدم‬.external peer ‫ لـ‬internal prefixes ‫ من اجل االعالن عن‬outgoing BGP ‫ كما وانه يستخدم‬.route
.‫ من اجل هذا العرض‬redistribution ‫مع‬

.one or more external peer ‫ الى‬multiple link ‫ والتي تعني وجود فقط‬Multi-homed 
‫إعداد م‪ /‬محمد شايع‬
‫في االعلى مثال لـ ‪ multi-home‬لـ ‪ single AS‬بينما في االسفل ‪ multi-home‬لـ ‪ multi-AS‬هنا يجدر البد من وجود ‪ BGP‬لكي يتم‬
‫االختيار‪.‬‬

‫‪Autonomous System Types‬‬


‫‪ Stub ‬والتي البد ان يتحقق فيها‪:‬‬
‫‪ ‬كل ‪ packets‬القادمة من خارج ‪ AS‬يكون فيها ‪ destination‬هو نفسه ‪ AS‬الحالي‪.‬‬
‫‪ ‬كل ‪ packets‬المغادرة من ‪ AS‬مصدرها هو نفسه ‪ AS‬الحالي‪.‬‬
‫‪ ‬من الممكن ان تكون ‪ single-home‬او قد تكون ‪.multi-home‬‬
‫‪ Transit ‬والتي البد ان يتحقق فيها انه من الممكن ان يكون الـ ‪ packets‬سواء القادم او المار مصدره او وجهته الى ‪ AS‬اخرى‪ ،‬فهي‬
‫تستخدم فقط كمعبر‪ .‬وهنا البد من وجود ‪ BGP‬والبد ان تكون ‪.multi-home‬‬

‫‪The BGP AS-PATH attribute‬‬


‫تعتبر ‪ AS-PATH attribute‬ضرورية من اجل استخدام ‪ BGP routing polices‬وسوف يتم مناقشتها الحقا‪ .‬وتعتبر ‪ AS-PATH‬عبارة عن‬
‫قائمة من ‪ AS numbers‬تزودنا بوصف الـ ‪ inter-AS path‬الى ‪ ،destination‬لها وظيفتين هما‪:‬‬

‫‪ ‬اختيار أقصر ‪ .AS path‬لكن كيف يتم اختيار المسار االقصر‪ ،‬في الشكل ادناه سوف نالحظ ما يلي‪:‬‬
‫‪ AS1 ‬يعلن عن ‪ prefix=218.54.0.0/16‬الى كال من ‪ AS6 and AS5‬مرفقا معها رقم ‪ AS‬والذي يساوي ‪.1‬‬
‫‪ ‬يسجل كال من ‪ AS6 and AS5‬الـ ‪ update‬القادم مع رقم ‪ AS‬في ‪.routing table‬‬
‫‪ ‬يعلن ‪ AS6‬عن ‪ prefix=218.54.0.0/16‬الى ‪ AS3‬مرفقا معه المسار كامل وهو رقم ‪ AS‬اليه والذي هو ]‪.[6, 1‬‬
‫‪ ‬كذلك الحال يعلن ‪ AS5‬عن ‪ prefix=218.54.0.0/16‬الى ‪ AS2‬مرفقا معه المسار كامل وهو رقم ‪ AS‬اليه والذي هو ]‪.[5, 1‬‬
‫‪ ‬يعلن ‪ AS2‬عن ‪ prefix=218.54.0.0/16‬الى ‪ AS4‬مرفقا معه المسار كامل وهو رقم ‪ AS‬اليه والذي هو ]‪.[2, 5, 1‬‬
‫‪ ‬يعلن ‪ AS4‬عن ‪ prefix=218.54.0.0/16‬الى ‪ AS3‬مرفقا معه المسار كامل وهو رقم ‪ AS‬اليه والذي هو ]‪.[2, 5, 1‬‬
‫‪ ‬لدى ‪ AS3‬مساران الى ‪ AS1‬او الى ‪ prefix = 218.54.0.0/16‬وعليه المفاضلة بينهما وسوف يتم اختيار المسار االقصر‬
‫وهو ]‪.[6, 1‬‬
‫إعداد م‪ /‬محمد شايع‬
‫وهنا نرى التشابه مع ‪ distance vector protocols‬مع االختالف انه يتم استخدام ‪ AS-PATH‬وليس مثال ‪ hop count‬كما في ‪RIP‬‬
‫مثال‪ .‬ولذلك يطلق على ‪ BGP‬اسم (‪.)path vector protocol‬‬
‫‪ ‬تجنب حدوث أي ‪ loop‬والتي تتم من خالل فحص أي ‪ update‬قادم ألي ‪ prefix‬ففي حالة كان ‪ update‬القادم يحتوى على رقم ‪ AS‬لـ‬
‫‪ local AS‬فإنه يتم حذف ‪ route‬حتى يتم تجنب حدوث أي ‪ loop‬كما في الشكل أدناه‪.‬‬

‫ولالستعراض لجدول التوجيه العام اتجه الى الموقع ‪ www.routeviews.org‬وباستخدام األمر ‪ show ip route‬سوف تحصل على‬
‫التالي‪:‬‬
‫إعداد م‪ /‬محمد شايع‬
‫التكن قلقا فيما يخص بعض المصطلحات التي سنوضحها الحقا مثل‪ .Metric , LocPrf , andWeight :‬لكن تطلع الى العمود الذي يخص‬
‫‪ .Path‬حيث يوجد به قائمة لـ (‪ )AS_PATH attributes‬لكل شبكة‪.‬‬
‫يعبر الرمز * على ان ‪ route‬في حالة ‪.valid‬‬
‫يعبر الرمز > على ان ‪ route‬هو ‪.best path‬‬
‫في حالة كان ‪ next hop‬عبارة عن ‪ 0.0.0.0‬فإن هذا يعني ان الشبكة مصدرها هو ‪ router‬نفسه‪.‬‬
‫‪ Origin code‬عندما يكون ‪ i‬فإنه يشير الى ‪ network‬تم اإلعالن عنها الى ‪ BGP‬بواسطة امر ‪.network‬‬
‫ولكن عندما تجد الرمز ? فإن الشبكة قادمة بواسطة امر ‪ redistribute‬الى داخل ‪.BGP‬‬
‫الرمز ‪ e‬سوف يعني ان الشبكة قادمة بواسطة ‪ EGP‬او )‪.)Exterior Gateway Protocol‬‬
‫‪ Suppressed‬سوف يعني ان ‪ BGP‬يعرف الشبكة لكن لن يعلن عنها‪ .‬قد تظهر في حالة كانت جزء من ‪.summary‬‬
‫‪ Damped‬أي لن يعلن عن الشبكة بسبب ‪ flapping‬أي ان الشبكة تظهر وتختفي بشكل دوري‪.‬‬
‫‪ History‬يعرف ‪ BGP‬ولكنها غير صالحة لإلعالن في هذه اللحظة‪.‬‬
‫‪ RIB-failure‬أي ان ‪ BGP‬يعرف الشبكة لكن لم يقم بتثبيتها في ‪ .routing table‬وهذا سوف يحدث في حالة ان هناك ‪routing protocol‬‬
‫اخر لديه ‪ administrative distance‬اقل من التي وصلت من خالل ‪.BGP‬‬

‫من الممكن ان هناك للوصول الى شبكة أكثر من مسار‪ .‬وهذا يعبر عنه من خالل األمر ‪ maximum-paths‬من اجل زيادة او إنقاص عدد احتماالت‬
‫الوصول الى شبكة معينة فمن الممكن ان يصل العدد الى ‪.16‬‬
‫بعد تأسيس عالقة الجوار بين ‪ Two BGP peers‬سوف يتم تبادل كل ‪ .BGP routing tables‬بعد ذلك سوف فقط سيتم التبادل عند حصول أي‬
‫تغيير‪ .‬وفقط تلك المعلومات التي حصل عليها التغيير‪.‬‬
‫هذا سوف يقودنا الى ان ‪ BGP‬بسبب عدم استخدام عملية التبادل الدوري لـ ‪ routing table‬فالبد من آلية من اجل التأكد من ان الجار اليزال‬
‫موجودا على عالقة الجوار معه‪ .‬بمصطلح اخر سوف يتم تبادل رسائل نطلق عليها رسائل ‪ .keepalive‬من اجل صيانة عالقة الجوار‪ .‬افتراضيا‬
‫سوف يكون كل ‪ ،60 seconds‬بعد مرور ‪ 180 seconds‬في حالة عدم وصول أي ‪ keepalive‬فسوف يعتبر الجار في حالة ‪ .down‬ومن الممكن‬
‫استخدام بعض األوامر من اجل تحوير ذلك من خالل األمر ‪.timers bgp‬‬

‫‪External and Internal BGP‬‬


‫في ‪ BGP‬سوف نستخدم مصطلح ‪ BGP session‬أي تأسيس عالقة جوار بين جارين‪ .‬وستكون احد التالي‪:‬‬

‫في حالة كانت عالقة الجوار تلك بين الجارين‬ ‫‪‬‬


‫وكالهما داخل ‪ AS‬فإننا نسمي الـ ‪ session‬بـ )‪.internal BGP (IBGP‬‬
‫لكن في حالة كانت عالقة الجوار بينهما وكالهما موجود في‬ ‫‪‬‬
‫‪ AS‬مختلفة عن األخر فإننا نسمي الـ ‪ session‬بـ )‪.external BGP (EBGP‬‬

‫سوف يعمل ‪ IBGP‬داخل ‪ AS‬كما في الشكل المقابل‪ .‬بينما سوف يعمل ‪EBGP‬‬
‫عند الحافة‪.‬‬
‫وبالطبع سوف يكون ‪ AS_PATH‬على انه (‪ )AS hop count metric‬الى جانب أيضا (‪.)loop avoidance device‬‬
‫فعندما يشاهد ‪ router‬نفس الـ ‪ AS‬التي ينتمي اليها قادمة مع ‪ route‬الذي وصله كـ ‪ update‬فإن مصير ‪ route‬سيكون ‪.drop‬‬
‫الشكل المقابل أيضا يوضح ان لدينا )‪.(multi-homed stub Ass‬‬
‫حيث يتم اتخاذ قرار الوصول الى ‪ AS1‬مثال عبر ‪ IBGP‬في ‪.AS3‬‬
‫ما هي اوجه التشابه بين ‪IBGP and EBGP‬؟‬

‫‪ -1‬استخدام ‪.unicast point-to-point sessions‬‬


‫‪ -2‬استخدام ‪.TCP port 179‬‬
‫إعداد م‪ /‬محمد شايع‬
‫ما هي اوجه االختالف بين ‪IBGP and EBGP‬؟‬

‫‪ IBGP -1‬يقطع العديد من ‪ ،router hops‬بينما في ‪EBGP‬‬


‫بشكل افتراضي يكون االتصال بشكل افتراضي بين جاران مباشرة‪.‬‬
‫‪ -2‬في ‪ IBGP‬توجد العديد من القواعد يجب حلها داخل ‪ intra-AS‬مثل‪:‬‬
‫‪Loop avoidance ‬‬
‫ال نستطيع استخدام ‪ AS-PATH‬كما في ‪ EBGP‬ففي ‪ IBGP‬كال ‪ routers‬موجودان في نفس ‪ AS‬ولذلك البد من آلية لمنع‬
‫حدوث ‪ loop‬ولذلك البد اتباع التالي‪:‬‬
‫‪ o‬أي ‪ routes‬تمت معرفته من ‪ external neighbors‬سوف يتم عمل ‪ forward‬الى ‪ internal neighbors‬او‬
‫‪.IBGP‬‬
‫‪ o‬أي ‪ routes‬تمت معرفته من ‪ internal neighbors‬سوف يتم عمل ‪ forward‬الى ‪ external neighbors‬او‬
‫‪.EBGP‬‬
‫‪ o‬اي ‪ routes‬تمت معرفته من ‪ internal neighbors‬سوف لن يتم عمل ‪ forward‬الى ‪ internal neighbors‬او‬
‫‪.IBGP‬‬

‫للتوضيح دعنا نأخذ الشكل التالي‪:‬‬


‫‪ AS1 ‬يعلن عن ‪ prefix 10.1.0.0/16‬الى ‪ AS2‬وبالتحديد الى ‪ R1‬من خالل ‪.EBGP‬‬
‫‪ ‬داخل ‪ AS2‬يعلن ‪ R1‬من خالل ‪ IBGP‬عن ‪ prefix 10.1.0.0/16‬الى ‪.R2‬‬
‫‪ ‬حسب القاعدة الثالثة اعاله فإنه ال يستطيع ‪ R2‬االعالن عن ‪ prefix 10.1.0.0/16‬الى ‪.R3‬‬
‫‪ ‬كيف سيعرف ‪ R3‬عن ‪ prefix 10.1.0.0/16‬لكي يرسلها الى ‪.AS3‬‬
‫‪‬‬

‫‪ ‬الحل في وجود عالقة ما بين ‪ R1 and R3‬داخل ‪ AS2‬وبالتالي وصول ‪ prefix 10.1.0.0/16‬على انه قادم ‪ R1‬الى‬
‫‪ R3‬عن طريق ‪ ،R2‬كما في الشكل ادناه‪.‬‬
‫‪ ‬يقوم ‪ R3‬باإلعالن عن ‪ prefix 10.1.0.0/16‬الى ‪ AS3‬من خالل ‪.EBGP‬‬

‫‪Next-hop address lookups‬‬ ‫‪‬‬


‫مشكلة البحث عن ‪ next hop‬داخل ‪ AS‬كما في الشكل ادناه‪.‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪ AS3‬سوف يرسل ‪ Packet to Destination 10.1.1.1‬يصل الى ‪ AS2‬وبالتحديد الى ‪ R3‬من خالل ‪.EBGP‬‬ ‫‪‬‬
‫يبحث ‪ R3‬كيف يصل الى ‪ 10.1.1.1‬اي ‪ next hop‬فيجده ‪ ،R1‬يقوم بعملية البحث بشكل ‪ recursive‬عن ‪ R1‬فيجد‬ ‫‪‬‬
‫الطريق من خالل ‪.R2‬‬
‫يصل ‪ packet‬الى ‪ ،R2‬هنا ‪ R2‬ال يملك أي ‪ route‬الى ‪ ،10.1.1.1‬يقوم بحذف ‪.packet‬‬ ‫‪‬‬
‫الحل من خالل ‪ full mesh‬كما في الشكل ادناه‪.‬‬ ‫‪‬‬

‫‪IGP synchronization‬‬ ‫‪‬‬


‫القاعدة تقول هنا انه لن ال يسمح بدخول أي ‪ route‬الى ‪ routing table‬في حالة لم يكن ذلك الـ ‪ route‬معروف مسبقا لدي‬
‫‪.IGP‬‬
‫هذه القاعدة ستكون غير ضرورية في حالة استخدام ‪ full IBGP mesh‬ويجب ان يكون هناك االمر ‪No synchronization‬‬
‫والذي يأتي بشكل افتراضي في االنظمة الحديثة او مع ‪ IOS‬الحديثة‪.‬‬
‫‪Path redundancy‬‬ ‫‪‬‬
‫في حالة أردنا ان يكو لدينا مسارات احتياطية كما في الشكل ادناه فسوف تبرز لدينا مشكلة وهي وجود العديد من ‪ sessions‬التي‬
‫البد من اعدادها‪.‬‬

‫الحل لهذه المعضلة هو وجود ‪ Loop address‬ثم تأسيس عالقة جوار عن طريق ‪ TCP‬فلو افتراضنا تعطل المسار العلوي‬
‫سوف يكون هناك عالقة جوار ايضا والمسار سوف يكون من االسفل‪ ،‬كما في الشكل ادناه‪.‬‬
‫إعداد م‪ /‬محمد شايع‬
‫في الشكل ادناه سوف نالحظ ان لدينا ‪ physical topology‬تم بعد ذلك تأسيس ‪ logical topology‬من اجل تفادي أي ‪ .loop‬وذلك من خالل‬
‫(‪.)full mesh IBGP sessions‬‬

‫فالقاعدة معروفة أن أي ‪ router‬عندما يستقبل ‪ route‬من خارج ‪ AS‬فسوف يتم تمريره الى الجار فقط‪ ،‬أي مثال استقبل ‪ RTR4‬أي ‪External‬‬
‫‪ route‬فسوف يتم تمرير الى جيرانه بشكل مباشر وهذا يعني انه سوف يمرر الى الجميع بما ان الجميع لديه عالقة جوار مع ‪.RTR4‬‬
‫لكن أي من الجيران عندما يستقبل ‪ route‬فهو يعتبر بالنسبة لهم قادم من جار داخل ‪ AS‬وبالتالي لن يتم تمريره الي أي جار‪ .‬وهذا يفيد في تفادي‬
‫حدوث أي ‪ loop‬في الشبكة‪.‬‬
‫‪Transit AS Multihoming‬‬
‫ستكون بالطبع شبكة ‪ ISP‬شبكة ‪ transit‬بما انها تحمل ‪ routes‬من العديد من الشبكات الى خارج ‪ .AS‬بالطبع أيضا ستكون شبكات تجارية ضخمة‬
‫أيضا والشبكات الحكومية‪ ،‬تعتبر على انها ‪.transit‬‬
‫بشكل عام سيكون لديك ثالثة أنواع من ‪ external connections‬من شبكة ‪:transit‬‬

‫‪‬‬ ‫‪User (customer) peering:‬‬

‫وهنا تعتبر شبكات تستخدم ‪ transit AS‬من اجل ان تتصل بها للعبور الى شبكات أخرى‪.‬‬

‫‪‬‬ ‫‪Private peering:‬‬

‫عندما يتفق أكثر من ‪ ISP‬من اجل مشاركة ‪ .routes‬فهذا يعني ‪.peering agreement‬‬

‫‪‬‬ ‫‪Public peering:‬‬

‫يندرج تحت مسمي ‪ well-known‬ويعرف على انه ()‪ .)Internet exchange points (IXP‬االتصال مجاني بالطبع‪ .‬لكن سيكون هناك بالتأكيد‬
‫تكلفة من اجل (‪ )equipment and connections‬الى ‪ .IXP‬في الماضي كانت تستخدم (‪ )Ethernet, FDDI‬واحيانا ‪ .ATM‬لكن األن يعتبر‬
‫االستخدام األكبر لـ ‪ Ethernet switches‬او ما يسمى بـ ()‪ )Virtual Private LAN Service (VPLS‬من اجل عملية االتصال‪.‬‬
‫المصطلح ‪ IXP‬تم استبدال المصطلح القديم الذي كان يسمى بـ ))‪.(Network Access Point (NAP‬‬
‫ومن اجل معرفة كل ‪ IXPs‬حول العالم اليك الموقع (‪.)www.datacentermap.com/ixps.html‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪Stub AS Multihoming‬‬
‫بالطبع في الشكل المقابل لديك ‪ link‬فقط الى ‪ transit‬وهذا يعني أنك‬
‫سوف تضع ‪ static route‬يقوم بعملية ‪.routing‬‬
‫فسوف يبحث داخل ‪ routing table‬عن ‪،destination‬‬
‫في حالة لم يجده فعلية االتجاه الى ‪ static route‬الذي يعتبر ‪.default route‬‬
‫في ‪ RTR2‬سوف نستخدم ‪ IBGP‬من اجل نشر ‪ routes‬القادمة من ‪ RTR1‬الى‬
‫بقية ‪ routers‬داخل ‪.ASs‬‬
‫لكن هناك حاجة وأسباب عدة لوجود ‪ multi-home‬في حالة فقد االتصال‬
‫بأحد ‪ link‬سيكون اللينك األخر موجود‪ .‬وقد يكون ذلك سببه اما‪:‬‬

‫‪Link and interface failures‬‬ ‫‪-‬‬


‫‪Router failures‬‬ ‫‪-‬‬
‫‪ISP failures‬‬ ‫‪-‬‬

‫الحل للمشكل بالطبع هو وجود أكثر من ‪ link‬كما هو موضح في الشكل المقابل‪.‬‬


‫ولكن التزال هناك مشكلة وهي ان من الممكن ان نتعرض لـ ‪ router failures‬الموجود‬
‫في ‪.transit‬‬
‫إذا الزالت هناك مشكلة‪.‬‬

‫من اجل جل المشكلة سوف نضيف نفس ‪ link‬الثاني لكن الى ‪router‬‬
‫اخر او بمعنى اخر الى ‪ EBGP‬اخر كما هو واضح في الشكل المقابل‪.‬‬
‫تم حل المشكلة!‬
‫ليس بعد‪.‬‬
‫لماذا؟‬
‫ماذا لو ان ‪ single AS‬تعرضت لحالة من عدم الوصول لسبب ما‪.‬‬
‫هنا سيكو الحل هو ان يكون لدي أكثر من ‪ ASs‬متصل بها‪.‬‬
‫كما يبين ذلك الشكل ادناه‪.‬‬
‫إعداد م‪ /‬محمد شايع‬
‫هل تم حل المشكل؟‬
‫ليس كما تتخيل!‬
‫بالطبع مثل الشبكة ادناه سوف يزيد عليك ‪ cost‬من اجل تتصل بأكثر من ‪.AS‬‬

‫‪Riyadh‬‬ ‫‪Jeddah‬‬ ‫‪Dammam‬‬ ‫‪Makkah‬‬ ‫‪Jizan‬‬

‫‪Multihoming and Routing Policies‬‬


‫بالطبع لدينا العديد من ‪ IOS tools‬التي نستطيع بناءها من اجل ‪ routing policies‬مثل‪:‬‬
‫‪ Route redistribution, default routes, route filters‬والعديد غير ذلك‪ .‬لكن تعتبر اقوى األدوات المستخدمة من اجل هذا الغرض وهي‪:‬‬
‫‪ .IOS route policy tools, route maps‬لن تستخدم بشكل مباشر بل سيتم ربطها مع ‪ .PATH ATTRIBUTES‬والتي تستخدم من اجل‬
‫اإلضافة او التعديل او الحذف على ‪ .policy tools‬وسوف نناقش ذلك الحقا بالتفصيل‪.‬‬
‫‪Route Aggregation‬‬
‫من أحد اهم األدوات في ‪ BGP‬في ‪ ،Aggregation‬خصوصا في ‪ .contiguous networks‬وكما يظهر في الشكل ادناه قبل وبعد عملية‬
‫‪.Aggregation‬‬
‫ويعتبر االمر ‪ no auto-summary‬الموجود بشكل افتراضي في كل نسخ ‪ IOS‬الحديثة‪ ،‬حيث انه بإمكانك التفعيل من خالل االمر‬
‫‪ auto-summary‬وذلك سوف يعمل على جعل الشبكات ‪ Classful boundaries‬أي تتم تحويلها الى ‪ ،classful‬ولن تحتاج الى ‪ mask‬مع امر‬
‫‪ network‬فقط وجود ‪ subnet‬في ‪ .IGP‬ويعتبر ‪ BGP‬مشابهه الى حد كبير لـ ‪ EIGRP‬انه ال يلتزم بهرمية معينة وبالتالي فإنه نستطيع تنفيذ‬
‫الـ ‪ summarization‬في أي مكان‪.‬‬

‫ما هي فائدة ‪:Aggregation‬‬

‫تحفيض في حجم ‪ BGP updates‬وذلك من خالل المساهمة في عملية االقتصاد في الموارد‪.‬‬ ‫‪‬‬
‫تحفيض في حجم ‪ BGP tables‬وذلك يساهم في ‪.internet scalability‬‬ ‫‪‬‬
‫حجب عدم استقرار في أي ‪ individual prefix‬وذلك يساهم في ‪.Internet stability‬‬ ‫‪‬‬
‫ محمد شايع‬/‫إعداد م‬
Injecting Aggregate Routes
:‫يوجد هناك طريق لتنفيذ ذلك‬

:‫ وتعتبر األكثر استخداما وتتم من خالل‬Static Route ‫ الطريقة األولى‬


.next hop ‫ كـ‬null ‫ له وربطه بـ‬aggregate ‫ بالعنوان المراد عمل‬static route ‫ إعداد‬
.network statement ‫ من خالل‬BGP ‫ بـ‬aggregate ‫ ربط‬
.BGP table ‫ يجب ان يكون في‬member address ‫ وفيها يجب ان يكون كل‬aggregate-address statement ‫ الطريقة الثانية‬

BGP Aggregation Arguments


:‫ وهي كما يلي‬aggregate ‫ المصاحبة ألمر‬Arguments ‫توجد بعض‬

.‫ أي منع االعالن عنها‬more specific routes ‫ لـ‬suppress ‫ وهذا يعمل على‬summary-only 


.route-map ‫ والتي تكون محددة في‬more specific routes ‫ لـ‬subnet ‫ لـ‬suppress ‫ وهذا يعمل على‬suppress-map 
‫ تورث‬،aggregate ‫ تكون مرتبطة بـ‬AS numbers and communities ‫ وهي قائمة غير مرتبة من‬as-set 
.more specific routes ‫لـ‬
aggregate ‫ تورث في‬advertised-map ‫ تتطابق مع‬attributes of prefix or prefixes ‫ ومجموعة من‬advertise-map 
as-set ‫ وتستخدم من اجل الربط مع‬address
‫ كما تستخدم من اجل‬،aggregate address ‫ المرتبطة بـ‬attributes ‫ وتستخدم من اجل تعديل‬attribute-map | route-map 
.as-set ‫الربط بـ‬

Who Needs BGP?


:BGP ‫ سوف تحتاج ان تستخدم‬،‫في حالة كانت اجابتك بنعم على األسئلة التالية‬

1) Are you connecting to another routing domain?


2) Are you connecting to a domain under a separate administrative authority?
3) Is your domain multihomed?
4) Is a routing policy required?

‫ يستخدم فقط‬BGP ‫ لكن ال يعني هذا ان‬inter-domain routing protocol ‫ هو عبارة عن‬BGP ‫فيما يخص السؤال األول بالطبع نعرف ان‬
.‫ منفصلة فقط‬domain ‫للتوجيه بين‬
‫ سيكون هو‬router ‫ فإن يجدر بنا اإلشارة الى اننا يجب ان نضع بعين االعتبار الى ان أحد‬domain ‫ مع‬Link ‫فيما يخص وجود أكثر من‬
:‫ من خالل الشكل ادناه يتضح ذلك‬secondary ‫ بينما سيكون األخر هو‬primary
‫إعداد م‪ /‬محمد شايع‬
‫تم زيادة ‪ cost‬في ‪ link‬الذي يمثل ‪.secondary‬‬
‫كما انه من الممكن استخدام كال ‪ links‬من خالل اإلعدادات ادناه في كال ‪ routers‬كما يلي‪:‬‬

‫هذا ويجب عليك ان تعرف ان عملية اإلعالن عن جميع ‪ routes‬الى ‪ Internet‬امر مهم‪ .‬لكن يجب ان تعرف ان الى األن يتكون ‪ routes‬في‬
‫‪ routing table‬الموجود على االنترنت من أكثر من ‪ .500,000 routes‬والعدد قابل للزيادة‪ .‬وتستطيع االطالع على الجدول من خالل الدخول‬
‫على الموقع (‪.)route-views.oregon-ix.net‬‬
‫وتستطيع الوصول الى العديد من ‪ route servers‬من خالل الموقع (‪)www.netdigix.com/servers.html‬‬

‫‪BGP Session Basics‬‬


‫قبل ان نبدأ بمعرفة الرسائل التي ترسل بين ‪ BGP peers‬يجب علينا ان نشرع في تلخيص بعض األمور األساسية في عمل ‪ BGP‬مثل‪:‬‬

‫يستخدم ‪ BGP sessions‬طريقة ‪ point-to-point‬وتكون بطريقة ‪ ،unicast‬حيث انه يجب تأسيس (‪ )separate session‬بين كل‬ ‫‪‬‬
‫جارين‪.‬‬
‫كما ان ‪ BGP sessions‬يعتبر ‪ .application layer protocol‬حيث يستخدم ‪ TCP port 179‬وبالتالي يترتب على ذلك انه يرث‬ ‫‪‬‬
‫خصائص ‪ BGP‬مثل‪:‬‬
‫‪Acknowledgement o‬‬
‫‪Retransmission o‬‬
‫‪Sequencing o‬‬
‫يعتبر ‪ BGP‬من نوع ‪ ،vector protocol‬حيث انه يسمى أيضا بـ ‪ path vector‬حيث انه يرى انه لكي يصل الى ‪ destination‬يجب‬ ‫‪‬‬
‫عليه ان يعبر مسار عبر العديد من ‪ autonomous systems‬بدال من سلسلة من ‪ routers hops‬التي في ‪.distance vector‬‬
‫‪ BGP route‬ما هو اال عبارة عن سلسلة من ‪ ASs‬تسمى بـ ‪.AS_PATH‬‬ ‫‪‬‬
‫آلية اكتشاف حدوث ‪ loop‬تتم من خالل مالحظة ‪ packet‬القادم هل يحتوي على نفس رقم ‪ AS‬التي لدى ‪ .router‬ان كان الجواب نعم يتم‬ ‫‪‬‬
‫حذف ‪.packet‬‬
‫في حالة كان لدى جاران نفس ‪ AS number‬فإنه هذا يعني )‪ internal BGP (IBGP‬بينما يعتبر )‪ external BGP (EBGP‬في حالة‬ ‫‪‬‬
‫كان لدى الجاران ‪ AS number‬مختلفة‪.‬‬

‫‪BGP Messages‬‬

‫‪ Open ‬وهي عبارة عن طلب (‪ )request‬لفتح ‪ session‬مع الجار‪ ،‬ويتم ارسالها مباشرة بعد تأسيس ‪ .TCP session‬وتحدد فيها‪:‬‬
‫‪Originator’s BGP version number (4) ‬‬
‫سيكون الرقم دائما ‪.version 4‬‬
‫‪ Local AS number ‬أي رقم ‪ AS‬لنفس ‪.router‬‬
‫‪ Hold time ‬كم من الزمن سوف ينتظر ‪ router‬قبل‬
‫ان يعلن عن ان جاره خارج الخدمة افتراضيا هو ‪ 180‬ثانية‪.‬‬
‫تستطيع تغييره من خالل األمر )‪.(timers bgp‬‬
‫او تحت ‪ peer group‬من خالل األمر )‪.(neighbor timers‬‬
‫‪ :BGP identifier ‬بنفس الكيفية في ‪ IGP‬مثال ‪OSPF ID‬‬
‫إعداد م‪ /‬محمد شايع‬
‫في ‪ BGP‬أيضا سوف يتم اختيار ذلك على أساس اعلى ‪ IP address‬في حالة وجود ‪ .loopback‬واال سوف يتم اختيار اعلى‬ ‫‪‬‬
‫‪ IP address‬من كل ‪.physical interfaces‬‬
‫‪ :Optional parameters‬يستخدم من اجل الدعم لإلضافات مثل‬ ‫‪‬‬
‫‪.authentication, multiprotocol support, and route refresh‬‬

‫‪ Keepalive ‬وهي عبارة عن رسالة دورية تتم ارسالها بعد فتح ‪ session‬وتستمر عملية االرسال بشكل افتراضي كل ‪ .60 sec‬ونستطيع‬
‫تغيير الزمن من خالل ‪ timers bgp‬او تحت ‪ peer group‬من خالل األمر ‪.neighbor timers‬‬
‫‪ Update ‬وهي تلك التي يتم تبادلها بين الجيران بشكل معين وتتضمن المعلومات التالية‪:‬‬
‫‪ .Network layer reachability information (NLRI) ‬ربما يكون واحد ‪ NLRI‬او اكثر من (‪ .)length, prefix‬مثال‬
‫في حالة كان لدنيا ‪ 206.193.160.0/19‬فإنه سوف يكون لدينا ‪ ،length=19‬بينما سيكون ‪.prefix=206.193.160‬‬
‫‪ .Path attributes ‬وهي خصائص تعلن مع ‪ .NLRI‬حيث ان لديها معلومات من اجل ان تسمح لـ ‪ BGP‬من اجل اختيار مثال‬
‫‪.shortest path, detect routing loops, and determine routing policy‬‬
‫‪ .Withdrawn routes ‬وهي أيضا )‪ (Length, Prefix‬تحدد ‪ destination‬لكن الذي لن يستطيع ‪ router‬الوصول اليه‪.‬‬
‫ولذلك يجب سحبه من الخدمة‪.‬‬

‫‪ Notification ‬وهي تلك الرسائل التي تستخدم من أجل اكتشاف حدوث الخطأ‪ ،‬ويتم اغالق ‪ BGP session‬بعد إرسال رسالة‬
‫‪ .notification‬على سبيل المثال تستخدم رسائل ‪ Notification message‬من اجل عملية التفاوض على ‪ BGP version‬بين الجاران‪.‬‬
‫بعد تأسيس عملية االتصال او ‪ .TCP connection‬فإن ‪ BGP-4 speaker‬سوف يستقبل رسالة ‪ open‬ولكن ‪ .version=3‬مباشرة‬
‫سيكون لديه ردة فعل على ذلك وهي إرسال ‪ Notification message‬أي انه ال يدعم ‪ version‬ومن ثم يغلق الـ ‪.session‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪BGP Finite State Machine‬‬
‫عملية او خطوات تأسيس عالقة الجوار وأيضا الحفاظ عليها ما نطلق عليه بـ ‪ .finite state machine‬في الشكل والجدول ادناه سوف نالحظ‬
‫العملية بالكامل لـ ‪.BGP finite state machine‬‬

‫ففي ‪ BGP‬لن يتم استخدام أي ‪ Broadcast or multicast‬من اجل اكتشاف الجار‪ .‬بل سوف يتم تعريف الجار مسبقا من خالل امر ‪neighbor‬‬
‫بعد ذلك سوف استخدام ‪ .TCP port=179‬دعني اشرح لك الخطوات كما يلي‪:‬‬
‫‪ Idle State‬أي في البداية سوف يرفض ‪ BGP‬كل )‪ (incoming connections‬كما في الشكل أعاله يبدا الخطوة األولى )‪ )IE 1‬في الظهور‪.‬‬
‫تزامنا معها سوف يبدأ بتشغيل (‪ ،)ConnectRetry timer‬سوف يستمع خاللها لـ ‪ TCP‬القادم من جاره‪ .‬من اجل ان يغير حالته الى ‪.connect‬‬
‫على الواقع سوف تبدأ في حالة اعداد ‪ BGP process‬او عمل ‪ resetting‬ألي ‪ process‬موجودة‪ .‬أي ‪ error‬في ‪ BGP process‬سوف يتم العودة‬
‫الى ‪ .Idle state‬بعد العودة الى ‪ ،Idle state‬فإن ‪ router‬سوف يضع ‪ .Connect Retry=1‬ولن يقوم بأي محاولة الحقا إال بعد انتهاء المدة‬
‫الزمنية لـ ‪ ConnectRetry time‬المقدر بـ ‪ 120‬ثانية‪ .‬ولن تستطيع تغيير القيمة‪ .‬الزمن سوف يتضاعف في المحاولة الثانية عن األولى وفي الثالثة‬
‫سوف يتضاعف عن الثانية وهذا يعني ان زمن االنتظار سوف يكون في حالة زيادة مستمرة‪.‬‬
‫‪ Connect State‬بالطبع سوف ينتظر الرد من جاره في حالة ‪ connect state‬من اجل تأسيس ‪ .TCP connection‬في حالة نجح في تأسيس‬
‫‪ TCP connection‬فإن سوف يصفر الزمن ‪ .ConnectRetry‬بعدها سوف يرسل رسالة ‪ open‬الى الجار‪ .‬ينتقل بعدها الى ‪.OpenSent state‬‬
‫في حالة عدم النجاح في تأسيس ‪ TCP‬فإن ‪ BGP process‬سوف يستمر في ‪ listen‬من اجل ان يبدأ الجار بالمحاولة‪ .‬حتى ينتهي‬
‫‪ ConnectRetry‬ثم يصفر ‪ ConnectRetry‬وينتقل بعدها الى ‪.Active state‬‬
‫‪ Active State‬سوف يحاول هنا ‪ BGP process‬من اجل ان يبدأ ‪ TCP connection‬مع جاره‪ .‬في حالة نجح ‪ ،TCP connection‬فإن ‪BGP‬‬
‫‪ process‬سوف يصفر ‪ ،ConnectRetry timer‬ويرسل رسالة ‪ Open‬الى جاره‪ .‬ومن ثم ينتقل الى ‪ .OpenSent‬في حالة انتهى‬
‫‪ ConnectRetry‬بينما اليزال ‪ BGP‬في حالة ‪ .Active state‬فإن هذا يعني عودة ‪ BGP‬الى ‪ Connect state‬وتصفير ‪ConnectRetry‬‬
‫‪ .timer‬سوف يبدأ أيضا ‪ TCP connection‬مع الجار ويقوم بعملية ‪ listen‬ألي اتصال من الجار‪ .‬أي ‪ event‬سوف يجعل ‪ router‬يعود الى‬
‫‪.Idle‬‬
‫‪ OpenSent State‬بالطبع سوف ترسل هنا رسالة ‪ .Open‬وينتظر بعدها ‪ BGP‬رسالة ‪ Open‬من الجار‪ .‬في حالة استقبال الرسالة سوف يبادر‬
‫بفحص الحقول للتأكد من وجود أي خطأ‪ .‬لكي يتم ارسال ‪ Notification message‬وينتقل بعدها الى حالة ‪ .Idle‬ان لم يوجد أي ‪ errors‬في رسالة‬
‫‪ .Open‬ترسل رسالة ‪ Keepalive‬ويقوم ببد عداد يسمى ‪ .Keepalive timer‬ويبدأ التفاوض من اجل ‪ Hold time‬القيمة الصغيرة هي التي‬
‫سوف تعتمد‪ .‬في حالة كانت نتيجة التفاوض هي ‪ .Hold time=0‬هذا يعني ان ‪ Hold and Keepalive timers‬لن يبدأ او يعتمد‪ .‬بعدها يتم تحديد‬
‫ما إذا كان ‪ peer‬هو ‪ internal peer‬او ‪ ،external peer‬وذلك اعتمادا على ‪ .AS number‬ومن ثم يتم تغيير ‪ state‬الى ‪ .OpenConfirm‬في‬
‫حالة تم استقبال ‪ TCP disconnect‬فإن ‪ local process‬سوف يتم إغالق ‪ .BGP connection‬ومن ثم يتم عمل ‪ reset‬لـ ‪ConnectRetry‬‬
‫‪ .timer‬ومن ثم يبدأ ‪ listening‬من اجل بدء ‪ .new connection‬ومن ثم االنتقال الى ‪ .Active‬أي ‪ input‬سوف يجعل ‪ state‬تنقل الى ‪.Idle‬‬
‫ محمد شايع‬/‫إعداد م‬
‫ سوف‬state ‫ فإن‬،Keepalive ‫ في حالة تم استقبال‬،Keepalive or Notification message ‫ سوف ننتظر هنا لـ‬OpenConfirm State
.Idle ‫ فإن هذا سوف يعني االنتقال الى‬TCP disconnect ‫ او استقبال‬Notification ‫ في حالة تم استقبال‬.Established ‫ينتقل الى‬
‫ وكذلك‬peers ‫ بين‬Updates ‫ وتم تبادل‬established ‫ تماما وصل الى‬BGP peer connection ‫ هنا في حالة ان‬Established State
Hold ‫ فإنه يتم تصفير‬،Update ‫ في حالة تم استقبالها او‬Keepalive message ‫ بالنسبة لـ‬.Notification messages ‫ وأيضا‬Keepalive
.Idle ‫ سوف يعني االنتقال الى‬event ‫ أي‬.Idle ‫ سوف تنتقل الى‬state ‫ فإن‬Notification message ‫ لكن في حالة استقبال‬.timer
:‫وكمثال على ذلك كما في الشكل ادناه‬
.debug ‫سنبدأ بتفعيل‬
R1, R2 #debug ip bgp
BGP debugging is on for address family: IPv4 Unicast

.bgp ‫بعدها سوف نقوم بأول امر في‬


R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.12.2 remote‐as 2

:‫ كما يلي‬debug ‫لنرى األن نتيجة‬


R1#
BGP: 192.168.12.2 active went from Idle to Active
BGP: 192.168.12.2 open active, local address 192.168.12.1
BGP: 192.168.12.2 open failed: Connection refused by remote host
BGP: 192.168.12.2 Active open failed ‐ tcb is not available, open active
delayed 9216ms (35000ms max, 60% jitter)
BGP: ses global 192.168.12.2 (0x4B43F3FC:0) act Reset (Active open failed).
BGP: 192.168.12.2 active went from Active to Idle
BGP: nbr global 192.168.12.2 Active open failed ‐ open timer running

.Idle state ‫ في حالة الفشل سوف يرجع الى‬.Active ‫ الى‬Idle ‫ بحيث تم تحريك الحالة من‬.R2 ‫ مع‬connect ‫ عمل‬R1 ‫بالطبع يحاول‬
:‫ كما يلي‬R1 ‫ مع‬connect ‫ من اجل‬R2 ‫بالطبع سوف نحاول األن ان نقوم بإعداد‬
R2(config)#router bgp 2
R2(config‐router)#neighbor 192.168.12.1 remote‐as 1

R1#
BGP: 192.168.12.2 active went from Idle to Active
BGP: 192.168.12.2 open active, local address 192.168.12.1
BGP: ses global 192.168.12.2 (0x4B43F3FC:0) act Adding topology IPv4
Unicast:base
BGP: ses global 192.168.12.2 (0x4B43F3FC:0) act Send OPEN
BGP: 192.168.12.2 active went from Active to OpenSent
BGP: 192.168.12.2 active sending OPEN, version 4, my as: 1, holdtime 180
seconds, ID C0A80C01
BGP: 192.168.12.2 active rcv message type 1, length (excl. header) 34
BGP: ses global 192.168.12.2 (0x4B43F3FC:0) act Receive OPEN
‫ محمد شايع‬/‫إعداد م‬
BGP: 192.168.12.2 active rcv OPEN, version 4, holdtime 180 seconds
BGP: 192.168.12.2 active rcv OPEN w/ OPTION parameter len: 24
BGP: 192.168.12.2 active rcvd OPEN w/ optional parameter type 2 (Capability)
len 6
BGP: 192.168.12.2 active OPEN has CAPABILITY code: 1, length 4
BGP: 192.168.12.2 active OPEN has MP_EXT CAP for afi/safi: 1/1
BGP: 192.168.12.2 active rcvd OPEN w/ optional parameter type 2 (Capability)
len 2
BGP: 192.168.12.2 active OPEN has CAPABILITY code: 128, length 0
BGP: 192.168.12.2 active OPEN has ROUTE‐REFRESH capability(old) for all
address‐families
BGP: 192.168.12.2 active rcvd OPEN w/ optional parameter type 2 (Capability)
len 2
BGP: 192.168.12.2 active OPEN has CAPABILITY code: 2, length 0
BGP: 192.168.12.2 active OPEN has ROUTE‐REFRESH capability(new) for all
address‐families
BGP: 192.168.12.2 active rcvd OPEN w/ optional parameter type 2 (Capability)
len 6
BGP: 192.168.12.2 active OPEN has CAPABILITY code: 65, length 4
BGP: 192.168.12.2 active OPEN has 4‐byte ASN CAP for: 2
BGP: nbr global 192.168.12.2 neighbor does not have IPv4 MDT topology
activated
BGP: 192.168.12.2 active rcvd OPEN w/ remote AS 2, 4‐byte remote AS 2
BGP: 192.168.12.2 active went from OpenSent to OpenConfirm
BGP: 192.168.12.2 active went from OpenConfirm to Established
BGP: ses global 192.168.12.2 (0x4B43F3FC:1) act Assigned ID
BGP: ses global 192.168.12.2 (0x4B43F3FC:1) Up
%BGP‐5‐ADJCHANGE: neighbor 192.168.12.2 Up

‫ وكذلك سوف يتم‬Open ‫ سوف يتم ارسال بعض من رسائل‬.OpenSent ‫ ومنه الى حالة‬Active ‫ الى حالة‬Idle ‫كما نالحظ تم تحريك الحالة من‬
‫ أخيرا سوف‬.Established ‫ وكذلك الى حالة‬OpenConfirm ‫ بعدها سوف يتم التحريك من حالة‬.‫ وهنا تحدث عملية التبادل‬.‫استقبال أخرى‬
.up ‫ على انه‬BGP neighbor ‫الحظنا ظهور‬
Path Attributes
‫ من‬routes ‫ ما بين أكثر من‬metric ‫ تتم من خالل‬IGP ‫ نحن نعرف ان المفاضلة في‬.BGP route ‫ وهي خصائص تعلن مع‬path attribute
:‫ من اجل عملية المفاضلة وتقع في أحد التالي‬attributes ‫ هنا يوجد‬.destination ‫اجل الوصول الى‬

.BGP update messages ‫ ويجب ان تتضمن في كل‬.BGP ‫ أي يجب معرفتها من قبل كل‬Well-known mandatory 
‫ وهذا يعني انه ليس بالضرورة ارسالها مع كل‬.BGP ‫ أي يجب معرفتها من قبل كل‬Well-known discretionary 
.Update message
‫ حتى وإن‬.‫ الموجود فيها‬Update ‫ تقبل‬BGP process ‫ لكن يجب ان‬.BGP ‫ يعني ال يتطلب ان تعرفها كل‬Optional transitive 
.peers ‫ الى‬attribute ‫ وأيضا يمرر‬.attribute ‫لمن تكن تدعم‬
‫ تستطيع‬attribute ‫ التي ال تعرف‬BGP process ‫ يعني تلك‬.BGP ‫ يعني ال يتطلب ان تعرفها كل‬Optional nontransitive 
.router ‫ ال ينتقل خارج‬attribute ‫ بمعني انه‬.‫ اخر‬peer ‫ وال تعلنه الى‬Update ‫ببساطة تجاهل‬
‫إعداد م‪ /‬محمد شايع‬
‫في الجدول ادناه ملخص ‪.BGP path attributes‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪1) ORIGIN Attribute‬‬
‫‪ ORIGIN‬يعتبر من فئة ‪ well-known mandatory attribute‬تحدد من ‪ origin‬لـ ‪ .routing table‬أي عندما يكون لـ ‪ BGP‬اكثر من‬
‫‪ routes‬الى نفس ‪ ،destination‬فإنه سوف يستخدم ‪ ORIGIN‬كعامل من اجل تحديد ‪ route‬مفضل‪ .‬سيكون واحد من التالي‪:‬‬
‫‪ IGP:‬‬
‫أي ان ‪ NLRI‬تمت معرفته من ‪ .internal‬يكون ‪ IGP‬اكثر تفضيال‪ .‬ويكون نوع ‪ NLRI‬هو ‪ IGP‬في حالة تمت معرفة ‪ routes‬عن طريق‬
‫‪ IGP routing table‬من خالل امر ‪.network‬‬
‫‪‬‬ ‫‪EGP:‬‬
‫عندما تتم معرفة ‪ NLRI‬من ‪ .Exterior Gateway Protocol‬فإن تفضيله يكون في المرتبة الثانية بعد ‪.IGP‬‬
‫‪ Incomplete:‬‬
‫‪ NLRI‬عندما تتم معرفته من غير ‪ IGP or EGP‬فإن ذلك يعني ان لدية اقل افضلية في قيمة ‪ .ORIGIN‬من الطرق التي يكون فيها ‪incomplete‬‬
‫هي ان المصدر هو ‪redistribution‬‬
‫‪2) AS_PATH Attribute‬‬
‫عندما يتم اإلعالن عن ‪ NLRI‬الى ‪ iBGP‬فإن ال يتم وضع أي ‪ AS‬لكن عندما يغادر ‪ NLRI‬الى ‪ AS‬أخرى أي اإلعالن عن ‪ NLRI‬الى ‪eBGP‬‬
‫فإن ‪ router‬سوف يضيف ‪ AS‬التي ينتمي اليها‪ .‬ليصل الى ‪ AS‬وعندما يغادر سوف يلحق ‪ router‬أيضا ‪ AS‬التي ينتمي اليها لتكون المحصلة ان‬
‫هناك العديد من ‪ AS_PATH‬او سلسلة من األرقام تعبر عن المسار الذي سلكه ‪ NLRI‬من ‪ source‬الى ‪.destination‬‬
‫تأمل الشكل ادناه لتعرف ماذا يعني ذلك‪.‬‬
‫حيث ستالحظ انه مع المرور من ‪ AS‬الى أخرى فإنه تضاف ‪ AS‬الحالية الى ‪.AS_PATH‬‬
‫من الممكن ان تقوم بعملية إضافة مزيد من ‪ AS‬لذلك ‪ AS_PATH‬القادم من اجل إرساله‬
‫الى ‪ AS‬المجاورة سوف يعني ذلك ان‪.‬‬
‫ان أي إضافة على ‪ outgoing route‬سوف يعني التأثير على ‪.incoming traffic‬‬
‫بالطبع في حالة أردنا خروج ‪ route‬من ‪ AS500‬الى ‪ .AS100‬حتما سوف تمر عبر‬
‫‪ AS300‬وذلك بسبب ان ‪ AS_PATH‬لذلك ‪ route‬تعتبر اقصر‪ .‬بمعنى ادق لديها اقل‬
‫‪ AS‬من ناحية العدد‪.‬‬
‫السناريو من الممكن ان يفكر ‪ AS200‬في تفضيل المرور عبر ‪ AS100‬لكل‬
‫‪.Incoming traffic‬‬
‫فمن الممكن ان تقوم ‪ AS100‬باختيار ‪ link‬ليكون كل ‪ traffic‬القادم اليها عبره‪.‬‬
‫وذلك كما في الشكل ادناه ستقوم بعملية إضافة أكثر من ‪AS number‬‬
‫لكل ‪ AS_PATH‬المرسلة الى ‪ AS300‬بينما تبقى تلك‬
‫المرسلة الى ‪ AS200‬كما هي‪.‬‬
‫هذا اإلجراء الذي ينتج عنه إضافة المزيد من ‪ AS‬الى المسار‪.‬‬
‫نطلق عليه ‪.AS path prepending‬‬
‫إعداد م‪ /‬محمد شايع‬
‫هناك نوعين من ‪ AS_PATH‬وهما‪:‬‬
‫‪ AS_SEQUENCE ‬تعتبر قائمة من ‪ .AS numbers‬كما أشرنا سابقا‪.‬‬
‫‪ AS_SET ‬تعتبر قائمة غير مرتبة من ‪ AS numbers‬على طول المسار الى ‪.destination‬‬
‫الوظيفة األخرى لـ ‪ AS_PATH‬وهي عملية منع حصول الى ‪.loop‬‬
‫فلو راي أي ‪ BGP speaker‬رقم ‪ AS‬التي لديه ألي ‪route‬‬
‫تم استقباله من ‪ .external peer‬سوف يعرف مباشرة انه حدث ‪loop‬‬
‫وسوف يتجاهل ‪.route‬‬
‫تطلع معي الى الشكل المقابل لترى انه تم اإلرسال من ‪AS225‬‬
‫الى ‪ AS237‬ومنه الى ‪ .AS3113‬في الطرف األخر‬
‫أرسل ‪ AS 810‬الى ‪.AS 3113‬‬
‫ماذا لو قام ‪ AS3113‬بعملية ‪.Aggregation‬‬
‫بالطبع سوف تكون النتيجة هي إرسال ‪.route‬‬
‫ذلك ‪ route‬سيكون ‪ 206.25.128.0/17‬وسيكون مجمع من‬
‫كل ما تم استقباله من ‪ ASs‬المتصلة به‪.‬‬
‫لكن سيكون مرفق معه ‪ AS 3113‬التي لديه‪.‬‬
‫من المحتمل ان يكون ذلك هو سبب لحدوث ‪.loop‬‬

‫تأمل معي الشكل المقابل لتجد سيناريو ارسال ‪ AS3113‬الى ‪.AS6571‬‬


‫ماذا لو كانت ‪ AS 6671‬متصلة بـ ‪ AS810‬وقامت بعملية إرسال ‪route‬‬
‫الى ‪ AS810‬يحمل ‪ 206.25.128.0/17‬مرفق بداخله ‪.AS 6571,3113‬‬
‫بالطبع لن يتم اكتشاف أي ‪.loop‬‬
‫هنا تكمن فائدة ‪.AS_SET‬‬
‫هنا في الشكل المقابل تم إضافة امر ‪ AS_SEQUENCE‬وذلك ليدل‬
‫على انه من ‪.aggregator‬‬
‫إعداد م‪ /‬محمد شايع‬
‫سيكون دور ‪ AS-SET‬من اجل منع حدوث أي ‪.loop‬‬
‫‪NEXT_HOP Attribute‬‬
‫بالطبع االسم يدل على ذلك أي ان وجود ‪ next hop‬في كل ‪ route‬يعتبر امر اجباري‪ .‬لكن الملفت لألمر أنه ليس بالضرورة ان يكون ‪next hop‬‬
‫عبارة عن ‪ IP address‬هو العنون ‪ router‬الجار‪ .‬حيث تتطبق القواعد التالية‪:‬‬
‫في حالة تم استقبال ‪ route‬قادم من ‪ AS‬مختلفة أي‬ ‫‪‬‬
‫من ‪ external peers‬فإن ذلك يعني ‪ NEXT_HOP‬ما هو‬
‫اال عبارة عن ‪ IP address‬للمنفذ لذلك ‪ router‬المعلن عن ‪.route‬‬
‫كما في الشكل المقابل سوف نالحظ ان ‪ NEXT_HOP‬هو عبارة‬
‫عن ‪ IP address‬للمنفذ المتصل مع ‪.AS 509‬‬

‫في حالة تم استقبال ‪ route‬قادم من ‪ AS‬من‬ ‫‪‬‬


‫‪ internal peers‬وكان (‪ )Update’s NLRI‬يشير‬
‫الى ‪ destination‬داخل نفس ‪ ،AS‬فإن ‪NEXT_HOP‬‬
‫سيكون هو ‪ IP address‬ينتمي الى الجار الذي أعلن عن ‪.route‬‬
‫كما في الشكل المقابل حيث ان ‪ NEXT_HOP‬ما هو اال ‪IP address‬‬
‫للعنوان لنفس ‪ router‬المولد للـ ‪.route‬‬

‫في حالة تم استقبال ‪ route‬قادم من ‪ AS‬من ‪internal peers‬‬ ‫‪‬‬


‫وكان (‪ )Update’s NLRI‬يشير الى ‪ destination‬خارج ‪،AS‬‬
‫فإن ‪ NEXT_HOP‬سيكون هو ‪ IP address‬وذلك‬
‫لـ ‪ external peer‬لذلك ‪ route‬الذي تم معرفته منه‪.‬‬
‫في الشكل المقابل سوف نالحظ ان ‪ NEXT_HOP‬هو عبارة‬
‫عن ‪ IP address‬لـ ‪ router‬موجود في ‪.EBGP‬‬
‫لكن ماذا لو كان ‪ router‬ال يعرف شيء عن ‪ NEXT_HOP‬سوف تكون‬
‫النتيجة ان ‪ router‬داخل ‪ AS 509‬سوف يقوم بالبحث عن طريقة للوصول‬
‫الى ‪.207.135.5.1‬‬
‫أحد الحلول التي من الممكن ان تحل المشكلة هي ان تضع ‪ router‬الذي‬
‫في ‪ border‬لـ ‪ AS 509‬ليكون مزود باألمر ‪ next-hop-self‬اثناء‬
‫االعالن عن ‪.route‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪Weight‬‬
‫بالطبع يعتبر ‪ Cisco-specific‬وتطبق فقط على ‪ route‬داخل ‪ router‬واحد‪ .‬في حالة لم يكن متصل مع ‪ router‬اخر‪ .‬وتعتبر قيمة ما بين ‪ 0‬الى‬
‫‪ 65,535‬والتي من الممكن تحديدها لذلك ‪ .route‬كلما كانت القيمة أكبر كلما كان أفضل‪ .‬افتراضيا قيمة ‪.weight=32,768‬‬
‫تخيل معي ان لديك ‪ peer A and peer B‬كالهما أعلن عن ‪ route‬الى ‪ BGP speaker‬اخر‪ .‬من خالل تحديد قيمة اعلى في ‪ weight‬لذلك‬
‫‪ route‬المستقبل من ‪ .peer A‬فإن ‪ BGP speaker‬سوف يفضل المرور من خالل ‪ .peer A‬لن يكون موجود في ‪ BGP updates‬ولن يتم‬
‫تمريرها الى ‪ speakers‬أخرى‪ .‬حيث ان ‪ weight‬تعتبر قيمة من اجل اجبار ‪ router‬واحد على اتخاذ قرار بدون تغيير في قرار أي ‪ router‬اخر‪.‬‬
‫بالطبع فإن ‪ weight‬سيكون مفيد في حالة ان لدينا ‪ BGP router‬في ‪ AS‬قرر ان يعالج بعض ‪ prefixes‬بشكل مختلف عن ما يعالج به بقية‬
‫‪ routers‬في ‪ .AS‬لكن يجب الحذر في ذلك ألنه قد ينتج عن ذلك ‪.loop‬‬
‫‪BGP Decision Process‬‬
‫يتكون )‪ BGP Routing Information Base (RIB‬من ثالث مكونات هي‪:‬‬
‫‪ Adj-RIBs-In‬يحتوي على المعلومات لـ )‪ (unprocessed routing‬والتي تمت معرفتها من ‪ BGP updates‬والتي تم استقبالها من‬ ‫‪‬‬
‫‪ .peers‬هذه الـ ‪ routes‬تكون في ‪ Adj-RIBs-In‬والتي تعتبر بمثابة )‪.(feasible routes‬‬
‫‪ Loc-RIB‬وتحتوي على معلومات ‪ routes‬التي قامت ‪ BGP speaker‬والتي تم اختيارها بعد اتخاذ قرار ‪ routing‬لتلك ‪routes‬‬ ‫‪‬‬
‫الموجود في ‪ .Adj-RIBs-In‬وهذا الـ ‪ routes‬توضع في ))‪ (routing table (RIB‬مع بقية ‪ routes‬التي تم اكتشافها بواسطة‬
‫بروتوكوالت أخرى‪.‬‬
‫‪ Adj-RIBs-Out ‬وتحتوي على ‪ routes‬التي اعلن عنها (‪ )BGP speaker‬الى جيرانه من خالل (‪ .)BGP Updates‬وهنا تحدد من‬
‫خالل (‪ )outgoing routing policies‬ما إذا كان ‪ routes‬سوف توضع في (‪.)Adj-RIBs-Out‬‬
‫في الشكل ادناه يوضح كيف يتم اتخاذ القرار في ‪.BGP RIB‬‬
‫في البداية تصل ‪ routes‬الى ‪ interface‬يتم تطبيق أي ‪ BGP incoming route policies‬على ‪ routes‬ويتم وضعها في ‪ Adj-RIBs-In‬بعد‬
‫ذلك يتم اتخاذ ‪ BGP Decision process‬أي تطبيق أي ‪ attributes‬على ‪ routes‬الخارجة من ‪ Adj-RIB-In‬ويتم وضعها بعد ذلك في جدول‬
‫يسمى ‪ Loc-RIB‬بعد وضع ربط كل ‪ routes‬التي تكون ‪ locally‬يتم وضع المعلومات في ‪ routing table‬بعد ذلك يتم تطبيق ‪outgoing route‬‬
‫‪ policies‬ويتم تحويل المعلومات الناتجة الى جدول اخر يسمى بـ ‪ Adj-RIBs-Out‬ويتم اخراج المعلومات جاهزة الى الجيران من خالل ما يسمى‬
‫بـ ‪.outgoing updates‬‬
‫إعداد م‪ /‬محمد شايع‬
‫بالطبع فإن (‪ )BGP decision process‬تختار ‪ routes‬من خالل تطبيق (‪ )incoming routing policies‬على ‪ routes‬الموجودة‬
‫في (‪ )Adj-RIBs-In‬ومن ثم إدخال تلك ‪ routes‬التي تم اختيارها الى (‪ .)Loc-RIB‬عملية اتخاذ القرار يقسم الى ثالثة خطوات وهي‪:‬‬
‫الخطوة األولى‪ :‬بالطبع سيتم حساب درجة األفضلية لكل (‪ )feasible route‬موجود في (‪ .)Adj-RIBs-In‬سيحدث هذا عندما يستقبل‬ ‫‪‬‬
‫(‪ )BGP Update‬من الجار يحتوي على (‪ .)withdrawn route ،changed route ،new route‬كل ‪ route‬يعتبر بمفرده‪ .‬تكون‬
‫النتيجة هي قيمة غير سالبة تعبر عن درجة التفضيل لهذا ‪.route‬‬
‫الخطوة الثانية‪ :‬اختيار أفضل ‪ route out‬من كل ‪ routes‬المتوفرة الى ‪ destination‬معين‪ .‬ووضع ذلك ‪ route‬في ‪ .Loc-RIB‬بالطبع‬ ‫‪‬‬
‫يتم هنا معرفة ما إذا كان هناك أي ‪ loop‬من خالل اختبار وجود ‪ .AS_PATH‬فإي ‪ route‬يحمل نفس رقم ‪ AS‬في ‪ AS_PATH‬سوف‬
‫يتم حذفه‪.‬‬
‫‪ ‬الخطوة الثالثة‪ :‬إضافة ‪ routes‬المناسبة الى ‪ Adj-RIBs-Out‬من اجل إعالنها الى الجيران‪ .‬يتم ذلك بعد حصول أي تغيير‬
‫في ‪ .Loc-RIB‬وبعد ان تكتمل الخطوة الثانية‪ .‬في حالة كان هناك (‪ )Route aggregation‬يتم إنجازها خالل الخطوة الثانية‪.‬‬
‫عملية اختيار أفضل ‪ route‬الى ‪ destination‬معين تتم وفق لمنتج معين‪ .‬أي من ‪ cisco‬الى ‪ juniper‬الي ‪ Huawei‬الى غيرها‪ .‬أي يجب عليك‬
‫انت تعرف وتميز بين عملية المفاضلة التي تتم في كل منتج‪ .‬في ‪.Cisco IOS‬‬
‫قبل اتخاذ القرار في ‪ best path‬يجب وجود بعض المتطلبات وهي‪:‬‬

‫يجب وجود ‪ Next-hop‬في ‪ routing table‬وذلك تجنبا ألي ‪.route recursion failure‬‬ ‫‪‬‬
‫اما ان تطبق قاعدة ‪ Synchronization‬او تعطلها التي من الممكن ان تسبب ‪ loop‬وفي جميع انظمة التشغيل الحديثة تكون معطلة‬ ‫‪‬‬
‫بشكل اوتوماتيكي‪.‬‬
‫يجب عدم احتواء ‪AS-Path‬على ‪.Local-AS‬‬ ‫‪‬‬
‫اول ‪ ASN‬يجب ان تكون ‪.neighbor’s ASN‬‬ ‫‪‬‬

‫اليك الترتيب الذي يتم كما يلي‪:‬‬


‫‪ -1‬يفضل اختيار ‪ route‬مع وجود اعلى ‪ weight‬ولها العديد من الخصائص‪:‬‬
‫‪Cisco Proprietary ‬‬
‫‪Locally significant ‬‬
‫‪Higher value is preferred ‬‬
‫‪ -2‬في حالة تساوي ‪ ،weights‬يتم اللجوء الى اعلى قيمة لـ ‪ LOCAL_PREF‬ومن اهم خصائصها‪:‬‬
‫‪Higher value is preferred ‬‬
‫‪Not advertised to eBGP peers ‬‬
‫‪Carried through confederation eBGP ‬‬
‫‪Default value is 100 ‬‬

‫في حالة التساوي في قيمة ‪ ،LOCAL_PREF‬فإن يفضل ‪ route‬يكون (‪ )originated locally‬في ‪ ،router‬ومتصل مع ‪ BGP‬من‬ ‫‪-3‬‬
‫خالل امر ‪ network‬او من خالل (‪ )aggregate statement‬او من خالل ‪ .redistribution‬ويكون الترتيب نفضل ‪ path‬التي تم‬
‫توليده بواسطة امر ‪ network‬ثم ‪ redistribute‬ثم يأتي ‪aggregate‬‬
‫في حالة التساوي في قيمة ‪ LOCA_PREF‬وأيضا ال يوجد ‪ route‬تم توليده بشكل ‪ ،locally‬فإننا سوف نفضل ‪ route‬مع‬ ‫‪-4‬‬
‫‪.Shortest AS_PATH‬‬
‫في حالة كان ‪ AS_PATH‬هو نفسه‪ ،‬فإنه تفضيل المسار مع ‪ .lowest ORIGN code‬هنا سوف يتم اختيار ‪ IGP‬لها قيمة اقل من‬ ‫‪-5‬‬
‫‪ EGP‬والتي تعتبر اقل من ‪.Incomplete‬‬
‫في حالة كان ‪ ORIGIN codes‬متساوي‪ ،‬فإن يتم فحص من لديه اقل قيمة لـ ()‪ .)MED (MULTI_EXIT_DISC‬وتتم المقارنة فقط‬ ‫‪-6‬‬
‫في حالة كان هناك ‪ first AS‬موجودة في كال ‪ paths‬أي انه سوف يتم رفض ‪ confederation sub-ASs‬لكن في حالة‬
‫استخدام ‪ bgp always-compare-med‬فسوف يتم دائما االخذ بعين االعتبار لـ ‪ MED‬وهذا يعتبر خطر ألنه قد يسبب في ‪.loop‬‬
‫كما ان استخدام االمر التالي ‪ bgp bestpath med-confed‬سوف يجعل ‪ MED‬تتم مقارنتها مع كل ‪ paths‬التي تكون منها فقط‬
‫‪ AS_CONFED_SEQUENCE‬هذا ويتم استقبال ‪ MED‬من الجار تحمل الرقم ‪ 4,294,967,295‬ويتم تغييرها الى الرقم‬
‫‪ 4,294,967,294.‬قبل ادخالها الى ‪ .BGP table‬وفي حالة تم استقبال أي ‪ route‬بدون ‪ MED‬تكون القيمة ‪ ،0‬ويفضل في ‪MED‬‬
‫القيمة الصغيرة‪.‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪ -7‬في حالة تساوي قيمة ‪ ،MED‬فإنه يفضل ‪ EBGP routes‬على ‪،Confederation EBGP routes‬‬
‫وتفضل ‪ Confederation EBGP routes‬على ‪.IBGP routes‬‬
‫‪ -8‬في حالة استمرار حالة التساوي‪ ،‬فإنه يتم احتساب ‪ route‬مع (‪ )shortest path‬الى (‪ .)BGP NEXT_HOP‬يتم هذا من خالل اقل‬
‫‪ IGP metric‬الى (‪.)next-hop address‬‬
‫‪ -9‬في حالة استمرار التساوي‪ .‬من نفس (‪ ،)neighboring AS‬وكان )‪ (BGP multipath‬مفعله مع امر ( ‪ ،)maximum-paths‬فإنه يتم‬
‫تثبيت كل )‪ (equal-cost routes‬في ‪.Loc-RIB‬‬
‫‪ -10‬في حالة كان ‪ routes‬هو ‪ equal‬وكان هناك ‪ external‬فإن يتم تفضيل ‪ newer route‬من اجل األفضلية على ‪ .older route‬في حالة‬
‫كان امر ( ‪ ) bgp best path compare-routerid‬مفعل فإنه يتم تجاوز هذه الخطوة‪.‬‬
‫‪ -11‬في حالة كان (‪ )multipath‬غير مفعل‪ ،‬فإنه يتم تفضيل ‪ route‬مع أقل (‪ ،)BGP router ID‬أو في حالة كان ‪ route refection‬مفعل‪،‬‬
‫فإنه يتم تفضيل ‪ route‬مع اقل (‪.)ORIGINATOR_ID‬‬
‫‪ -12‬في حالة استمرار التساوي وكان ‪ route reflection‬مفعل‪ ،‬فإن يفضل ‪ route‬مع اقل (‪.)CLUSTER_LIST‬‬
‫‪ -13‬في حالة استمرار التساوي‪ ،‬فإنه يفضل ‪ route‬التي تم إعالنه من قبل جار كان لدية اقل (‪.)IP address‬‬
‫‪BGP Message Formats‬‬
‫‪Open Message‬‬
‫تعتبر الرسالة األولى التي يبدأ ‪ BGP peer‬في إرسالها الى جاره‪ .‬من اجل تأسيس االتصال‪ .‬ففي حالة وصلت الرسالة وتم قبولها‪ ،‬سوف تتوالى‬
‫الرسائل (‪ )keepalive‬من اجل تأكيد ‪ .Open message‬بعد ذلك يتم تأسيس االتصال ويتم إرسال رسائل‬
‫‪.update, keepalive and notification‬‬
‫في الشكل المقابل رسالة ‪ .Open‬حيث ان اقل حجم لرسالة ‪ Open‬مضافا‬
‫اليها ‪ Header‬يبلغ ‪.29 octets‬‬
‫تحتوي ‪ Open message‬على التالي‪:‬‬
‫‪ Version‬وهو عبارة عن حقل ‪ 1-octet‬يحدد ‪BGP version‬‬
‫الذي يعمل على ‪.originator‬‬
‫‪ :My Autonomous System‬يوجد به رقم ‪AS‬‬
‫لـ ‪ originator‬ويبلغ من الحجم ‪.2-cotet‬‬
‫‪ :Hold Time‬ما هو اال عبارة عن ‪ 2-octet‬حيث يشير الى كم‬
‫من الثواني سوف ينتظر ‪ BGP peer‬قبل ان يعلن عن جاره ان‬
‫‪ .Dead‬ويجب التفاوض على القيمة بين ‪ BGP peers‬حيث‬
‫انه يتم التفضيل للقيمة الصغيرة‪.‬‬
‫‪ :BGP Identifier‬بالطبع هو ‪ BGP router ID‬وذلك لـ ‪ .originator‬حيث في حالة لم يجد امر ‪ router-id‬سوف يشرع‬
‫‪ router‬بتسمية ‪ ID‬على ان يكون اعلى ‪ IP‬وذلك لـ ‪ .loopback interfaces‬وفي حالة لم يجد ‪ loopback‬سوف يختار‬
‫اعلى ‪ IP address‬ولكن لـ ‪.physical interfaces‬‬
‫‪ :Optional Parameters Length‬عبارة عن ‪ 1-octet‬يشير الى الطول للحقل التالي‪ .‬في حالة كانت القيمة ‪ 0‬فإنه ال يوجد‬
‫شيء في الحقل التالي‪:‬‬
‫‪ :Optional Parameters‬وهي بعض القيم االختيارية في ‪ .BGP router‬ومن خالله يتم إضافة العديد من الميزات الى ‪BGP‬‬
‫بدون ان يكون هناك اصدار جديد من ‪ BGP‬ومنها‪:‬‬
‫‪support for MP-BGP (Multi Protocol BGP).‬‬
‫‪support for Route Refresh.‬‬
‫‪support for 4-octet AS numbers.‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪Update Message‬‬
‫كما تالحظ معي الشكل المقابل‪ .‬اما ان يعلن ‪ router‬عن ‪single feasible route‬‬
‫الى ‪ .peer‬أو يقوم ‪ router‬بعملية سحب او ‪withdraw‬‬
‫لعدة ‪ .unfeasible routes‬وقد يكون كال الحالتين‪.‬‬
‫تحتوي ‪ update‬على الحقول التالية‪:‬‬
‫‪ :Withdrawn Routes Length‬عبارة عن ‪ 2-octet‬يشير الى الطول الكلي لحقل‬
‫(‪ .)Withdrawn Routes‬في حالة كانت القيمة ‪ 0‬يعني ان ال يوجد أي ‪ route‬سوف‬
‫يتم سحبه‪.‬‬
‫‪ :Withdrawn Routes‬متغير يحتوي على قائمة بـ ‪ routes‬التي سوف يتم‬
‫سحبها من الخدمة‪ .‬حيث ان كل ‪ route‬في القائمة لديه (‪.)Length, Prefix‬‬
‫في حالة كان ‪ length‬عبارة عن ‪ .0‬هذا يعني ان ‪ prefix‬يطابق كل ‪.routes‬‬
‫‪ :Total Path Attribute Length‬عبارة عن ‪ 2-octet‬يشير الى الطول الكلي‬
‫لحقل ‪ Path attribute‬التالي‪ .‬في حالة كان ‪ 0‬فإنه يعني ان ‪ attributes‬وكذلك‬
‫‪ NLRI‬ال تتضمن في هذه الرسالة‪.‬‬
‫‪ :Path Attributes‬وهي عباره عن قيمة متغيرة مرتبطة بـ ‪NLRI‬‬
‫في الحقل التالي‪ .‬حيث ان كل ‪ path attribute‬يكون لديه ثالثة قيم متغيرة‬
‫وهي‪:‬‬
‫‪ Attribute Type -‬وهو عبارة عن ‪ 2-cotet‬يحتوي‬
‫على أربعة ‪ ،flag bits‬وأربعة أخرى غير مستخدمه‪.‬‬
‫والشكل المقابل يبين كل ‪ bits‬المحتملة‪.‬‬
‫‪ Attribute Length -‬الشكل ادناه يبين ذلك‪.‬‬
‫‪ Attribute Value -‬الشكل ادناه يبين ذلك‪.‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪Keepalive Message‬‬
‫وهي رسالة من اجل التأكد ان الطرف األخر اليزال موجود‪ .‬وترسل كل ‪ 60‬ثانية أي يعتبر من الرسائل التي ترسل او يتم تبادلها في‬
‫مدة زمنية تكون تعتبر ثلث مدة ‪ .hold time‬لكن ليست اقل من ‪ .1 second‬في حالة كان ‪ hold time=0‬فإن ‪ keepalive‬لن يتم‬
‫إرساله‪ .‬حيث ترسل بحجم ‪ 19-octet‬وهي عبارة عن رسالة ‪ .BGP header‬بدون أي إضافات‪.‬‬
‫‪Notification Message‬‬
‫بالطبع الشكل المقابل يعبر عن رسالة ‪ .Notification‬وترسل عندما‬
‫يكون هناك ‪ .error‬حيث يقوم ‪ BGP‬بعملية إغالق ‪connection‬‬
‫إرسال رسالة ‪ .Notification‬وفي الشكل المقابل الحقول التالية‪:‬‬
‫‪ :Error Code‬وهو عبارة عن ‪ 1-octet‬يشير الى نوع ‪.error‬‬
‫‪ :Error Subcode‬عبارة عن ‪ 1-octet‬يعطينا معلومات اكثر‬
‫عن ‪ error‬حيث في الجدول ادنا بعض األخطاء المحتملة‪ ،‬مع ‪.error subcodes‬‬
‫‪ :Data‬تستخدم من اجل ‪ diagnose‬لسبب الخطأ‪ .‬وتعتمد محتويات حقل ‪ data‬اعتمادا على ‪.error code‬‬
‫ومن الممكن القول ان رسائل ‪ Notification‬من الممكن ان تأتي في‪:‬‬
‫‪‬‬ ‫‪Message header error‬‬
‫‪‬‬ ‫‪Open message error‬‬
‫‪‬‬ ‫‪Update message error‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪Configuring and Troubleshooting BGP Peering‬‬
‫دعنا نقوم بعملية إعداد ‪ EBGP peering‬في الشكل المقابل كما يلي‪:‬‬

‫‪R1‬‬
‫‪R1‬‬ ‫‪R1‬‬

‫‪R2‬‬

‫‪R2‬‬

‫بخطوتين األولي ان تحدد ما هي ‪ AS‬التي لدى ‪ R1‬ومن ثم امر االتصال مع الجار من خالل عنوان ‪ ،R2‬وما هي ‪ AS‬التي لديه‪ .‬وبالمثل سوف‬
‫يكون في ‪.R2‬‬
‫لو حاولنا استخدام االمر ‪ show ip bgp neighbor‬في ‪ R1‬فسوف نالحظ معلومات عن ‪ AS‬وكذلك عن ‪ IP address‬وأيضا عن ما هي الرسائل‬
‫التي تم تبادلها بين ‪.routers‬‬
‫لكن سيكون لديك السطرين التاليين‪:‬‬
‫‪Local host: 192.168.1.226, Local port: 13828‬‬
‫‪Foreign host: 192.168.1.225, Foreign port: 179‬‬
‫سوف يعني ذلك ان ‪ R1‬هو من بدأ ارسال ‪ BGP message‬وعلى ‪ ،TCP port=13828‬ولكي يعرف ‪ R2‬ان المستهدف من‬
‫الرسالة هو ‪ BGP‬قام بتصديرها عبر ‪ TCP port=179‬وهو المنفذ الخاص بـ ‪.BGP‬‬
‫‪EBGP Peering over IPv6‬‬

‫بالطبع في الشكل المقابل ستكون الدراسة على ‪ IPv6‬كما يلي‪:‬‬

‫‪R1‬‬

‫‪R1‬‬

‫‪R2‬‬

‫بنفس الطريقة كما في ‪ .IPv4‬وحتى مع استخدام االمر ‪.show ip bgp neighbor‬‬


‫سوف يكون لدينا معلومات متطابقة باستثناء انه سيكون لدينا ‪ .IPv6‬كذلك سيكون لدينا‬
‫‪ Router ID‬وهو عبارة عن ‪ .32 bits‬والذي اعتبره ‪ R1 and R2‬نفس عنوان ‪.IPv4‬‬
‫‪R2‬‬ ‫بالطبع الطريقة التي تم عمل أعداد بها في السابق لن تحمل سوى ‪ IPv4‬وذلك ألنه تم اعداد‬
‫االعدادات السابقة لعائلة ‪.IPv4‬‬
‫وستكون الحقا الطريقة التي نجعل ‪ BGP‬يحمل العديد من ‪.families‬‬
‫فيما يخص المنفذ ‪ 179‬يجب ان تعلم ان من يبدأ من ‪ routers‬بعمل إعدادات ‪ BGP‬سوف يرسل على المنفذ ‪ .179‬ويكون المصدر‬
‫من ‪ port‬ديناميكي‪.‬‬
‫ محمد شايع‬/‫إعداد م‬
IBGP Peering
‫ من اجل ان يكون هناك وصول كامل‬.5 routers ‫ كذلك‬،3 ASs ‫في الشكل المقابل لدينا‬
.ISP ‫ وأيضا‬transit AS ‫ عبارة عن‬AS2 ‫ يجب ان تكون‬.ASs ‫بين كل‬
.AS3 ‫ وبالمثل‬customer ‫ عبارة عن‬AS 1 ‫بينما ستكون‬
‫ ما بين كال من‬EBGP ‫من اجل عمل اإلعدادات بالشكل الصحيح سوف نحتاج الى‬
.AS2 and AS3 ‫ ما بين‬EBGP ‫ وكذلك‬.AS1 and AS2
‫ أي ما بين‬.AS2 ‫ داخل‬،routers ‫ ما بين‬IBGP ‫ فسوف نحتاج‬AS2 ‫اما ما يخص‬
‫ القادمة‬routes ‫ وأيضا من اجل إيصال‬.R3 and R4 ‫ وكذلك ما بين‬R2 and R3
.R2 and R4 ‫ ما بين‬IBGP ‫ فسوف نحتاج الى‬AS ‫من خارج‬
:‫قد يكون لديك بعض التساؤالت مثال‬
‫؟ ان كان نعم لماذا؟‬AS2 ‫ داخل‬IGP (OSPF or EIGRP) ‫ هل سنحتاج الى‬-1
OSPF ‫ ما بين‬redistribution ‫ وأيضا سوف تقوم بعملية‬.‫سأقول لك نعم‬
.R2 and R4 ‫ أي ما بين‬.BGP ‫وكذلك‬
‫؟‬R2 and R4 ‫ لماذا تم الربط ما بين‬-2
:‫قبل ان اجيب على األسئلة بشكل تفصيلي دعني اتجه معك الى اإلعدادات كما يلي‬

:R1 and R2 ‫في البداية فيما يخص العالقة ما بين‬


R1(config‐router)#neighbor 192.168.12.2 remote‐as 2
R1(config‐router)#network 1.1.1.0 mask 255.255.255.0
R2(config‐router)#neighbor 192.168.12.1 remote‐as 1
.BGP ‫ في‬source ‫ على انه‬loopback IP address ‫ حيث اننا سوف نستخدم‬.AS2 ‫االن سوف نقوم بتأسيس العالقة داخل‬
‫لكن ما هو السبب في ذلك؟‬
.‫ بحاجة الى استقرار عالقة الجوار‬BGP ‫ ونحن في‬.‫ اال في حالة تم إدخال األمر يدويا‬down ‫ لن يتنقل الى حالة‬loopback ‫الجواب ان‬
.OSPF ‫في البداية سوف نفعل عالقة‬
R2(config)#router ospf 1
R2(config‐router)#network 192.168.23.0 0.0.0.255 area 0
R2(config‐router)#network 2.2.2.0 0.0.0.255 area 0
R3(config)#router ospf 1
R3(config‐router)#network 192.168.23.0 0.0.0.255 area 0
R3(config‐router)#network 192.168.34.0 0.0.0.255 area 0
R4(config)#router ospf 1
R4(config‐router)#network 192.168.34.0 0.0.0.255 area 0
R4(config‐router)#network 4.4.4.0 0.0.0.255 area 0
:‫ كما يلي‬IBGP ‫ لنفعل‬.AS2 ‫ داخل‬routers ‫ بين جميع‬TCP ‫أي انه لدينا األن عالقة‬
R2(config)#router bgp 2
R2(config‐router)#neighbor 4.4.4.4 remote‐as 2
R2(config‐router)#neighbor 4.4.4.4 update‐source loopback 0
R4(config)#router bgp 2
R4(config‐router)#neighbor 2.2.2.2 remote‐as 2
R4(config‐router)#neighbor 2.2.2.2 update‐source loopback 0
‫ وذلك ما بين كال‬EBGP ‫ االن سوف نقوم بعملية تفعيل‬.update ‫ من اجل تعريف المنفذ الذي يمثل مصدر‬update-source ‫البد من استخدام االمر‬
:R5 ‫ وكذلك‬R4 ‫من‬
R4(config)#router bgp 2
R4(config‐router)#neighbor 192.168.45.5 remote‐as 3
R5(config)#router bgp 3
R5(config‐router)#neighbor 192.168.45.4 remote‐as 2
‫ محمد شايع‬/‫إعداد م‬
:‫االن لنقوم ببعض االستعراض من خالل بعض األوامر‬
R1#show ip bgp
BGP table version is 2, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 0.0.0.0 0 32768 i
.route ‫ لذلك‬originator ‫ هو‬router ‫ وهذا يدل على ان نفس‬0.0.0.0 ‫ وهي عبارة عن‬next hop ‫سوف نالحظ انه يوجد‬
R1#show ip bgp
BGP table version is 2, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 192.168.12 0 0 0 i
.routing table ‫ تم تثبيته في‬route ‫ ويعتبر > داللة على ان‬R1 ‫ الخاص بـ‬route ‫ ذلك‬R2 ‫رائع لقد عرف‬

table. Let's check R4, it should receive this information from R2:
R4#show ip bgp
BGP table version is 1, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*i 1.1.1.0/24 192.168.12.1 0 100 0 1 i
‫ حيث ان ابقى‬1.1.1.1 ‫ أي فكرة عن كيفية الوصول إلى‬R4 ‫ اليوجد لدى‬.routing table ‫ ليس في‬route ‫اليوجد أي > هذا يعني ان‬
:R4 ‫ تعال نفحص‬.‫ وهذا تعتبر مشكلة‬،‫ كما هي‬next-hop ‫على‬
R4#show ip route 192.168.12.1
% Network not in table
‫ال يوجد شيء! لكن كيف نصلح ذلك؟‬
:‫ هو ان لدينا خياران وهما‬:‫الجواب‬
.IGP or BGP ‫ أي عن طريق‬routing protocol ‫ في‬192.168.12.0/24 ‫ اإلعالن عن الشبكة‬-
.next-hop-self ‫ من خالل االمر‬next hop IP address ‫ تغيير‬-
R2(config)#router bgp 2
R2(config‐router)#neighbor 4.4.4.4 next‐hop‐self
R4(config)#router bgp 2
R4(config‐router)#neighbor 2.2.2.2 next‐hop‐self
:‫لنحاول األن اكتشاف النتائج‬
R4#show ip bgp
BGP table version is 2, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.0/24 2.2.2.2 0 100 0 1 i
‫ محمد شايع‬/‫إعداد م‬
.routing table ‫ موجود االن في‬route ‫ أي ان‬.> ‫ كما انه ظهر الرمز‬.next-hop ‫لقد قمنا بالتغيير المطلوب وتغير‬
:R5 ‫والدليل سوف يظهر في‬
R5#show ip bgp
BGP table version is 2, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.0/24 192.168.45.4 0 2 1 i
:routing table ‫في‬

R5#show ip route bgp


1.0.0.0/24 is subnetted, 1 subnets
B 1.1.1.0 [20/0] via 192.168.45.4, 00:02:08

:ping ‫لنقوم بعملية االختبار من خالل امر‬


R5#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100‐byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
‫؟‬trace ‫ال شيء يعمل! ماذا لو قمنا بعمل‬
R5#traceroute 1.1.1.1
Type escape sequence to abort.
Tracing the route to 1.1.1.1
1 192.168.45.4 52 msec 16 msec 32 msec
2 * * *
3 * * *

:R3 ‫بكل تأكيد دعنا نفحص‬


R3#show ip route 1.1.1.0
% Network not in table
.BGP ‫ وذلك ألنه ال يعمل عليه‬،route ‫بالطبع ليس لديه أي علم عن‬
‫ ما‬redistribution ‫ وبالتالي البد من عمل‬.‫ لديه علم فقط‬R4 ‫ حيث ان‬.‫ بما يأتي من الخارج‬AS2 ‫ داخل‬routers ‫وهنا تكمن الحاجة الى ان يعرف‬
:R3 ‫ على‬IBGP ‫ لكن قبل ذلك سوف نقوم بعملية تفعيل‬.BGP and OSPF ‫بين‬
R3(config)#router bgp 2
R3(config‐router)#neighbor 2.2.2.2 remote‐as 2
R3(config‐router)#neighbor 2.2.2.2 update‐source loopback 0
R3(config‐router)#neighbor 4.4.4.4 remote‐as 2
R3(config‐router)#neighbor 4.4.4.4 update‐source loopback 0
:R2 ‫وبالمثل بناء عالقة جوار مع‬
R2(config)#router bgp 2
R2(config‐router)#neighbor 3.3.3.3 remote‐as 2
R2(config‐router)#neighbor 3.3.3.3 update‐source loopback 0
R2(config‐router)#neighbor 3.3.3.3 next‐hop‐self
‫ محمد شايع‬/‫إعداد م‬
:R4 ‫وكذلك مع‬
R4(config)#router bgp 2
R4(config‐router)#neighbor 3.3.3.3 remote‐as 2
R4(config‐router)#neighbor 3.3.3.3 update‐source loopback 0
R4(config‐router)#neighbor 3.3.3.3 next‐hop‐self
:‫لنحاول التجربة مرة أخرى‬
R5#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100‐byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
:R2 ‫ ماذا لو جربنا التعامل من قريب أي من‬.‫اليزال ال يوجد أي استجابة‬
R2#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100‐byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round‐trip min/avg/max = 16/20/24 ms

.‫ال مشكلة‬

:R3 ‫االن من‬


R3#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100‐byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

‫ إذاً اين المشكلة؟‬.1.1.1.1 ‫ سنجد‬routing table ‫ لكن فيما لو فحصنا‬.R1 ‫ غير قادر للوصول الى‬R3 ً‫إذا‬
R1#show ip route
Codes: C ‐ connected, S ‐ static, R ‐ RIP, M ‐ mobile, B ‐ BGP
D ‐ EIGRP, EX ‐ EIGRP external, O ‐ OSPF, IA ‐ OSPF inter area
N1 ‐ OSPF NSSA external type 1, N2 ‐ OSPF NSSA external type 2
E1 ‐ OSPF external type 1, E2 ‐ OSPF external type 2
i ‐ IS‐IS, su ‐ IS‐IS summary, L1 ‐ IS‐IS level‐1, L2 ‐ IS‐IS level‐2
ia ‐ IS‐IS inter area, * ‐ candidate default, U ‐ per‐user static route
o ‐ ODR, P ‐ periodic downloaded static route
Gateway of last resort is not set
C 192.168.12.0/24 is directly connected, FastEthernet0/0
1.0.0.0/24 is subnetted, 1 subnets
C 1.1.1.0 is directly connected, Loopback0
.1.1.1.1 ‫ هو عبارة عن‬destination ‫ بينما نالحظ ان‬.192.168.23.3 ‫ هو عبارة‬source ‫المشكلة تكمن في ان‬
‫؟‬192.168.23.3 ‫ وهو ال يعرف شيء عن‬R1 ‫فكيف سيرد‬
:‫ سنصل الى التالي‬.R1 ‫ في‬debug ip packet ‫لو استخدمنا االمر‬
R1#
IP: s=1.1.1.1 (local), d=192.168.23.3, len 100, unroutable
:‫ كما يلي‬،R4 or R5 ‫ في‬.‫من اجل حل المشكلة سوف نقوم بعملية اعالن مزيد من الشبكات‬
R5(config)#router bgp 3
R5(config‐router)#network 192.168.45.0 mask 255.255.255.0
‫ محمد شايع‬/‫إعداد م‬
.‫ هل عرف طريق العودة‬R1 ‫لنرى االن‬
R1#show ip bgp
BGP table version is 3, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 0.0.0.0 0 32768 i
*> 192.168.45.0 192.168.12.2 0 2 3 i
:‫االن لنصل الى االمتحان النهائي‬
R5#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100‐byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round‐trip min/avg/max = 84/104/120 ms
.‫ بالفعل وهذا شيء رائع‬ping ‫لقد عمل‬
‫إعداد م‪ /‬محمد شايع‬
‫‪IBGP Neighbor Adjacencies‬‬
‫في الشكل المقابل سوف نالحظ ان ‪ AS2‬تبدو ان هناك عالقة جوار‬
‫بين جميع ‪ routers‬داخل ‪ .AS2‬لكن ما هو السبب؟‬
‫ببساطة لو جربت أنك تقوم بإلغاء عالقة الجوار ما بين ‪.R2 and R4‬‬
‫فسوف تحصل على نتيجة ان ‪ R2‬لن يعرف شيء عن الشبكة التي يعلنها ‪.R4‬‬
‫وأيضا ‪ R4‬لن يعلم عن الشبكة ‪.1.1.1.1‬‬
‫لماذا الن ‪ R3‬سيكون لديه كل المعلومات من ‪ .R2 and R4‬ولن يعلنها ألي‬
‫‪ .IBGP peers‬أي لن تصل الى ‪ R2‬أي معلومات قادمة من ‪ R4‬وأيضا‬
‫بالمثل لن تصل أي معلومات الى ‪ R4‬قادمة من ‪.R2‬‬
‫بسبب تقنية ‪.BGP split horizon‬‬
‫والتي لو هذه اآللية ألصبح هناك ‪ loop‬داخل الشبكة‪ .‬ألن كل جار سوف‬
‫يعلن لجاره ليعود ويعلن للجار األخر بطريقة تسبب في ‪.loop‬‬
‫هذا ‪ loop‬موجود في ‪ .IBGP‬اما في ‪ EBGP‬فإن آلية ‪AS_PATH‬‬
‫تستطيع منع ‪.loop‬‬
‫ولحل المشكلة نقوم بإعداد ‪ routers‬داخل ‪ AS‬بـ ‪.Full IBGP mesh‬‬
‫بالطبع فإن عدد ‪ adjacencies‬التي ستكون في ‪ IBGP‬هي حسب المعادلة‪:‬‬
‫‪.X*(X-1)/2‬‬
‫لو كان لديك ‪ 10 IBGP routers‬فإن المجموع (‪.)45 IBGP neighbor adjacencies‬‬
‫بالطبع هذا عدد كبير وبالتالي فإن الشبكات الكبيرة ستكون معقدة جدا في حالة استخدمنا الحال السابق‪.‬‬
‫اذا ما هو الحل؟‬
‫هما حالن‪:‬‬
‫‪‬‬ ‫‪BGP Route Reflectors‬‬
‫‪‬‬ ‫‪BGP Confederations‬‬
‫سوف يتم شرحها الحقا‪ .‬إن شاء هللا‪.‬‬
‫‪EBGP Multihop‬‬
‫في الواقع ان ‪ .EBGP‬يتطلب ان يكون لديك ‪ two routers‬متصلين بشكل مباشر مع بعضهما البعض‪ ،‬من اجل إقامة عالقة الجوار‪.‬‬
‫السبب في ذلك ان ‪ eBGP‬يستخدم ‪ TTL=1‬فعندما يكون هناك أكثر من ‪ hop‬ما بين ‪ ،eBGP‬فإن ذلك سوف يؤدي الى ان تكون قيمة ‪.TTL=0‬‬
‫وهذا يعني بكل تأكيد القيام بعملية ‪ discard‬لكل ‪ .packets‬بالطبع هذا غير موجود في ‪.iBGP‬‬
‫االن دور المثال التالي للتوضيح‪:‬‬

‫لنقوم االن بعملية اإلعداد‪:‬‬


‫‪R1(config)#ip route 192.168.23.3 255.255.255.255 192.168.12.2‬‬
‫‪R3(config)#ip route 192.168.12.1 255.255.255.255 192.168.23.2‬‬
‫من اجل ان يصل ‪ R1‬الى ‪ R3‬قمنا بوضع ‪ .static routes‬واألن دور ‪:eBGP‬‬
‫‪R1(config)#router bgp 1‬‬
‫‪R1(config‐router)#neighbor 192.168.23.3 remote‐as 3‬‬
‫‪R3(config)#router bgp 3‬‬
‫‪R3(config‐router)#neighbor 192.168.12.1 remote‐as 1‬‬
‫بالطبع اإلعدادات صحيحة لكن لن يحاول أي ‪ BGP peer‬من اجل تأسيس أي عالقة جوار من نوع ‪.eBGP‬‬
‫ محمد شايع‬/‫إعداد م‬
:show ‫بعض من أوامر‬

R1#show ip bgp neighbors | include External


External BGP neighbor not directly connected.

R3#show ip bgp neighbors | include External


External BGP neighbor not directly connected.
:R1 and R3 ‫ ما بين‬check ‫ماذا لو قمنا بعملية تعطيل أي‬
R1(config‐router)#neighbor 192.168.23.3 disable‐connected‐check
R3(config‐router)#neighbor 192.168.12.1 disable‐connected‐check
‫ سوف‬wireshark ‫ من خالل برنامج‬.‫ حتى خالل ما إذا لم يكونوا متصلين بشكل مباشر‬eBGP neighbors ‫ ان تصبح‬routers ‫سيحاول االن‬
:‫نالحظ التالي‬

:‫ كما يلي‬TTL=0 ‫ سوف يتم إنقاصها لتصبح‬TTL=1 ‫ لكن‬R3 ‫ االتصال مع‬R1 ‫يحاول‬

.R1 ‫) الى‬ICMP time-to-live exceeded( ‫لقد تم الرد برسالة‬


R1#
BGP: 192.168.23.3 open failed: Connection timed out; remote host not
responding, open active delayed 27593ms (35000ms max, 28% jitter)
‫ محمد شايع‬/‫إعداد م‬
:‫سوف نلغي األوامر السابقة‬
R1(config‐router)#no neighbor 192.168.23.3 disable‐connected‐check
R3(config‐router)#no neighbor 192.168.12.1 disable‐connected‐check
:‫ كما يلي‬TTL ‫سوف نعمل على زيادة‬
R1(config‐router)#neighbor 192.168.23.3 ebgp‐multihop 2
R3(config‐router)#neighbor 192.168.12.1 ebgp‐multihop 2
.1 ‫ هي‬Hop ‫ فلن يكون هناك تأثير بما ان عدد‬1 ‫بالطبع لو تم تخفيض القيمة الى‬
R1 & R3
#show ip bgp neighbors | include External
External BGP neighbor may be up to 2 hops away.
:‫لقد وجد كل منهما األخر لتصل الرسالة التالية‬
R1#
%BGP‐5‐ADJCHANGE: neighbor 192.168.23.3 Up
R3#
%BGP‐5‐ADJCHANGE: neighbor 192.168.12.1 Up
:‫لنأخذ سيناريو أكثر تعقيدا كما يلي‬

‫ لمنفذ‬IP address ‫ سوف نستخدم‬.link ‫ وكالهما متصالن بشكل مباشر مع بعضهما البعض بأكثر من‬.R1 and R2 ‫ وهما‬two routers ‫لدينا‬
.eBGP ‫ من اجل إقامة عالقة جوار من نوع‬loopback
:‫ كما يلي‬routers ‫ بين كال‬connectivity ‫ من اجل تمكين‬static route ‫لنبدأ باإلعدادات أوال عمل‬
R1(config)#ip route 2.2.2.0 255.255.255.0 192.168.12.2
R1(config)#ip route 2.2.2.0 255.255.255.0 192.168.21.2

R2(config)#ip route 1.1.1.0 255.255.255.0 192.168.12.1


R2(config)#ip route 1.1.1.0 255.255.255.0 192.168.21.1
:‫ كما يلي‬eBGP ‫األن إضافة‬
R1(config)#router bgp 1
R1(config‐router)#neighbor 2.2.2.2 remote‐as 2
R1(config‐router)#neighbor 2.2.2.2 update‐source loopback 0
R1(config‐router)#neighbor 2.2.2.2 ebgp‐multihop 2

R2(config)#router bgp 2
R2(config‐router)#neighbor 1.1.1.1 remote‐as 1
R2(config‐router)#neighbor 1.1.1.1 update‐source loopback 0
R2(config‐router)#neighbor 1.1.1.1 ebgp‐multihop 2
‫ على‬loopback interface ‫ على‬IP address ‫ من اجل استخدام‬routers ‫ من اجل إخبار‬update-source ‫هنا قمنا باستخدام امر‬
:‫ بعد ثواني قليلة سوف نستقبل هذه الرسائل‬.eBGP ‫ وذلك من اجل إقامة عالقة جوار‬source IP address ‫انه‬
R1#
%BGP‐5‐ADJCHANGE: neighbor 2.2.2.2 Up
R2#
%BGP‐5‐ADJCHANGE: neighbor 1.1.1.1 Up
‫ محمد شايع‬/‫إعداد م‬

How to advertise networks in BGP


‫ اإلعالن‬.redistribution ‫ او من خالل‬network command ‫ وهي اما من خالل‬BGP ‫يوجد لدينا طريقتين من اجل االعالن عن الشبكات في‬
‫ في حدود امر‬interfaces ‫ على كل‬activate IGP ‫ الذي تتم من خالله تفعيل‬IGP protocols ‫ ليس كما في‬network command ‫من خالل‬
.network
‫ في حالة وجد الشبكة التي تطابق تلك التي‬،routing table ‫ سوف ينظر الى‬BGP ‫ سوف يعني ان‬network ‫ حيث ان امر‬BGP ‫االمر يختلف في‬
.BGP table ‫ النتيجة سوف تكون هي تثبيت الشبكة في‬،‫تم اإلعالن عنها‬
:‫دعني من خالل المثال التالي أوضح لك الطريقة‬
‫ أي اننا سوف نستخدم‬.‫ مختلفة‬AS ‫ في‬R1 and R2 ‫بالطبع فإن كال من‬
.eBGP
:‫ هي‬configuration ‫نتيجة‬
R1#show running‐config | section bgp
router bgp 1
bgp log‐neighbor‐changes
neighbor 192.168.12.2 remote‐as 2

R2#show running‐config | section bgp


router bgp 2
bgp log‐neighbor‐changes
neighbor 192.168.12.1 remote‐as 1
:‫لنبدأ في االعالن الشبكة كما يلي‬
R1(config)#interface loopback 1
R1(config‐if)#ip address 1.1.1.1 255.255.255.0
R1(config)#router bgp 1
R1(config‐router)#network 1.1.1.0 mask 255.255.255.0
:‫ ولذلك عند االستعراض سيكون كما يلي‬routing table ‫ أي انها موجودة في‬R1 ‫ من الشبكات المتصلة بـ‬1.1.1.0 ‫تعتبر الشبكة‬
R1#show ip bgp
BGP table version is 2, local router ID is 192.168.12.1
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale, m multipath, b backup‐path, x best‐
external, f RT‐Filter
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 0.0.0.0 0 32768 i
:‫ كما يلي‬R2 ‫ عنها الى‬R1 ‫ ولذلك فسوف يعلن‬BGP table ‫بالطبع الشبكة موجودة في‬
R2#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.0/24, version 2
Paths: (1 available, best #1, table default)
Not advertised to any peer
1
192.168.12.1 from 192.168.12.1 (192.168.12.1)
Origin IGP, metric 0, localpref 100, valid, external, best
:‫دعني أوضح األمر من جهة أخرى كما يلي‬
R1(config)#interface loopback 2
R1(config‐if)#ip address 11.11.11.11 255.255.255.255
R1(config)#router bgp 1
R1(config‐router)#network 11.11.11.0 mask 255.255.255.0
‫ محمد شايع‬/‫إعداد م‬
:‫ ليس متطابقا لتكون النتيجة‬mask ‫لقد تم تعريف شبكة واالعالن عنها لكن‬
R1#show ip bgp 11.11.11.11
% Network not in table
.BGP table ‫بالطبع لم نجد شيء في‬
:‫لنعدل األمر كما يلي‬
R1(config)#router bgp 1
R1(config‐router)#no network 11.11.11.0 mask 255.255.255.0
R1(config‐router)#network 11.11.11.11 mask 255.255.255.255
:‫لنالحظ النتيجة كما يلي‬
R1#show ip bgp 11.11.11.11
BGP routing table entry for 11.11.11.11/32, version 5
Paths: (1 available, best #1, table default)
Advertised to update‐groups:
1
Local
0.0.0.0 from 0.0.0.0 (192.168.12.1)
Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced,local, best
:‫ كما يلي‬R2 ‫وهذا سوف ينعكس على‬
R2#show ip bgp | begin Network

Network Next Hop Metric LocPrf Weight Path

*> 1.1.1.0/24 192.168.12.1 0 0 1 i


*> 11.11.11.11/32 192.168.12.1 0 0 1 i
‫؟‬R1 ‫ماذا لو اردنا ان نعلن عن شبكة لست لدى‬
.‫بالطبع لن نستطيع ذلك‬
.routing table ‫ لم نستطيع اإلعالن عنها ألنها ليست جزء من‬.1.0.0.0/8 ‫مثال لدينا الشبكة‬
!routing table ‫لكن ماذا لو جعلناها جزء من‬
R1(config)#ip route 1.0.0.0 255.0.0.0 null 0
.discard route ‫ سوف يضمن لنا ذلك حيث انه‬null interface ‫بالطبع‬
R1#show ip route 1.0.0.0
Routing entry for 1.0.0.0/8, 3 known subnets
Attached (3 connections)
Variably subnetted with 3 masks
S 1.0.0.0/8 is directly connected, Null0
C 1.1.1.0/24 is directly connected, Loopback1
L 1.1.1.1/32 is directly connected, Loopback1
:‫لنقوم األن بعملية االعالن كما يلي‬
R1(config)#router bgp 1
R1(config‐router)#network 1.0.0.0 mask 255.0.0.0
:R1 and R2 ‫لنرى ما الذي حدث في كال من‬
R1#show ip bgp 1.0.0.0
BGP routing table entry for 1.0.0.0/8, version 6
Paths: (1 available, best #1, table default)
Advertised to update‐groups:
1
Local
0.0.0.0 from 0.0.0.0 (192.168.12.1)
Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced,
local, best
‫ محمد شايع‬/‫إعداد م‬
R2#show ip bgp 1.0.0.0
BGP routing table entry for 1.0.0.0/8, version 6
Paths: (1 available, best #1, table default)
Not advertised to any peer
1
192.168.12.1 from 192.168.12.1 (192.168.12.1)
Origin IGP, metric 0, localpref 100, valid, external, best
.R1 and R2 ‫بالتأكيد موجود في كال من‬
Redistribution
.BGP ‫ الى‬redistribute ‫ سوف نستخدم‬network command ‫بدال من استخدام‬
.OSPF ‫لنضع السيناريو التالي من خالل‬
R1(config)#interface loopback 3
R1(config‐if)#ip address 111.111.111.111 255.255.255.0
R1(config‐if)#exit
R1(config)#router ospf 1
R1(config‐router)#network 111.111.111.0 0.0.0.255 area 0
R1(config)#router bgp 1
R1(config‐router)#redistribute ospf 1
.BGP ‫ له الى‬redistributed ‫ بعد تمت عملية‬ospf ‫ ثم تم االعالن عنه في‬loopback ‫تم انشاء‬
R1#show ip bgp | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 1.0.0.0 0.0.0.0 0 32768 i
*> 1.1.1.0/24 0.0.0.0 0 32768 i
*> 11.11.11.11/32 0.0.0.0 0 32768 i
*> 111.111.111.0/24 0.0.0.0 0 32768 ?

R2#show ip bgp | begin Network


Network Next Hop Metric LocPrf Weight Path
*> 1.0.0.0 192.168.12.1 0 0 1 i
*> 1.1.1.0/24 192.168.12.1 0 0 1 i
*> 11.11.11.11/32 192.168.12.1 0 0 1 i
*> 111.111.111.0/24 192.168.12.1 0 0 1 ?
.R2 ‫بالطبع وصلت الشبكة الى‬
BGP Next Hop Self
iBGP ‫أحد المشاكل المحتملة التي من الممكن ان تظهر في‬
.next hop IP address ‫وهي عدم تغيير في‬
.AS 12 ‫ كالهما يعمالن في‬R1 and R2 ‫بالطبع لدينا‬
.AS 3 ‫ في‬R3 ‫بينما يعمل‬
‫ والذي بدوره سوف يثبتها‬R2 ‫ الى‬3.3.3.0/24 ‫سوف تصل الشبكة‬
‫ سوف يكون هو‬next hop IP address ‫ وبالتالي فإن‬،BGP table ‫في‬
.192.168.23.3
.192.168.23.3 ‫ لن يستطيع الوصول الى‬R1 ‫هذا سوف يعني بالطبع ان‬
.routing table ‫ في‬route ‫أي لن يضع‬

:‫لنبدأ بعملية اإلعدادات كما يلي‬

R1(config)#router bgp 12
R1(config‐router)#neighbor 192.168.12.2 remote‐as 12
‫ محمد شايع‬/‫إعداد م‬
R2(config)#router bgp 12
R2(config‐router)#neighbor 192.168.12.1 remote‐as 12
R2(config‐router)#neighbor 192.168.23.3 remote‐as 3

R3(config)#router bgp 3
R3(config‐router)#neighbor 192.168.23.2 remote‐as 12
R3(config‐router)#network 3.3.3.0 mask 255.255.255.0
:‫ كما يلي‬R2/R3 ‫ ما بين‬eBGP ‫ وكذلك‬R1/R2 ‫ ما بين‬iBGP ‫تم استخدم‬
R2#show ip bgp
BGP table version is 2, local router ID is 192.168.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐internal, r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 3.3.3.0/24 192.168.23.3 0 0 3 i
R1#show ip bgp
BGP table version is 1, local router ID is 192.168.12.1
Status codes: s suppressed, d damped, h history, * valid, > best, i‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
* i3.3.3.0/24 192.168.23.3 0 100 0 3 i
‫هو يعرف‬prefix ‫ لكن ليس لديه القدرة على الوصول اليه من اجل وضعه في‬routing table.
R1#show ip route bgp
.192.168.23.3 ‫ والذي هو‬next hop IP address ‫المشكلة تتركز في‬
R1#show ip route
Codes: C ‐ connected, S ‐ static, R ‐ RIP, M ‐ mobile, B ‐ BGP
D ‐ EIGRP, EX ‐ EIGRP external, O ‐ OSPF, IA ‐ OSPF inter area
N1 ‐ OSPF NSSA external type 1, N2 ‐ OSPF NSSA external type 2
E1 ‐ OSPF external type 1, E2 ‐ OSPF external type 2
i ‐ IS‐IS, su ‐ IS‐IS summary, L1 ‐ IS‐IS level‐1, L2 ‐ IS‐IS level‐2
ia ‐ IS‐IS inter area, * ‐ candidate default, U ‐ per‐user static route
o ‐ ODR, P ‐ periodic downloaded static route
Gateway of last resort is not set
C 192.168.12.0/24 is directly connected, FastEthernet0/0
:‫بإمكانك حل المشكلة بأحد طريقتين هما‬
:192.168.23.0/24 ‫ يستطيع الوصول الى‬R1 ‫ حيث ان‬BGP ‫ حيث يتم فيها عملية اإلعالن عن الشبكة في‬Advertise Network -1
R2(config)#router bgp 12
R2(config‐router)#network 192.168.23.0 mask 255.255.255.0

R1#show ip bgp
BGP table version is 3, local router ID is 192.168.12.1
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*>i3.3.3.0/24 192.168.23.3 0 100 0 3 i
*>i192.168.23.0 192.168.12.2 0 100 0 i
‫ محمد شايع‬/‫إعداد م‬
.R1 ‫وصلت الشبكة االن الى‬
R1#show ip route bgp
3.0.0.0/24 is subnetted, 1 subnets
B 3.3.3.0 [200/0] via 192.168.23.3, 00:16:20
B 192.168.23.0/24 [200/0] via 192.168.12.2, 00:16:25
‫ من ان يغير من نفسه ليكون هو‬R2 ‫ سوف نخبر‬R2 and R3 ‫ وفيها سوف يتم بدال من اإلعالن عن الشبكة بين‬Next Hop Self -2
.next hop IP address
R2(config)#router bgp 12
R2(config‐router)#neighbor 192.168.12.1 next‐hop‐self
:‫ كما يلي‬.next hop ‫ الذي لديه هو‬IP address ‫ سيكون‬prefix ‫ عن أي‬R1 ‫ الى‬R2 ‫عندما يعلن‬
R1#show ip bgp
BGP table version is 6, local router ID is 192.168.12.1
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*>i3.3.3.0/24 192.168.12.2 0 100 0 3 i
.next hop ‫ هو‬192.168.12.2 ‫ موجودة ويعتبر‬3.3.3.0/24 ‫كما نالحظ ان‬
R1#show ip route bgp
3.0.0.0/24 is subnetted, 1 subnets
B 3.3.3.0 [200/0] via 192.168.12.2, 00:00:33
BGP Auto-Summary
.network and subnet mask ‫ بالضبط باستخدام‬BGP ‫ في‬network ‫بالطبع نحن نعلن عن طريق امر‬
‫ التي سوف يعلن عنها سوف تتحول‬networks ‫ فإن ذلك يعني ان كل‬BGP ‫ داخل‬auto-summary ‫في حالة تفعيل االمر‬
‫ لن يفيد في شيء وذلك الن الشبكات سوف‬network ‫ مع امر‬mask ‫ بالطبع سوف يعني هذا ان استخدام او عدم استخدام‬classful network ‫الى‬
.classful ‫تتحول بشكل اوتوماتيكي الى‬
R1#show run | section bgp
router bgp 1
bgp log‐neighbor‐changes
neighbor 192.168.12.2 remote‐as 2

R2#show run | section bgp


router bgp 2
bgp log‐neighbor‐changes
neighbor 192.168.12.1 remote‐as 1

:‫ دعنا االن نقوم بعملية وضع التالي‬.eBGP ‫كما نالحظ تم وضع اإلعدادات األساسية فقط في‬
R1(config)#router bgp 1
R1(config‐router)#network 1.0.0.0
:BGP table ‫ سوف نرى ماذا حصل في‬.mask ‫بدون أي‬
R1#show ip bgp 1.0.0.0
% Network not in table
.‫ ال يوجد شيء فيه‬BGP table ‫كما توقعنا فإن‬
R1(config)#router bgp 1
R1(config‐router)#auto‐summary
‫ محمد شايع‬/‫إعداد م‬
auto-summary ‫تم تفعيل‬
R1#show ip bgp 1.0.0.0
BGP routing table entry for 1.0.0.0/8, version 2
Paths: (1 available, best #1, table default)
Advertised to update‐groups:
1
Local
0.0.0.0 from 0.0.0.0 (192.168.12.1)
Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced,
local, best
.routing table ‫ وتم وضع الشبكة في‬.1.0.0.0/8 ‫ يدل على ذلك‬classful ‫لقد تحولت الشبكة الى‬
R2#show ip bgp
BGP table version is 2, local router ID is 192.168.12.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale, m multipath, b backup‐path, x best‐
external, f RT‐Filter
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete

Network Next Hop Metric LocPrf Weight Path


*> 1.0.0.0 192.168.12.1 0 0 1 i
‫ ثم أعلن عن الشبكة وضع‬.‫ ويعتبر هذا األمر مفعل بشكل افتراضي‬no auto-summary ‫سوف نستنتج من ذلك انه من األفضل ان يكون هناك امر‬
.mask ‫الـ‬

Redistributing BGP NLRI into the IGP


‫ يعتبر امر في‬IGP ‫ الى‬BGP ‫ من داخل‬redistribution ‫ أي ان عملية‬redistribute bgp ‫من غير المنطقي تنفذ هذا االمر‬
:‫غاية الخطورة نظرا للتالي‬
.trust boundary ‫ هذا سوف يؤدي الى كسر‬.untrusted ‫ تعتبر بشكل عام‬external routes ‫ كل‬-1
‫ الى لحظة كتابة هذه‬600,000 entries ‫ يفوق‬Internet ‫ لدي‬routing table ‫ السبب األهم في الموضوع وهي ان حجم‬-2
‫ النتيجة سوف تكون هي بالطبع‬.‫ لن يعمل مطلقا على هذا الكم الكبير من البيانات‬IGP protocols ‫السطور وهذا يعني ان‬
.routers ‫ لذلك‬crash
.IGP ‫ الى‬redistributing ‫ بدال من‬IBGP ‫ هي استخدام‬AS ‫ الى‬routing ‫الطريقة المثلى من اجل الحصول على تفاصيل لـ‬
‫ المحددة في‬routers ‫ الى‬border routers ‫ من‬IBGP ‫تأمل معي الشكل ادناه سوف تالحظ اننا قمنا بعملية إيجاد عالقات جوار‬
.local BGP routers ‫ من اجل الوصول الى تلك‬default routes ‫ ومن ثم وضع‬،‫المناطق المختلفة‬
‫ محمد شايع‬/‫إعداد م‬
How to Configure BGP Weight Attribute
:‫ التالي‬weight ‫ ومن اهم خصائص الـ‬.‫ من اجل اختيار مسار معين‬weight ‫تستخدم‬

 Weight is the first BGP attribute in the list.


 Cisco proprietary so you won’t find it on other vendor routers.
 Weight is not exchanged between BGP routers.
 Weight is only local on the router.
 The path with the highest weight is preferred.

:‫دعنا نأخذ المثال كما في الشكل ادناه‬


R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.12.2 remote‐as 2
R1(config‐router)#neighbor 192.168.13.3 remote‐as 2
R2(config)#router bgp 2
R2(config‐router)#neighbor 192.168.12.1 remote‐as 1
R2(config‐router)#neighbor 192.168.23.3 remote‐as 2
R2(config‐router)#network 2.2.2.0 mask 255.255.255.0

R3(config)#router bgp 2
R3(config‐router)#neighbor 192.168.13.1 remote‐as 1
R3(config‐router)#neighbor 192.168.23.2 remote‐as 2
R3(config‐router)#network 2.2.2.0 mask 255.255.255.0

.‫تعتبر اإلعدادات السابقة اعداد أساسية من اجل عالقة الجوار‬


:24/2.2.2.0 ‫ من اجل الوصول الى الشبكة‬R1 ‫لنرى كيف يسلك‬
R1#show ip bgp
BGP table version is 2, local router ID is 192.168.13.1
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 2.2.2.0/24 192.168.12.2 0 0 2 i
* 192.168.13.3 0 0 2 i
.BGP decisions ‫ وهذا منطقي حسب تسلسل‬R2 ‫الطريق تمر عبر‬
.R3 ‫لكن ماذا لو أردنا ان نبدل او نجعل الوصول من خالل‬

.weight ‫دعنا نستخدم‬


‫ محمد شايع‬/‫إعداد م‬
R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.13.3 weight 500
:‫البد من االمر التالي‬
R1#clear ip bgp *

R1#show ip bgp
BGP table version is 2, local router ID is 192.168.13.1
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
* 2.2.2.0/24 192.168.12.2 0 0 2 i
*> 192.168.13.3 0 500 2i
.‫ كما في السابق‬R3 ‫لقد انتقل المسار الى‬

:‫سأقوم بإضافة التالي‬


R2(config)#interface loopback 1
R2(config‐if)#ip address 22.22.22.22 255.255.255.0
R2(config)#router bgp 2
R2(config‐router)#network 22.22.22.0 mask 255.255.255.0

‫النتيجة الحتمية وهي ان‬

R1#show ip bgp
BGP table version is 5, local router ID is 192.168.13.1
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
* 2.2.2.0/24 192.168.12.2 0 0 2 i
*> 192.168.13.3 0 500 2 i
*> 22.22.22.0/24 192.168.13.3 0 500 2 i
* 192.168.12.2 0 0 2 i
:‫ وهذا سوف يقودنا الى التعديل التالي‬prefixes ‫ وليس كل‬R3 ‫ واحد يمر عبر‬prefix ‫بالطبع قد يكون لدينا نية ان نجعل فقط‬
R1(config)#router bgp 1
R1(config‐router)#no neighbor 192.168.13.3 weight 500
‫ محمد شايع‬/‫إعداد م‬
R1(config)#route‐map SETWEIGHT permit 10
R1(config‐route‐map)#match ip address 1
R1(config‐route‐map)#set weight 400
R1(config‐route‐map)#exit
R1(config)#route‐map SETWEIGHT permit 20
R1(config‐route‐map)#set weight 0
R1(config‐route‐map)#exit
R1(config)#access‐list 1 permit 22.22.22.0 0.0.0.255
R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.13.3 route‐map SETWEIGHT in
:‫ثم األمر التالي‬
R1#clear ip bgp *

R1#show ip bgp
BGP table version is 3, local router ID is 192.168.13.1
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal, r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
* 2.2.2.0/24 192.168.13.3 0 0 2 i
*> 192.168.12.2 0 0 2 i
*> 22.22.22.0/24 192.168.13.3 0 400 2 i
* 192.168.12.2 0 0 2 i

How to Configure BGP Local Preference Attribute

‫ وذلك من‬exit path ‫ ونستطيع استخدامها من اجل اختيار‬BGP policy ‫ الثانية من حيث الترتيب في‬BGP attribute local preference ‫تعتبر‬
:‫ لها العديد من الخصائص وهي‬.AS

 Local preference is the second BGP attribute.


 You can use local preference to choose the outbound external BGP path.
 Local preference is sent to all internal BGP routers in your autonomous system.
 Not exchanged between external BGP routers.
 Local preference is a well-known and discretionary BGP attribute.
 Default value is 100.
 The path with the highest local preference is preferred

:‫دعنا نأخذ الشكل ادناه كمثال على ذلك من اجل التوضيح‬

.James ‫ من الوصول اليها من خالل‬router Jack ‫ من اجل ان يتمكن‬.AS 2 ‫ الى‬1.1.1.0/24 ‫ بعملية االعالن عن الشبكة‬router James ‫يقوم‬
‫ محمد شايع‬/‫إعداد م‬
James(config)#router bgp 1
James(config‐router)#neighbor 192.168.12.2 remote‐as 2
James(config‐router)#neighbor 192.168.13.3 remote‐as 2
James(config‐router)#network 1.1.1.0 mask 255.255.255.0

Jim(config)#interface loopback 0
Jim(config‐if)#ip address 2.2.2.2 255.255.255.0

Jim(config)#router ospf 1
Jim(config‐router)#network 192.168.24.0 0.0.0.255 area 0
Jim(config‐router)#network 2.2.2.0 0.0.0.255 area 0

John(config)#interface loopback 0
John(config‐if)#ip address 3.3.3.3 255.255.255.0
John(config)#router ospf 1
John(config‐router)#network 192.168.34.0 0.0.0.255 area 0
John(config‐router)#network 3.3.3.0 0.0.0.255 area 0

Jack(config)#interface loopback 0
Jack(config‐if)#ip address 4.4.4.4 255.255.255.0
Jack(config)#router ospf 1
Jack(config‐router)#network 192.168.24.0 0.0.0.255 area 0
Jack(config‐router)#network 192.168.34.0 0.0.0.255 area 0
Jack(config‐router)#network 4.4.4.0 0.0.0.255 area 0

John(config)#router bgp 2
John(config‐router)#neighbor 192.168.13.1 remote‐as 1
John(config‐router)#neighbor 2.2.2.2 remote‐as 2
John(config‐router)#neighbor 2.2.2.2 update‐source loopback0
John(config‐router)#neighbor 4.4.4.4 remote‐as 2
John(config‐router)#neighbor 4.4.4.4 update‐source loopback0
John(config‐router)#neighbor 4.4.4.4 next‐hop‐self

Jim(config)#router bgp 2
Jim(config‐router)#neighbor 192.168.12.1 remote‐as 1
Jim(config‐router)#neighbor 3.3.3.3 remote‐as 2
Jim(config‐router)#neighbor 3.3.3.3 update‐source loopback0
Jim(config‐router)#neighbor 4.4.4.4 remote‐as 2
Jim(config‐router)#neighbor 4.4.4.4 update‐source loopback0
Jim(config‐router)#neighbor 4.4.4.4 next‐hop‐self
‫ محمد شايع‬/‫إعداد م‬
Jack(config)#router bgp 2
Jack(config‐router)#neighbor 2.2.2.2 remote‐as 2
Jack(config‐router)#neighbor 2.2.2.2 update‐source loopback 0
Jack(config‐router)#neighbor 3.3.3.3 remote‐as 2
Jack(config‐router)#neighbor 3.3.3.3 update‐source loopback 0
.‫بعد ان اكتملت اإلعدادات األساسية‬
.1.1.1.0/24 ‫ كيف ومن اين يصل الى‬router Jack ‫لنرى‬
Jack#show ip bgp
BGP table version is 2, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
* i 1.1.1.0/24 3.3.3.3 0 100 0 1 i
*>i 2.2.2.2 0 100 0 1 i
:‫ لنقوم بقليل من التعديل‬.LocPerf ‫ لن يتخذ القرار من خالل‬router ‫ وهذا سوف يعني ان‬local Pref ‫تساوت‬

John(config)#router bgp 2
John(config‐router)#bgp default local‐preference 600

:‫ لتصبح لدينا التالي‬LocPref ‫تم تعديل‬


Jack#show ip bgp
BGP table version is 3, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.0/24 3.3.3.3 0 600 0 1i
* i 2.2.2.2 0 100 0 1i
.600 ‫ الى‬LocPref ‫لقد زادت قيمة‬

John(config)#router bgp 2
John(config‐router)#no bgp default local‐preference 600

:‫ كما يلي‬route-maps ‫لكن هذا غير منطقي لذلك حذفنا االمر السابق لنستخدم‬
John(config)#route‐map LOCALPREF permit 10
John(config‐route‐map)#set local‐preference 700
John(config)#router bgp 2
John(config‐router)#neighbor 192.168.13.1 route‐map LOCALPREF in
.‫تعتبر أكثر مرونة‬
‫ محمد شايع‬/‫إعداد م‬
Jack#show ip bgp
BGP table version is 5, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.0/24 3.3.3.3 0 700 0 1 i
* i 2.2.2.2 0 100 0 1 i

How to configure BGP AS Path Prepending


:‫ حيث لها خصائص‬.‫ الرابعة من حيث الترتيب‬BGP attribute ‫تعتبر‬
 BGP prefers the shortest AS path to get to a destination.
 We can manipulate this by using AS path prepending.
‫ بعدد معين‬AS numbers ‫ حيث انه من الممكن زيادة عدد‬.‫ التي لنا اتصال مباشر بها اننا بعيدين جدا عنها‬AS ‫حيث انه من الممكن ان نوهم‬
.AS path prepending ‫ نطلق على ذلك بـ‬.‫ معينة عبر مسار مخصص‬AS ‫لتفضيل الوصول الي‬
:‫ سوف نبدأ باإلعدادات األساسية‬.‫بدعني أوضح لك ذلك من خالل الشكل ادناه‬
Jim(config)#router bgp 1
Jim(config‐router)#neighbor 192.168.12.2 remote‐as 2

John(config)#router bgp 1
John(config‐router)#neighbor 192.168.23.2 remote‐as 2

Jack(config)#router bgp 2
Jack(config‐router)#neighbor 192.168.12.1 remote‐as 1
Jack(config‐router)#neighbor 192.168.23.3 remote‐as 1

Jim(config)#router bgp 1
Jim(config‐router)#network 1.1.1.0 mask 255.255.255.0

John(config)#router bgp 1
John(config‐router)#network 1.1.1.0 mask 255.255.255.0

:1.1.1.0/24 ‫ الى الشبكة‬Jack ‫سوف نرى من اين يصل‬


Jack#show ip bgp
BGP table version is 2, local router ID is 192.168.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
* 1.1.1.0/24 192.168.23.3 0 0 1 i
*> 192.168.12.1 0 0 1 i
‫ محمد شايع‬/‫إعداد م‬
‫ كما‬as prepending ‫ لنقم بعملية التغيير من خالل‬.192.168.12.1 ‫ يفضل المرور للشبكة من خالل‬router ‫في الجدول السابق سوف نالحظ ان‬
:‫يلي‬
Jim(config)#route‐map PREPEND permit 10
Jim(config‐route‐map)#set as‐path prepend 1 1 1 1 1
Jim(config‐route‐map)#exit
Jim(config)#router bgp 1
Jim(config‐router)#neighbor 192.168.12.2 route‐map PREPEND out
:‫ لتكون النتيجة كما يلي‬outbound ‫ ومن ثم تم تطبيقها على المسار الخارج‬،as-path prepend ‫لقد قمنا بالعديد من‬
Jack#show ip bgp
BGP table version is 2, local router ID is 192.168.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 192.168.23.3 0 0 1 i
* 192.168.12.1 0 0 1 1 1 1 1 1 i
.192.168.23.3 ‫لقد تم تغيير المسار الى‬
BGP Origin Code Attribute explained
:‫ وهي كما يلي‬origin codes ‫ وهناك ثالث‬.‫ والتي من خالل نستطيع استخدام مسار على اخر‬BGP attributes ‫تعتبر واحدة من‬
 IGP (shows up as i)
 EGP (shows up as e)
 Incomplete (shows up as ?)
.(i) ‫ وسوف يكون الرمز فيها هو‬.BGP ‫ مباشرة سوف يعني أنك تعلن في‬BGP ‫ في‬network ‫عندما تستخدم امر الشبكة‬
.‫ حيث انه بروتوكول قديم لم يعد يستخدم‬.‫ ألنها صارت شيء من الماضي والتاريخ‬EGP ‫لن يتم استخدام‬
.redistributed ‫النوع الثالث (?) أي يعني انك تستخدم‬
:‫وللتوضيح اكثر سوف نستخدم الشكل التالي كمثال على ذلك‬
Jim(config)#router bgp 1
Jim(config‐router)#neighbor 192.168.12.2 remote‐as 2

John(config)#router bgp 1
John(config‐router)#neighbor 192.168.23.2 remote‐as 2

Jack(config)#router bgp 2
Jack(config‐router)#neighbor 192.168.12.1 remote‐as 1
Jack(config‐router)#neighbor 192.168.23.3 remote‐as 1

Jim(config)#router bgp 1
Jim(config‐router)#network 1.1.1.0 mask 255.255.255.0

John(config)#router bgp 1
John(config‐router)#redistribute connected
.redistribute ‫ واألخرى بـ‬network ‫ مرتين أحدهما بـ‬1.1.1.0/24 ‫فيما سبق تم اإلعالن عن الشبكة‬
‫ محمد شايع‬/‫إعداد م‬
Jack#show ip bgp
BGP table version is 4, local router ID is 192.168.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
* 1.1.1.0/24 192.168.23.3 0 0 1 ?
*> 192.168.12.1 0 0 1 i
.origin=? ‫ وتفضيل مساره على‬origin=i ‫لقد تم اختيار‬
How to configure BGP MED Attribute
:‫ ولها العديد من الخصائص‬.BGP attribute ‫ السادسة في‬metric ‫ او ما نطلق عليه‬MED ‫على قائمة الترتيب تعتبر‬
 MED can be used to advertise to your neighbors how they should enter your AS.
 MED is exchanged between autonomous systems.
 The lowest MED is the preferred path.
 MED is propagated to all routers within the neighbor AS but not passed along any other
autonomous systems.

:‫دعنا نوضح ذلك من خالل المثال التالي‬


Jim(config)#router bgp 1
Jim(config‐router)#neighbor 192.168.12.2 remote‐as 2
Jim(config‐router)#network 1.1.1.0 mask 255.255.255.0

John(config)#router bgp 1
John(config‐router)#neighbor 192.168.23.2 remote‐as 2
John(config‐router)#network 1.1.1.0 mask 255.255.255.0

Jack(config)#router bgp 2
Jack(config‐router)#neighbor 192.168.12.1 remote‐as 1
Jack(config‐router)#neighbor 192.168.23.3 remote‐as 1

Jack#show ip bgp
BGP table version is 2, local router ID is 192.168.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
* 1.1.1.0/24 192.168.23.3 0 0 1 i
*> 192.168.12.1 0 0 1 i
.MED ‫ ماذا لو غيرنا في قيمة‬.192.168.12.1 ‫ في كال المسارين وتم تفضيل المسار عبر‬MED=0 ‫كما الحظنا أعاله ان قيمة‬
Jim(config)#route‐map MED permit 10
Jim(config‐route‐map)#set metric 700
Jim(config‐route‐map)#exit
Jim(config)#router bgp 1
Jim(config‐router)#neighbor 192.168.12.2 route‐map MED out
‫ محمد شايع‬/‫إعداد م‬
John(config)#route‐map MED permit 10
John(config‐route‐map)#set metric 500
John(config‐route‐map)#exit
John(config)#router bgp 1
John(config‐router)#neighbor 192.168.23.2 route‐map MED out
:‫ سوف تكون النتيجة هي‬MED ‫بعد التغيير في قيمة‬
Jack#show ip bgp
BGP table version is 2, local router ID is 192.168.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
* 1.1.1.0/24 192.168.12.1 700 0 1 i
*> 192.168.23.3 500 0 1 i
.MED=500 ‫ وذلك ألن قيمة‬192.168.23.3 ‫ المرور عبر‬Jack ‫لقد فضل‬
BGP Communities
‫ هذه المعلومات‬.BGP community ‫ إلى إضافة مزيد من المعلومات نطلق عليها‬،‫ التي تعلن الى الجار‬prefixes ‫ في‬bit ‫سوف يتيح لك وجود‬
.dynamic routing policies ‫ او حتى في‬traffic engineering ‫اإلضافية من الممكن استخدامها في‬
:BGP communities ‫ وهي قيم رقمية من الممكن استخدامها في‬.4 well known BGP communities ‫يوجد هناك‬
 Internet: advertise the pre x to all BGP neighbors.
 No-Advertise: don’t advertise the prefix to any BGP neighbors.
 No-Export: don’t advertise the prefix to any eBGP neighbors.
 Local-AS: don’t advertise the prefix outside of the sub-AS (this one is used for BGP confederations).
‫؟‬communities ‫لكن لماذا نطلق عليها بـ‬
‫ أي من الممكن ان يكون لديك أكثر من‬.‫ والتي يتم معالجتها بنفس الطريقة‬prefixes ‫ هي عبارة عن مجموعة من‬community ‫الجواب ان‬
‫ لكن تعتبر‬.access-list or prefix-list ‫ من الممكن استخدام‬.preference or weight Local ‫ تحتاج ان تطبق عليها نفس‬100 prefixes
.‫ أكثر كفاءة ألداء هذه المهمة‬BGP communities
16-bit ‫ اما‬.community ‫ التي أنشأت‬AS number ‫ تشير الى‬16-bit ‫ اول‬.‫ وتقسم الى قسمين‬32-bit ‫ تعتبر قيمة‬BGP communities
.AS ‫األخرى فيتم تحديدها بواسطة‬
.‫دعني أوضح األمر في المثال التالي من خالل الشكل ادناه‬
‫ سوف اعرض لك اإلعدادات األساسية‬.ISP2 and ISP3 ‫ متصل بـ‬ISP1 ‫ بينما‬.ISP1 ‫ والمتصل بـ‬customer router ‫في الجانب األيسر لدينا‬
.router ‫التي وضعها في كل‬
Customer#show running‐config | section bgp
router bgp 10
no synchronization
bgp log‐neighbor‐changes
network 10.10.10.10 mask 255.255.255.255
neighbor 192.168.10.1 remote‐as 1
no auto‐summary

ISP1#show running‐config | section bgp


router bgp 1
no synchronization
bgp log‐neighbor‐changes
neighbor 192.168.10.10 remote‐as 10
neighbor 192.168.12.2 remote‐as 2
neighbor 192.168.13.3 remote‐as 3
no auto‐summary
‫ محمد شايع‬/‫إعداد م‬
ISP2#show running‐config | section bgp
router bgp 2
no synchronization
bgp log‐neighbor‐changes
neighbor 192.168.12.1 remote‐as 1
no auto‐summary

ISP3#show running‐config | section bgp


router bgp 3
no synchronization
bgp log‐neighbor‐changes
neighbor 192.168.13.1 remote‐as 1
no auto‐summary
.10.10.10.0/24 ‫ الشبكة‬ISP1 ‫لنرى هل يعرف‬
ISP1#show ip bgp 10.10.10.10
BGP routing table entry for 10.10.10.10/32, version 2
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Flag: 0x820
Advertised to update‐groups:
1
10
192.168.10.10 from 192.168.10.10 (192.168.10.10)
Origin IGP, metric 0, localpref 100, valid, external, best
:community-value ‫ والتي تطابق‬community list ‫دعنا في البداية ننشئ‬
ISP1(config)#ip community‐list 1 permit 64984:0
.BGP communities ‫ لكن تستخدم فقط في‬access-list or prefix-list ‫ مشابهه لـ‬Community-list
:‫ كما يلي‬AS path ‫ من ا جل الحاق‬route-map ‫ هي انشاء‬.‫الخطوة التالية‬
ISP1(config)#route‐map PREPEND_EU permit 10
ISP1(config‐route‐map)#match community 1
ISP1(config‐route‐map)#set as prepend 1 1 1 1
ISP1(config‐route‐map)#exit
ISP1(config)#route‐map PREPEND_EU permit 20
.ISP2 ‫ لنربطها مع الجار‬.‫ اربع مرات‬AS path ‫ وتعمل على إلحاق‬community-list 1 ‫ مع‬route-map ‫ترتبط‬
ISP1(config)#router bgp 1
ISP1(config‐router)#neighbor 192.168.12.2 route‐map PREPEND_EU out
:‫ كما يلي‬prefix ‫ مع‬BGP community ‫ يعمل على ارسال‬customer router ‫لنجعل االن‬
:‫ كما يلي‬loopback ‫لنربط‬
Customer(config)#ip prefix‐list LOOPBACK permit 10.10.10.10/32

Customer(config)#route‐map SET_COMMUNITY permit 10


Customer(config‐route‐map)#match ip address prefix‐list LOOPBACK
Customer(config‐route‐map)#set community 64984:0
Customer(config‐route‐map)#exit
Customer(config)#route‐map SET_COMMUNITY permit 20
:‫لنعمل على الربط كما يلي‬
Customer(config)#router bgp 10
Customer(config‐router)#neighbor 192.168.10.1 route‐map SET_COMMUNITY out
Customer(config‐router)#neighbor 192.168.10.1 send‐community
‫ محمد شايع‬/‫إعداد م‬
:‫ لن يرسل شيء من تلقاء نفسه‬router ‫ الن‬send community ‫البد من استخدام‬
Customer#clear ip bgp *
:BGP community ‫ تلك‬ISP1 ‫لنرى هل تم استقبل‬
ISP1#show ip bgp 10.10.10.10
BGP routing table entry for 10.10.10.10/32, version 6
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Advertised to update‐groups:
1 2
10
192.168.10.10 from 192.168.10.10 (10.10.10.10)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: 4258791424
:‫ دعنا نجعلها تظهر بالشكل الجديد‬.32-bit ‫ وتعتبر رقم عشري‬.‫ من الجار‬community ‫لقد استقبل‬
ISP1(config)#ip bgp‐community new‐format

ISP1#show ip bgp 10.10.10.10


BGP routing table entry for 10.10.10.10/32, version 6
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Advertised to update‐groups:
1 2
10
192.168.10.10 from 192.168.10.10 (10.10.10.10)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: 64984:0
ISP2#show ip bgp
BGP table version is 12, local router ID is 192.168.12.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 10.10.10.10/32 192.168.12.1 0 1 1 1 1 1 10 i

ISP3#show ip bgp
BGP table version is 12, local router ID is 192.168.13.3
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐ internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 10.10.10.10/32 192.168.13.1 0 1 10 i
.ISP2 ‫ فقط عند اإلعالن الى‬AS ‫رائع لقد تم الحاق‬
‫ محمد شايع‬/‫إعداد م‬
BGP Community No Advertise

R1#show running‐config | section bgp


router bgp 1
no synchronization
bgp log‐neighbor‐changes
network 1.1.1.1 mask 255.255.255.255
neighbor 192.168.12.2 remote‐as 24
no auto‐summary

R2#show running‐config | section bgp


router bgp 24
no synchronization
bgp log‐neighbor‐changes
neighbor 192.168.12.1 remote‐as 1
neighbor 192.168.23.3 remote‐as 3
neighbor 192.168.24.4 remote‐as 24
neighbor 192.168.24.4 next‐hop‐self
no auto‐summary

R3#show running‐config | section bgp


router bgp 3
no synchronization
bgp log‐neighbor‐changes
neighbor 192.168.23.2 remote‐as 24
no auto‐summary
R4#show running‐config | section bgp
router bgp 24
no synchronization
bgp log‐neighbor‐changes
neighbor 192.168.24.2 remote‐as 24
no auto‐summary

R2#show ip bgp | include 1.1.1.1


*> 1.1.1.1/32 192.168.12.1 0 0 1 i

R3#show ip bgp | include 1.1.1.1


*> 1.1.1.1/32 192.168.23.2 0 24 1 i

R4#show ip bgp | include 1.1.1.1


* i1.1.1.1/32 192.168.12.1 0 100 0 1 i

R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.12.2 send‐community
:‫ من اجل ذلك‬route-map ‫ لنقم بإنشاء‬.‫ تعتبر غير مفعلة بشكل افتراضي‬،BGP communities ‫ من اجل ان يرسل‬R1 ‫أوال سوف نخبر‬
R1(config)#route‐map NO_ADVERTISE permit 10
R1(config‐route‐map)#set community no‐advertise

R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.12.2 route‐map NO_ADVERTISE out
‫ محمد شايع‬/‫إعداد م‬
R2#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Flag: 0x820
Advertised to update‐groups:
1 2
1
192.168.12.1 from 192.168.12.1 (192.168.12.1)
Origin IGP, metric 0, localpref 100, valid, external, best
:reset BGP ‫لنقم بعملية‬
R2#clear ip bgp *

R2#show ip bgp 1.1.1.1


BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table, not advertised
to any peer)
Flag: 0x820
Not advertised to any peer
1
192.168.12.1 from 192.168.12.1 (192.168.12.1)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: no‐advertise

R2#show ip bgp neighbors 192.168.24.4 advertised‐routes


Total number of prefixes 0

R2#show ip bgp neighbors 192.168.23.3 advertised‐routes


Total number of prefixes 0
.no-advertise ‫ وذلك بسبب‬.R2 ‫كما الحظنا انه لم يتم اإلعالن عن شيء الى جيران‬
R3#show ip bgp 1.1.1.1
% Network not in table

R4#show ip bgp 1.1.1.1


% Network not in table
‫ محمد شايع‬/‫إعداد م‬

BGP Community No Export


.IBGP neighbors ‫ أي فقط‬.‫ فقط‬AS ‫ الى الجيران في نفس‬prefixes ‫سوف يتم اإلعالن هنا عن‬
:‫ حيث ان النتيجة ستكون كما يلي‬.‫ األساسية‬BGP ‫ ولن اعيد اعدادات الـ‬.‫في التالي مثال على ذلك‬

R2#show ip bgp | include 1.1.1.1


*> 1.1.1.1/32 192.168.12.1 0 0 1 i

R3#show ip bgp | include 1.1.1.1


*> 1.1.1.1/32 192.168.23.2 0 24 1 i

R4#show ip bgp | include 1.1.1.1


* i1.1.1.1/32 192.168.12.1 0 100 0 1 i

:‫الى مربط الفرس األن‬


R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.12.2 send‐community

R1(config)#route‐map NO_EXPORT permit 10


R1(config‐route‐map)#set community no‐export

R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.12.2 route‐map NO_EXPORT out

R2#clear ip bgp *

R2#show ip bgp 1.1.1.1


BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table, not advertised
to EBGP peer)
Flag: 0x820
Advertised to update‐groups:
2
1
192.168.12.1 from 192.168.12.1 (192.168.12.1)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: no‐export
:EBGP ‫لنجرب مع‬
R3#show ip bgp 1.1.1.1
% Network not in table
.‫كما هو متوقع لم يعلن أي شيء لها‬
‫ محمد شايع‬/‫إعداد م‬
.R4 ‫ والذي يمثله‬IBGP ‫لنرى‬
R4#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Flag: 0x820
Not advertised to any peer
1
192.168.24.2 from 192.168.24.2 (192.168.24.2)
Origin IGP, metric 0, localpref 100, valid, internal, best
.‫لقد تم اإلعالن‬
BGP Community Local AS
‫ حيث‬.BGP confederations ‫ وأيضا تستطيع استخدامها في‬.well known BGP community ‫ من النوع‬local AS community ‫تعتبر‬
‫ التي يتم عمل‬prefixes ‫ حيث ان تلك‬.confederation ‫ في‬sub-AS ‫ لكن هنا تعمل فقط مع‬.no export community ‫انها أساسا نفس‬
.sub-AS ‫ او حتى خارج‬eBGP routers ‫ وليس الى‬sub-AS ‫ لها فقط يتم اإلعالن عنها الى الجيران فق نفس‬tagged
.‫للتوضيح بشكل أكبر دعني اخذ الشكل ادناه كمثال على ذلك‬
R1#show running‐config | section bgp
router bgp 1
no synchronization
bgp log‐neighbor‐changes
network 1.1.1.1 mask 255.255.255.255
neighbor 192.168.12.2 remote‐as 2345
no auto‐summary

R2#show running‐config | section bgp


router bgp 23
no synchronization
bgp log‐neighbor‐changes
bgp confederation identifier 2345
bgp confederation peers 45
neighbor 3.3.3.3 remote‐as 23
neighbor 3.3.3.3 update‐source Loopback0
neighbor 4.4.4.4 remote‐as 45
neighbor 4.4.4.4 ebgp‐multihop 2
neighbor 4.4.4.4 update‐source Loopback0
neighbor 192.168.12.1 remote‐as 1
no auto‐summary

R3#show running‐config | section bgp


router bgp 23
no synchronization
bgp log‐neighbor‐changes
bgp confederation identifier 2345
bgp confederation peers 45
neighbor 2.2.2.2 remote‐as 23
neighbor 2.2.2.2 update‐source Loopback0
neighbor 5.5.5.5 remote‐as 45
neighbor 5.5.5.5 ebgp‐multihop 2
neighbor 5.5.5.5 update‐source Loopback0
neighbor 192.168.36.6 remote‐as 6
no auto‐summary
‫ محمد شايع‬/‫إعداد م‬
R4#show running‐config | section bgp
router bgp 45
no synchronization
bgp log‐neighbor‐changes
bgp confederation identifier 2345
bgp confederation peers 23
neighbor 2.2.2.2 remote‐as 23
neighbor 2.2.2.2 ebgp‐multihop 2
neighbor 2.2.2.2 update‐source Loopback0
neighbor 5.5.5.5 remote‐as 45
neighbor 5.5.5.5 update‐source Loopback0
no auto‐summary

R5#show running‐config | section bgp


router bgp 45
no synchronization
bgp log‐neighbor‐changes
bgp confederation identifier 2345
bgp confederation peers 23
neighbor 3.3.3.3 remote‐as 23
neighbor 3.3.3.3 ebgp‐multihop 2
neighbor 3.3.3.3 update‐source Loopback0
neighbor 4.4.4.4 remote‐as 45
neighbor 4.4.4.4 update‐source Loopback0
no auto‐summary

R6#show running‐config | section bgp


router bgp 6
no synchronization
bgp log‐neighbor‐changes
neighbor 192.168.36.3 remote‐as 2345
no auto‐summary

:‫ لنرى‬1.1.1.0/24 ‫ عن الشبكة‬R1 ‫لقد أعلن‬


R2#show ip bgp | begin 1.1.1.1
*> 1.1.1.1/32 192.168.12.1 0 0 1 i

R3#show ip bgp | begin 1.1.1.1


*>i1.1.1.1/32 192.168.12.1 0 100 0 1 i

R4#show ip bgp | begin 1.1.1.1


* i1.1.1.1/32 192.168.12.1 0 100 0 (23) 1 i
*> 192.168.12.1 0 100 0 (23) 1 i

R5#show ip bgp | begin 1.1.1.1


* i1.1.1.1/32 192.168.12.1 0 100 0 (23) 1 i
*> 192.168.12.1 0 100 0 (23) 1 i

R6#show ip bgp | begin 1.1.1.1


*> 1.1.1.1/32 192.168.36.3 0 2345 1 i
‫ محمد شايع‬/‫إعداد م‬
.‫ تعلم عن الشبكة‬routers ‫كل الـ‬
:‫حان الوقت إلصالح ذلك‬
R2(config)#route‐map LOCAL_AS permit 10
R2(config‐route‐map)#set community local‐AS
R2(config)#router bgp 23
R2(config‐router)#neighbor 192.168.12.1 route‐map LOCAL_AS in
R2(config‐router)#neighbor 3.3.3.3 send‐community

R2#clear ip bgp *
:‫النتيجة هي‬
R2#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table, not advertised
outside local AS)
Flag: 0x820
Advertised to update‐groups:
3
1
192.168.12.1 from 192.168.12.1 (192.168.12.1)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: local‐AS

:‫ لذلك ستكون النتيجة هي‬.sub-AS ‫ لكن لم يعلن عنه خارج‬.local AS community ‫ موجود في‬prefix ‫كما نالحظ أعاله ان‬
R3#show ip bgp | begin 1.1.1.1
*>i1.1.1.1/32 192.168.12.1 0 100 0 1 i

R4#show ip bgp 1.1.1.1


% Network not in table

R5#show ip bgp 1.1.1.1


% Network not in table

R6#show ip bgp 1.1.1.1


% Network not in table
‫ ؟‬R3 ‫ الى‬R2 ‫لنرى ما الذي اعلن عنه‬
R2#show ip bgp neighbors 3.3.3.3 advertised‐routes
BGP table version is 2, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.1/32 192.168.12.1 0 0 1 i
Total number of prefixes 1
:‫ كما يلي‬R4 ‫دعنا نرى ذلك في‬
R2#show ip bgp neighbors 4.4.4.4 advertised‐routes
Total number of prefixes 0
‫ محمد شايع‬/‫إعداد م‬
BGP Regular Expressions Examples
.filtering ‫ من اجل عملية‬BGP route ‫ عادتا في‬Regular Expressions ‫تستخدم‬
.Regular Expressions ‫دعنا في البداية نستطلع اهم‬
Characters
? repeats the previous character one or zero times.
* repeats the previous character zero or many times.
+ repeats the previous character one or more times.
^ matches the beginning of a string.
$ matches the end of a string.
[] is a range.
_ matches the space between AS numbers or the end of the AS PATH list.
\\ is an escape character. You’ll need this for BGP confederations.

Examples
^$ matches an empty AS PATH so it will match all prefixes from the local AS.

^51_ matches prefixes from AS 51 that is directly connected to our AS.

_51_ matches prefixes that transit AS 51.

_51$ matches prefixes that originated in AS 51, the $ ensures that it’s the beginning of the AS PATH.

^([0-9]+)_51 matches prefixes from AS 51 where AS 51 is behind one of our directly connected AS’es.

^51_([0-9]+) matches prefixes from the clients of directly connected AS 51.

matches prefixes from the clients of directly connected AS 51, where AS 51 might be doing AS
^(51_)+([0-9]+)
PATH prepending.

matches prefixes from the clients of directly connected AS 51, where the clients might be doing
^51_([0-9]+_)+
AS PATH prepending.

^\65200\) matches prefixed from confederation peer 65200.

.route-views.routeviews.org ‫سنضرب العديد من األمثلة وسوف نستخدم من اجل ذلك‬


.AS 3257 ‫ التي تم توليدها من‬prefixes ‫ من اجل عرض‬regular expression ‫دعنا نستخدم‬
route-views>show ip bgp regexp ^3257$
BGP table version is 136173045, local router ID is 128.223.51.103
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

Network Next Hop Metric LocPrf Weight Path


*> 2.16.41.0/24 89.149.178.10 10 0 3257 i
*> 2.16.82.0/23 89.149.178.10 10 0 3257 i
*> 2.16.158.0/24 89.149.178.10 10 0 3257 i
*> 2.16.208.0/24 89.149.178.10 10 0 3257 i
‫ محمد شايع‬/‫إعداد م‬
*> 2.16.209.0/24 89.149.178.10 10 0 3257 i
*> 2.16.210.0/24 89.149.178.10 10 0 3257 i
*> 2.16.211.0/24 89.149.178.10 10 0 3257 i
*> 2.17.128.0/20 89.149.178.10 10 0 3257 i
*> 2.17.200.0/22 89.149.178.10 10 0 3257 i
*> 2.19.192.0/20 89.149.178.10 10 0 3257 i
*> 2.20.48.0/22 89.149.178.10 10 0 3257 i
*> 2.21.32.0/20 89.149.178.10 10 0 3257 i
...................
:‫ التالي‬code ‫ لذلك فسوف نستخدم‬filter ‫ففي حالة رغبنا بعمل‬
ip as‐path access‐list 1 permit ^3257$
route‐map AS_PATH_FILTER permit 10
match as‐path 1
router bgp 1
neighbor 213.200.64.93 remote‐as 3257
neighbor 213.200.64.93 route‐map AS_PATH_FILTER in
.‫ والسماح للبقية‬AS 56203 ‫ التي تم توليدها من‬prefixes ‫الكود التالي سوف يمنع كل‬
ip as‐path access‐list 1 deny _56203$
ip as‐path access‐list 1 permit .*
route‐map AS_PATH_FILTER permit 10
match as‐path 1
router bgp 1
neighbor 213.200.64.93 remote‐as 3257
neighbor 213.200.64.93 route‐map AS_PATH_FILTER in
.‫ بينما سوف نمنع البقية‬ASes ‫ والمتصلة معها بشكل مباشر من‬AS 3257 ‫ من‬prefixes ‫في المثال التالي سوف نسمح لكل‬
ip as‐path access‐list 1 permit ^3257_[0‐9]*$
route‐map AS_PATH_FILTER permit 10
match as‐path 1
router bgp 1
neighbor 213.200.64.93 remote‐as 3257
neighbor 213.200.64.93 route‐map AS_PATH_FILTER in
‫[ وهذا يعني‬0-9] ‫ يأتي مباشرة‬.‫ يليه الرمز _ وهذا سوف يضمن وجود فراغ‬.prefixes ‫ الي المولدة لـ‬AS ‫^ ان هذا بداية‬3257 ‫بالطبع سوف يعني‬
‫ ثم‬.AS 1234 ‫ وأيضا‬AS123 ‫ ثم‬AS 12 ‫ ثم‬.‫ تشملها‬AS1 ‫ ثم * وهذا يعني تكرار األرقام السابقة ليضمن ان‬.9 ‫ الى‬0 ‫انها األرقام التي تبدأ من‬
.‫ واحدة‬AS ‫ من اجل ضمان فقط‬$ ‫نجد ان‬
BGP Prevent Transit AS
.AS ‫ من‬prefixes ‫ وذلك ألنك قد تستقبل‬trasit AS ‫قد تصبح في لحظة‬
.‫ المجاورة‬AS ‫ الى‬prefixes ‫بدورك سوف تقوم بعملية اإلعالن عن تلك‬
AS ‫ المجاورة تمر عبر‬AS ‫ التي تتجه الى‬prefixes ‫هذا سوف يجعل كل‬
.‫التي لديك‬
!‫سيناريوا مثل هذا سوف يمثل معضلة يجب حلها‬

:transit AS ‫ بشكل‬AS ‫توجد اربع طرق من اجل منع بقاء‬


 Filter-list with AS PATH access-list.
 No-Export Community.
 Prefix-list Filtering.
 Distribute-list Filtering.
.‫تعتبر الطريقة األولى هي األنسب‬
‫ محمد شايع‬/‫إعداد م‬
R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.12.2 remote‐as 2
R1(config‐router)#neighbor 192.168.13.3 remote‐as 3

ISP1(config)#router bgp 2
ISP1(config‐router)#neighbor 192.168.12.1 remote‐as 1

ISP2(config)#router bgp 3
ISP2(config‐router)#neighbor 192.168.13.1 remote‐as 1

R1(config)#router bgp 1
R1(config‐router)#network 1.1.1.0 mask 255.255.255.0

ISP1(config)#router bgp 2
ISP1(config‐router)#network 2.2.2.0 mask 255.255.255.0

ISP2(config)#router bgp 3
ISP2(config‐router)#network 3.3.3.0 mask 255.255.255.0
:transit AS ‫لنرى اننا فعال في هذه الحالة عبارة عن‬
ISP1#show ip bgp
BGP table version is 4, local router ID is 11.11.11.11
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 192.168.12.1 0 0 1 i
*> 2.2.2.0/24 0.0.0.0 0 32768 i
*> 3.3.3.0/24 192.168.12.1 0 1 3 i

ISP2#show ip bgp
BGP table version is 4, local router ID is 33.33.33.33
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 192.168.13.1 0 0 1 i
*> 2.2.2.0/24 192.168.13.1 0 1 2 i
*> 3.3.3.0/24 0.0.0.0 0 32768 i

Filter-list with AS PATH access-list


:‫ كما يلي‬.‫ والتي تعتبر من أكثر الحلول مالئمة‬AS PATH access-list ‫ مع وجود‬filter-list ‫دعنا نستخدم أولى الخطوات وهي‬
R1(config)#ip as‐path access‐list 1 permit ^$
R1(config‐router)#neighbor 192.168.12.2 filter‐list 1 out
R1(config‐router)#neighbor 192.168.13.3 filter‐list 1 out
.clear ip bgp * ‫ بعد عملية‬.local AS ‫^ سوف يعني عملية اإلعالن ستكون فقط من‬$ ‫بالطبع وجود‬
‫ محمد شايع‬/‫إعداد م‬
R1#show ip bgp
BGP table version is 4, local router ID is 22.22.22.22
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 0.0.0.0 0 32768 i
*> 2.2.2.0/24 192.168.12.2 0 0 2 i
*> 3.3.3.0/24 192.168.13.3 0 0 3 i

ISP1#show ip bgp
BGP table version is 7, local router ID is 11.11.11.11
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 192.168.12.1 0 0 1 i
*> 2.2.2.0/24 0.0.0.0 0 32768 i

ISP2#show ip bgp
BGP table version is 7, local router ID is 33.33.33.33
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 192.168.13.1 0 0 1 i
*> 3.3.3.0/24 0.0.0.0 0 32768 i
!transit AS ‫ لم نعد‬.1.1.1.0/24 ‫ فقط إال الشبكة‬ISP1 and ISP2 ‫لم يعرف‬
No-Export Community
:‫بالطبع تعمل بشكل جيد أيضا كما يلي‬
R1(config)#route‐map NO‐EXPORT
R1(config‐route‐map)#set community no‐export
R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.12.2 route‐map NO‐EXPORT in
R1(config‐router)#neighbor 192.168.13.3 route‐map NO‐EXPORT in
:‫ فكان البد من استخدام االمر‬R1 ‫ وذلك لـ‬IBGP ‫ وكان‬router ‫ في حالة كان لدينا أكثر من‬.‫ واحد‬router ‫لدينا فقط‬
neighbor <ip> send-community
:‫لنرى النتائج كما يلي‬
ISP1#show ip bgp
BGP table version is 7, local router ID is 11.11.11.11
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 192.168.12.1 0 0 1 i
*> 2.2.2.0/24 0.0.0.0 0 32768 i
‫ محمد شايع‬/‫إعداد م‬

ISP2#show ip bgp
BGP table version is 7, local router ID is 33.33.33.33
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 192.168.13.1 0 0 1 i
*> 3.3.3.0/24 0.0.0.0 0 32768 i
Prefix-List Filtering
.prefix-list ‫ سوف تضطر إلى إعادة إعداد‬prefixes ‫هي ليست الحل األمثل حيث ان في كل وقت تريد ان تضيف‬
R1(config)#ip prefix‐list NO‐TRANSIT permit 1.1.1.0/24
R1(config‐router)#neighbor 192.168.12.2 prefix‐list NO‐TRANSIT out
R1(config‐router)#neighbor 192.168.13.3 prefix‐list NO‐TRANSIT out

Distribute-list Filtering
.distribute-list ‫هذه الطريقة مشابهة للسابقة ولكن باستخدام‬
R1(config)#ip access‐list standard NO‐TRANSIT
R1(config‐std‐nacl)#permit 1.1.1.0 0.0.0.255
R1(config‐router)#neighbor 192.168.12.2 distribute‐list NO‐TRANSIT out
R1(config‐router)#neighbor 192.168.13.3 distribute‐list NO‐TRANSIT out

BGP Route Reflector

،‫ هي انه قد يكون لدينا شبكة كبيرة‬IBGP ‫نحن نعرف ان المشكلة في‬


.Full IBGP mesh ‫ بـ‬AS ‫ داخل‬routers ‫نقوم بإعداد‬
:‫ هي حسب المعادلة‬IBGP ‫ التي ستكون في‬adjacencies ‫بالطبع فإن عدد‬
.X*(X-1)/2
.)45 IBGP neighbor adjacencies( ‫ فإن المجموع‬10 IBGP routers ‫لو كان لديك‬
.‫بالطبع هذا عدد كبير وبالتالي فإن الشبكات الكبيرة ستكون معقدة جدا في حالة استخدمنا الحال السابق‬
‫إذا ما هو الحل؟‬
:‫هما حالن‬
 BGP Route Reflectors
 BGP Confederations
‫إعداد م‪ /‬محمد شايع‬
‫)‪ Route reflectors(RR‬سوف نحتاج لتطبيق خاصية ‪ RR‬وذلك من أجل الغاء الحاجة الى وجود ‪ ،full mesh‬مبدأ عمل ‪ RR‬مشابه لعمل‬
‫‪ OSPF DR‬حيث ان جميع ‪ routers‬سوف تحتاج الى عمل ‪ peering‬مع ‪ RR‬فقط‪ ،‬وبالتالي سوف يتم ارسال ‪ update‬فقط الى ‪ RR‬ثم يقوم ‪RR‬‬
‫بعملية ارسال ‪ update‬الى كل ‪ clients‬المتصلة معه‪ .‬ولن يتم تغيير أي ‪ attributes‬في حالة عمل ‪.reflecting routes‬‬

‫ومن اهم مزايا ‪ RR‬هي‪:‬‬


‫‪ ‬سهولة التصميم‬
‫‪ ‬سهولة التطوير‬
‫‪ ‬سهولة اإلدارة‪.‬‬

‫‪Router Reflection Cluster‬‬


‫وكما في الشكل يتم تصميم ‪ RR Cluster‬لتضم مجموعة من ‪ clients‬ويكون فيها‬
‫‪ Cluster ID‬مكون من ‪ 32-bit‬وعادة يكون هو ‪ ،Router-ID‬يعمل ‪ RR‬على‬
‫االتصال بطريقة ‪ internal neighbors‬داخل ‪ cluster‬وكذلك خارج ‪،cluster‬‬
‫بينما ‪ RR clients‬تعمل ‪ Peer‬فقط مع ‪.RR‬‬
‫كيف يعمل ‪ IBGP route reflection‬على منع أي ‪loop‬؟‬
‫الجواب من خالل ان ‪ RR‬سوف يقوم بـ ‪ discard routes‬التي تم استقبالها من ‪ Cluster-ID‬التابعة له‪.‬‬
‫أنواع ‪:route reflector‬‬

‫‪ EBGP peers ‬في حالة استقبل أي ‪ routes‬فإنه سوف يتم تمريرها الى ‪.EBGP peers, Clients, & Non-Clients‬‬
‫‪ iBGP Client Peers ‬في حالة استقبل أي ‪ routes‬فإنه سوف يتم تمريرها الى ‪.EBGP peers, Clients, & Non-Clients‬‬

‫‪ iBGP Non Client Peers ‬في حالة استقبل أي ‪ routes‬فإنه سوف يتم تمريرها الى ‪.EBGP peers & Clients‬‬
‫إعداد م‪ /‬محمد شايع‬
‫‪Redundant Route Reflectors‬‬
‫في حالة ان ‪ RR fail‬فإن المشكلة ان ‪ clients‬لن تجد طريقة لكي تستقبل بها ‪ ،routes‬ولذلك ال بد من وجود ‪ redundancy‬لكي يتم إلغاء االعتماد‬
‫على ‪ ،single point of failure‬فعند التصميم لمعمارية ‪ RR‬فإن ‪ clients‬ال تعرف انها ‪ ،RR clients‬أي ان ‪ clients‬من الممكن ان تكون‬
‫‪ clients‬لعدد من ‪.RR‬‬

‫كما انه قد يتداخل ‪ RR‬بشكل هرمي بحيث انه من الممكن ان يكون هناك ‪ RR client‬في أي ‪ cluster‬بينما يكون ‪ RR‬في ‪ cluster‬اخر كما في‬
‫الشكل‪.‬‬

‫‪:Looping in Route Reflector Topologies‬‬


‫في قواعد ‪ IBGP‬توجد هناك طريقة لمنع حدوث أي ‪ loop‬عن طريق عدم اإلعالن عن اي ‪ route‬تمت معرفته من ‪ IBGP‬الى ‪ IBGP‬اخر‪ .‬لكن‬
‫االمر مختلف فيما يخص ‪ RR‬حيث أن ‪ RRs‬يعلن عن ‪ prefixes‬التي تمت معرفتها من ()‪ )IBGP peers (clients‬الى (‪ .)IBGP peers‬لهذا‬
‫البد من آليه لمنع حدوث ‪ loop‬في ‪ RR topologies‬حيث يوجد هناك نوعين من انواع ‪ loop‬المحتملة وهي‪:‬‬
‫‪Intra-cluster loops‬‬
‫حيث يتم االعالن من قبل ‪ client‬الى ‪ RR‬ومن ثم يعمل ‪ RR‬على‬
‫االعالن الى ‪ client‬االخر وبعدها يرسل ذلك ‪ client‬الى ‪client‬‬
‫المرسل‪.‬‬
‫الحل‪:‬‬
‫من خالل ‪ ORIGINATOR_ID‬وذلك من خالل قيام ‪ RR‬بإضافة‬
‫‪ ORIGINATOR_ID‬الى ‪ routes‬التي سوف ترسل الى ‪.clients‬‬
‫حيث ان ‪ ORIGINATOR_ID=RID‬لـ ‪ client‬الذي أعلن عن ‪.routes‬‬
‫ محمد شايع‬/‫إعداد م‬
Inter-cluster loop
update ‫ يرسل‬client ‫كما نعرف ان‬
‫ وبالتالي سوف‬EBGP ‫ وكذلك الى‬RR
‫ االول‬RR ‫ الن‬loop ‫يسبب ذلك في‬
‫ سوف‬10.50.255.1 ‫المسمى بـ‬
.‫ ولكن مكرره‬updates ‫يستقبل‬
‫الحل‬
‫ وذلك‬CLUSTER_LIST ‫يتم من خالل‬
Cluster Ids ‫من خالل إضافة قائمة‬
‫ الذي يتم إرساله وهذا‬updates ‫الى‬
.AS_PATH ‫يماثل‬
local Cluster ID ‫ يضيف‬RR ‫حيث ان‬
.clients ‫ التي تمت عملية استقبالها من‬route ‫ لـ‬CLUSTER_LIST ‫إلى قائمة‬
.updates ‫ يحذف ذلك‬RR ‫ فإن‬local Cluster ID ‫ يحتوي على‬RR ‫ يصل الى‬updates ‫ففي حالة كان أي‬
:RR ‫ في‬peerings ‫وكملخص للموضع سيكون لدينا ثالثة أنواع من‬

 EBGP neighbor
 IBGP client neighbor
 IBGP non-client neighbor

.client or non-client ‫ هو عبارة عن‬IBGP router ‫ ما إذا كان‬router ‫عند اإلعدادات يجب ان تخبر‬
.‫سوف نأخذ المثال كما في الشكل ادناه‬
.BGP ‫ بالنسبة لـ‬basic configuration ‫ لن يكون هناك أي اختالف في‬clients ‫بالطبع كل‬
R1(config)#router bgp 123
R1(config‐router)#neighbor 192.168.12.2 remote‐as 123

R3(config)#router bgp 123


R3(config‐router)#neighbor 192.168.23.2 remote‐as 123

:RR ‫فيما يخص‬


R2(config)#router bgp 123
R2(config‐router)#neighbor 192.168.12.1 remote‐as 123
R2(config‐router)#neighbor 192.168.12.1 route‐reflector‐client

R2(config‐router)#neighbor 192.168.23.3 remote‐as 123


R2(config‐router)#neighbor 192.168.23.3 route‐reflector‐client
‫ محمد شايع‬/‫إعداد م‬
.‫ ونرى ماذا سوف يحصل‬loopback ‫دعنا نضيف‬

R1(config)#router bgp 123


R1(config‐router)#network 1.1.1.1 mask 255.255.255.255
.‫في البداية سوف نستعرض ما حصل‬

R2#show ip bgp 1.1.1.1


BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Flag: 0x820
Advertised to update‐groups:
1
Local, (Received from a RR‐client)
192.168.12.1 from 192.168.12.1 (192.168.12.1)
Origin IGP, metric 0, localpref 100, valid, internal, best
.R3 ‫ الى‬route ‫لنرى هل وصل‬

R2#show ip bgp neighbors 192.168.23.3 advertised‐routes


BGP table version is 2, local router ID is 192.168.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i ‐
internal,
r RIB‐failure, S Stale
Origin codes: i ‐ IGP, e ‐ EGP, ? ‐ incomplete
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.1/32 192.168.12.1 0 100 0 i
.R3 ‫لنرى ذلك في‬

R3#show ip bgp 1.1.1.1


BGP routing table entry for 1.1.1.1/32, version 0
Paths: (1 available, no best path)
Not advertised to any peer
Local
192.168.12.1 (inaccessible) from 192.168.23.2 (192.168.23.2)
Origin IGP, metric 0, localpref 100, valid, internal
Originator: 192.168.12.1, Cluster list: 192.168.23.2
:‫هنا لدينا حقلين مهمين وهما‬

 Originator
 Cluster List

‫ ولكن ما هو العرض من ذلك؟‬R2 ‫تم إضافة المعلومات او الحقلين بواسطة‬


.loop ‫العرض بالطبع كما تحدثنا من قبل هو من اجل منع حصول أي‬
‫ فإنه‬update ‫ القادم كـ‬route ‫ التي لديه موجود مع‬originator ID ‫ نفس‬IBGP ‫ هو انه عندما يالحظ‬originator ID ‫الفائدة األولى من وجود‬
.route ‫في هذه الحالة سوف يسارع الى عدم قبول ذلك‬
‫إعداد م‪ /‬محمد شايع‬
‫الحقل الثاني وهو ‪ Cluster list‬وهو عبارة عن ‪ router ID‬لـ ‪ .RR‬فعندما يصل الى ‪ RR‬نفس ‪ Cluster list‬التي لديه قادمة كـ ‪ update‬فإنه‬
‫في هذه الحالة سوف يتجه الى عدم قبول ذلك ‪.update‬‬
‫‪BGP Confederation‬‬
‫في ‪ BGP Confederation‬سوف يتم تقسيم ‪ AS‬الى ‪ sub-AS‬من اجل تقليل عدد ‪ .IBGP peers‬داخل ‪ sub-AS‬بالطبع سوف يكون هناك‬
‫‪ full-mesh IBGP‬لكن بين ‪ sub-ASes‬سوف يكون هناك شيء يشبه ‪ EBGP‬لكن يسلك نفس سلوك ‪ IBGP‬وهذا ما نطلق عليه‬
‫‪.Confederation BGP‬‬
‫يكون رقم كل ‪ Sub-AS‬احد التالي (‪ .)65535 – 64512‬وتستخدم في الشبكات الكبيرة جدا التي من الصعب فيها التنظيم الى ‪route reflection‬‬
‫‪clusters‬‬
‫في الشكل ادناه نالحظ انه تم تقسيم ‪ AS 2105‬الى )‪ sub-Ass (Confederation autonomous systems‬بحيث تكون من الداخل وكأنها‬
‫مجموعة من ‪ ASs‬بينما من الخارج عبارة عن ‪ AS‬واحدة‬
‫‪ Confederation ID‬والذي هو عبارة عن رقم ‪ AS‬الذي في الشكل يكون ‪.2105‬‬
‫يتم تفعيل ‪ IBGP‬داخل ‪ ،sub-Ass‬بينما يتم تفعيل (‪ )Confederation EBGP‬بين كل ‪ sub-Ass‬واخرى‪.‬‬

‫‪Confederation Modification of EBGP Rules‬‬

‫يوجد ثالثة ‪ attributes‬ال يتم تعديلها اثناء مرورها على ‪ confederation‬وهي‪:‬‬

‫‪ NEXT_HOP‬والتي تحتفظ بقيمتها عبر كل ‪ confederation‬وال يتم تغييرها بواسطة ‪.Confederation EBGP neighbors‬‬ ‫‪‬‬
‫‪ LOCAL_PREF‬والتي تحتفظ بقيمتها في ‪.confederation‬‬ ‫‪‬‬
‫‪ MED‬والتي تمرر عبر ‪ confederation‬أي تمرر ما بين عدة ‪ sub-ASs‬بدون تغيير‪.‬‬ ‫‪‬‬

‫‪Loop Prevention in Confederation Topologies‬‬

‫‪ AS_CONFED_SEQUENCE path attribute‬وهي قائمة تجمع كل ‪ sub-AS‬التي يمر عبرها ‪ route‬يتم تطبيقها بنفس الطريقة‬ ‫‪‬‬
‫التي تطبق بها ‪ AS_PATH‬حيث انه يتم حذف أي ‪ routes‬في حالة كان رقم ‪ local sub-AS‬موجود في قائمة‬
‫‪.AS_CONFED_SEQUENCE‬‬
‫‪ AS_CONFED_SET path attribute‬وتستخدم بين ‪.sub-ASs‬‬ ‫‪‬‬
‫‪ AS_CONFED_SEQUENCE and AS_CONFED_SET‬ال تستخدم خارج ‪ confederation‬أي ال ترسل خارج ‪normal‬‬ ‫‪‬‬
‫‪ )EBGP) peers‬ويتم ارسال ‪ AS_PATH‬بدال عنه مع ‪ Confederation ID‬في القائمة‪.‬‬
‫ محمد شايع‬/‫إعداد م‬
:‫دعنا نستطلع المثال التالي كما يلي‬

OSPF Configuration
R2(config)#router ospf 1
R2(config‐router)#network 192.168.23.0 0.0.0.255 area 0
R2(config‐router)#network 192.168.24.0 0.0.0.255 area 0
R2(config‐router)#network 2.2.2.2 0.0.0.0 area 0

R3(config)#router ospf 1
R3(config‐router)#network 192.168.23.0 0.0.0.255 area 0
R3(config‐router)#network 192.168.35.0 0.0.0.255 area 0
R3(config‐router)#network 3.3.3.3 0.0.0.0 area 0

R4(config)#router ospf 1
R4(config‐router)#network 192.168.24.0 0.0.0.255 area 0
R4(config‐router)#network 192.168.45.0 0.0.0.255 area 0
R4(config‐router)#network 4.4.4.4 0.0.0.0 area 0

R5(config)#router ospf 1
R5(config‐router)#network 192.168.35.0 0.0.0.255 area 0
R5(config‐router)#network 192.168.45.0 0.0.0.255 area 0
R5(config‐router)#network 5.5.5.5 0.0.0.0 area 0

BGP Confederation Configuration


R2(config)#router bgp 24
R2(config‐router)#bgp confederation identifier 2
R2(config‐router)#bgp confederation peers 35
R2(config‐router)#neighbor 4.4.4.4 remote‐as 24
R2(config‐router)#neighbor 4.4.4.4 update‐source loopback 0
R2(config‐router)#neighbor 3.3.3.3 remote‐as 35
R2(config‐router)#neighbor 3.3.3.3 update‐source loopback 0
R2(config‐router)#neighbor 3.3.3.3 ebgp‐multihop 2
‫ بعدها تم عمل تحديد ماهي‬.(bgp confederation identifier 2) ‫ االم من خالل‬AS ‫ ثم اعلنا على‬sub-AS ‫كما الحظنا اننا عرفنا في البداية‬
.)bgp confederation peers 35( ‫ التي في الجوار من خالل االمر‬sub-AS
R3(config)#router bgp 35
R3(config‐router)#bgp confederation identifier 2
R3(config‐router)#bgp confederation peers 24
R3(config‐router)#neighbor 2.2.2.2 remote‐as 24
R3(config‐router)#neighbor 2.2.2.2 update‐source loopback 0
R3(config‐router)#neighbor 2.2.2.2 ebgp‐multihop 2
R3(config‐router)#neighbor 5.5.5.5 remote‐as 35
R3(config‐router)#neighbor 5.5.5.5 update‐source loopback 0
‫ محمد شايع‬/‫إعداد م‬
R4(config)#router bgp 24
R4(config‐router)#bgp confederation identifier 2
R4(config‐router)#bgp confederation peers 35
R4(config‐router)#neighbor 2.2.2.2 remote‐as 24
R4(config‐router)#neighbor 2.2.2.2 update‐source loopback 0
R4(config‐router)#neighbor 5.5.5.5 remote‐as 35
R4(config‐router)#neighbor 5.5.5.5 update‐source loopback 0
R4(config‐router)#neighbor 5.5.5.5 ebgp‐multihop 2

R5(config)#router bgp 35
R5(config‐router)#bgp confederation identifier 2
R5(config‐router)#bgp confederation peers 24
R5(config‐router)#neighbor 4.4.4.4 remote‐as 24
R5(config‐router)#neighbor 4.4.4.4 update‐source loopback 0
R5(config‐router)#neighbor 4.4.4.4 ebgp‐multihop 2
R5(config‐router)#neighbor 3.3.3.3 remote‐as 35
R5(config‐router)#neighbor 3.3.3.3 update‐source loopback 0
.‫قبل ان نستعرض هناك إضافة بسيطة‬
R5(config)#interface loopback 5
R5(config‐if)#ip address 55.55.55.55 255.255.255.255
R5(config)#router bgp 35
R5(config‐router)#network 55.55.55.55 mask 255.255.255.255
.sub-AS ‫ الذي يعتبر في نفس‬R3 ‫لنبدأ أوال بما يحصل في‬
R3#show ip bgp 55.55.55.55
BGP routing table entry for 55.55.55.55/32, version 2
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Flag: 0x820
Advertised to update‐groups:
2
Local
5.5.5.5 (metric 2) from 5.5.5.5 (5.5.5.5)
Origin IGP, metric 0, localpref 100, valid, confed‐internal, best
.sub-AS ‫ في نفس‬IBGP router ‫ والذي يعني انه قادم من‬.confed-internal ‫ عليه وهو‬tag ‫ تم وضع‬Route ‫االختالف هنا هو ان‬
.R2 ‫لنرى االختالف في‬
R2#show ip bgp 55.55.55.55
BGP routing table entry for 55.55.55.55/32, version 2
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Flag: 0x820
Advertised to update‐groups:
2
(35)
5.5.5.5 (metric 3) from 3.3.3.3 (3.3.3.3)
Origin IGP, metric 0, localpref 100, valid, confed‐external, best
‫ محمد شايع‬/‫إعداد م‬
‫ والذي يعني ان‬35 ‫ حيث انه في األعلى الرقم‬.sub-ASes ‫ وهذا ملحق بقائمة من‬.AS_CONFED_SET ‫ جديد وهو‬attribute ‫لدينا هو‬
‫ لكن عندما يرسل‬.‫ أي عملية اإللحاق‬prepending ‫ سوف تظهر‬R2 ‫ الى‬update ‫ أي‬R3 ‫ فعندما يرسل‬.‫ أخرى‬sub-AS 35 ‫ جاء من‬Route
.‫ سوف تحذف‬sub-AS ‫ فإن كل‬،‫ أخرى‬AS ‫ الى‬route
R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.12.2 remote‐as 2
R2(config)#router bgp 24
R2(config‐router)#neighbor 192.168.12.1 remote‐as 1
Let's see what R1 in AS 1 thinks of the 55.55.55.55/32 route:
R1#show ip bgp 55.55.55.55
BGP routing table entry for 55.55.55.55/32, version 2
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Flag: 0x820
Not advertised to any peer
2
192.168.12.2 from 192.168.12.2 (2.2.2.2)
Origin IGP, localpref 100, valid, external, best
.sub-AS ‫ وال وجود ألي‬R1 ‫ هي فقط التي يراها‬AS 2 ‫كما نالحظ ان‬
.R1 ‫دعنا االن نعلن عن شيء ما من‬
R1(config)#interface loopback 1
R1(config‐if)#ip address 11.11.11.11 255.255.255.255
R1(config)#router bgp 1
R1(config‐router)#network 11.11.11.11 mask 255.255.255.255
.R2 ‫في‬
R2(config)#router bgp 24
R2(config‐router)#network 192.168.12.0 mask 255.255.255.0

R2#show ip bgp 11.11.11.11


BGP routing table entry for 11.11.11.11/32, version 3
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Flag: 0x820
Advertised to update‐groups:
1 2
1
192.168.12.1 from 192.168.12.1 (192.168.12.1)
Origin IGP, metric 0, localpref 100, valid, external, best
‫ محمد شايع‬/‫إعداد م‬
R4 ‫لنرى‬
R4#show ip bgp 11.11.11.11
BGP routing table entry for 11.11.11.11/32, version 9
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Flag: 0x820
Advertised to update‐groups:
1
1
192.168.12.1 (metric 2) from 2.2.2.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, confed‐internal, best
.confed-internal ‫لقد تم إضافة‬
.R3 ‫كيف الحال اذا في‬
R3#show ip bgp 11.11.11.11
BGP routing table entry for 11.11.11.11/32, version 6
Paths: (1 available, best #1, table Default‐IP‐Routing‐Table)
Advertised to update‐groups:
1
(24) 1
192.168.12.1 (metric 2) from 2.2.2.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, confed‐external, best
.confed-external ‫تم إضافة‬
.R5 ‫اما‬
R5#show ip bgp 11.11.11.11
BGP routing table entry for 11.11.11.11/32, version 6
Paths: (2 available, best #2, table Default‐IP‐Routing‐Table)
Advertised to update‐groups:
2
(24) 1
192.168.12.1 (metric 3) from 4.4.4.4 (4.4.4.4)
Origin IGP, metric 0, localpref 100, valid, confed‐external
(24) 1
192.168.12.1 (metric 3) from 3.3.3.3 (3.3.3.3)
Origin IGP, metric 0, localpref 100, valid, confed‐internal, best
.R3 ‫ من‬route ‫( وذلك عندما تم معرفة‬confed-internal) ‫هنا خيارين وهما‬
.internal ‫ وهنا اختار األفضل وهو‬.R4 ‫ من‬route ‫( وذلك عندما تمت معرفة‬confed-external) ‫اما الخيار الثاني وهو‬
Multiprotocol BGP (MP-BGP) Configuration

You might also like