Authenticate مي کند و عملکرد تمام پورت ها را پيگيري مي کند.
2.10.5.2 VLAN
Open Flow مي تواند شبکه هاي مجزا مانند VLAN را در اختيار کاربران بگذارد. ساده ترين راه ، تعيين VLAN ID براي Flowهاي پورت هاي مشخص است. ترافيکي از يک کاربر فرستاده مي شود و VLAN ID مناسب به آن داده مي شود. راهکار هاي بيشتر نيز از طريق کنترل امکان پذير است.
2.10.5.2.1 Mobile wireless VOIP Clients
کاربران VOIP مي توانند ارتباط را از طريق Open Flow ايجاد کنند. کنترل کننده محل کاربران را رديابي مي کند و ارتباطات را دوباره مسيريابي مي کند. کاربران با جابجا شدن ميان شبکه ها و Access point هاي مختلف ارتباطشان قطع نمي شود و کنترل کننده ارتباط آنها را دوباره مسيريابي مي کند.
2.10.5.2.2 شبکه هاي غير IP
در اينجا تمام مثال ها درباره شيکه هاي IP بوده است اما در Open Flow لازم نيست همه شبکه ها IP باشند، تا زماني که Header پکت ها با Flow Table منطبق باشد کافي است. اين کار در آزمايش ها باعث آدرس دهي ، نامگذاري و مسيريابي هاي تازه مي شود. Open Flow چندين راه براي پشتيباني شبکه هاي Non IP پيش روي پژوهشگران مي گذارد.
2.10.5.2.3 پردازش پکت ها
مثال هاي بالا براي پژوهش هايي بودند که کنترل کننده ، مسير پکت ها و آغاز Flow را تعيين مي کند. دو راه براي پردازش پکت ها در openflow enable switch وجود دارد. ساده ترين راه اين است که تمام پکت ها از کنترل کننده عبور کنند. در اين روش تمام پکت ها مستقيم به کنترل کننده فرستاده مي شوند. انعطاف پذيري اين روش بالاست اما عملکرد پايين است. اين روش براي آزمايش پروتکل هاي جديد مناسب است و براي پياده سازي در شبکه هاي بزرگ مناسب نيست.
راه دوم فرستادن پکت ها به سوئيچ قابل برنامه ريزي است. سوئيچ آنها را پردازش مي کند.
2.10.6 Openflow
به منظور پياده‌سازي عملي SDN دو موضوع بايد در نظر گرفته شود. اول اين كه بايد يك معماري منطقي مشترك در تمام سوئيچ‌ها، روترها و ساير تجهيزات شبكه وجود داشه باشد كه توسط کنترلر SDN مديريت شود. اين معماري منطقي ممكن است به روش‌هاي متفاوت با تجهيزات فروشندگان مختلف و روي دستگاه‌هاي شبكه متفاوت پياده‌سازي شود. دوم اين كه، يك پروتكل استاندارد و امن بايد بين کنترلر SDN و دستگاه شبكه وجود داشته باشد.
هر دوي اين نيازمندي‌ها توسط Openflow برطرف مي‌شود كه هم يك پروتكل بين کنترلرهاي SDN و دستگاه‌هاي شبكه بوده و هم نمونه يك ساختار منطقي عملكردهاي سوئيچ شبكه مي‌باشد.
پروتکل Openflow در Openflow Switch Specification كه توسط Open Networking Foundation منتشر شده است، تعريف شده است.
2.10.7 معماري منطقي سوئيچ

شکل 2.16 معماري منطقي سوئيچ [8]
شكل 2.14 يك ساختار ابتدايي از محيط Openflow را نشان مي‌دهد. کنترلر SDN با سوئيچ‌هاي سازگار با Openflow توسط پروتكل Openflow كه روي SSL اجرا مي‌شود ارتباط برقرار مي‌كند. هر سوئيچ به ساير سوئيچ‌هاي Openflow و به دستگاه‌هاي کاربر متصل مي‌شود كه مبدا و مقصد بسته‌هاي جريان داده مي‌باشند.
با هر سوئيچ يكسري جداول كه بر روي سخت‌افزار يا Firmware پياده‌سازي شده‌اند براي مديريت جريان‌هاي بسته‌ها در طول سوئيچ استفاده مي‌شوند.
مشخصات Openflow سه نوع جدول را در معماري منطقي سوئيچ تعريف مي‌كند. جدول جريان داده كه بسته‌هاي وارده را با يك جريان داده خاص مطابقت مي‌دهد و كارهاي خاصي را كه بايد روي بسته‌ها انجام شود را مشخص مي‌كند. امکان دارد چندين جدول جريان داده وجود داشته باشد که بصورت خط لوله عمل کنند. يك جدول جريان داده ممكن است يك جريان داده را به سمت Group Table هدايت كند كه اين كار ممكن است باعث فعال شدن مجموعه‌اي از رفتارها شود كه بر روي يك يا چند جريان داده تاثير بگذارد. يك جدول اندازه‌گيري مي‌تواند چند فعاليت مرتبط با کارايي را در جريان داده فعال سازد.
در اينجا لازم است به تعريف بهتري از جريان داده بپردازيم. يك جريان داده يك توالي از بسته هاي در حال عبور از شبكه مي‌باشد كه مجموعه‌اي از مقادير فيلد هدر را به اشتراك مي‌گذارد. به عنوان مثال يك جريان داده مي‌تواند شامل تمام بسته ها با IP addressها، مبداء و مقصد يكسان، يا تمام بسته ها با مشخصه VLAN يكسان باشد.
2.10.8 مولفه‌هاي جدول جريان داده
هرجدول جريان داده حاوي ورودي‌هايي مي‌باشد كه از 6 مولفه تشكيل شده است.
2.10.8.1 Match Fields : براي انتخاب بسته‌هايي كه با مقادير داخل فيلدها مطابقت دارند استفاده مي‌شود.
2.10.8.2 Priority :اولويت نسبي ورودي‌هاي جدول
2.10.8.3 Counters : به روز شده براي بسته‌هاي تطبيق داده شده. مشخصات Openflow انواع مختلف تايمرها را معرفي مي‌كند مثل تعداد بايت‌هاي بسته‌هاي دريافتي در هر پورت يا در هر جدول جريان داده و يا هر ورودي جدول جريان داده ؛ تعداد بسته‌هاي از بين رفته و مدت زمان جريان داده
2.10.8.4 Instructions : كاري كه بايد انجام شود اگر تطبيق اتفاق بيفتد.
2.10.8.5 Timeouts : ماكزيمم زمان Idle (بي‌كاري) قبل از اين كه جريان داده توسط سوئيچ از بين برود.
2.10.8.6 Cookie : ارزش داده نامفهوم كه توسط کنترلر انتخاب شده است. ممكن است توسط کنترلر براي فيلتر كردن آمار جريان داده، تغيير جريان داده و حذف جريان داده استفاده شود؛ ولي در زمان پردازش بسته استفاده نمي‌شود.
2.10.9 مولفه فيلدهاي تطبيق داه شده ورودي يك جدول شامل فيلدهاي ضروري زير است:
2.10.9.1 پورت ورودي: شناسه پورت روي سوئيچ جايي كه يك بسته دريافت مي‌شود.
2.10.9.2 آدرس‌هاي مبدا و مقصد Ethernet: هر ورودي مي‌تواند يك آدرس دقيق،‌يك مقدار Bitmask كه تنها
برخي از بيت‌هاي آدرس‌ آن چك شده است و يا يك مقدار جايگزين شونده (كه با هر مقداري Match مي‌شود) باشد.
2.10.9.3 شماره پروتكل IPV4 و IPV6: كه مقدارش، header بعدي در بسته را مشخص مي کند.
2.10.9.4 آدرس مبداء و مقصد IPV4 و IPV6: هر ورودي مي‌تواند يك آدرس دقيق، يك مقدار bitmask، يك مقدار Subnet mask يا يك مقدار جايگزين شونده باشد.
2.10.9.5 پورت‌هاي TCP مبدا و مقصد: مقدار دقيق منطبق شده يا قابل جايگزين شدن
2.10.9.6 پورت‌هاي UDP مبدا و مقصد: مقدار دقيق منطبق شده يا قابل جايگزين شدن
2.10.9.7 فيلد‌هاي منطبق قبلي بايد توسط هر سوئيچ سازگار با Openflow پشتيباني شوند.
2.10.10 فيلد‌هاي زير ممكن است پشتيباني شوند:
2.10.10.1 پورت فيزيكي: براي انتخاب پورت فيزيكي، زماني كه بسته روي پورت منطقي دريافت مي‌شود
2.10.10.2 Metadata : اطلاعات اضافي كه مي‌تواند از يك جدول به جدول ديگر هنگام پردازش بسته منتقل شود.
2.10.10.3 نوع Ethernet : فيلد نوع Ethernet
2.10.10.4 VLAN ID و VLAN User Priority
2.10.10.5 IPV4 يا IPV6 DS ، فيلد‌هاي سرويس‌هاي متمايز26 و ECN27
2.10.10.6 پورت‌هاي‌مبداء و مقصد 28SCTP : مقادير دقيقا منطبق شده يا قابل جايگزين شدن
2.10.10.7 مقادير دقيقا منطبق شده ICMP29 type Field يا قابل جايگزين شدن ICMP Code Field
2.10.10.8 كد عملياتي ARP : با فيلد Ethernet Type به طور دقيق منطبق است.
2.10.10.9 آدرس‌هاي مبداء و مقصد IPV6 در ARP30 Payload مي‌تواند يك آدرس دقيق، مقدار bitmask، مقدار Subnet mask يا مقدار قابل جايگزين شدن باشد
2.10.10.10 فيلدهاي ICMPV6 Type و ICMPV6 Code : مقدار دقيقا منطبق شده يا قابل جايگزين شدن
2.10.10.11 IPV6 Neighbor Discovery Target Address
2.10.10.12 IPV6 Neighbor Discovery Source and Target Addresses : بخش‌هاي آدرس Link-Layer در يك IPV6 Neighbor Discovery message
2.10.10.13 MPLS Label Value ، Traffic Class و BoS (Bottom of Stack) فيلد‌هاي بالاي برچسب يك MPLS Label Stack.
بنابراين، Openflow مي‌تواند توسط ترافيك شبكه كه شامل چندين پروتكل و سرويس‌هاي شبكه مي‌باشد استفاده شود. توجه داشته باشيد كه در لايه MAC/Link، فقط Ethernet پشتيباني مي‌شود. بنابراين، Openflow نمي‌تواند ترافيك لايه 2 را روي شبكه‌هاي بي‌سيم كنترل كند.
حال مي‌توان تعريف دقيق‌تري از جريان داده را ارائه داد. از ديد يک سوئيچ، جريان داده يك توالي از بسته‌هايي است كه با يك ورودي خاص در جدول جريان داده، تطبيق داده مي‌شود. اين تعريف از ديد بسته است، به اين معني كه مقدار header field هاي بسته بايد جريان داده را ايجاد كنند نه مسيري كه در طول شبكه دنبال مي‌كنند. تركيب ورودي‌هاي جريان داده در چندين سوئيچ، جريان داده اي را تعريف مي‌كند كه محدود به يك مسير خاص است.
مولفه دستورالعمل يك ورودي جدول، شامل مجموعه‌اي از دستورالعمل‌ها مي‌باشد كه در صورتي كه بسته با ورودي تطبيق داده شود اجرا مي‌گردد. قبل از توضيح در مورد انواع دستورالعمل‌ها، بايد اصطلاحات Action و Action Set تعريف شود. Actionها ارسال بسته، تغيير بسته و عمليات پردازش گروهي جدول را توصيف مي‌كنند.
2.10.11 مشخصات Openflow كارهاي زير را انجام مي دهد:
2.10.11.1 Output : بسته را به صورت خاصي ارسال مي‌كند.
2.10.11.2 Set-Queue : مشخصه صف را براي يك بسته تنظيم مي‌كند. وقتي يك بسته با استفاده از عمل output به يك پورت ارسال مي‌شود، مشخصه صف مشخص مي‌كند كدام صف متصل به اين پورت براي برنامه‌ريزي و ارسال بسته استفاده مي‌شود. مدل ارسال توسط پيكربندي صف مشخص مي‌شود و يك پشتيباني اوليه از QoS فراهم مي‌كند.
2.10.11.3 گروه: بسته را در بين گروه خاصي پردازش مي‌كند.
2.10.11.4 اضافه كردن / حذف كردن برچسب: ‌اضافه كردن يا حذف كردن يك برچسب براي بسته VLAN يا MPLS.
2.10.11.5 تنظيم فيلد (Set-Field): كارهاي Set-Field با نوع فيلدشان از هم تشخيص داده مي‌شوند. آنها مقدار header Fieldهاي مخصوص به خود را در بسته تغيير مي‌دهند.
2.10.11.6 تغيير TTL) TTL-Change): عمليات مختلف تغيير TTL مقادير IPV4 Time To Live، IPv6 Hop Limit يا MPLS TTL در يك بسته را تغيير مي‌دهند.
Action Set ليستي از Actionهاي مرتبط با بسته مي‌باشد كه زماني كه بسته توسط هر جدول پردازش مي‌شود روي هم انباشته مي‌شود و زماني كه بسته ، خط لوله پردازش را ترك مي‌كند اجرا مي‌شود.
2.10.12 دستورالعمل‌ها 4 نوع هستند:
2.10.12.1 هدايت بسته در طول خط لوله: دستورالعمل Goto-Table بسته را در طول خط لوله به سمت جدول هدايت مي‌كند. دستورالعمل Meter، بسته را به يك Meter خاصي هدايت مي‌كند.
2.10.12.2 اجراي Action روي بسته : ممكن است Actionها زماني كه با يك ورودي جدول منطبق شوند روي بسته اجرا شوند.
2.10.12.3 به روز رساني Action set: ادغام كردن Actionهاي خاص با Action set فعلي براي همين بسته روي همين جريان داده يا پاك كردن تمام Actionها در Action set
2.10.12.4 به روز رساني metadata: مقدار metadata مي‌تواند با بسته مرتبط باشد كه براي انتقال اطلاعات از يك جدول به جدول بعدي استفاده مي‌شود.
2.10.13 خط لوله جدول جريان داده

شکل 2.17 خط لوله ي جريان داده [8]
يك سوئيچ شامل يك يا چند جدول جريان داده مي‌باشد. همانطور كه در شكل 2.15 نشان داده شده است، اگر بيشتر از يك جدول جريان داده وجود داشته باشد، به صورت يك خط لوله، با جداول برچسب گذاري شده كه از 0 شروع مي‌شود، سازماندهي مي‌شوند.
وقتي يك بسته به منظور تطبيق وارد يك جدول مي‌شود، ورودي شامل بسته، مشخصه پورت ورودي، مقدار metadata مربوطه و Action Set مربوطه مي‌شود. براي جدول 0، مقدار metadata خالي است و Action Set تهي است. پردازش به صورت زير جريان مي‌يابد:
ورودي جريان داده منطبق با بالاترين اولويت را پيدا كنيد. اگر هيچ انطباقي با هيچ ورودي وجود ندارد و هيچ Table-miss
entry وجود ندارد، بنابراين بسته از بين رفته است. اگر فقط با Table-miss entry انطباق وجود دارد، در اين صورت ورودي يكي از اين سه Action را مشخص مي‌كند:
a ) ارسال بسته به کنترلر . اين action، کنترلر را قادر مي‌سازد كه يك جريان داده جديد براي اين بسته و بسته هاي مشابه تعريف كند يا تصميم به از بين بردن بسته بگيرد.
b ) ارسال بسته به يك جريان داده Table ديگر در pipeline
c ) از بين بردن بسته
اگر انطباق با يك يا چند ورودي به جز Table-miss entry وجود داشته باشد، در اين صورت انطباق به عنوان matching entry (ورودي منطبق) با بالاترين الويت شناخته مي شود.
a )هر Counterاي را كه با اين ورودي مرتبط است را به روزرساني كنيد
b ) هر دستورالعملي را كه با اين ورودي مرتبط است را اجرا كنيد. اين دستورالعمل‌ها ممكن است شامل به روز رساني Action set، به روز رساني مقدار metadata و اجراي Actionها باشد.
c ) سپس اين بسته به يك جدول جريان داده در pipeline، به Group table يا به meter Table منتقل مي‌شود يا ممكن است به سمت پورت خروجي هدايت شود.
براي آخرين جدول در pipeline، انتقال به يك جريان داده Table ديگر، يك راه‌حل نيست. زماني كه يك بسته نهايتاٌ به سمت پورت خروجي هدايت شد، يك action set اضافي اجرا مي‌شود و سپس بسته براي خروج در صف قرار مي‌گيرد.
2.10.14 ساختار پروتكل Openflow
پروتكل Openflow پيغام‌هاي رد و بدل شده بين يك Openflow کنترلر و يك Openflow Switch را توصيف مي‌كند. اين پروتكل روي SSL يا (Transport Layer Security) ، TLSپياده‌سازي مي‌شود و يك كانال امن Openflow را ايجاد مي‌كند.
پروتكل Openflow ، کنترلر را قادر مي‌سازد Actionهاي اضافه كردن (Add)، به روز رساني (update) حذف(delete)، را روي ورودي‌هاي جريان داده در جداول جريان داده اجرا كند. اين پروتكل، همانطور كه در جدول 2.3 نشان داده شده است،‌از 3 نوع پيام پشتيباني مي‌كند:

جدول 2.3 پيغام هاي ورودي‌هاي جريان داده در جداول جريان داده [8]
Description
Message
Controller-to-Switch
Request the capabilities of a switch. Switch responds with a features reply that specifies its capabilities.
Features
Set and query configuration parameters. Switch responds with parameter settings.
Configuration
Add, delete, and modify flow/group entries and set switch port properties.
Modify-State
Collect information from switch, such as current configuration, statistics,


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