مقالات

دروازه های Anycast-Only در EVPN نامتقارن IRB « وبلاگ ipSpace.net


در پست قبلی وبلاگ توضیح دادم که چگونه ARP در یک محیط IRB نامتقارن EVPN کار می کند که در آن دستگاه های PE یک آدرس MAC/IP تصادفی را به اشتراک می گذارند. علاوه بر آدرس MAC/IP unicast. امروز بیایید ببینیم که اگر دستگاه های پلی اتیلن دارا باشند، کارها چقدر خوب کار می کنند فقط آدرس MAC/IP anycast:

ارسال بسته در طراحی IRB نامتقارن EVPN با استفاده از تنها دروازه‌ها برای هر انتقال

ایده استفاده از آدرس MAC/IP یکسان در چندین دستگاه متصل به یک VLAN (بسط یافته) باید شما را بسیار عصبی کند، اما این مدرن باید مقابله کنیم

حتی اگر دستگاه‌های PE بسیار مراقب باشند که روی انگشتان یکدیگر قرار نگیرند (مثلاً آنها معمولاً آدرس MAC/IP مشترک را به عنوان مسیر EVPN تبلیغ نمی‌کنند)، انتظار نداشته باشید که پروتکل‌های هواپیمای کنترلی غیر از ARP/ND (و شاید دیگر پیام‌های ICMP) کار کنند.

با نادیده گرفتن جزئیات جزئی، بیایید روی فیل در اتاق تمرکز کنیم: چگونه L1 می تواند آدرس MAC HR1 را هنگامی که HB1 سعی می کند به HR1 برسد را حل کند؟ راه آسان این است که “خوب، L2 مطمئناً مسیر MAC/IP را برای HR1 تبلیغ می کند و L1 می تواند از آن برای ایجاد حافظه پنهان ARP خود استفاده کند” (برای جزئیات بیشتر به ARP با EVPN نامتقارن IRB و ARP با Anycast Gateways در EVPN Asymmetric IRB مراجعه کنید). اما اگر HR1 یک میزبان بی صدا باشد چه؟ برخی از فروشندگان ممکن است شانه های خود را بالا بیاندازند و بگویند “خیلی بد”، برخی دیگر (مانند Arista EOS) خلاق شدند.

گرفتم tcpdump از بسته هایی که بین L1 و L2 مبادله می شوند، زمانی که HB1 برای اولین بار سعی می کند HR1 را پینگ کند (که بی صدا است). همانطور که قبلاً می دانیم، اینها بسته های مبادله شده هستند آبی و قرمز VLAN ها:

  • HB1 یک درخواست ARP برای دروازه پیش فرض ارسال می کند. L1 این درخواست را قطع می کند و با آدرس MAC/IP anycast پاسخ می دهد. ما نمی توانیم این بسته را در آن ببینیم tcpdump.
  • در همان زمان، L1 مسیر MAC/IP به HB1 را تبلیغ می کند:
16:51:35.367560 IP (tos 0xc0, ttl 255, id 12360, offset 0, flags [DF], proto TCP (6), length 195)
    10.0.0.2.36495 > 10.0.0.3.bgp: Flags [P.], cksum 0xce86 (correct), seq 426:569, ack 426, win 500, options [nop,nop,TS val 1463143690 ecr 2676372988], length 143: BGP
	Update Message (2), length: 143
	  Origin (1), length: 1, Flags [T]: IGP
	    0x0000:  00
	  AS Path (2), length: 0, Flags [T]: empty
	  Local Preference (5), length: 4, Flags [T]: 100
	    0x0000:  0000 0064
	  Multi-Protocol Reach NLRI (14), length: 83, Flags [OE]:
	    AFI: VPLS (25), SAFI: EVPN (70)
	    no AFI 25 / SAFI 70 decoder
	    0x0000:  0019 4604 0a00 0002 0002 2100 010a 0000
	    0x0010:  0203 e800 0000 0000 0000 0000 0000 0000
	    0x0020:  0030 aac1 ab44 8040 0001 8a88 0225 0001
	    0x0030:  0a00 0002 03e8 0000 0000 0000 0000 0000
	    0x0040:  0000 0000 30aa c1ab 4480 4020 ac10 000a
	    0x0050:  018a 88
	  Extended Community (16), length: 16, Flags [OT]:
	    target (0x0002), Flags [none]: 65000:1000 (= 0.0.3.232)
	    encapsulation (0x030c), Flags [none]: Tunnel type: VXLAN
	    0x0000:  0002 fde8 0000 03e8 030c 0000 0000 0008
  • L1 یک پاسخ ARP به HB1 ارسال می کند.
  • HB1 بسته HR1 را به آدرس anycast MAC ارسال می کند.
  • L1 بسته را دریافت می کند و باید آدرس MAC HR1 را حل کند. این یک درخواست ARP را از طریق VXLAN با استفاده از anycast MAC/IP به عنوان آدرس منبع MAC/IP ارسال می کند:
16:51:35.376644 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 96)
    10.0.0.2.13568 > 10.0.0.3.4789: [no cksum] VXLAN, flags [I] (0x08), vni 101001
ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.16.1.11 tell 172.16.1.1, length 46
  • HR1 با یک پاسخ ARP به آدرس anycast MAC به درخواست ARP پاسخ می دهد. ما می دانیم که L2 پاسخ ARP را قطع می کند، بنابراین L1 هرگز پاسخ خود را دریافت نخواهد کرد. اینجاست که ارتباطات ممکن است در برخی از پیاده‌سازی‌های EVPN با مشکل مواجه شود، اما Arista EOS در آستین خود یک تکه دارد. L2 پاسخ ARP ناخواسته را می پذیرد و یک مسیر MAC/IP برای HR1 ایجاد می کند
16:51:35.380635 IP (tos 0xc0, ttl 254, id 47576, offset 0, flags [DF], proto TCP (6), length 195)
    10.0.0.3.bgp > 10.0.0.2.36495: Flags [P.], cksum 0x554f (correct), seq 426:569, ack 569, win 506, options [nop,nop,TS val 2676374023 ecr 1463143690], length 143: BGP
	Update Message (2), length: 143
	  Origin (1), length: 1, Flags [T]: IGP
	    0x0000:  00
	  AS Path (2), length: 0, Flags [T]: empty
	  Local Preference (5), length: 4, Flags [T]: 100
	    0x0000:  0000 0064
	  Multi-Protocol Reach NLRI (14), length: 83, Flags [OE]:
	    AFI: VPLS (25), SAFI: EVPN (70)
	    no AFI 25 / SAFI 70 decoder
	    0x0000:  0019 4604 0a00 0003 0002 2500 010a 0000
	    0x0010:  0303 e900 0000 0000 0000 0000 0000 0000
	    0x0020:  0030 aac1 ab5f 980e 20ac 1001 0b01 8a89
	    0x0030:  0221 0001 0a00 0003 03e9 0000 0000 0000
	    0x0040:  0000 0000 0000 0000 30aa c1ab 5f98 0e00
	    0x0050:  018a 89
	  Extended Community (16), length: 16, Flags [OT]:
	    target (0x0002), Flags [none]: 65000:1001 (= 0.0.3.233)
	    encapsulation (0x030c), Flags [none]: Tunnel type: VXLAN
	    0x0000:  0002 fde8 0000 03e9 030c 0000 0000 0008

اگر بخواهید آدرس IP یکی از همسایگان را به دست آورید، مثلاً یک سرور SQL که از رمزگذاری جلسه استفاده نمی کند، باید به شما بگویم که این یک بردار حمله عالی است؟ افسوس، این بهایی است که ما برای راحتی فناوری پیشرفته می پردازیم.

  • پس از دریافت مسیر MAC/IP EVPN برای HR1، L1 می‌تواند حافظه پنهان ARP خود را به‌روزرسانی کند و بسته IP را که از HB1 به HR1 دریافت کرده، از طریق VXLAN ارسال کند:
16:51:35.383665 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 134)
    10.0.0.2.58699 > 10.0.0.3.4789: [no cksum] VXLAN, flags [I] (0x08), vni 101001
IP (tos 0x0, ttl 63, id 10687, offset 0, flags [DF], proto ICMP (1), length 84)
    172.16.0.10 > 172.16.1.11: ICMP echo request, id 7, seq 0, length 64

مشکل حل شد (حداقل در Arista EOS). فروشندگان دیگر چطور؟ طرح رو بهت دادم برو امتحان کن 😉

محاکمه

توپولوژی آزمایشگاهی که من در این پست وبلاگ استفاده کردم در مخزن netlab-examples GitHub است. اگر می خواهید آن را امتحان کنید:

  • محیط آزمایشگاهی خود را تنظیم کنید (می توانید از کدهای رایگان GitHub استفاده کنید)
  • تغییر دایرکتوری به EVPN/asymmetric-anycast
  • اعدام netlab up
  • اگر از Arista EOS استفاده می کنید، اجرا کنید netlab config --limit pe anycast_only برای حذف آدرس های IP unicast L1 و L2 و پیکربندی دروازه های anycast. باید دستگاه های دیگر را به صورت دستی پیکربندی کنید.


Source link

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا