صابر مسگری، مدیر ارشد محصولات آروان‌کلاد با مقاله‌‌ای با عنوان Implementing Soft-Unicast to Solve IPv4/IPv6 Limitations for Egress Traffic in CDN Infrastructure در نشست RIPE امسال به میزبانی کشور قزاقستان حضور داشت.  این رویداد که جزو مهم‌ترین گردهم‌آیی‌های تخصصی در حوزه‌ی شبکه و زیرساخت در منطقه آسیای مرکزی است، درباره‌ی کارکرد Soft Unicast در توزیع ترافیک در شبکه‌های توزیع محتوا و بهبود تجربه‌ی کاربر نهایی آنلاین گفت. او در نشست سال گذشته‌ی این رویداد هم درباره‌ی پیشرفت توزیع بار در CDN، از DNS تا راهکارهای مدرن آن مقاله‌ای ارایه داده بود.

مسگری در ابتدای رویداد امسال، مفهوم Unicast را این‌گونه توضیح داد: «روش Anycast یک روش مسیریابی است که در آن چند سرور در نقاط جغرافیایی مختلف، با اختصاص یک آدرس IP مشترک، درخواست‌های کاربر را دریافت می‌کنند». در ادامه مهم‌ترین مزایای Anycast برای بهبود تجربه‌ی کاربرهای نهایی اینترنت و کسب‌وکارها براساس مقاله‌ی صابر مسگری خواهد آمد:

 

Anycast  چگونه کار می‌کند؟

در زمان توزیع بار به کمک Anycast ترافیک ورودی (Incoming Traffic) به نزدیک‌ترین یا سریع‌ترین سرور از نظر مسیریابی شبکه هدایت می‌شود، این نزدیکی لزومن از نظر فاصله‌ی فیزیکی نیست و پارامترهای متعددی در مسیریابی شبکه در آن موثر است. این سازوکار یکی از مهم‌ترین عوامل تحویل سریع‌تر محتوا (Faster Content Delivery) به‌شمار می‌آید.

 همان‌طور که در تصویر زیر می‌بینید برای نمونه در یک سرویس DNS با چند سرور مختلف در زمان استفاده از Unicast به هر سرور یک آدرس IP یکتا اختصاص داده می‌شود. در این حالت کاربران به سرورهای مختلف بر اساس IP هر یک از آن‌ها متصل شده و تمام درخواست‌های DNS را به آن می‌فرستد. اگر یکی از این سرورها دچار مشکل شود یا از نظر فاصله‌ی شبکه‌ای دور باشد، درخواست‌ها کندتر پاسخ داده می‌شود و حتا ممکن است که به‌طور کلی پاسخ داده نشوند. اما در بخش راست و در وضعیت Anycast چند سرور DNS مختلف در نقاط گوناگون شبکه یا کشورهای مختلف هستند که همگی این سرورها یک آدرس IP مشترک دارند. در این حالت، وقتی کاربر یک درخواست DNS می‌فرستد، ترافیک به نزدیک‌ترین سرور از نظر مسیریابی شبکه هدایت می‌شود.

 

این سازوکار از آن‌جایی که باعث افزایش سرعت و پایداری در پاسخ‌گویی به درخواست کاربران می‌شود، به‌شکل موثری می‌تواند ترافیک ورودی کاربران (Ingress Traffic) را بین چند سرور توزیع کند و یا در حالت ایجاد مشکل، ترافیک برای یکی از این سرورها به‌شکل خودکار به نزدیک‌ترین سرور بعدی هدایت شده و درخواست‌های کاربران دچار اختلال نمی‌شود. 

پس از این توضیحات، این پرسش مطرح می‌شود که این معماری در کدام بخش از شبکه کارکرد دارد؟  چه فواید کلی‌ای دارد؟ و به چه نیازهایی پاسخ می‌دهد؟ فواید کلی آن را می‌توان در بخش‌های زیر توضیح داد:

۱.بار ترافیک را میان سرورهای مختلف تقسیم می‌کند. (Load Balancing)

۲.زمان پاسخ‌گویی درخواست‌ها را برای کاربران در مناطق مختلف کاهش دهد.(Low Latency)

۳. درخواست‌های کاربران از نزدیک‌ترین نقطه‌ی جغرافیایی پاسخ داده می‌شود.

۳.از تمرکز حملات یا خرابی در یک نقطه جلوگیری کند. (DDoS Mitigation & High Availability)

به این ترتیب ویژگی‌هایی مانند کاهش تاخیر، توزیع بار، بهبود پایداری سیستم، افزایش امنیت و جلوگیری از حملات DDoS، مسیریابی کارآمد در مسیر داده‌ها، مدیریت مقیاس‌پذیر ترافیک، افزونگی یا پشتیبان‌گیری فعال جزو مهم‌ترین عواملی است که Anycast برای محصولی مانند CDN می‌تواند داشته باشد.

مدیریت ترافیک Egress در یک CDN چگونه است؟

شبکه‌ی CDN ترافیک خروجی (Egress Traffic) خود را برای اتصال به سرورهای Upstream (سرور بالادستی)، از بازه‌ی آدرس‌های IP مربوط به Unicast خود ارسال می‌کند. این سازوکار به این معناست که وقتی کاربران به سمت شبکه‌ی CDN درخواست می‌فرستند، ورود ترافیک از طریق Anycast IP انجام می‌شود تا ترافیک به نزدیک‌ترین سرور هدایت شود، سپس این ترافیک برای رسیدن به سرورهای اصلی از IPهای اختصاصی هر یک از سرورها و پاپ سایت‌ها( PoP- Point of Present) استفاده می‌کند.


 

در چنین حالتی، زمانی که CDN می‌خواهد با سرورهای بالادستی (مانند سرور منبع محتوا یا Origin Server) ارتباط برقرار کند، از آدرس‌های Unicast استفاده می‌کند تا مسیر خروجی ترافیک مشخص، پایدار و ردیابی‌شونده باشد. 

 

چه معایبی در روش‌ Unicast سنتی وجود دارد؟

  • ترافیک خروجی (Egress Traffic) نیازمند استفاده از آدرس‌های IP از نوع Unicast است. به این معنا که هر پکت خروجی باید از یک IP مشخص و یکتا استفاده کند تا پاسخ‌ها به‌درستی مسیریابی شوند.
  • کمبود و هزینه‌ی بالای آدرس‌های IPv4: از آن‌جا که تعداد آدرس‌های IPv4 بسیار محدود است، تخصیص آدرس‌های Unicast برای هر مرکز داده (Datacenter) یا سرور خروجی به‌مرور زمان دشوار و پرهزینه شده است. این موضوع یکی از چالش‌های اصلی در مقیاس‌پذیری زیرساخت‌های شبکه‌ی جهانی است. از سوی دیگر، مدیریت، نگهداری، و خرید آدرس‌های IP عمومی برای مسیرهای خروجی نیازمند هزینه‌های بالاست. برای ارایه‌دهندگان CDN (Content Delivery Network)، این هزینه به‌شکل تصاعدی با افزایش تعداد مراکز داده و کاربران رشد می‌کند.
  • نیاز به IPهای محلی و برچسب‌گذاری جغرافیایی برخی خدمات (مانند تبلیغات، پخش محتوا یا تنظیمات بومی‌سازی) نیاز به آدرس‌های IP دارند که موقعیت جغرافیایی خاصی را منعکس کنند. اما در ترافیک خروجی مبتنی بر Unicast، تخصیص IP محلی برای هر منطقه پیچیده و دشوار است.
  • برای یک ارایه‌دهنده CDN، افزودن سایت جدید (PoP) دشوار است. هر پاپ‌سایت جدید نیازمند مجموعه‌ای از IPهای Unicast، تنظیمات مسیریابی جدید و هماهنگی با سیستم‌های Upstream است تا این لیست IPهای جدید را در فایروال‌های خود اضافه کنند. این کار فرآیند توسعه‌ی شبکه را کند و پرهزینه می‌کند.
  • حتا با استفاده از IPv6 نیز، مهاجمان می‌توانند منبع خاصی را هدف قرار دهند. اگرچه IPv6 فضای آدرس‌دهی بسیار گسترده‌ای فراهم می‌کند، در مدل Unicast هم‌چنان هر سرور دارای آدرس یکتاست. درنتیجه، مهاجمان می‌توانند یک سرور یا مرکز داده خاص (Server/Datacenter) را شناسایی و به‌طور مستقیم هدف حمله قرار دهند.
  • نیاز به مسیریابی مجدد بین مراکز داده: بعد از بروز خرابی یا ازدحام در یک مرکز داده، CDN باید ترافیک خروجی را به‌‎شکل دستی یا از راه مکانیزم‌های کنترلی به مرکز داده دیگری هدایت کند. این کار زمان‌بر است و ممکن است باعث تاخیر در پاسخ‌گویی شود.
  • محدودیت در مسیریابی پویا: در معماری Unicast، تغییر مسیرها به‌شکل خودکار و آنی (Dynamic Routing) دشوار است. سیستم باید به‌شکل دستی یا با تنظیمات پیچیده، مسیرهای جدید را تعریف کند تا از مسیرهای جایگزین استفاده شود و انعطاف‌پذیری شبکه را کاهش می‌دهد.

ترافیک خروجی در شبکه‌های مبتنی بر Unicast با چالش‌هایی مانند کمبود آدرس IPv4، هزینه بالای مدیریت IP، نبود انعطاف‌پذیری در مسیریابی پویا و آسیب‌پذیری در برابر حملات هدفمند روبه‌رو است.

 

فواید استفاده از Soft-Anycast برای ترافیک خروجی 

مفهوم Soft-Anycast از سوی شرکت Cloudflare معرفی شد. این فناوری نوآورانه، شکاف میان مزایای مقیاس‌پذیری Anycast در مسیر ورودی (Ingress Traffic) و نیاز به یکتایی (Uniqueness) در مسیر خروجی (Egress Traffic) را پر می‌کند. این مفهوم درواقع راهکاری است که امکان استفاده از Anycast در مسیر خروجی را بدون از دست دادن امکان تفکیک ترافیک هر سرور فراهم می‌کند و به این ترتیب Anycast ترکیبی از مقیاس‌پذیری، کارایی و پایداری در ترافیک است.

در مدل Soft-Anycast، آدرس‌های IP خروجی هم‌چنان از راه Anycast در شبکه فعالیت می‌کنند.  اما هر سرور (Server) به یک بازه پورت (Port Range) یکتا اختصاص داده می‌شود. به این ترتیب، چند سرور می‌توانند یک آدرس IP مشترک داشته باشند، در حالی که به‌واسطه‌ی پورت‌های متفاوت، ترافیک خروجی از هر سرور هم‌چنان تشخیص و تفکیک داده می‌شوند.

مدل Soft-Anycast راه‌حل نوآورانه‌ای است که فاصلهی بین مزایای مقیاس‌پذیری Anycast برای ترافیک ورودی و یکتایی موردنیاز برای ترافیک خروجی را پر می‌کند. چند سرور می‌توانند IP خروجی یکسانی را به اشتراک بگذارند، با تقسیم پورت، تضمین می‌شود که هر سرور می‌تواند بهطور مستقل ترافیک را مسیریابی کند.

  • توزیع بار دینامیک: تنظیم‌کننده‌ی توزیع بار، ترافیک را براساس ترکیب IP:PORT هدایت می‌کند تا با اطمینان، بسته‌ها به سرور صحیح ارسال می‌شوند. Load Balancer با رفتاری دینامیکی، ترافیک را توزیع می‌کنند و از استفاده‌ی بیش‌از‌حد از هر سرور یا محدوده‌ی پورت، جلوگیری می‌کند.
  • صرفه‌جویی در IPv4: با استفاده‌ی مجدد از یک آدرس IP در چندین سرور، Soft-Anycast نیاز به آدرس‌های خروجی یکتا را کاهش می‌دهد و منجربه صرفه‌جویی در IPv4 می‌شود. Soft-Anycast به CDNها امکان می‌دهد که به‌طور کارآمد به فعالیت خود ادامه دهند و در عین حال بار مربوط به تهیه و مدیریت تعداد زیادی آدرس IPv4 را کاهش می‌دهد.
  •  افزایش امنیت: حتا با IPv6، ارایه‌دهندگان CDN هم‌چنان به مسیریابی دینامیک نیاز دارند. بدون استفاده از Anycast در ارتباط با سرورهای مبدا، مهاجم می‌تواند حملات DDoS را به یک مرکز داده‌ی خاص ارسال کند.
  • کاهش هزینه‌ها: به‌طور درخور توجهی هزینه‌های عملیاتی نگهداری تعداد زیادی آدرس خروجی را کاهش می‌دهد.
  • افزایش اطمینان: اگر یک سرور از کار بیافتد، ترافیک به سرور بعدی موجود هدایت می‌شود و درنتیجه دسترسی بالا بدون وابستگی به چند آدرس Unicast تضمین می‌شود.

در بخش دیگری از فواید آن هم می‌توان به تقسیم‌بندی IP برای انتخاب مرکز داده مقصد، اختصاص آدرس‌های IP متفاوت به هر مرکز داده، هدایت مجدد ترافیک دریافتی از سرور مبدا به مرکز داده هدف، اعلام همان محدوده (/24) از تمام دیتاسنترها، اختصاص یک آدرس /32 مجزا به هر دیتاسنتر، اختصاص محدوده‌ی پورت متفاوت به هر گروه از سرورها، هدایت مجدد ترافیک پاسخ‌دهی به سرورهای مربوط اشاره کرد. 

 

مراحل پیاده‌سازی Soft-Unicast با استفاده از Katran:

اما در عمل چگونه می‌توان چنین سرویسی را پیاده‌سازی کرد و از چه ابزارهایی برای رسیدن به این هدف بهره برد؟

برای پیادهسازی Soft Unicast نیاز داریم در مسیر برگشت ترافیک از سرورهای اصلی در حالتی‌که پکت ارسال شده به یک سرور یا پاپ‌سایت دیگر-پکت مربوط به دیتاسنتر و سرور اصلی که از آن ارسال شده است- فرستاده شود. برای این کار ما نیاز به اختصاص رنج مشخصی از IP و  PORT به هر دیتاسنتر/سرور داریم. 

برای توزیع بار و انتقال ترافیک به نقطه‌های درست می‌توان از ابزارهای مبتنی بر روش DSR (Direct Server Return) بهره برد. این ابزارها بدون نیاز به یک ابزار توزیع بار مرکزی و بدون ایجاد لود بالا امکان هدایت ترافیک بر اساس پارامترهای مختلف را فراهم می‌کنند.

 

DSR چیست؟

لود بالانسر DSR (Direct Server Return) یک روش توزیع بار است که در آن درخواست‌های ورودی ابتدا به لود بالانسر ارسال می‌شوند، ولی پاسخ‌ها به‌شکل مستقیم از سرور مقصد به کلاینت ارسال می‌شوند، بدون اینکه از لود بالانسر عبور کنند. این روش به‌دلیل کاهش بار روی لود بالانسر و بهینه‌سازی ترافیک شبکه برای پاسخ‌ها، عملکرد بهتری را در مقایسه با سایر روش‌های لود بالانسینگ ارایه می‌دهد. DSR به‌طور معمول در سناریوهایی که نیاز به افزایش مقیاس و کارایی در انتقال داده‌های ورودی و خروجی وجود دارد، استفاده می‌شود و می‌تواند به‌ویژه برای وب‌سایت‌ها یا اپلیکیشن‌هایی که نیاز به پردازش حجم بالای درخواست‌ها دارند، مفید باشد.

 

ابزار Katran به‌عنوان یک لود بالانسر DSR و پیاده سازی Soft Unicast

تیم زیرساخت شبکه‌ی فیسبوک ( Meta) در سال ۲۰۱۸ به دنبال جایگزینی برای لود بالانسرهای L4 سنتی (مثل IPVS یا سخت‌افزارهای گران‌قیمت) بود. این محصول را با هدف مقیاس‌پذیری ۱۰۰ برابری با هزینه‌ی کم تعریف کرد.

درواقع  Katran  یک کتابخانه‌ی C++ و برنامه‌ی BPF است که برای ساخت یک ابزار انتقال (forwarding plane) لود بالانسینگ لایه ۴ با عملکرد بالا طراحی شده است. Katran از زیرساخت XDP در کرنل استفاده می‌کند تا امکان پردازش سریع پکت‌ها را داخل کرنل فراهم کند.

 

برای شروع پیاده‌سازی لازم است بدانیم که Soft-Unicast به یک آدرس IP مشترک برای چند سرور backend نیاز دارد. به این شکل که یک محدوده‌ی پورت اختصاصی به هر سرور داده می‌شود و این روش، فرآیند مسیریابی ترافیک خروجی (egress) را به‌طور کارآمد تضمین می‌کند، همه‌‌ی این وضعیت در حالی است که از یک IP واحد استفاده می‌شود.

ارسال پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *