در ابتدا شما باید مفهوم و اساس کار این نوع شبکه ها رو خوب درک کنید از طریق مطالعه مقالات مرتبط مروری که موجود هست و بعد با بستر پیاده سازی mininet و کنترلرهای محیط نرم افزار محور آشنا شین. برای شروع بد نیست به این لینک سر بزنید.
موارد پیشنیاز
نگران کلمه پیشنیاز نباشید. دقت کنید میتوانید بصورت همنیاز 🙂 و در کنار یادگیری SDN به یادگیری موارد زیر نیز بپردازید (توجه: لیست زیر به ترتیب اولیت یادگیری میباشد):
- مجازیسازی: بد نیست برای شروع با یکی از پلتفرمهای مجازیسازی از جمله vmware workstation یا virtual box نیز آشنا شوید. این برنامهها برای نصب سیستم عامل لینوکس بر روی ویندوز استفاده میشود و توصیه ما هم نصب لینوکس بصورت مجازی است؛ ینی بر روی ویندوز فعلی خود اقدام به نصب ماشین مجازی لینوکس کنید. (برای شروع هرگز لینوکس رو بطور مستقیم (stand-alone ) بر روی رایانه خود نصب نکنید)
- لینوکس: آشنایی با لینوکس و مخصوصا اوبونتو بسیار حائز اهمیت است چراکه بسیاری از برنامههای مرتبط با SDN فقط در لینوکس قابلیت نصب و اجرا دارند پس حتما به این نکته توجه کنید.
- شبکه: آشنایی با مفاهیم شبکه در حد درس شبکه ۱ کارشناسی و یا network+ حداقل نیازمندی میباشد. مفاهیمی مثل لایههای شبکه در مدل TCP/IP و اینکه مثلا IP چیست؟ آدرس MAC چیست؟ پورتهای TCP و UDP چیست؟ درک کلی از مفاهیم مسیریابی در شبکه و اینکه اجزای تشکیل دهنده شبکه از جمله سوئیچ، روتر، لینک، پورت و غیره چیست؟
- برنامهنویسی: مورد آخر برای حرفهای شدن! این مورد در نهایت باید مورد توجه قرار گیرد چرا که شما با در دست داشتن ابزارها و برنامههای متنباز SDN میتوانید بسیاری از سناریوهای مدنظرتان را اجرا کنید ولی در بسیاری از موارد دیگر نیاز به شخصیسازی کنترلرتان داشته باشید و شاید بخواهید پروتکل مسیریابی خاصی را به اسم خودتان ثبت کنید! مثلا پروتکل مسیریابی جعفر! خب شروع کنید و پایتون یا جاوا را یاد بگیرید. اینکه پایتون یا جاوا را انتخاب کنید کاملا وابسته به کنترلری است که انتخاب کردید. با استفاده از این لینک شاید راحتتر بتوانید کنترلرتان را انتخاب کنید.
برای openflow بهتره که openflow specification را برای هر ورژن مطالعه کنید. به عنوان مثال برای ورژن openflow 1.3، مستند openflow specification1.3 رو مطالعه بفرمایید که نوع پیام ها و خصوصیات اوپن فلو و جداول سوئیچ رو کاملا توضیح میده.
در زمینه انتخاب موضوع لینکهای زیر را مطالعه کنید:
انتخاب موضوع پایان نامه SDN در مقاطع کارشناسی، کارشناسی ارشد و دکتری
دستور kill کردن کنترلر پیشفرض مینی نت:
Killall controller
sudo killall controller
با دستور sudo netstat -tnlp ابتدا PID کنترلر در حال حاضر بر روی آن در حال اجرا است را پیدا کنید
sudo apt-get install iperf
سپس با دستور زیر برنامه کنترلر را kill کنید یا اگر ترمینال کنترلر در دسترس است آن را ببندید:
sudo kill [pid]
مثلا:
sudo kill 464
و سپس با دستور زیر پروسس مینینت را تمیز کنید:
sudo mn -c
اگر در شروع کارتون هستید توصیه میکنم اول openflow specification رو مطالعه کنید تا بخش زیادی از ابهاماتتون برطرف بشه.
در مرحله بعدی میتونید ببینید که به کدامیک از ویژگی های OpenFlow نیاز دارید و چک کنید که آیا کنترلرلتون پشتیانی میکنه ازش یا خیر. کنترلرهای ODL ، floodlight و ryu به طول کامل از openflow پشتیبانی میکنند و از این جهت تفاوتی ندارن. تفاوت اصلی اونها نوع برنامه نویسی، مستندات و انجمن هست که بنظر من فلادلایت برای شروع بهتر هست.
علاوه بر openflow، هر کنترلر دارای یکسری ویژگیها هست از جمله:
- architecture
- nourthbound API
- Consistency
- programming language
با توجه به این ویژگی ها و اینکه چه کاری را قرار هست انجام بدید مشخص خواهد شد که کدام کنترلر میتواند نیاز شما را تامین کند. اگر همچنان نیز نتوانستید کنترلر خود را انتخاب کنید این لینک را مطالعه کنید.
نسخه https://github.com/wallnerryan/floodlight-qos را دانلود کنید
ابتدا پکیج خودتون رو از حالت زیپ شده خارج کنید، برای این مورد، اول با دستور cd وارد دایرکتوری بشین که این فایل زیپ شده اونجا قرار داره.
و بعد اگر با پسوند .zip هست با دستور زیر از حالت زیپ خارج کنید:
unzip filename.zip
و اگر با پسوند .tar هست:
tar -xzf filename.tar.gz
درادامه با دستور زیر نصب کنید:
sudo dpkg -i filename
و مراحل ساخت دایرکتوری و permision دادن و ant رو طبق مراحل نصب نسخه اصلی floodlight این بار با نام فایل جدیدی که مربوط به qos دارید انجام بدید.
یک ترمینال جدید باز کنید و از دستور زیر استفاده کنید:
sudo ovs-ofctl dump-flows s1
شما اگر وایرشارک رو جدا نصب کرده باشید در مراحل نصب و کانفیگ یک سوال ازشما پرسیده میشود تحت عنوان
? should none-superusers be able to capture packets
واگر yes بزنید (شکل زیر) میتوانید بدون این که کاربر root باشید هم پکت ها رو capture و هم کپچر کنید.
اما در غیر اینصورت شما مجوز super user یا root رو ندارید. احتمالا تو تنظیمات فعلی شما این قابلیت disable هست. دستور زیر را در ترمینال وارد کنید:
gedit /usr/share/wireshark/init.lua
با این دستور یه کد باز میشود که شامل تنظیمات وایرشارک است.
خط مربوط به set disable _lua را اگر true هست به false تغییرش بدهید و تنظیمات جدیدتون رو save کنید.
مولدهای ترافیک زیادی وجود داره مثل iperf, D-ITG و… که توضیحات مربوط به آن ها در سایت و کانال موجود است. و بسته به نوع ترافیک و معیارهای ارزیابی خودتون و نتایج تحلیلی که هر کدوم از این ابزارها ارائه میدن ، ترافیک خودتون رو تولید کنید.
نرم افزار Iperf ابزاری برای تولید جریان ترافیکی و اندازهگیری پهنای باند و کیفیت ارتباط شبکه است. این نرم افزار برای تولید جریان و آنالیز پهنای باند بین دو گره شبکه استفاده می شود، یکی از گرهها تولید جریان کرده و گره دوم جریان را دریافت می کند. جریان ها می توانند UDP و یا TCP باشند.
در سمت کلاینت:
iperf - c <serverip> -p <serverport>
در سمت سرور:
< iperf -s -p <serverport
مطالعه بیشتر:
دیدگاهتان را بنویسید