(Software Defined Networking (SDN چیست؟
معماری شبکه نرم افزاری تعریف شده (SDN)
شبکه نرمافزاری تعریف شده (Software Defined Networking یا SDN) یک معماری جدید در شبکه است. این معماری دارای ویژگیهای زیر میباشد:
- پویا
- مدیریتپذیر
- مقرون به صرفه
- انطباقپذیر
- تجهیزات روانهسازی (Forwarding Elements)- سوئیچهای SDN
- کنترلکنندههای SDN
یک دستگاه روانهسازی، سختافزار یا نرمافزاری است که به طور اختصاصی وظیفه روانهسازی بستهها را بر عهده دارد، در حالیکه کنترلکننده، نرمافزاری است که بر روی یک پلتفرم سختافزاری مناسب (مانند سرور یا کامپیوتر شخصی) در حال اجرا میباشد.در ادامه به تعریف هریک موارد فوق پرداخته شدهاست.
تجهیزات روانهسازی-سوئیچهای SDN
یک زیرساخت SDN همانند شبکههای سنتی دارای مجموعهای از تجهیزات شبکه (از جمله سوئیچها، مسیریابها و جعبههای میانی (Middlebox Appliances))میباشد. تنها تفاوتی که در این بین وجود دارد، تبدیل تجهیزات فیزیکی سنتی به عناصر ساده روانهسازی میباشد که این عناصر فاقد بخش کنترلی و یا نرمافزاری جهت تصمیمگیریهای خودکار میباشد. هوش شبکه از تجهیزات صفحه داده به یک سیستم کنترلی به طور منطقی متمرکز انتقال یافته است. این سیستم کنترلی شامل سیستم عامل شبکه و برنامههای کاربردی آن میباشد. به منظور اطمینان از قابلیت همکاری و سازگاری بین انواع مختلف صفحه کنترل و داده، میبایست این شبکهها بر روی واسطهای باز و استانداردی (از جمله OpenFlow) ایجاد شوند. در صورت وجود چنین واسطی، کنترلکننده قادر به برنامهریزی تجهیزات روانهسازی ناهمگون به صورت پویا خواهد بود. این موضوع در شبکههای سنتی چالشی اساسی میباشد، که دلیل آن استفاده از تجهیزات شرکتهای مختلف با واسطهای غیر متنباز و صفحه کنترلی توزیعشده میباشد.
یک دستگاه روانهسازی مبتنی بر پروتکل OpenFlow دارای خط لولهای از جداول جریان (Flow Tables) است که هر مدخل (Entry) از این جداول شامل سه بخش میباشد:
- یک قاعده انطباق (Matching Rule)؛
- یک اقدام (Action) که برای بستههای انطباقیافته صورت میپذیرد؛
- و شمارندههایی که آمار بستههای انطباقیافته را نگهداری میکنند.
این مدل سطح بالا از OpenFlow در حال حاضر در ساخت و پیادهسازی بسیاری از دستگاههای صفحه دادهی SDN بکارگرفته شده است.
در یک دستگاه OpenFlow، چگونگی رفتار با یک بسته توسط مجموعهای از جداول جریان (Flow Tables) متوالی مشخص میشود. زمانیکه یک بسته وارد میشود، یک فرآیند جستجو از اولین جدول آغاز میشود و تا زمانیکه یک انطباق اتفاق نیفتد (Match) و یا به طور قطع قاعدهای برای آن بسته یافت نشود (Miss) این روند ادامه مییابد. همانطورکه در شکل فوق نشان داده شده است، یک قاعدهی جریان میتواند به شکلهای مختلفی تعریف شود. اگر هیچ قاعدهی پیشفرضی بر روی سوئیچ نصب نشده باشد آنگاه بسته دور ریخته خواهد شد. اگرچه به طور متداول، یک قاعده پیشفرض بر روی سوئیچ نصب خواهد شد که به سوئیچ دستور میدهد تمامی بستههای دریافتی را به سمت کنترلکننده ارسال نماید (و یا به خط لوله معمولی غیر OpenFlow موجود در سوئیچ ارسال کند؛ توضیح اینکه در سوئیچهای هیبرید با استفاده از خط لوله Normal، این قابلیت وجود دارد که به طور پیشفرض میتوان بستهها را بدون استفاده از پروتکل OpenFlow هدایت نمود). الویتهای این قواعد بر اساس شماره جداول و ترتیب سطرهای جداول جریان میباشد؛ یعنی ابتدا قواعد موجود در جدول ۰ و سپس قواعد موجود در جدول ۱ و الی آخر. پس از روی دادن یک انطباق میبایست اقداماتی برای آن جریان صورت پذیرد. اقدامها (Actions) شامل موارد زیر میباشند:
- هدایت بسته به سمت پورت(های) خروجی تعیین شده
- کپسوله (Encapsulate) و سپس هدایت کردن بسته به سمت کنترلکننده
- دور ریختن بسته (Drop)
- ارسال آن به سمت خط لوله عادی (Normal pipeline)
- ارسال آن به جدول جریان بعدی و یا به جداول خاص (مانند جداول گروه (Group Tables) و یا جداول اندازهگیری (Metering Tables))
کنترلکننده SDN
کنترلکننده همانند یک سیستم عامل شبکه میباشد که کنترل سختافزار را برعهده گرفته و همچنین مدیریت خودکار شبکه را تسهیل میکند. این سیستم عامل، یک واسط قابل برنامهریزی متمرکز و یکپارچه را برای تمام شبکه فراهم میسازد. همانگونه که سیستم عامل موجود بر روی یک رایانه، امکان خواندن و نوشتن را برای برنامههای کاربردی فراهم میکند، سیستم عامل شبکه نیز قابلیت مشاهده و کنترل شبکه را فراهم میسازد؛ بنابراین کنترلکننده، به تنهایی عمل مدیریت شبکه را انجام نمیدهد بلکه صرفا به عنوان یک واسط قابل برنامهریزی میباشد که امکان مدیریت شبکه را برای نرمافزارهای کاربر فراهم میکند.
کنترلکننده Floodlight
Floodlight یک کنترلکننده OpenFlow با ویژگیهای زیر میباشد:
- Enterprise-class
- Apache-licensed
- Java-based
طراحی کنترلکننده Floodlight با کارایی بالا بوده و در شبکههای با تعداد مولفه بالا به خوبی مقیاسپذیر است. کنترلکننده Floodlight مبتنی بر کنترلکننده دیگری تحت عنوان Beacon میباشد. زبان برنامه نویسی جاوا بدین دلیل برای آن انتخاب شده که از توازن مناسبی میان کارایی و کاربرپسند بودن برخوردار است. همچنین پرتابل میباشد، یعنی اینکه روی انواع مختلف سیستم عامل قابل اجرا میباشد. علاوه بر این، Beacon و نیز Floodlight دارای واسط برنامهنویسی کاربری خوب و سادهای میباشند و به همراه برنامههای کاربردی مفیدی عرضه میشوند، از جمله:
- Device Manager: دستگاههایی که در شبکه دیده شدهاند را ردیابی میکند. این ردیابی شامل مواردی از قبیل اطلاعات آدرس آنها، آخرین تاریخ رویت آنها، و آخرین سوئیچ و پورتی که در آن رویت شدهاند میباشد؛
- Topology: لینکهای مابین سوئیچهای OpenFlow را کشف میکند؛
- Routing: کوتاهترین مسیریابی لایه ۲ را میان دستگاههای شبکه فراهم میسازد؛
- Web: یک واسط کاربری تحت وب فراهم مینماید.
یکی از مزایای Beacon و Floodlight توانایی آغاز و یا خاتمه برنامههای کاربردی در حین اجرای فرآیند کنترلکننده میباشد؛ یعنی بدون نیاز به غیرفعالسازی کنترلکننده میتوان آنها را اضافه و یا حذف نمود. برنامههای کاربردی کاملا چندنخی بوده و دارای الگوریتمهای (blocking (Shared Queue و (non-blocking (Run-to-completion به منظور خواندن پیامهای OpenFlow میباشند. با توجه به مطالعات صورت گرفته توسط آقای اریکسون ، Beacon در مقایسه با NOX ، Pox و Maestro دارای بهترین کارایی میباشد.
مرسی از اطلاعاتتون
آیا در مورد big data برای sdn هم مطلبی دارین که بزارین برامون؟؟؟