آیا میدانید معماری Open vSwitch چگونه است؟
در مقاله ( OpenVSwitch چیست؟ )، Open vSwitch معرفی و بیان شد که Open vSwitch که یک سوئیچ مجازی لایه ۳ است که به عنوان سوئیچ نرمافزاری در سامانه PVM استفاده میشود. در این مطلب درباره معماری Open vSwitch صحبت خواهیم کرد.
اجزای اصلی Open vSwitch عبارتند از:
- Kernel Module
- Open vSwitch Database
- Open vSwitch Daemon
Kernel Module
ماژول کرنل یا Datapath ماژول اصلی فوروارد بستهها (Packet Forwarding) در Open vSwitch است. این ماژول برای ارائه کارآیی و سرعت بالا در فضای کرنل طراحی شده است. همانطور که در شکل ۱ نشان داده شده است، هنگامی که یک بسته وارد ماژول کرنل میشود، درصورتی که مسیری (Flow) برای عبور در کرنل برای آن وجود داشته باشد، بسته به مسیر مورد نظر هدایت میشود، در غیر این صورت بسته به ovs-vswitchd در فضای کاربر ارسال میشود، در این صورت معمولا ovs-vswitchd مسیر جدیدی در Datapath ایجاد میکند که بستههای بعدی وابسته به بسته اول از این مسیر عبور میکنند. در این ساختار چون اکثر بستهها به طور مستقیم از فضای کرنل عبور میکنند و نیازی به رفتن به فضای کاربر ندارند، کارآیی بالایی وجود دارد.
برای پیکربندی ماژول کرنل در Open vSwitch از ابزار ovs-dpctl میتوان استفاده کرد.
Open vSwitch Database
دیتابیس Open vSwitch یا OVSDB اطلاعات و تنظیمات شامل Bridge، اینترفیس و تانل را ذخیره میکند. ارتباط سرور دیتابیس (ovsdb-server) با بخشهای ovs-vswitchd وcontroller با استفاده از پروتکل استاندارد مدیریت OVSDB یا JSON-RPC برقرار میشود. (پروتکل مدیریت پایگاه داده در Open vSwitch)
ovsdb-server میتواند به عنوان یک سرور فعال یا بکآپ فعالیت کند که فقط سرور فعال میتواند تغییراتی در OVSDB ایجاد کند.
برای مدیریت ovsdb-server از ابزارهای ovsdb-tool، ovssdb-client و ovs-vsctl استفاده میشود.
Open vSwitch Daemon
Open vSwitch Daemon یا ovs-vswitchd ماژول اصلی Open vSwitch است. همانطور که در شکل ۱ نشان داده شده است، این ماژول با استفاده از پروتکل OpenFlow با کنترلر ارتباط برقرار میکند، با استفاده از پروتکل مدیریت OVSDB با دیتابیس ارتباط برقرار میکند و همچنین با استفاده از netlink (اینترفیس مربوط به کرنل لینوکس که برای ارتباط فضای کاربر با فضای کرنل استفاده میشود) با کرنل صحبت میکند.
ovs-vswitchd تنظیمات را از ovsdb-server با استفاده از یک کانال IPC میخواند و تنظیمات لازم را روی ovs bridgeها اعمال میکند، به علاوه اطلاعات مربوط به bridgeها را نیز به دیتابیس ارسال میکند.
برای مدیریت ovs-vswitchd ابزارهای ovs-vsctl و ovs-appctl استفاده میشوند.
OpenFlow Controller
علاوه بر اجزای بیان شده، مدیریت Open vSwitch که یک سوئیچ SDN (Software-Defined networking) است به کمک پروتکل OpenFlow و با استفاده از OpenFlow Controller میتواند انجام شود. برای روشن شدن مسئله ابتدا سوئیچهای سنتی را با سوئیچهای SDN مقایسه میکنیم.
دو بخش مهم در معماری دستگاههای شبکه از جمله سوئیچها عبارتند از: Control Plane و Data Plane.
Control Plane مجموعه توابع و پروسههایی است که دستگاه با استفاده از آن تصمیم میگیرد بستهها چگونه فوروارد شوند، به عبارت دیگر این بخش مغز سیستم محسوب میشود.
Data plane یا Forwarding Plane به عنوان بازوی سیستم عمل میکند و بستهها را با توجه به تصمیمات Control Plane هدایت میکند.
تفاوت سوییچهای سنتی و SDN چیست؟
در سوئیچهای سنتی دو بخش Control Plane و Data Plane در یک دستگاه قرار داشتند در حالیکه در سوئیچهای SDN این مسئله متفاوت است. در معماری SDN پروتکل OpenFlow این امکان را فراهم میکند که جدول Forwarding یا Data Plane یک یا چند سوئیچ را از راه دور و به صورت متمرکز پیکربندی کرد. به عبارت دیگر در این ساختار Control Plane از Data Plane جدا شده و با استفاده از کنترلر این امکان فراهم میشود که جریان ترافیک (Traffic Flow) را با انعطاف زیاد کنترل و مدیریت کرد.
شکل ۳: مقایسه سوئیچهای سنتی و سوئیچهای SDN
برای مدیریت و مانیتور Open vSwitch با استفاده از پروتکل OpenFlow از ابزارهایی مانند ovs-ofctl که جزء ابزارهای Open vSwitch است یا Faucet که یک کنترلر OpenFlow متنباز است میتوان استفاده کرد.
ثبت ديدگاه