امروز : 1397/09/21

سایت خبری برنامه نویسی و شبکه

پایگاه اطلاع رسانی و خبری

تفاوت مقلد شبکه (امولاتور) با شبیه ساز (سیمولاتور)

انتشار : 1397/04/15

برای کارهای دانشگاهی و نیز صنعتی خیلی اوقات خرید تجهیزات گرانقیمت سخت افزاری و یا صرف هزینه برای خرید لایسنس برای اپلاینس‌های نرم افزاری ممکن است توجیه اقتصادی نداشته باشد و یا شاید بودجه لازم قابل تأمین نباشد. ...

تفاوت مقلد شبکه (امولاتور) با شبیه ساز (سیمولاتور)

مقدمه

برای کارهای دانشگاهی و نیز صنعتی خیلی اوقات خرید تجهیزات گرانقیمت سخت افزاری و یا صرف هزینه برای خرید لایسنس برای اپلاینس‌های نرم افزاری ممکن است توجیه اقتصادی نداشته باشد و یا شاید بودجه لازم قابل تأمین نباشد. از این رو سازوکارهای شبیه‌سازی (سیمولیشن) و تقلید (امولیشن) زیادی در دنیای فناوری استفاده می‌شوند تا با صرف هزینه کمتر (و یا حذف هزینه) امکان ارزیابی رویکردهای مختلف فراهم شود. در ادامه این مقاله نگاهی  به تفاوت‌های شبیه‌سازی (simulation) و امولیشن (emulation) خواهیم داشت. جهت سادگی در ادامه این مقاله از واژه‌های “امولاتور” و “شبیه‌ساز” استفاده می‌شود.

 باید توجه داشت  که در جایگاه شغلی یک مهندس شبکه، انجام کانفیگ نادرست  علاوه بر اتلاف وقت، می­ تواند منجر به زیان مالی ( و یا حتی احتمال خطر از دست دادن شغل شما!) شود. بهترین راه برای آزمودن و پیشگیری از چنین اتفاقاتی آزمودن براساس یک روال کارآمد است. طراحی یک شبکه، مهاجرت به کلاود، افزودن یک دیوایس جدید به رک و … نیازمند اعتبارسنجی با انجام آزمون ­های دقیق است. بنابراین مهارت استفاده از امولیشن یا سیمولیشن برای مهندسین شبکه ضروری است.

سناریوی فرضی

به دور از یک تعریف علمی و برای جا افتادن تفاوت امولاتور  با شبیه‌ساز،  یک مثال ساده و ملموس را مطرح می­ کنیم.

سناریوی فرضی: (آموزش خطرناک بودن بازی با چاقو به کودکی بازیگوش!)

روش اول: (فیلم بازی کردن)

وانمود می‌کنیم که چاقو به بدن ما وارد شده و احساس درد شدیدی می‌کنیم و با حالت‌های چهره و پیچیدن به خود (کاملا ساختگی و تصنعی) به وی تلفات بازی با چاقو را نمایش می‌دهیم. این روش همان شبیه‌سازی می‌باشد.

روش دوم: (ایجاد زخمی سطحی با چاقو!)

در این روش به صورت بیرحمانه‌ای بر روی بدن خود زخمی کوچک با چاقو ایجاد می‌کنیم تا کودک به صورت واقعی خونریزی و درد ناشی از آن را در ما مشاهده کند! این روش امولیشن هست و برخلاف روش اول (شبیه سازی)، چاقوی واقعی، زخم واقعی و درد واقعی در آن وجود دارد.

سناریوی فرضی فوق برای جا افتادن تفاوت‌های شبیه سازی و امولیشن مثالی بسیار ساده بود و امیدوارم مفهوم برایتان کمی روشن شده باشد تا در ادامه وارد بحث‌های فنی  در دنیای شبکه شویم.

شبیه سازی و امولیشین در دنیای شبکه

امولیشن شبکه (network emulation) تکنیکی برای آزمودن کارایی اپلیکیشن‌ها در یک شبکه مجازی است. این مفهوم با شبیه­‌سازی شبکه (network simulation) متفاوت است. شبیه‌سازی متشکل از مدل‌های ریاضی ترافیک، مدل‌های شبکه و پروتکل­‌هاست. هدف از شبیه­‌سازی نیز ارزیابی عملکرد، پیش­‌بینی تأثیر تغییرات و به عبارت دیگر کمک به فرایند تصمیم­ گیری مطلوب است. در یک امولاتور که می­ تواند در قالب یک شبکه ظاهر شود، سیستم­‌های انتهایی (end-system) مانند کامپیوترها می­‌توانند به امولاتور شبکه متصل شوند و رفتارشان طوری باشد که انگار به یک شبکه متصل شده­ اند. در مقابل، شبیه‌سازهای شبکه معمولا برنامه­‌هایی هستند که روی یک کامپیوتر اجرا می­‌شوند و یک توصیف انتزاعی از ترافیک شبکه مانند فرایند ورود جریان و آمارهای کارایی مانند وضعیت بافر را ارائه می­ دهند.

به عنوان مثال­‌هایی از امولاتورهای شبکه می­ توان به Mininet-WiFi، Mininet و GNS3 اشاره کرد. نام بسیاری از شبیه‌سازهای شبکه نیز حتما به گوشتان آشنا است، مانند NS، Omnet، OpNet، CloudSim و Packet Tracer.

برای شبیه‌سازی یک سیستم ممکن است انتخاب‌های مختلفی پیش‌رو داشته باشید که انتخاب هر یک از این شبیه‌سازها می‌تواند یک سیمولیشن سطح بالا یا سطح پایین را حاصل کند. به عنوان مثال برای شبیه‌سازی ردوبدل پکت‌های TCP/IP در شبکه‌ای با چند گره (Node) هم می‌توان از متلب استفاده کرد و هم NS. اما با توجه به ویژگی‌هایی که سیمولاتور NS دارد، نتایج حاصل از کار با این شبیه‌ساز معتبرتر و قابل استنادتر است، پس با این حساب NS نتایج واقع بینانه‌تری را در بر دارد و نزدیک به نتایج حاصل از محیط واقعی است. این ویژگی شبیه‌سازها که نتایج واقع بینانه‌تری را ارائه می‌دهند آن‌ها را به امولاتورها نزدیک‌تر می‌کند.

اما یک نکته را در نظر داشته باشید که شبیه‌ساز جایگزین سیستم دنیای واقعی نیست و این  امولاتور است که  می­‌تواند جایگزینی برای استفاده در دنیای “واقعی (real)” باشد. به  عنوان یک مثال ملموس، یک ماشین مجازی (VM) یک PC را امولیت می­‌کند (رفتار آن را تقلید می‌کند و این VM از نظر سایر PC ها به عنوان یک PC واقعی شناخته می‌شود) ولی یک شبیه­‌ساز پرواز فقط یک شبیه‌ساز است و قاعدتاً قادر به پرواز نیست و اگر این قابلیت را داشت باید در حین شبیه­‌سازی شما را از مکان A به B منتقل می­ کرد که در این صورت یک امولاتور پرواز بود!

جمع­ بندی

با استفاده از امولاتور می­ توانید یک سیستم (مثلا یک روتر) را امولیت کنید و رفتار واقعی آن را مشاهده کنید (به عنوان مثال، وضعیت پینگ بسته­ ها). فرض کنید بخواهید در یک سناریو وضعیت packet loss را در ترافیک یک سال را مشاهده کنید. این امر مستلزم صرف زمان زیاد برای رسیدن به نتیجه است در حالی که با استفاده از شبیه‌ساز (با امکان تغییر بازه زمانی اجرا (duration))، شما می­ توانید در بُعد زمان حرکت کنید در حالی که این قابلیت در امولاتور وجود ندارد.

نکته دیگر این که محیط امولیت شده را می­ توان به دنیای واقعی ارتباط داد (مثل GNS3) اما محیط سیمولیت شده مثل OpNET را نمی­ توان به دنیای واقعی ارتباط داد. همچنین ابزارهای شبیه‌ساز اکثرا قابلیت ارائه آمارها (مثل packet loss، throughput و …) و رسم نمودار دارند اما در امولاتور چنین قابلیتی نیست و شما باید با روش ­های دیگری ( مثل کپچر کردن پکت‌ها توسط وایرشارک و رسم پلات از این طریق) خروجی ‌ها را تحلیل کنید.

دیدگاه کاربران
0 دیدگاه
شما هم دیدگاه خود را ارسال کنید