SDN چیست
جواب کوتاه
SDN کوتاهشدهی Software-Defined Networking، یعنی شبکهی نرمافزارمحور، است: بهجای اینکه هر روتر و سوییچ خودش تصمیم بگیرد بستهها را کجا بفرستد (صفحهی کنترل) و همانجا بفرستد (صفحهی ارسال)، تصمیمگیری در یک کنترلر منطقا متمرکز جمع میشود و دستگاهها فقط میفرستند. برنامهها از رابط شمالی به کنترلر میگویند چه میخواهند و کنترلر از رابط جنوبی، مثلا OpenFlow، به دستگاهها دستور میدهد. هدف: پیچیدگی کمتر و تغییر سریعتر. خطر: اگر دستگاه به کنترلر نرسد، جریان تازه گیر میکند.
نام
SDN کوتاهشدهی Software-Defined Networking است، یعنی شبکهی نرمافزارمحور: شبکهای که رفتارش را برنامهها تعیین میکنند، نه تکتک دستگاهها هر کدام برای خودش.
در درسهای مسیریابی دیدید که هر روتر خودش جدولش را میسازد و خودش بستهها را میفرستد. SDN این دو کار را از هم جدا میکند.
چراغهای شهر
دو شهر را تصور کنید. در اولی، هر چهارراه چراغی دارد با زمانسنج خودش. در دومی، همهی چراغها به یک اتاق کنترل وصلاند:
حالا آمبولانسی باید از این سر شهر به آن سر برود. در شهر اول، هر چهارراه به نوبت خودش سبز میشود. در شهر دوم، اتاق کنترل یک «موج سبز» از اول تا آخر راه میسازد. شبکهی سنتی شهر اول است و SDN شهر دوم.
مغز و دست
هر دستگاه شبکه دو بخش دارد. صفحهی کنترل (control plane) مغز است: تصمیم میگیرد بستهها را چطور و به کجا بفرستد. صفحهی ارسال (forwarding یا data plane) دست است: خود بستهها را میفرستد. در شبکهی سنتی، هر دستگاه هر دو را دارد. SDN مغزها را بیرون میبرد و یک جا جمع میکند:
کنترلر و سه لایه
SDN سه لایه دارد. بالا برنامهها هستند، مثل همان موج سبز. وسط کنترلر، که مغز همهی شبکه است. پایین دستگاهها، که فقط میفرستند. میان برنامهها و کنترلر «رابط شمالی» است و میان کنترلر و دستگاهها «رابط جنوبی»، چون در نقشه یکی بالاست و یکی پایین:
کنترلر «منطقا متمرکز» است: برای شبکه مثل یک مغز رفتار میکند، ولی میتواند روی چند رایانه اجرا شود.
OpenFlow و جدول جریان
یکی از رابطهای جنوبی OpenFlow است. در دانشگاه استنفورد ساخته شد تا پژوهشگرها پروتکلهای آزمایشیشان را روی شبکهی واقعی اجرا کنند، و حالا استاندارد آن را بنیاد شبکهی باز (Open Networking Foundation) پیش میبرد. با OpenFlow، کنترلر در هر سوییچ جدولی پر میکند به نام جدول جریان: اگر بسته این بود، این کار را بکن.
سوییچ دیگر خودش فکر نمیکند؛ فقط جدول را نگاه میکند. برای بستهای که در جدول نیست، از کنترلر میپرسد.
چه چیزی بهتر میشود
- یک نگاه به همهکنترلر همهی شبکه را با هم میبیند و برای همه یکسان تصمیم میگیرد.
- برنامهپذیررفتار شبکه را برنامهها عوض میکنند، نه تایپ کردن روی تکتک دستگاهها.
- پیچیدگی کمتر، نوآوری سریعترهدفی که خود تعریف SDN میگوید: با جدا کردن کنترل از ارسال، هر دو سادهتر و زودتر عوض میشوند.
فکر جدا کردن کنترل از ارسال تازه نیست؛ پژوهش شبکههای برنامهپذیر به دههی ۱۹۸۰ برمیگردد. SDN نامی است که این فکر در سالهای اخیر با آن شناخته شد.
خطرها
اگر سیم میان اتاق کنترل و یک چهارراه قطع شود، آن چهارراه گیر میکند. در SDN هم اگر سوییچی به کنترلرش نرسد، جریانهای تازه تا برگشتن اتصال در دسترس نیستند:
برای همین چند کنترلر در جاهای جدا میگذارند. و کنترلر، چون مغز همهی شبکه است، باید مثل گرانبهاترین دستگاه شبکه امن نگه داشته شود؛ همان اصلهای درس سختکردن.
سه اشتباه
- «SDN یعنی روتر و سوییچ دیگر لازم نیست.»سوییچها هنوز بستهها را میفرستند؛ فقط تصمیم گرفتن به کنترلر رفته است.
- «کنترلر یکی است، پس سادهتر است و خطری ندارد.»اگر سوییچ به کنترلر نرسد، جریان تازه تا برگشتن اتصال گیر میکند؛ برای همین چند کنترلر در جاهای جدا میگذارند.
- «SDN همان خودکارسازی با Ansible است.»Ansible همان دستگاهها را با همان مغز خودشان تنظیم میکند؛ SDN خود تصمیمگیری را از دستگاه بیرون میبرد.
جمعبندی. آنچه از این درس با خودتان میبرید.
- SDN: شبکهی نرمافزارمحور.
- صفحهی کنترل (مغز) از صفحهی ارسال (دست) جدا میشود.
- کنترلر: مغز همهی شبکه، منطقا یک جا.
- رابط شمالی برای برنامهها؛ رابط جنوبی، مثل OpenFlow، برای دستگاهها.
- جدول جریان: اگر این بود، این کار را بکن.
- خطر: قطع کنترلر؛ راه: چند کنترلر جدا.
خودتان را بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را میبینید: چند درست، چند نادرست.