Anycast یک روش آدرسدهی و مسیریابی در شبکه است. براساس این فناوری یک IP میتواند به دو یا چند سرور اختصاص دادهشود به صورتی که همه سرورها به صورت همزمان در شبکه قابل دسترسی باشند. مزیت این تکنولوژی در انتخاب بهترین مسیر بهوسیله مسیریابها (Router) برای دسترسی به سرور مورد نظر است. معیارهایی مانند میزان فاصله، زمان تاخیر، شلوغی مسیر و Nodeهای بینراه برای این انتخاب تعیین کننده هستند. در این مقاله نگاهی دقیقتر میاندازیم به این تکنولوژی و کاربردهای آن
CDNچیست؟
CDN که به معنای Content Delivery Network یا همان شبکه توزیع محتوا، شبکه و راهکاری خاص برای ارائه خدمات محتوای وب از نزدیکترین نقطهی جغرافیایی به کاربران است. طراحی شبکههای CDN با توجه به مدل درآمدی آنها کاملا متفاوت است. با توجه به سیاستهای فنی و تجاری معمولا نقاط دسترسی نهایی یا همان PoP Site (یا Point of Presence) از نزدیکترین نقاط در ISPها تا مرکز داده توزیع شده در سطح قارههای دنیا در این فناوری استقرار یافتهاند. CDNها داری مزایایی برای کاربران خود هستند که از مهمترین آنها میتوان موارد زیر را نام برد:
- دسترسی با تاخیر کمتر که موجب ایجاد امکان دستیابی به پهنای باند بیشتر به کاربران نهایی میگردد.
- نزدیککردن محتوا با استفاده از راهکارهایی مانند Cache کردن محتوا باعث کاهش هزینههای نهایی پهنای باند برای مشتریان و مراکز داده میشوند.
- اطمینان حاصل میکنند که محتوا در سریعترین زمان و از کوتاهترین مسیر به درخواست دهنده ارسال میشود و بدینوسیله با کمترین وابستگی به شبکههای واسط و یا BackBoneهای بینالمللی به ارائه خدمات میپردازند.
- اطمینان حاصل میکنند که در زمانهای اوج (Peak) بار محتوایی، بهترین راهکار از لحاظ قابلیت اطمینان و Quality of Service در اختیار کاربران قرار بگیرد.
راهکار فنی CDNها برای نزدیککردن هرچه بیشتر محتوا به کاربران نهایی چیست؟
برای مهندسی، پیادهسازی و نگهداری شبکههای توزیع محتوا راهکارهای گوناگونی وجود دارد؛ پیچیدگی همهی آنها در این است که اطمینان حاصل کنند که محتوا از نزدیکترین مرکز داده و سرورها به کاربران میرسد و همچنین در صورت بروز مشکل فنی یا شبکه بهترین مسیر فعلی، توسط مسیر جدید و بهتر جایگزین شود.
یکی از راهکارهای CDN برای این موضوع استفاده از معماری Anycast در شبکهی مدرن اینترنت است. این راهکار مزایا و معایب خاص خود را دارد و هر کدام از خدماتدهندگان CDN راهکارهای خاص خود را برای پیادهسازی آن به کار میبندد.
به صورت بسیار ساده در Anycast تعداد زیادی سرور داریم که همگی آنها از یک IP استفاده میکنند. این سرورها در مکانهای مختلف جغرافیایی پراکنده شدهاند و با یکدیگر در ارتباط هستند. چالش اصلی در تکنولوژی Anycast همین ارتباط بین سرورهاست، چرا که همگی آنها از یک IP استفاده میکنند.
این سرورها قرار است خدمات DNS را ارائه دهند. به این معنی که درخواستهای مختلف برای Resolve یک رکورد DNS، به نزدیکترین سرور ارسال میشوند و پاسخ را از نزدیکترین سرور به خود میگیرند.
کاربرد Anycast
برای بررسی کاربردهای Anycast چند مثال را با یکدیگر بررسی میکنیم:
برای مثال برای دسترسی به یک وبسایت پر بازدید مانند Google از کشورهای ایران، آلمان و آمریکا با پیشفرضهای زیر، شرایط زیر اتفاق میافتد.
Google در کشور آلمان مالک یک مرکز داده است. به همچنین گوگل در آمریکا چندین مرکز داده دارد. ولی در ایران مرکز دادهای ندارد و نزدیکترین مرکز داده این شرکت به ایران واقع در کشور کویت است.
با این شرایط کاربران در کشور آلمان به سرورهای مرکز داده گوگل در آلمان و در آمریکا به نزدیکترین مرکز داده متصل خواهند شد. کاربران ایرانی هم به نزدیکترین کشور که کویت باشد مسیریابی میشوند. لازم به ذکر است که موارد گفته شده برای حالتی است که شبکهی گوگل با اختلالی روبهرو نباشد. برای مثال در صورتی که سرورهای مرکز داده گوگل در کویت به هر دلیلی از دسترس خارج باشند، ترافیک درخواستهای کاربران ایرانی میبایست به مسیر کشور آلمان منتقل شوند.
Anycast
در یک مثال دیگر فرض میکنیم که یک کاربر میخواهد به محتوای Update-Serverهای مایکروسافت در سه کشور ایران، فرانسه و کانادا وصل شده و از طریق وب به این محتوا دسترسی پیدا کند. مجموعه Update-Serverهای مایکروسافت از شبکه توزیع محتوای Azure بهره میبرد که مالک شبکه Anycast در سطح 5 قاره دنیاست. این شبکه، Prefix مربوطه را در تمامی مراکز داده و به شبکههای متصل به خود، Advertise میکند. حال فرض کنیم کاربری از فرانسه به Update-Serverهای مایکروسافت یک درخواست ارسال میکند، پس از اتمام پروسهی lookup در DNS، آدرس سرور مربوطه مشخص شده و این آدرس برای کاربر فرانسوی در سطح شبکه مسیریابی میشود. سپس مرکز دادهی مایکروسافت نزدیکی که در فرانسه است برای کاربر به عنوان بهترین مسیر برگزیده میشود. مثال فوق به صورت توزیع جغرافیایی و در لایه شبکه برای کاربران دیگر کشورها نیز صادق خواهد بود.
Anycast در CDN
زیرساخت Anycast اَبر دِراک علاوه بر اتصال کاربر درخواستدهنده به نزدیکترین سرور DNS، از میان بستههای آدرسی که به نشانیهای مقصد موجود در این دامنه آدرسدهی شدهاند، نزدیکترین نقطه مسیریابی شده در شبکه را پیدا میکند. سپس IP آدرس آن را اعلام کند. این کار با استفاده از الگوریتم BGP انجام میشود.
به صورت کلی شبکههای Anycast به مدلی از Advertising در مورد Prefixهای شبکهای اطلاق می شود که با استفاده از پروتکل BGP که راهکار اصلیBackbone شبکهی اینترنت است، عمل میکنند.
در راهکار Anycast کاربران همیشه به نزدیکترین سرویس در دسترس متصل خواهند شد؛ که آن را به طور واضح در ساختار DNS مشاهده میکنید. این کار باعث کاهش زمان دسترسی به اطلاعات و همچنین باعث ایجاد شدن Load Balancing در شبکه میشود. راهکارهای CDN مانند Cloudflare از راهکار Anycast به صورت بسیار گستره استفاده میکنند.

مزایای اصلی استفاده از Anycast
- بهینهسازی مسیریابی بر اساس پروتکل BGP صورت میپذیرد و وابستگی به دیگر راهکارها مانند Load Balancerها Url Rewriting از بین میروند.
- مالکیت IPها و دسترسی به منابع IPها برای CDNها و هزینههای نگهداری CDN کاهش مییابد که در کل موجب کاهش هزینههای کاربران نهایی خواهد شد.
- عدم وابستگی به زیرساختهایی مانند DNS، باعث میشود مشتریان CDN بدون تجربهی مشکل در زیرساختهای DNS جهانی از مزایای توزیع جغرافیایی بهره ببرند.
- سادگی در پیادهسازی: بدین معنی که شما بدون داشتن دغدغهی محل قرارگرفتن سرور DNS خود، با استفاده از فقط یک آدرس IP، میتوانید به چندین سرویس DNS دسترسی پیدا کنید.
همانطور که در قبل گفته شد، با وجود مزایای طراحی، مالکیت و نگهداری چنین شبکههایی توسط شرکتهایی که در اینترنت به کاربران خدماترسانی میکنند، چنین شبکه های از لحاظ فنی دارای پیچیدگی های بسیاری هستند. در حال حاضر کمتر از ۴۰ شرکت در کل دنیا چنین شبکههایی را در مالکیت دارند. این شرکتها از آنها برای اهداف توزیع محتوا، Redundancy و High-availability بهره میبرند که درصد قابل توجهی از آنها، خدماتدهندگان CDN هستند.