Professional Documents
Culture Documents
BGP PDF
BGP PDF
في حالة كان النوع 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
الحل:
لكن ماذا لو كان هناك تحكم بشكل منفصل لكل مجموعة
من routersأي فصلها كما في الشكل المقابل.
إعداد م /محمد شايع
وبالتالي سوف يعمل على مجموعة من routers
أي IGP routing protocolsكما في الشكل المقابل.
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
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لكي يتم
االختيار.
اختيار أقصر .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
سوف يعمل 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؟
الحل في وجود عالقة ما بين R1 and R3داخل AS2وبالتالي وصول prefix 10.1.0.0/16على انه قادم R1الى
R3عن طريق ،R2كما في الشكل ادناه.
يقوم R3باإلعالن عن prefix 10.1.0.0/16الى AS3من خالل .EBGP
الحل لهذه المعضلة هو وجود 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
وهنا تعتبر شبكات تستخدم transit ASمن اجل ان تتصل بها للعبور الى شبكات أخرى.
عندما يتفق أكثر من ISPمن اجل مشاركة .routesفهذا يعني .peering agreement
يندرج تحت مسمي 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الثاني لكن الى router
اخر او بمعنى اخر الى EBGPاخر كما هو واضح في الشكل المقابل.
تم حل المشكلة!
ليس بعد.
لماذا؟
ماذا لو ان single ASتعرضت لحالة من عدم الوصول لسبب ما.
هنا سيكو الحل هو ان يكون لدي أكثر من ASsمتصل بها.
كما يبين ذلك الشكل ادناه.
إعداد م /محمد شايع
هل تم حل المشكل؟
ليس كما تتخيل!
بالطبع مثل الشبكة ادناه سوف يزيد عليك costمن اجل تتصل بأكثر من .AS
تحفيض في حجم BGP updatesوذلك من خالل المساهمة في عملية االقتصاد في الموارد.
تحفيض في حجم BGP tablesوذلك يساهم في .internet scalability
حجب عدم استقرار في أي individual prefixوذلك يساهم في .Internet stability
محمد شايع/إعداد م
Injecting Aggregate Routes
:يوجد هناك طريق لتنفيذ ذلك
يستخدم فقط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 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
.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
يجب وجود Next-hopفي routing tableوذلك تجنبا ألي .route recursion failure
اما ان تطبق قاعدة Synchronizationاو تعطلها التي من الممكن ان تسبب loopوفي جميع انظمة التشغيل الحديثة تكون معطلة
بشكل اوتوماتيكي.
يجب عدم احتواء AS-Pathعلى .Local-AS
اول ASNيجب ان تكون .neighbor’s ASN
في حالة التساوي في قيمة ،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
R1
R1
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 في
.ال مشكلة
إذاً اين المشكلة؟.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
االن دور المثال التالي للتوضيح:
: كما يليTTL=0 سوف يتم إنقاصها لتصبحTTL=1 لكنR3 االتصال معR1 يحاول
لمنفذ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)#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
محمد شايع/إعداد م
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
: دعنا االن نقوم بعملية وضع التالي.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
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
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 لقد انتقل المسار الى
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
وذلك منexit path ونستطيع استخدامها من اجل اختيارBGP policy الثانية من حيث الترتيب فيBGP attribute local preference تعتبر
: لها العديد من الخصائص وهي.AS
.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
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
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
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.
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
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(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 *
R1(config)#router bgp 1
R1(config‐router)#neighbor 192.168.12.2 route‐map NO_EXPORT out
R2#clear ip 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
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
Examples
^$ matches an empty AS PATH so it will match all prefixes from the local AS.
_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.
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.
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
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
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اخر كما في
الشكل.
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
Originator
Cluster List
NEXT_HOPوالتي تحتفظ بقيمتها عبر كل confederationوال يتم تغييرها بواسطة .Confederation EBGP neighbors
LOCAL_PREFوالتي تحتفظ بقيمتها في .confederation
MEDوالتي تمرر عبر confederationأي تمرر ما بين عدة sub-ASsبدون تغيير.
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
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