کدام کنترلر SDN برای پروژه ما مناسب است

کدام کنترلر SDN برای پروژه ما مناسب است

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

 

کنترل‌کننده‌های مورد بررسی در این مقاله:

 

پارامترهای موثر در انتخاب کنترل‌کننده‌:

1) زبان برنامه‌نویسی (Programming Language)

زبان‌های برنامه‌نویسی استفاده شده در کنترل‌کننده‌ها، زبان‌های رایج برنامه‌نویسی مانند پایتون، جاوا و C++ و در مواردی خاص، روبی و جاوا اسکریپت هستند که باعث یادگیری سریع استفاده از این کنترل‌کننده‌ها شده است. در برنامه‌های کاربردی مورد استفاده در صنعت که نیاز به زمان اجرای سریع است، زبان جاوا می‌تواند گزینه مناسبی باشد. علاوه بر آن جاوا از multi-threading نیز پشتیبانی می‌کند. از طرف دیگر در پایتون مشکلاتی در رابطه با multi-threading وجود دارد. همچنین باید در نظر داشت که در C/C++ در حوزه مدیریت حافظه محدودیت‌هایی وجود دارد.

2) پشتیبانی از  OpenFlow

این پروتکل اولین استاندارد مورد استفاده در واسط جنوبی است که ارتباط مستقیم سوییچ‌ها در صفحات داده را ممکن کرده است. در نسخه‌های 1.3 به بعد این پروتکل، پشتیانی از IPv6 نیز افزوده شده است.

3) قابلیت برنامه‌ریزی شبکه (Network Programmability)

سادگی قابلیت برنامه‌ریزی شبکه، یکی از مزایای شبکه‌های SDN است. پشتیبانی از این قابلیت، ,وابسته به رابط کاربری گرافیکی و رابط فرمان و توانایی در یکپارچه شدن با واسط‌های شمالی است.

4) واسط‌های جنوبی (Southbound Interfaces)

این واسط‌ها امکان  تغییر پویا در قواعد ذخیره شده در صفحات داده را برای کنترل‌کننده فراهم می‌کنند. پروتکل OpenFlow تنها API موجود برای این کار نیست، بلکه APIهای دیگری مانند NETCONF نیز وجود دارند که برای مدیریت تجهیزات مورد استفاده قرار می‌گیرند. همچنین پروتکل‌هایی مانند OSPF، BGP، و غیره نیز با کمک پشتیبانی از شبکه‌های هیبرید، در واسط‌های جنوبی کنترل‌کننده‌ها شبیه‌سازی شده‌اند.

5) واسط‌های شمالی (Northbound Interfaces)

این واسط، واسطی بین کنترل‌کننده و لایه اپلیکیشن است که توسعه اپلیکیشن‌های جدید، بستگی به این واسط دارد. در حال حاضر REST رایج ترین واسط شمالی مورد استفاده توسط کنترل‌کننده‌هاست.

 

در جدول زیر می‌توانید پارامترهای مختلف در کنترل‌کننده‌های مذکور را در یک نگاه با یکدیگر مقایسه کنید:

6) نرخ گذردهی (Throughput)

کنترل‌کننده‌هایی که زبان برنامه‌نویسی آن‌ها پایتون است (مانند POX و Ryu)، به دلیل عدم پشتیبانی از multi-threading از مقیاس‌پذیری خوبی در هسته‌های CPU برخوردار نیستند. کنترل‌کننده Beacon با داشتن بیشترین مقیاس‌پذیری در تعداد هسته‌های CPU، از بیشترین نرخ گذردهی برخوردار است.

کارایی کنترل‌کننده‌های POX و Ryu به دلیل عدم پشتیبانی از multi-threading بستگی به تعداد سوییچ‌ها ندارد. در کنترل‌کننده‌هایی که از multi-threading پشتیبانی می‌کنند، افزودن تعداد سوییچ های بیشتر، منجر به بهره وری بهتر در هسته‌های موجود CPU شده و این باعث افزایش نرخ گذردهی می‌شود تا جایی که تعداد سوییچ‌ها از تعداد هسته‌ها بیشتر شود.

با توجه به الگوریتم round-robin در توزیع بسته‌ها، کنترل‌کننده Meastro نتیجه بهتری را در تعداد سوییچ‌های پایین نشان می‌دهد. اما کارایی این کنترل‌کننده با زیاد شدن تعداد سوییچ‌ها (256) کاهش می‌یابد. این در حالی است که کنترل‌کننده Beacon بهترین نرخ گذردهی را در تعداد سوییچ‌های متصل بالا داراست.

7) تاخیر (Latency)

در بین کنترل‌کننده‌ها، کنترل‌کننده Beacon و MuL کمترین میزان تاخیر را دارند، در حالی که کنترل‌کننده POX که یک کنترل‌کننده مبتنی بر زبان پایتون است، بیشترین میزان تاخیر را داراست.

8) قابلیت اطمینان (Reliability)

این پارامتر نشان دهنده توانایی کنترل‌کننده در اجرای طولانی مدت تحت حجم بار متوسط، بدون قطع ارتباط با سوییچ‌ها یا حذف پیام‌های ارسالی از سوییچ‌هاست. در کنترل‌کننده MuL به دلیل مشکل در ماژول learning switch و در نتیجه عدم توانایی در ایجاد مداخل جدول جریان جدید، خیلی زودتر از سایر کنترل‌کننده‌ها  از دست رفتن بسته‌ها و قطع ارتباط با سوییچ‌ها اتفاق می‌افتد.

9) امنیت (Security)

دریافت پیام با طول نامعتبر:

دو کنترل‌کننده Meastro و NOX کنترل‌کننده‌هایی هستند که با دریافت چنین پیامی دچار crash می‌شوند. هرچند این اتفاق برای کنترل‌کننده Meastro در صورتی که بین دو پیام تاخیری بیشتر از 0.01 ثانیه وجود داشته باشد اتفاق نمی‌افتد. کنترل‌کننده Ryu در صورت برخورد با این اتفاق، بدون قطع هیچ گونه ارتباطی بسته ها را نادیده می‌گیرد.

ورژن نامعتبر OpenFlow:

کنترل‌کننده‌های POX، MuL، Ryu در صورت برخورد با این اتفاق، ارتباط خود را با سوییچ قطع می‌کنند. سایر کنترل‌کننده‌ها بسته‌ها را صرف نظر از ورژن OpenFlow پردازش کرده و پاسخ را با ورژن 0x01 به سوییچ مورد نظر می‌دهند.

نوع نامعتبر پیام OpenFlow:

کنترل‌کننده‌های MuL و Ryu این پیام‌ها را نادیده می‌گیرند. کنترل‌کننده MuL پس از ارسال یک پیام FeatureRequest و دریافت پاسخ، ارتباط خود را با سوییچ مربوطه قطع می‌کند. اما سایر کنترل‌کننده‌ها پیام ها را پردازش کرده و پاسخ می‌دهند.

در حالت کلی می‌توان کنترل‌کننده Ryu را از نظر امنیت یکی از بهترین کنترل‌کننده‌ها دانست.

10) حافظه مصرفی (Memory Consumption)

میزان حافظه مصرفی یکی از مسائل مهم در بین کنترل‌کننده‌هاست. کنترل‌کننده Beacon در مقایسه با سایر کنترل‌کننده‌ها حافظه کمتری مصرف می‌کند بنابراین از کارایی نسبتا بهتری برخوردار است.

 

در آخر لازم به ذکراست که  یکپارچگی ایجاد شده بین IoT data broker و واسط جنوبی مخصوص IoT در نسخه جدید OpenDayLight، این کنترل‌کننده را به عنوان اولین رقیب در گزینش کنترل‌کننده مناسب برای اینترنت اشیاء کرده است.

پاسخ دهید

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