EVPN EBGP از طریق IPv4 EBGP «وبلاگ ipSpace.net

در پستهای وبلاگ قبلی، ما سه طرح اصلی EVPN را بررسی کردیم: به EVPN نیاز نداریم، IBGP EVPN AF روی حلقههای تبلیغاتی IGP (روشی که EVPN برای استفاده طراحی شده است) و EVPN فقط EBGP (اجرای EVPN AF به صورت موازی با IPv4 AF).
اکنون وارد سرزمین عجایب می شویم: تا حدودی غیرعادی کارهایی که فروشندگان انجام می دهند تا چیزهای موجودشان کار کند در حالی که وانمود می کنند که جذاب به نظر می رسند. ما با EBGP-over-EBGP شروع می کنیم، و برای درک اینکه چرا کسی می خواهد چنین کاری را انجام دهد، باید به اصول اولیه بازگردیم.
به این صورت است که EVPN برای استفاده طراحی شده است:
- جلسات IGP بر روی رابط های فیزیکی ایجاد می شوند.
- IGP آدرس های IP Loopback را مبادله می کند.
- جلسات IBGP بین آدرس های IP حلقه بک برقرار می شود.
طراحی بیش از حد ساده شده IBGP-over-IGP
در اینجا نحوه اجرای EVPN ارائه دهندگانی که تصمیم گرفتند با مراکز داده فقط EBGP همه کاره شوند، آمده است:
- جلسات EBGP بر روی رابط های فیزیکی ایجاد می شوند.
- خانواده آدرس IPv4 و EVPN در این جلسات EBGP فعال می شوند.

طراحی بیش از حد ساده فقط برای EBGP
در اینجا برخی از فروشندگان فکر می کنند که باید مرکز داده فقط EBGP خود را مستقر کنید:

طراحی بیش از حد ساده فقط برای EBGP
چرا کسی می خواهد چنین چیزی را توصیه کند؟ من دو کلمه برای شما دارم: Route Churn.
EVPN مبتنی بر IBGP هیچ Route Churn تولید شده توسط هسته ندارد
روشی که EVPN برای کار در نظر گرفته شده بود، جلسات IBGP EVPN را ثابت نگه داشت. هر اتفاقی که برای اتصالات در شبکه شما افتاد، تا زمانی که یک مسیر واحد بین همتاهای IBGP وجود داشت، جلسه IBGP فعال بود و تنها بهروزرسانیهای مسیر تولید شده توسط EVPN، مواردی بودند که توسط توپولوژی یا تغییرات نقطه پایانی در لبههای شبکه ایجاد میشدند. .
آسیب بازتابنده در مسیر داستان متفاوتی است. مگر اینکه مسیریابی بازتابنده مسیر پیوسته را اجرا کرده باشید، جلسات IBGP را از دست خواهید داد و بازگرداندن آنها و تبادل مسیرهای EVPN مدتی طول خواهد کشید. با این حال، اگر می توانید یک ساندویچ درست کنید در حالی که سوئیچ مرکز داده شما در حال بارگیری است، سرعت پردازش به روز رسانی EVPN کمترین نگرانی شماست.
در نهایت، هنگامی که یک گره لبه با شکست مواجه میشود، همه شرطها خاموش میشوند و بهتر است مکانیزم دسترسی بالا را در جای خود داشته باشید.
EBGP EVPN Route فقط پس از شکست هسته حذف شود
تمام این خوبی ها با طراحی فقط EBGP از بین رفته اند. جلسه EBGP در لحظه ای که اتصال اولیه قطع می شود، ناپدید می شود، و پس از بازیابی اتصال، شما باید تمام مسیرهای EVPN را مبادله کنید (و می تواند ده ها هزار باشد). حتی بدتر از آن، سوئیچ ستون فقرات از آن زمان مسیرهای برگ را منسوخ کرده است و اکنون به شدت آنها را به سوییچ های برگ دیگر تبلیغ می کند.
شایان ذکر است که بلند کردن سنگین شرح داده شده در پاراگراف قبل فقط یک فعالیت هواپیمای کنترلی است. هیچ تغییری در پوشش انتها به انتها وجود ندارد، اما مسیرهای EVPN به طور موقت یک مسیر جایگزین کمتر داشتند. تمام صفات دیگر بدون تغییر بودو پردازنده ها مشغول بودند.
رفع استهلاک مسیر با EBGP-over-EBGP
حالا تصور کنید مدیر محصول شما با عجله وارد اتاق می شود و فریاد می زند:ما باید EVPN را بیش از EBGP داشته باشیم. شرکت کنندگان از ما سردتر به نظر می رسند و ما را شکست می دهند” در عین حال، زمانی که با فشار دهها هزار بهروزرسانی مواجه هستید، میدانید که استقرار EVPN به خوبی کار نمیکند. چه کاری دارید به PM بگویید او بهتر است یک داستان عالی در مورد اینکه چرا EVPN AF در یک جلسه EBGP بین حلقههایی که توسط یک جلسه معمولی EBGP تبلیغ میشود کاملاً منطقی است. من برخی از این استدلالها را دیدهام که در نظرات وبلاگ به صورت طوطیوار بیان شدهاند، و آنها غیر از پایهای مفهومی نداشتند.به این ترتیب خروج از مسیر را به حداقل می رسانیم“، اما در این صورت ممکن است بپذیرید که مشکل پیاده سازی دارید و ادامه دهید.
اوه، و شما هنوز باید با تمام اشکالات طراحی EVPN فقط EBGP دست و پنجه نرم کنید.
در این مرحله ممکن است ارزش مقایسه پیکربندی (FRRouting) مورد نیاز برای انجام این کار را داشته باشد با طرحی که برای طراحی فقط EBGP نیاز داریم (فقط اگر کسی به شما بگوید که چقدر پیچیدگی کمتری دارد):
پیکربندی FRRouting اجرای طراحی EBGP-over-EBGP
router bgp 65001
bgp router-id 10.0.0.1
no bgp default ipv4-unicast
bgp bestpath as-path multipath-relax
neighbor eth1 interface remote-as 65100
neighbor eth1 description S1
neighbor eth2 interface remote-as 65100
neighbor eth2 description S2
neighbor 10.0.0.5 remote-as 65100
neighbor 10.0.0.5 description S1
neighbor 10.0.0.5 ebgp-multihop
neighbor 10.0.0.5 update-source lo
neighbor 10.0.0.6 remote-as 65100
neighbor 10.0.0.6 description S2
neighbor 10.0.0.6 ebgp-multihop
neighbor 10.0.0.6 update-source lo
!
address-family ipv4 unicast
network 10.0.0.1/32
neighbor eth1 activate
neighbor eth2 activate
maximum-paths 8
exit-address-family
!
address-family l2vpn evpn
neighbor 10.0.0.5 activate
neighbor 10.0.0.5 soft-reconfiguration inbound
neighbor 10.0.0.6 activate
neighbor 10.0.0.6 soft-reconfiguration inbound
advertise-all-vni
vni 101000
rd 10.0.0.1:1000
route-target import 65000:1000
route-target export 65000:1000
exit-vni
advertise-svi-ip
advertise ipv4 unicast
exit-address-family
exit
!
میخ نهایی در این تابوت: تا زمانی که لوپ بک ها را از طریق تمام مسیرهای بالقوه تبلیغ نکنید (نقض اصل مسیریابی بدون دره و از دست دادن تنها مزیتی که EBGP ممکن است نسبت به IGP هایی مانند OSPF داشته باشد)، نمی توانید به روز رسانی ها را از طریق EVPN مبادله کنید. جلسه EBGP (زیرا همتا EBGP در دسترس نیست). جلسه EBGP فعال باقی خواهد ماند (مگر اینکه BFD را بین Loopback ها اجرا کنید)، اما اطلاعات قدیمی خواهند بود، که به طور بالقوه منجر به چالش های شدید ارسال می شود. بهروزرسانیهای مسیر EVPN نوع 2 (MAC+IP) باید به خوبی کار کنند، زیرا برای کنترل تحرک MAC طراحی شدهاند، اما ممکن است با بهروزرسانیهای مسیر EVPN نوع 5 (پیشوند IP) مشکل داشته باشید..
من دیده ام که “طراحی پیشنهادی” فروشنده این مشکل را با اعداد AS مختلف روی سوئیچ های ستون فقرات حل می کند. آنها باعث شدند که جلسات EBGP بین حلقهها به درستی کار کنند، اما EBGP را به نسخه پیچیدهتری از RIP تبدیل کردند، با جلسات EBGP که بین حلقهها اجرا میشوند، نسخه پیچیدهتری از IBGP است. اما هی، آنها مثل مایکروسافت باحال بودند!
توپولوژی EBGP-Everywhere Leaf and Backbone Lab
آیا می خواهید این طرح را در آزمایشگاه آزمایش کنید؟ همین است netlab شرحی از توپولوژی آزمایشگاهی که برای تنظیم آن استفاده خواهیم کرد.
defaults.device: eosprovider: clabplugin: [ ebgp.multihop ]addressing.p2p.ipv4: Trueevpn.as: 65000evpn.session: [ ] # Do not activate EVPN AF on any BGP sessionbgp.multihop.activate.ipv4: [ evpn ] # ... apart from the multihop sessionsbgp.community.ebgp: [ standard, extended ] # Propagate extended community over EBGPbgp.sessions.ipv4: [ ebgp ] # ... and activate IPv4 AF only on EBGP sessionsbgp.multihop.sessions: # Add loopback-to-loopback EBGP multihop sessions- L1-S1- L1-S2- L2-S1- L2-S2- L3-S1- L3-S2- L4-S1- L4-S2fabric:spines: 2leafs: 4spine.bgp.as: 65100leaf.bgp.as: '{ 65000 + count }'groups:_auto_create: Trueleafs:module: [ bgp, vlan, vxlan, evpn ]spines:module: [ bgp, evpn ]hosts:members: [ H1, H2, H3, H4 ]device: linuxvlan.mode: bridgevlans:orange:links: [ H1-L1, H2-L3 ]blue:links: [ H3-L2, H4-L4 ]tools:graphite:
ما مجبور شدیم این تغییرات را در توپولوژی EBGP در همه جا ایجاد کنیم تا کار کند:
- جلسات EBGP بین لوپ بک ها مولتی هاپ هستند، بنابراین ما نیاز داریم ebgp.multihop افزونه (خط 4)
- ما نمی خواهیم EVPN را در هیچ جلسه BGP معمولی (خط 8) اجرا کنیم، فقط جلسات EBGP چند هاپ (مانند 9)
- در نهایت، ما باید جلسات چند هاپ را بسازیم (خطوط 13-21)
با فرض اینکه قبلاً زیرساخت آزمایشگاه را راه اندازی کرده اید، می توانید آزمایشگاه را با آن شروع کنید نت لب بالا فرمان همچنین می توانید آزمایشگاه را در GitHub Codespace اجرا کنید (دایرکتوری موجود است EVPN/ebgp-ebgp) همچنان باید کانتینر Arista cEOS را وارد کنید.
آیا کار می کند
البته وجود دارد. ارزشش را دارد یا نه
من می دانم که برخی از مردم دوست دارند EBGP را به عنوان یک IGP بهتر امتحان کنند، اما اگر ارائه دهنده شما به شما می گوید که EVPN AF را در یک جلسه EBGP بین رابط های حلقه بک اجرا کنید، زمان آن رسیده است که ارائه دهنده یا طراحی خود را تغییر دهید (و IBGP-over-IGP را انتخاب کنید). .



