پروتکل مستقل چندپخشی (Protocol Independent Multicast) چیست؟

فهرست مطالب

پروتکل مستقل چندپخشی (PIM) سرنام Protocol Independent Multicast یک پروتکل مسیریابی است که برای ارسال کارآمد داده‌ها از یک فرستنده به چندین گیرنده در شبکه‌های IP طراحی شده است. این پروتکل، همان‌طور که از نامش پیدا است، به پروتکل مسیریابی خاصی وابسته نیست و می‌تواند با پروتکل‌های مسیریابی مختلفی مانند OSPF، BGP یا RIP کار کند، زیرا از جداول مسیریابی موجود در روترها برای تصمیم‌گیری در مورد ارسال بسته‌ها استفاده می‌کند. PIM به‌طور گسترده در شبکه‌هایی که نیاز به انتقال داده‌های چندپخشی دارند، مانند پخش ویدئو، کنفرانس‌های آنلاین، یا توزیع محتوا، کاربرد دارد. این پروتکل از طریق بهینه‌سازی مسیرهای ارسال داده، از مصرف غیرضروری پهنای باند جلوگیری کرده و کارایی شبکه را بهبود می‌بخشد.

پروتکل مستقل چندپخشی چیست؟

پروتکل مستقل چندپخشی (PIM)، مجموعه‌ای از پروتکل‌های مسیریابی چندپخشی برای شبکه‌های مبتنی بر آی‌پی است که توزیع یک به چند و چند به چند داده را در یک شبکه محلی (LAN)، شبکه گسترده (WAN) یا اینترنت فراهم می‌کند. PIM به یک پروتکل مسیریابی تک‌پخشی خاص وابسته نیست؛ بلکه می‌تواند از هر پروتکل مسیریابی تک‌پخشی مورد استفاده در شبکه بهره ببرد. PIM جداول مسیریابی خود را نمی‌سازد و از جدول مسیریابی تک‌پخشی برای ارسال به مسیر معکوس استفاده می‌کند. حالت‌های مختلفی از PIM وجود دارد که برای سناریوهای مختلف شبکه بهینه شده‌اند، از جمله حالت متراکم (PIM-DM) که با سیل کردن ترافیک چندپخشی در سراسر دامنه و سپس حذف شاخه‌های بدون گیرنده، درخت‌های کوتاه‌ترین مسیر را به طور ضمنی می‌سازد، و حالت پراکنده (PIM-SM) که به طور صریح درخت‌های اشتراکی یک‌طرفه را با ریشه در یک نقطه ملاقات (RP) برای هر گروه می‌سازد و به طور اختیاری درخت‌های کوتاه‌ترین مسیر را برای هر منبع ایجاد می‌کند.

حالت دوطرفه PIM سرنام (Bidir-PIM) درخت‌های اشتراکی دوطرفه را به طور صریح می‌سازد و هرگز درخت کوتاه‌ترین مسیر را ایجاد نمی‌کند، بنابراین ممکن است تاخیرهای سرتاسری طولانی‌تری نسبت به PIM-SM داشته باشد، اما به خوبی مقیاس‌پذیر است زیرا نیازی به وضعیت خاص منبع ندارد. PIM چندپخشی خاص منبع (PIM-SSM) درخت‌هایی را می‌سازد که فقط در یک منبع ریشه دارند و یک مدل امن‌تر و مقیاس‌پذیرتر را برای تعداد محدودی از برنامه‌ها (بیشتر پخش محتوا) ارائه می‌دهد. PIM در سه حالت اصلی زیر عمل می‌کند:

  • حالت متراکم (Dense Mode)

  • حالت پراکنده (Sparse Mode)

  • حالت دوجهتی (Bidirectional Mode)

در حالت متراکم، که برای شبکه‌هایی با تعداد زیادی گیرنده مناسب است، داده‌ها به‌صورت پیش‌فرض به تمام مسیرهای ممکن ارسال می‌شوند و سپس شاخه‌های غیرضروری هرس می‌شوند. این روش برای محیط‌هایی که گیرندگان در نزدیکی هم هستند، کارآمد است، اما ممکن است در شبکه‌های بزرگ‌تر باعث مصرف بیش ‌از حد منابع شود. در مقابل، حالت پراکنده برای شبکه‌هایی طراحی شده که گیرندگان پراکنده و تعدادشان کم است. در این حالت، داده‌ها تنها به گیرندگانی ارسال می‌شوند که صراحتا درخواست دریافت داده کرده‌اند، و از یک نقطه ملاقات (Rendezvous Point ) یا به اختصار RP برای هماهنگی بین فرستنده و گیرندگان استفاده می‌شود. این روش بهینه‌تر است و در شبکه‌های گسترده مانند اینترنت کاربرد بیشتری دارد. حالت دوجهتی نیز برای کاهش بار پردازشی طراحی شده و به جای ایجاد درخت‌های یک‌جهته، از درخت‌های دوجهته استفاده می‌کند که امکان ارسال و دریافت داده‌ها را به‌صورت همزمان فراهم می‌کند.

یکی از ویژگی‌های کلیدی PIM، توانایی آن در ساخت درخت‌های توزیع چندپخشی (Multicast Distribution Trees) است. این درخت‌ها می‌توانند به‌صورت درخت کوتاه‌ترین مسیر SPT سرنام (Shortest Path Tree) یا درخت اشتراکی (Shared Tree) باشند. درخت کوتاه‌ترین مسیر مستقیما از فرستنده به گیرنده‌ها ایجاد می‌شود و کمترین تاخیر را فراهم می‌کند، در حالی که درخت اشتراکی از یک نقطه ملاقات برای توزیع داده‌ها استفاده می‌کند و برای مقیاس‌پذیری بهتر است. PIM همچنین از پروتکل IGMP سرنام (Internet Group Management Protocol) برای مدیریت عضویت گیرندگان در گروه‌های چندپخشی استفاده می‌کند، که به روترها کمک می‌کند تا بدانند کدام میزبان‌ها به داده‌های یک گروه خاص علاقه‌مند هستند.

PIM از طریق پشتیبانی از هر دو نسخه IPv4 و IPv6 انعطاف‌پذیری بالایی در شبکه‌های مدرن ارائه می‌دهد. این پروتکل به دلیل استقلال از پروتکل‌های مسیریابی، قابلیت همکاری با زیرساخت‌های مختلف را دارد و به همین دلیل در شبکه‌های سازمانی، ارائه‌دهندگان خدمات اینترنتی و حتی برنامه‌های پخش زنده محبوبیت زیادی پیدا کرده است. با این حال، پیاده‌سازی PIM ممکن است پیچیدگی‌هایی مانند تنظیم دقیق نقاط ملاقات یا مدیریت هرس درخت‌ها را به همراه داشته باشد، اما مزایای آن در بهینه‌سازی انتقال داده‌های چندپخشی، آن را به یک استاندارد صنعتی تبدیل کرده است.

Pim header common to all Pim messages

سرآیند مشترک PIM برای همه پیام‌ها سرنام (PIM Header Common to All Messages) بخش اساسی تمامی پیام‌های پروتکل مستقل چندپخشی (Protocol Independent Multicast) است که برای هماهنگی و مدیریت فرآیندهای چندپخشی در شبکه‌های IP طراحی شده است. این سرآیند، که ابتدای هر پیام PIM قرار می‌گیرد، شامل فیلدهای کلیدی است که اطلاعات لازم برای شناسایی نوع پیام، نسخه پروتکل و کنترل فرآیندهای چندپخشی را فراهم می‌کند. ساختار این سرآیند به‌گونه‌ای طراحی شده که ساده اما کارآمد باشد و به روترها امکان دهد تا پیام‌های PIM را به‌درستی پردازش کرده و عملیات چندپخشی مانند ساخت درخت‌های توزیع، مدیریت گروه‌ها و هماهنگی بین فرستنده‌ها و گیرنده‌ها را انجام دهند. این سرآیند در تمامی حالت‌های PIM، از جمله حالت متراکم (Dense Mode)، پراکنده (Sparse Mode) و دوجهتی (Bidirectional Mode)، یکسان است و نقش مهمی در اطمینان از سازگاری و قابلیت همکاری بین پیاده‌سازی‌های مختلف PIM ایفا می‌کند.

سرآیند مشترک PIM از چهار فیلد اصلی تشکیل شده است که در مجموع 32 بیت (4 بایت) را اشغال می‌کند. اولین فیلد، نسخه (Version) است که 4 بیت را به خود اختصاص می‌دهد و نسخه پروتکل PIM را مشخص می‌کند. در حال حاضر، نسخه 2 به‌عنوان استاندارد اصلی شناخته می‌شود و اکثر پیاده‌سازی‌های مدرن از آن استفاده می‌کنند. این فیلد تضمین می‌کند که روترها و دستگاه‌های مختلف در شبکه از نسخه یکسانی از پروتکل پشتیبانی می‌کنند و از ناسازگاری جلوگیری می‌کند. فیلد بعدی، نوع (Type) است که 4 بیت دیگر را شامل می‌شود و نوع پیام PIM را تعیین می‌کند. انواع مختلفی از پیام‌ها در PIM وجود دارند، مانند پیام Hello برای کشف همسایگی، پیام Join/Prune برای مدیریت درخت‌های توزیع، پیام Register برای ثبت فرستنده‌ها در نقطه ملاقات (Rendezvous Point) و پیام Assert برای حل تعارضات در مسیرهای چندپخشی. این فیلد به روترها کمک می‌کند تا نوع پیام دریافتی را شناسایی کرده و عملیات مناسب را انجام دهند.

فیلد سوم، فیلد رزرو شده (Reserved) است که 8 بیت را اشغال می‌کند و معمولا با مقدار صفر پر می‌شود. این فیلد برای استفاده‌های آینده در نظر گرفته شده و در حال حاضر هیچ نقش فعالی در پردازش پیام‌ها ندارد، اما وجود آن امکان گسترش پروتکل را در نسخه‌های بعدی فراهم می‌کند. در نهایت، فیلد چکسام (Checksum) که 16 بیت آخر را تشکیل می‌دهد، برای بررسی صحت و یکپارچگی پیام استفاده می‌شود. این چکسام با محاسبه مجموع مقادیر بایت‌های سرآیند (به‌جز خود فیلد چکسام) ایجاد می‌شود و به روتر گیرنده اجازه می‌دهد از عدم تغییر یا خرابی پیام در حین انتقال مطمئن شود. اگر چکسام با مقدار محاسبه‌شده مطابقت نداشته باشد، پیام رد می‌شود، که این مکانیزم به افزایش قابلیت اطمینان پروتکل کمک می‌کند.

سرآیند مشترک PIM به دلیل طراحی ساده و موثر خود، نقش مهمی در عملکرد روان پروتکل دارد. این سرآیند تضمین می‌کند که پیام‌ها به‌درستی شناسایی و پردازش شوند، و از آنجا که در تمامی انواع پیام‌های PIM یکسان است، پیاده‌سازی و نگهداری پروتکل را ساده‌تر می‌کند. علاوه بر این، پشتیبانی از چکسام، قابلیت اطمینان را در محیط‌های شبکه‌ای که ممکن است با خطاهای انتقال مواجه شوند، افزایش می‌دهد، و این امر PIM را به گزینه‌ای ایده‌آل برای برنامه‌های چندپخشی حساس مانند پخش زنده ویدئو یا کنفرانس‌های آنلاین تبدیل کرده است. شکل زیر جزییات فنی این سرآیند را نشان می‌دهد.

encoded address formats

فرمت‌های آدرس کدگذاری‌شده (Encoded Address Formats) در پروتکل مستقل چندپخشی، بخشی حیاتی از ساختار پیام‌های این پروتکل هستند که برای انتقال اطلاعات آدرس‌های فرستنده، گیرنده و گروه‌های چندپخشی در شبکه‌های IP استفاده می‌شوند. این فرمت‌ها به‌گونه‌ای طراحی شده‌اند که امکان شناسایی و پردازش کارآمد آدرس‌ها را در پیام‌های PIM، مانند پیام‌های Join/Prune، Register و Assert، فراهم کنند. PIM از این فرمت‌ها برای پشتیبانی از هر دو نسخه IPv4 و IPv6 استفاده می‌کند و از طریق به کارگیری از یک ساختار انعطاف‌پذیر، اطلاعات آدرس را به همراه متادیتای اضافی کدگذاری می‌کند تا روترها بتوانند عملیات چندپخشی را به‌درستی انجام دهند. این فرمت‌ها معمولا در بدنه پیام‌های PIM (پس از سرآیند مشترک) قرار می‌گیرند و نقش مهمی در مدیریت درخت‌های توزیع چندپخشی و هماهنگی بین فرستنده‌ها و گیرنده‌ها ایفا می‌کنند.

ساختار فرمت آدرس کدگذاری‌شده در PIM شامل چندین فیلد کلیدی است که اطلاعات آدرس و ویژگی‌های مرتبط با آن را مشخص می‌کند. اولین فیلد، نوع آدرس (Address Family) است که نوع آدرس IP (مانند IPv4 یا IPv6) را تعیین می‌کند. این فیلد معمولا 1 بایت است و از مقادیر تعریف‌شده در استاندارد IANA (مانند 1 برای IPv4 و 2 برای IPv6) استفاده می‌کند. فیلد بعدی، نوع کدگذاری (Encoding Type) است که نحوه کدگذاری آدرس را مشخص می‌کند. این فیلد اغلب برای پشتیبانی از فرمت‌های خاص یا بومی تنظیم می‌شود و معمولا با مقدار صفر پر می‌شود، مگر در مواردی که کدگذاری خاصی مورد نیاز باشد. سپس، طول آدرس (Address Length) می‌آید که طول آدرس را بر حسب بایت نشان می‌دهد (برای مثال، 4 بایت برای IPv4 و 16 بایت برای IPv6). این فیلد به روترها کمک می‌کند تا اندازه دقیق آدرس را در پیام تشخیص دهند.

پس از این فیلدها، خود آدرس (Address) قرار دارد که می‌تواند آدرس یک فرستنده، گیرنده یا گروه چندپخشی باشد. برای مثال، در پیام Join/Prune، آدرس گروه چندپخشی (Multicast Group Address) و آدرس فرستنده (Source Address) با استفاده از این فرمت کدگذاری می‌شوند. در برخی موارد، آدرس‌ها با فیلدهای اضافی همراه می‌شوند، مانند فیلدهای بیت‌فلگ (Flag Bits) که اطلاعاتی مانند نوع آدرس (یونی‌کست یا چندپخشی) یا نقش آن (مانند منبع یا مقصد) را مشخص می‌کنند. این بیت‌ها معمولا در پیام‌های خاصی مانند پیام‌های Bidirectional PIM استفاده می‌شوند تا ویژگی‌های پیشرفته‌تری را پشتیبانی کنند.

فرمت‌های آدرس کدگذاری‌شده در PIM انعطاف‌پذیری بالایی دارند و امکان پشتیبانی از سناریوهای مختلف چندپخشی را فراهم می‌کنند. برای مثال، در حالت پراکنده (Sparse Mode)، آدرس نقطه ملاقات (Rendezvous Point) و گروه‌های چندپخشی با این فرمت کدگذاری می‌شوند تا روترها بتوانند درخت‌های اشتراکی را بسازند. این ساختار همچنین مقیاس‌پذیری را تضمین می‌کند، زیرا می‌تواند با پروتکل‌های آدرس‌دهی آینده سازگار شود. با وجود سادگی، این فرمت‌ها به PIM اجازه می‌دهند تا اطلاعات پیچیده آدرس‌دهی را به‌صورت کارآمد انتقال دهد و از عملکرد بهینه در شبکه‌های چندپخشی، چه در برنامه‌های کوچک و چه در مقیاس بزرگ مانند پخش زنده یا توزیع محتوا، اطمینان حاصل کند.

Pim hello message format

پیام Hello در پروتکل مستقل چندپخشی، یکی از پیام‌های اساسی است که برای کشف و برقراری ارتباط بین روترهای PIM در یک شبکه استفاده می‌شود. فرمت پیام Hello شامل یک سرآیند مشترک PIM و بدنه‌ای است که اطلاعات اضافی را در قالب گزینه‌ها (Options) منتقل می‌کند. این پیام‌ها به‌صورت دوره‌ای (معمولا هر 30 ثانیه) توسط روترهای PIM روی تمامی رابط‌های فعال ارسال می‌شوند تا همسایگی‌ها را شناسایی کرده، روابط همسایگی (Adjacency) را حفظ کنند و پارامترهای عملیاتی را هماهنگ کنند. پیام Hello نقش مهمی در ایجاد پایه‌ای برای عملیات چندپخشی ایفا می‌کند، زیرا بدون شناخت همسایه‌ها، روترها نمی‌توانند درخت‌های توزیع چندپخشی را بسازند یا داده‌ها را به گیرندگان ارسال کنند. این پیام در تمامی حالت‌های PIM، از جمله متراکم، پراکنده و دوجهتی، استفاده می‌شود.

فرمت پیام Hello با سرآیند مشترک PIM آغاز می‌شود که 4 بایت طول دارد و شامل فیلدهای نسخه (Version)، نوع (Type)، فیلد رزرو شده (Reserved) و چکسام (Checksum) است. به طور مثال، اگر فیلد نوع (Type) روی مقدار 0 تنظیم شده باشد نشان‌دهنده پیام Hello است. پس از سرآیند، بدنه پیام قرار دارد که از یک سری گزینه‌ها (Options) تشکیل شده است. هر گزینه با استفاده از فرمت TLV سرنام (Type-Length-Value) کدگذاری می‌شود، به این معنا که هر گزینه شامل یک فیلد نوع (Option Type)، یک فیلد طول (Option Length) و مقدار (Option Value) است. این ساختار انعطاف‌پذیر به PIM اجازه می‌دهد تا اطلاعات متنوعی را از طریق پیام Hello منتقل کند و در عین حال سازگاری با نسخه‌های آینده را حفظ کند.

برخی از گزینه‌های رایج در پیام Hello شامل گزینه Holdtime، گزینه Priority و گزینه Generation ID هستند. گزینه Holdtime (نوع 1) مدت زمانی را مشخص می‌کند که روتر گیرنده باید همسایه را فعال در نظر بگیرد (معمولا 105 ثانیه، یعنی 3.5 برابر فاصله زمانی ارسال Hello). اگر در این مدت، پیام Hello جدیدی دریافت نشود، همسایگی منقضی می‌شود. گزینه Priority (نوع 2) برای انتخاب روتر منتخب در شبکه‌های چنددسترسی (Multi-Access) استفاده می‌شود. در این حالت، روتری با بالاترین اولویت DR انتخاب می‌شود و مسئولیت ارسال پیام‌های Join/Prune را بر عهده می‌گیرد. گزینه Generation ID (نوع 4) یک مقدار تصادفی است که برای تشخیص تغییرات حالت در روتر فرستنده استفاده می‌شود؛ اگر این مقدار تغییر کند، روتر گیرنده متوجه می‌شود که همسایه ری‌استارت شده و ممکن است نیاز به به‌روزرسانی حالت‌ها باشد.

پیام Hello می‌تواند شامل گزینه‌های دیگری مانند آدرس نقطه ملاقات (Rendezvous Point Address) در حالت پراکنده یا پشتیبانی از قابلیت‌های دوجهتی باشد. این گزینه‌ها به روترها کمک می‌کنند تنظیمات و قابلیت‌های یکدیگر را درک کرده و عملیات چندپخشی را هماهنگ کنند. پیام Hello با استفاده از آدرس چندپخشی 224.0.0.13 (برای IPv4) یا FF02::D (برای IPv6) ارسال می‌شود و روترها با دریافت آن، اطلاعات همسایگی را به‌روزرسانی می‌کنند. این پیام با طراحی ساده اما منعطف خود، پایه‌ای برای عملکرد صحیح PIM فراهم می‌کند و از هماهنگی و پایداری شبکه‌های چندپخشی اطمینان می‌دهد.

نویسنده: حمیدرضا تائبی

اشتراک‌گذاری
نویسنده
تصویر حمیدرضا تائبی
حمیدرضا تائبی
مطالب مشابه
برای دریافت مشاوره و یا اطلاع از قیمت، با ما در تماس باشید.