تحقیق درباره Flow، سوئیچ، OpenFlow، پکت

دامنه نیازمند ایجاد کنترلر های تکی برای برقراری ارتباط با یکدیگر از طریق یک پروتکل استاندارد برای تبادل اطلاعات مسیریابی می باشد. برای این منظور IETF اخیراً بر روی توسعه و گسترش پروتکلی به نام SDNi کار می‌کند.
2.9.3.2 قابلیتهای SDNi شامل موارد زیر است:
2.9.3.2.1 هماهنگ کردن تنظیمات جریان داده که از برنامه‌هایی که حاوی اطلاعاتی مثل QoS و توافق‌های سطح سرویس بین چندین دامنه SDN می‌باشند نشأت می‌گیرد.
2.9.3.2.2 تبادل اطلاعات قابل دسترسی به منظور ساده‌سازی مسیریابی بین دامنه‌های SDN. این تبادل اطلاعات به یک جریان داده این امکان را می‌دهد که از SDNها عبور کند و هر کنترلر بهترین مسیر را در زمانی که مسیرهای مختلف در دسترس است انتخاب کند.
2.9.3.3 انواع پیام‌های SDNi شامل موارد زیر می‌باشد:
2.9.3.3.1 به روز رسانی قابلیت دسترسی
2.9.3.3.2 درخواست تنظیمات/ به روزرسانی جریان داده (که شامل مواردی مثل QoS، میزان داده انتقالی، تاخیر و… می‌باشد)
2.9.3.3.3 به روز رسانی توانایی و قابلیتها (شامل توانایی‌های مربوط به شبکه مثل میزان داده انتقالی و QoS و توانایی‌های نرم‌افزاری و سیستمی موجود در دامنه)
2.10 پروتکل OpenFlow
با افزایش روزافزون ترافیک اینترنت و پیدایش رویکردهای نوین مانند رایانش ابری و خدمات شبکه های اجتماعی، نیاز مبرم به بستری امن، سریع،گسترده و قابل توسعه بیش از پیش مشاهده می شود. لذا محققان نیاز به بستری بزرگ و نزدیک به واقعیت دارند تا بتوانند ایده ها و پروتکل های جدید را در محیطی عملیاتی آزمایش کنند. مشتریان IT نیز با خرید حجم زیادی از تجهیزات شبکه، بدنبال کنترل بیشتر و هزینه کمتر در شبکه های خود هستند؛ اما با توجه به معماری متفاوت هر تولیدکننده، جای خالی یک استاندارد که محققان و مشتریان را قادر به برنامه نویسی تجهیزات شبکه بر حسب نیازهای پژوهشی و سازمانی کند حس می شود. از این رو محققان دانشگاه استنفورد با استفاده از سرمایه بنیاد ملی علوم آمریکا به ابداع پروتکل Open Flow پرداختند[10]. این پروتکل از یک طرف امکان تجربه و آزمایش روی سوئیچ های نامتجانس را با استفاده از یک رویکرد مشترک برای محققان فراهم می سازد و از طرف دیگر این امکان را فراهم می سازد که تولیدکنندگان، مشخصات فناوری داخلی سوئیچ های خود را افشا نکنند. پروژه مربوط به این پروتکل در یک آزمایشگاه مجازی بنام GENI21که متشکل از زیرساخت شبکه 14 دانشگاه و دو شبکه اصلی ملی آمریکا می باشد، انجام می شود. به این ترتیب محققان معماری پیشنهادی خود را به طور موازی با ترافیک امروزی اینترنت اما به طور مستقل از آن آزمایش می کنند.
فناوری Open Flow بخشی از عملیات Clean Slate است که روش‏های ممکن را برای باز مهندسی اینترنت به منظور بهبود عکس‏العمل ساختارهای آن در مقابل شیوه استفاده کاربران، مورد بررسی قرار می‏دهد[11]. محققان Open Flow را به گونه‏ای طراحی کرده‏اند که بدون برهم زدن جریان تولید، پروتکل‏های جدید شبکه را درون شبکه‏های موجود آزمایش می‏کند. راهکار جایگزین دیگر، راه‏اندازی یک زیر ساخت مجزا برای انجام آزمایش‏های عملی است که هزینه بسیار زیادی را در پی دارد.
Open Flow هدف جدیدی در ارتباطات و تکنولوژی های آینده میباشد که این امکان را به ما میدهد که در انتقال و سویچینگ بسته های شبکه بتوانیم از توانایی های متعددی نظیر تست و بررسی ، استفاده از یک کنترل کننده خارجی ( Remote Controller ) و … بهره ببریم که این ویژگی جدید را میتوانیم در دستگاه هایی نظیر سویج ، روتر ، اکسس پوینت و … داشته باشیم[12] .

شکل 2.12 اجزای سازنده ی Open Flow [8]

Open Flow یک استاندارد آزاد جهت ارتباطات میباشد که میتواند توسط سازنده ها و تولید کننده های مختلف مورد استفاده قرار گیرد و همچنین امکان ایجاد یک پروتکل جدید را در محیط های آزمایشگاهی و آموزشی داشته باشیم[12] ، به عنوان مثال به کمک این استاندارد یک پروتکل جدید بنام Amy-OSPF ایجاد شد و قصد بر این داشت که جای OSPF را بگیرد .
از دیگر نمونه های استفاده از این پروتکل ، ایجاد یک کنترل کننده مرکزی در سطخ شبکه برای مدیریت بسته ها و سطوح دسترسی بوده است که توسط شخصی بنام Ethan مورد بررسی و آزمایش قرار گرفته شده است .

شکل 2.13 نمونه ای از شبکه Openflow enabled switch [8]
در دستگاه های معمولی نظیر سویچ ها و روتر ها( Fast Packet Forwarding ) Data Plane و Control Plane (Routing Decision) هر دو در همان دستگاه صورت میگرفت در صورتی که با استفاده از تکنولوژی Open Flow این توانایی را خواهیم داشت تا مسیر دیتا در همان سویچ صورت گیرد ولی Routing Decision در یک دستگاه دیگر و یک کنترل کننده خارجی ( Remote Controller ) صورت گیرد.
با استفاده از OpenFlow می‌توان به شیوه‌ای قابل‌برنامه‌ریزی روی چگونگی راه‌اندازی و از کار انداختن شبکه‌ها براساس افزایش یا کاهش تعداد ماشین‌های مجازی دست یافت. تعیین مشخصات دقیق برای این رابط‌های برنامه‌نویسی مدیریت شبکه، کلید موفقیت SDN و OpenFlow است. اکنون که پای VMware نیز به OpenFlow باز شده است، به نظر می‌رسد باید منتظر محصولات بیشتر و پشتیبانی بهتری برای آن باشیم. همچنین، شاید تا زمانی که استانداردها تعیین نشده باشند، برخی شرکت‌ها نمونه‌های جایگزینی را هم معرفی خواهند کرد.
OpenFlow یک نمونه از تجرید انتقال از SDN می باشد. سوئیچ کنترلر های OpenFlow پروتکل های OpenFlow مولفه های اصلی OpenFlow هستند .
ساختار داخلی سوئیچ ها با هم متفاوت هستند ، هر شرکت بر اساس تجربه و امکاناتی که در اختیار مش
تریانش قرار می دهد، ساختار متفاوتی را ارائه می دهد. اما بیشتر سوئیچ ها یک ویژگی مشترک دارند. Flow table ها که قابلیت Firewall , QOS , NAT را پشتیبانی می کنند.
Open Flow از این ویژگی مشترک استفاده می کند. Open Flow یک پروتکل باز لایه 2 است که ادمین های شبکه به وسیله ی آن می توانند ترافیک شبکه های آزمایشی و شبکه های واقعی را کنترل کنند. ترافیک های آزمایشی کاملا جدا از شبکه خواهند بود و این ویژگی به پژوهشگران اجازه می دهد تا پروتکل ها و راه کارهای امنیتی جدید را به راحتی آزمایش کنند. خود پژوهشگران مسئول کنترل شبکه های آزمایشی خود خواهند بود.
سوئیچ های Open Flow دارای OpenFlowTable هستند که اطلاعات تمام پکت های شبکه وارد این جدول می شود. این سوئیچ ها کمترین امکاناتی که در اختیار ادمین ها قرار می دهد کنترل و پیگیری تمام پکت های داخل شبکه است.
2.10.1 FlowTable
FlowTable های موجود در Open Flow Switch دارای سه ستون می باشند که 1- packet header جریان را تعریف می کند. 2- statistics که تعداد بسته ها و بایت های هر جریان و زمان آخرین تطبیق جریان قبلی را پیگیری می کند. (برای کمک به حذف جریان غیر فعال) و 3- Action که تعریف می کند که بسته چگونه باید پردازش شود.

شکل 2.14 فیلد های یک Flow Table [29]
در داخل خود یک Open Flow Table دو جدول وجود دارد که جریان را تعریف می کند. جدول اول جدول خطی است که از whildcards برای تعریف جریان ها استفاده می کند که دارای 100 wildcard برای ورودی های جریان ها می باشد. wildcard-entry یک مدخل است که فقط بعضی فیلد های یک جریان را تعریف می کند. (MAC address, IP adress, TCP port , …) و جریان های منطبق بر این فیلد از جدول خطی را با OpenFlow switch مطابقت می دهد.
جدول دوم یک جدول مطابقت دقیق22 است که از الگوریتم HASH برای ذخیره سازی و جستجو در ورودی ها استفاده می کند. exact-match-entry یک مدخل است که تمام مقادیر ممکن برای یک جریان را تعریف می کند. (Input port ,MAC source/destination address, Ethernet protocol type, IP MAC source/destination address, ,network protocol,… – source/destination port ). Open Flow Switch تنها ورودی هایی را مطابقت می دهد که مشابه ورودی جدول HASH باشند.
2.10.2 Open Flow Switch
دو نوع OpenFlow switch وجود دارد. نوع اول سوویچ کام های تجاری مبتنی بر سخت افزار هستند که از TCAM و سیستم عامل سوئیچ/ روتر برای اجرای Flow Table و پروتکل Open Flow استفاده می کنند . نوع دوم سوئیچ های مجازی مبتنی بر نرم افزار23 هستند که با استفاده از سیستم های یونیکس/لینوکس قابل اجرا هستند تا تمام توابع Open Flow Switch را یکپارچه کنند.
Open Flow Switch حداقل باید دارای 3 ویژگی باشد:
2.10.2.1 هر flow entry را ثبت کند و روش پردازش آنها را بگوید.
2.10.2.2 دارای کانال امن باشد. این کانال ارتباط میان کنترل کننده و سوئیچ را برقرار می کند و اجازه فرستادن پکت ها را صادر می کند.
2.10.2.3 Open Flow Protocol که زبان مشترک میان کنترل کننده و سوئیچ خواهد بود.
2.10.2.4 سوئچ های مبتنی بر OpenFlow بر اساس ویژگی هایشان به دو دسته تقسیم می شوند:
* Dedicated OpenFlow Switch
* OpenFlow Enabled Switch
2.10.2.4.1 Dedicated OpenFlow Switch
پکت ها را بر اساس دستور کنترل کننده بین پورت ها می فرستد. این سوئیچ تمام پکت های TCP,IP ,MAC address,VLAN Tag را پشتیبانی می کند. برای هر flow entry سه کار انجام می دهد.
1- فرستادن flow به پکت مورد نظر
2- کپسول کردن و فرستادن پکت ها به کنترل کنده
3- از بین بردن پکت ها برای افزایش امنیت و همچنین کاهش ترافیک
Flow Table سه بخش دارد:
1- Header پکت ها
2- عملکرد، که نحوه پردازش پکت ها را عنوان می کند.
3- آمار ، که شماره و تعداد پکت های ارسالی در شبکه را نگه می دارد.
2.10.2.4.2 OpenFlow Enabled Switch
تعدادی از تولید کنندگان سوئیچ ، روتر و اکسس پوینت با اضافه کردن کانال امن، openflow protocol و Flow Table خاصیت Open Flow را به محصولاتشان اضافه کرده اند. تمام Open Flow Table ها با یک کنترل کننده، کنترل می شوند. Openflow protocol به سوویچ اجازه می دهد تا برای افزایش کیفیت و سرعت شبکه، تحت کنترل دو یا چند کنترل کننده باشد.
Openflow enabled switch باید ترافیک آزمایش را از ترافیک موجود در شبکه جدا کند که به روند نرمال سوئیچ لایه ی 2 و 3 پردازش می شود. 2 راه برای این جدا سازی ترافیک وجود دارد:
اضافه کردن مرحله 4 به مراحل سه گانه قبلی ? پکت ها را از طریق پردازش نرمال سوئیچ ها ارسال کنیم.
راه دیگر ، با ساختن Vlan ها ترافیک موجود و آزمایشی را جدا کنیم.
دو راه بالا مشکل ما را حل می کند. تمام Openflow enabled switch ها باید حداقل یکی از این راه کارها را پشتیبانی کنند.
ویژگی های اضافی OpemFlow Switch نسبت به سوئیچ های معمولی
اگر سوئیچ ، فرمت هدر و 4 عملکرد گفته شده در بالا را پشتیبانی کند به آن سوئیچ Type0 گفته می شود.

این مطلب مشابه را هم بخوانید :   منابع پایان نامه دربارهقانون مجازات، ارتکاب جرم، تکرار جرم، جامعه خطرناک

شکل 2.15 هدر یک سوئیچ Type0 [30]
ما انتظار داریم که سوئیچ ها ویژگی های بیشتری را پشتیبانی کنند. برای مثال توانایی دوباره نویسی بخش هدر و یا اولویت بندی پکت ها و توانایی سازگاری با پروتکل های جدید را داشته باشند. اگر این ویژگی ها به سوئیچ اضافه شود به آن Type1 گفته می شود.
2.10.3 کنترل کننده
Flow entry را به Flow table اضافه یا حذف می کند. برای مثال کنترل کننده ای که گزارش پکت ها را ثبت می کند می تواند یک نرم افزار ساده باشد که بر روی یک کامپیوتر معمولی نصب شده است.
پژوهشگران می توانند کنترل کامل مسیریابی24 و یا ارسال پکت ها در سوئیچ را به وسیله کنترل کننده انجام دهند. بعضی از کنترل کننده ها می توانند توسط چند پژوهشگر استفاده شوند. برای هر کدام می توان دسته های جداگانه به همراه قوانین و محدودیت های مربوط به پروژه یشان تع
ریف کرد.
کنترل کننده ها معمولا بر روی لینوکس و به زبان C نوشته می شوند. از انواع کنترل کننده ها می توان به موارد زیر اشاره کرد.
2.10.3.1 NOX
nox اولین کنترلر برای openflow میباشد که به زبان c++ نوشته شده و فراهم کننده ی API برای python نیز می باشد. Nox پایه ی بسیاری از پروژه های تحقیقاتی و توسعه ای در زمینه ی openflow و SDN می باشد nox دارای دو نوع توزیع می باشد .[68]
2.10.3.1.1 NOX Classic تشکیل شده است از یک توسعه ی خوش فرم که از python و c++ پشتیبانی می کند به همراه گروهی از برنامه های شبکه . با این حال این توزیع برآورده کننده ی همه ی نیاز ها نیست و برنامه ای برای توسعه های آتی ندارد.
2.10.3.1.2 NOX
2.10.3.2 nox جدید تنها از c++ پشتیبانی می کند و با برنامه های شبکه ی کمتری نسبت به NOX-Classic همراه است ، ولی دارای بستر کدینگ تمیزتر و بسیار سریعتر می باشد.
2.10.3.3 POX
pox فقط ورژن python ، NOX می باشد و عموما می تواند دارای تفکر درست تری به عنوان یک کنترلر متن باز openflow که به زبان python نوشته شده باشد و همچنین یک پلت فرم برای توسعه ی سریع تر و مدل اولیه ای برای برنامه های شبکه باشد . هدف اولیه ی POX تحقیقات می باشد.[69]
2.10.3.4 NDDI-OEE
برنامه ای برای کنترل OpenFlow سوئیچ ها می باشد و دارای یک واسط کاربری ساده و کاربر پسند برای این کار می باشد، این کنترلر در بطن خود از Nox استفاده می نماید.
2.10.3.5 Open DayLight (ODL)
OpenDaylight یک پلت فرم متن باز بر اساس جاوا برای برنامه ریزی شبکه های SDN می باشد و دارای یک واسط کاربری ساده و کاربر پسند برای این کار می باشد.
2.10.3.6 Beacon : یک کنترل کننده جاوا می باشد که بر روی OSGI ساخته شده است و به برنامه های Open Flow اجازه می دهد تا بدون قطع شدن ارتباطشان با سوئیچ، Start , Stop , Refresh و نصب شوند.
2.10.3.7 Hellos : کنترل کننده ای است که توسط NEC برای انجام آزمایشات طراحی و ساخته شده است.
2.10.3.7.1 BigSwitch : کنترل کننده ی منبع بسته است و یک محیط کاملا دوستانه برای مدیریت شبکه در اختیار کاربران می گذارد.
2.10.3.7.2 SNAC : بر اساس NOX 0. 4 نوشته شده است، قوانین انعطاف پذیری دارد و برای نصب سخت افزارها و کنترل وقایع محیط دوستانه ای دارد.
2.10.3.7.3 Maestro : کنترل کننده جاوا است که توسط دانشگاه رایس برای کارهای تحقیقاتی، نوشته و معرفی شده است
2.10.3.8 نسخه های پروتکل
در 28 فوریه سال 2011 نسخه 1. 1 این پروتکل معرفی شد که هنوز هم مورد استفاده قرار می گیرد. اما در

دیدگاهتان را بنویسید