همواره درک Multicast برای متخصصین شبکه کار سختی بوده است. از نظر من میتوان دلایل دشواری درک Multicast را در ابتدا کم کاربرد بودن آن و در مرحله بعد متفاوت بودن مکانیزم آن بیان کرد. در این پست قصد داریم با بهره گیری از مطالعات انجام شده و تجربیات بدست آمده به ارائه تعریفی کلی از Multicast و اجزای آن بپردازیم و بتوانیم تصویری واضحتر و قابل فهمتر از Multicast ایجاد کنیم.
تعریف Multicast:
یک نوع روش ارسال دیتا است که میتواند بدون ارسال پی در پی فرستنده با استفاده از زیرساخت شبکه به مقاصد مختلف ارسال شود.
چه زمانی به Multicast نیاز داریم؟!
اگر میخواهید دیتایی در شبکه به چندین گیرنده به صورت Real-Time ارسال شود مطلوبترین روش ارسال Multicast است. چرا؟ در شبکههای کامپیوتری سه نوع روش ارسال وجود: Unicast, Broadcast و Multicast.
اگر بخواهیم به روش Unicast دیتا را ارسال کنیم فرستنده باید براساس تعداد گیرنده دیتا را Replicate کند که این نوع ارسال در تعداد بالا باعث افزایش میزان ترافیک و اتلاف پهنای باند شبکه میشود.

در روش Broadcast در صورتی که روتری در شبکه وجود نداشته اطلاعات Replicate شده به تمام Hostها ارسال میشود. (رفتار پیش فرض روتر در رابطه با ترافیک Broadcast ورودی به این صورت است که بسته Drop میشود).

اما در روش Multicast دیتا با توجه به درخواست کاربران (گیرندهها) در شبکه Replicate میشود نه به درخواست فرستنده.

از مزیتهای Multicast (در مثال بالا) نسبت به سایر شیوههای ارسال، میتوان به موارد زیر اشاره کرد:
- Scalabiliy: مهم نیست که چند کاربر مورد نظر ماست، ۴ یا ۴۰۰۰. با یک بار ارسال، داده مورد نظر به تمام کاربران مورد نظر خواهد رسید.
- Utilistion: روشن است که میزان مصرف پهنای باند بسیار کمتر از دو روش دیگر است زیرا بر خلاف روشهای دیگر به ازای تعداد گیرنده ترافیک Replicate نمیشود.
- Performance: با توجه به نحوه ارسال در این روش، کاربران به هر تعدادی که باشند هیچ گونه کندیای در شبکه احساس نمیکنند.
آشنایی با اصطلاحات زیر در درک مفهوم Multicast به شما کمک خواهد کرد:
Source: نرم افزار یا سخت افزاری که دادهها را برای کاربران یا دستگاههای مورد نظر به صورت تکی یا چندین گروه Multicast ارسال میکند .(ممکن هست در برخی مستندات و یا ویدئوها تحت عنوان Sender هم به آن اشاره شود که هر دو عبارت درست است).
Receiver: کاربر یا دستگاهی که علاقهمند به دریافت دادهها از یک یا چندین گروه Multicast است.
برای مثال کاربرانی که مشغول مشاهده ویدیویی در حال Streaming هستند، Receiver، و سخت افزار یا نرم افزاری که این Stream را ارسال میکند Source(sender) نامیده میشود.
Multicast Address: برای اینکه نرم افزار های Source و Receiver ترافیک Multicast را دریافت یا ارسال کنند نیاز به یک Multicast Address دارند. Multicast address روی هیچ دستگاهی set نمیشود و صرفا یک آدرس یک channel یا گروهیست که چندین گیرنده عضو آن هستند. این آدرس در گیرندهها جهت دریافت ترافیک و در فرستندهها جهت ارسال ترافیک Multicast استفاده میشود.
با مراجعه به لینک زیر میتوانید IP Multicastهای Reserve شده و قابل استفاده را مشاهده کنید.
https://www.iana.org/assignments/multicast-addresses/multicast-addresses.xhtml

برای اینکه گیرندهها بتوانند در خواست دریافت ترافیک Multicast خود را در شبکه اعلام کنند از پروتکل Internet Group Management Protocol(IGMP) استفاده میکنند.IGMP یک پروتکل لایه ۲ است که Receiverها جهت اعلام تمایل به دریافت دیتا از آن استفاده میکنند و اولین روتر یا سویچ را از این مسئله با خبر میکنند.
Receiver با ارسال یک IGMP Membership Report که شامل آدرس Receiver و IP Multicast میباشد سوییچ یا روتر را از این موضوع باخبر میکند.همچنین برای خروج یا عدم تمایل دریافت ترافیک Multicast گیرنده یک IGMP Leave Message به اولین روتر یا سویچ ارسال میکند و خروج خود را اعلام میکند. در ورژن های قدیمی تر IGMP این قابلیت وجود نداشته و روتر ها این اتفاق را پس از منقضی شدن تایمر IGMP متوجه میشدند.
برای کسب اطلاعات بیشتر در مورد IGMP میتوانید به این لینک مراجعه نمایید.


Protocol Independent Multicast:
همانطور که Receiverها تمایل خود به دریافت ترافیک Multicast را با ارسال یک IGMP Membership Report بیان میکنند، روترها هم برای اطلاع رسانی از وجود Sourceها و Receiverها و مسیریابی در شبکه از یک Signaling Protocol جهت ساختن یک جدول که مشخص کننده مسیر عبور ترافیک Multicast است بهره میگیرند. پروتکل PIM در 2 حالت کلی Dense و Sparse پیادهسازی میشود.
PIM Dense-Mode:
در این روش با Flooding بر روی Interfaceهایی که Dense فعال شده است ترافیک Multicast به Receiver خواهد رسید. همچنین روترهایی که Receiver در شبکه خود ندارند با ارسال پیام Prune اعلام میکنند که Receiver در اینجا وجود ندارد و مایل به دریافت ترافیک Multicast نیستند (این روند هر ۱۸۰ ثانیه یکبار تکرار میشود).
این روش برای شبکههایی که تراکم گیرنده زیاد است پیشنهاد میشود.


PIM Sparse-Mode:
به صورت کلی این روش به دو صورت Any-source multicast و source-specific multicast میتواند پیاده سازی شود.
- در روش Any-source multicast تمرکز اصلی روی ارتباطات Many to Many است، یعنی تعداد زیادی فرستنده و گیرنده وجود دارد.
- در روش source-specific multicast تمرکز اصلی روی ارتباطات One to Many است، یعنی یک فرستنده و چندین گیرنده.
نکته:هیچ محدودیتی بابت استفاده از روشهای بالا در یک شبکه وجود ندارد، مثلا میتوان از SSM در محیطی که بیشتر ارتباطات Many to many است استفاده کرد ولی جهت راندمان بهتر پیشنهاد میشود روش مناسبتری را با توجه به نیازمندی خود استفاده کنید.
حالت Sparse به روش دیگری به نام ASM نیز قابل پیاده سازی است که تفاوتی جزئی با حالت عادی Sparse دارد.
PIM Sparse-Mode (ASM)
در این روش برعکس روش قبلی، تا زمانی که در خواستی مبنی بر دریافت Multicast ارسال نشود ترافیکی برای شما ارسال نمیشود. اما Receiverها اطلاعی از IP Source ندارند و همینطور Source از وجود و عدم وجود Receiver در شبکه بی اطلاع است .
بدین منظور روتری را درشبکه به عنوان Rendezvous Point در نظر میگیرند و آدرس آن را به سایر روترها اعلام میکنند.

Rendezvous Point
RP یک محل ملاقات موقت است که به تمام روترها به صورت Static یا Dynamic اعلام میشود. در صورت دریافت ترافیک multicast از Receiver یا Sender به RP اطلاع داده میشود. وظیفه RP پیدا کردن Source در شبکه و ارسال ترافیک به Receiver است البته به صورت موقت.

بعد از دریافت ترافیک Multicast توسط گیرنده، حالا فرستنده و گیرنده همدیگر را میشناسند و کوتاهترین مسیر ممکن را انتخاب میکنند (shortest Path Tree)؛ به عبارت دیگر RP در مسیر Control plane روترها قرار دارد.

با توجه به اینکه اطلاعات تمام senderها در جدول Multicast ذخیره میشود اگر در شبکه Multicast تعداد زیادی sender (source) داشته باشیم جدولهای مسیریابی بزرگ و پیچیده میشوند. در این شرایط استفاده از پروتکل PIM-bidir انتخاب خوبی میتواند باشد. در این روش صرف نظر از تعداد sourceها و Receiverهای موجود در شبکه فقط یک مسیر در جدول multicast روترها ثبت میشود. همانند روش قبلی نیاز به RP داریم اما بر خلاف آن، RP موقتی نبست و همیشه در مسیر ترافیک خواهد بود. به عبارت دیگر RP هم در Data plane و هم در Control Plane نقش آفرینی میکند.
در نتیجه پیشنهاد میشود در شبکههای multicastای که تعداد زیادی Sender و Receiver داریم از PIM-BIDR استفاده شود.

یکی از ایرادهایی که از روش ASM میتوان گرفت امنیت پایین آن است که ممکن است Attacker شبکه ما را بسیار کند کند. سوال اینست که با چه روشی؟
همان طور که قبلا هم اشاره شد در روش ASM هر فرستندهای میتواند به گیرنده فعال ترافیک بفرستد و گیرنده هیچ کنترلی مبتنی بر آدرس فرستنده ندارد، به عبارت دیگر هر فرستندهای در شبکه میتواند به یک گروه Multicast ترافیک ارسال کند.

در روش source-specific multicast این مشکل امنیتی حل شده به این صورت که Source و Receiver همدیگر را از قبل میشناسند و همدیگر را انتخاب کردهاند. کافیست ترافیک Multicast خود را در شبکه ارسال کنند تا از کوتاهترین مسیر به گیرنده برسد، و در این روش چون فرستنده و گیرنده همدیگر میشناسند دیگر لزومی به وجود RP نیست.

منابع:
- کتاب: IP Multicast-VOL 1
- کتاب :TCP/IP VOL 2
- CISCO Live:Introduction and Troubleshooting IP Multicast-BRKIPM-1261