بررسی شبیه سازهای شبکه های پوشش P2P با مطالعه موردی پوشش درخت P2P با استفاده از شبیه ساز رویدادها | A survey of simulators for P2P overlay networks with a case study of the P2P tree overlay using an event-driven simulator جدول مقالات آزادابزار تفکیک و ترجمه متون علمیمقالات اینترنت اشیاء
تماس با ما
 
بدان
 
امروز دوشنبه ، ۱۴۰۰/۰۹/۱۵
 
کلیه مقالات

بررسی شبیه سازهای شبکه های پوشش P2P با مطالعه موردی پوشش درخت P2P با استفاده از شبیه ساز رویدادها

A survey of simulators for P2P overlay networks with a case study of the P2P tree overlay using an event-driven simulator

1. مقدمه:

معماری شبکه Peer-to-Peer از دهه های گذشته به دلیل ویژگی های عملکرد بالا یعنی محبوبیت زیادی کسب کرده است.

پویایی ، مقیاس پذیری ، تعدد ، توزیع کارآمد مطالب و توانایی جستجوی موثر.

محققان و سازمانهای مختلف به تدریج مفهوم همتایان مستقل را می پذیرند و کارهای محاسباتی را به طور مشترک در یک محیط مشترک خود سازمان یافته انجام می دهند ، نه معماری های سنتی سرویس دهنده-مشتری که پردازش های مشتری به سرور وابسته است.

مسئله اصلی در ایجاد پوشش م Pثر P2P گره خوردن این رایانه های چندگانه مستقل در یک سیستم منسجم و در عین حال حفظ خصوصیات فوق مشخص است.

مقیاس پذیری و نمایه سازی داده های چند بعدی دو مسئله اساسی است که پیچیدگی طراحی چنین سیستم را افزایش می دهد [1] ، [2].

تعداد سیستم ها و پروتکل های P2P پیاده سازی شده است که شامل شبکه های P2P به اشتراک گذاری فایل است.

ناپستر [3] ، گوتلا [4] ، بیتورنت [5] ؛ توزیع شده بر اساس P2P مبتنی بر جدول Hash (DHT)

CAN [6] ، Chord [7] ، Pastry [8] ، ملیله [9] یا پوشش سلسله مراتبی P2P با ساختار درختی ، یعنی.

BATON [10] ، BATON * [11] ، VBI-tree [12] ، SDI-tree [13] و غیره.

از آنجا که طراحی شبکه های پوششی P2P با چالش های بسیاری روبرو است ، لازم است پس از توسعه و قبل از استفاده از برنامه های واقعی ، آنها را آزمایش کرد. رویکرد تحلیلی یا مدل سازی ریاضی را می توان در سطح اولیه در هنگام طراحی توپولوژی P2P و الگوریتم های مربوطه استفاده کرد [14]. با این حال ، این روش برای سیستم های ساده ای استفاده می شود که ممکن است مدل P2P را با جزئیات بررسی نکنند و از این رو ، با استفاده از مدل کامل P2P در سناریوهای واقعی ، این راه حل عملی نیست. روش دیگر برای پیاده سازی و آزمایش سیستم های P2P ، شبیه سازهایی هستند که از راه حل های تحلیلی استفاده می کنند و نتایج آن با آزمایش با سیستم واقعی قابل تأیید است. با این حال ، پیکربندی شبکه های همپوشانی P2P بر روی ماشین های واقعی یا شبکه بدون آزمایش عملی نیست. مشاهده شده است که برای تحقیقات P2P ، اغلب عملی ترین روش شبیه سازی است. شبیه سازهای شبکه P2P مختلفی در دسترس هستند که چندین گزینه برای استفاده آنها دارند. (i) برای اجرای شبکه P2P از شبیه ساز به راحتی استفاده کنید ، (ii) پس از مراجعه به شبیه سازهای موجود ، شبیه ساز خود را طراحی کنید یا (iii) ماژول های شبیه ساز موجود را بر اساس الزامات کاربردی گسترش یا اصلاح کنید. اکثر شبیه سازها در [15] ، [16] ، [17] ، [18] ، [19] ، [20] ، [21] ، [22] مورد مطالعه و بررسی قرار می گیرند. با این حال ، زمینه برای بهبود در بررسی موجود از شبیه سازهای P2P به شرح زیر وجود دارد:

امروزه با افزایش تقاضا و نیازهای سیستم های P2P ، شبیه سازهای جدیدی ارائه شده است.

نظرسنجی موجود [16] ، [17] ، [19] ، [20] ، [21] ممکن است در بحث درباره شبیه سازهای جدید ، یعنی.

ProtoPeer [23] ، PeerfactSim.KOM [24] و D-P2P-Sim [25].

علاوه بر این ، یک بررسی باید به جای بحث مختصر در مورد شبیه سازها ، جامع باشد.

با توسعه شبیه سازهای P2P جدید ، خصوصیات یا معیارهای دیگری نیز برای مقایسه طراحی و عملکرد شبیه سازهای P2P مورد نیاز است.

علاوه بر این ، مفاهیم جدید مانند داشتن یک رابط مشترک قابل حمل یا مدل چارچوب به منظور ایجاد مدل های شبیه ساز از همان برنامه در شبیه سازهای مختلف [26] یا استقرار یک مدل اولیه از یک سیستم P2P به طور تکراری در سیستم P2P واقعی مورد نظر با استفاده از RealPeer [27] لازم است با تکامل شبیه سازهای P2P بحث شود.

اکثر نظرسنجی ها شبیه سازهای مختلف P2P را بر اساس خصوصیات آنها مورد بحث و مقایسه قرار می دهند.

بررسی ادبیات موجود [22] اجرای توپولوژی های معروف مانند BitTorrent [5] ، GnuTella [4] یا Chord [7] را فقط در نظر گرفته است.

با این حال ، پوشش های درختی ساختار داده های کارآمدی برای شبکه های P2P هستند زیرا هزینه جستجو را از نظر لگاریتمی به متر پایه کاهش می دهند ، جایی که متر از درخت است.

با توجه به دانش ما ، یک مطالعه موردی دقیق که در مورد کاربرد یک شبیه ساز برای پوشش درختان با آزمایش راهنمایی می شود ، در ادبیات موجود ارائه نشده است.

این مشاهدات انگیزه ما را ایجاد می کند تا مجدداً در بررسی شبیه سازهای P2P با شبیه سازهای اخیر ، دیدگاه های جدید و مطالعه موردی تأکید کنیم. بنابراین ، سهم ما در این مقاله به شرح زیر است:

ما یک بررسی جامع از شبیه سازهای P2P انجام می دهیم که شامل مطالعه شبیه سازهای جدید P2P یعنی.

ProtoPeer [23] ، PeerfactSim.KOM [24] یا D-P2P-Sim [25] ..

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

این نظرسنجی طبقه بندی شده برای محققان و مجامع تجاری برای شناسایی شبیه ساز P2P مناسب برای برنامه مورد نیاز مفید است.

ما همچنین جنبه ها و محدودیت های مطلوب هر شبیه ساز عمومی را خلاصه می کنیم و در مورد برنامه های P2P و دستورالعمل های تحقیقاتی برای هر یک بحث می کنیم.

علاوه بر این ، ما در مورد رابط برنامه عمومی برای شبیه سازهای لایه ای که اخیراً برای طراحی یک رابط مشترک برای شبیه سازهای مختلف ارائه شده است ، بحث خواهیم کرد.

سرانجام و مهمتر ، ما یک مطالعه موردی از اجرای BATON (شبکه BAlanced Tree Overlay Network) و BATON * را با استفاده از یک حالت واقعه محور شبیه ساز PeerSim ارائه می دهیم.

یک حالت واقعه محور از شبیه ساز PeerSim به خوبی مستند نیست و از این رو ، این مطالعه موردی برای توسعه دهندگان که استفاده از شبیه سازی واقعیت محور واقعی تر را انتخاب می کنند ، مفید است.

علاوه بر این ، شبیه ساز PeerSim از اجرای همپوشانی های نمودار به طور مثر پشتیبانی می کند و از این رو ، این مطالعه موردی یک نمونه در حال اجرا برای محققانی است که روی شبکه های همپوشانی نمودار یا درخت کار می کنند ..

ما در بخش 2 به طور مفصل درباره خصوصیات شبیه سازهای P2P بحث می کنیم.

شبیه سازهای مختلف شبکه P2P با توجه به خصوصیات آنها در بخش 3 ارائه شده و طبقه بندی می شوند و در ادامه بحث در مورد آنها در بخش 4 ارائه می شود.

در مرحله بعدی ، ما یک مطالعه موردی در مورد اجرای و آزمایش پوشش دوتایی و درخت ماری با استفاده از حالت رویداد محور شبیه ساز PeerSim در بخش 5 ارائه می دهیم.

در آخر ، ما در مورد نتیجه گیری بررسی شبیه سازهای P2P و نتایج مطالعه موردی در بخش 6 بحث می کنیم.

2. ویژگی های شبیه ساز P2P:

شبیه سازهای P2P را می توان براساس معیارهای زیر مقایسه کرد که به انتخاب شبیه ساز P2P برای اجرای و آزمایش برنامه مناسب تر کمک می کند [17] ، [19] ، [20] ، [21]:

2.1 معماری شبیه ساز:

این معماری اساساً مشخصات طراحی و عملکرد شبیه ساز ، ویژگیهای اساسی و جزئیات اجرای شبیه ساز را مشخص می کند. دیدگاه های مختلف تجزیه و تحلیل معماری شبیه ساز به شرح زیر است:

ساختار P2P: این نشان می دهد که آیا شبیه ساز P2P از پوشش های ساختاری ، روکش های بدون ساختار یا هر دو پشتیبانی می کند.

در شبکه های همپوشانی P2P ساخت یافته ، نظیرها براساس توپولوژی از پیش تعریف شده سازماندهی می شوند و الگوریتم ها به گونه ای طراحی می شوند که توپولوژی و خصوصیات شبکه را حفظ می کنند.

آنها معمولاً از نمایه سازی جداول هش توزیع شده (DHT) یا نمایه سازی مبتنی بر درخت استفاده می کنند.

شبکه های بدون ساختار Peer-to-Peer هیچ الگوریتمی برای سازماندهی یا بهینه سازی اتصالات شبکه ارائه نمی دهند.

این متشکل از همسالانی است که به طور تصادفی و بدون هیچ گونه دانش قبلی از توپولوژی به شبکه می پیوندند.

کاربر باید بتواند تمام پارامترهای شبیه سازی مربوطه را در یک فایل پیکربندی قابل خواندن برای انسان مشخص کند.

شبیه ساز همچنین باید بتواند رفتار پویای گره ها ، خرابی گره و همچنین رفتار مخرب گره ها را فراهم کند.

حالت شبیه ساز: حالت شبیه ساز نشان می دهد که آیا شبیه ساز برای پشتیبانی از شبیه سازی رویداد گسسته ، شبیه سازی مبتنی بر چرخه یا هر دو طراحی شده است.

در شبیه سازی رویداد گسسته ، عملکرد یک سیستم به عنوان دنباله ای از وقایع نشان داده می شود.

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

هر رویداد در یک لحظه در زمان رخ می دهد و نشان دهنده تغییر وضعیت در یک سیستم است.

شبیه سازی مبتنی بر چرخه یک شبیه سازی دنباله ای مبتنی بر زمان است که در آن اقدامات هر پروتکل توسط هر گره به ترتیب در هر چرخه اجرا می شود.

پروتکل های مبتنی بر چرخه را می توان توسط موتور مبتنی بر رویداد نیز اجرا کرد ، اما برعکس ..

شبیه سازی شبکه زیربنایی: شبیه سازهای P2P روشهای مختلفی را برای شبیه سازی شبکه زیرین i-e- لایه شبیه سازی انجام می دهند.

آنها را می توان به عنوان بسته یا جریان محور طبقه بندی کرد.

شبیه سازهای مبتنی بر بسته ، بسته و همچنین پیوندها را شبیه سازی می کنند و تاخیر ، پهنای باند و مسیریابی را برای هر بسته تولید شده یا استفاده شده توسط شبیه سازی ، برای مثال NS-2 محاسبه می کنند [28].

شبیه سازهای دیگر مبتنی بر جریان هستند که معمولاً نقشه شبکه اصلی را ترسیم نمی کنند یا حتی طرح این شبکه ها را در نظر نمی گیرند و بنابراین جزئیات زیر لایه شبیه ساز را جمع می کنند.

آنها در لایه برنامه کار می کنند و از پروتکل های حمل و نقل مانند TCP یا UDP به عنوان کانال های ارتباطی بین همتا متصل می شوند.

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

شبیه سازی پروتکل اساسی: شبیه سازهای P2P در کاربرد آنها نسبت به پروتکل های اساسی متفاوت هستند.

آنها را می توان به عنوان شبیه سازهای عمومی ، شبیه سازهای خاص پروتکل یا شبیه سازهای خاص دامنه طبقه بندی کرد.

از شبیه سازهای عمومی می توان برای شبیه سازی هرگونه کاربرد P2P استفاده کرد.

شبیه سازهای خاص پروتکل برای شبیه سازی پروتکل خاص و شبیه سازهای دامنه خاص سیستم های P2P را در زمینه خاص شبیه سازی می کنند ..

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

بنابراین ، اینکه آیا شبیه ساز P2P از شبیه سازی هایی که باید در چندین ماشین اجرا شود پشتیبانی می کند یا نه ، معیار مهمی است که باید برای محیط های توزیع شده در نظر گرفته شود.

این به دستیابی به مقیاس پذیری بالاتر یا زمان شبیه سازی سریعتر کمک می کند.

با این حال ، اجرای موازی نیاز به بررسی کنترل های وابستگی هنگام توزیع در ماشین های مختلف دارد.

پشتیبانی از churn: رفتار یک peer یا گره در یک محیط پویا با نرخ churn i-e- سرعت اتصال گره ها یا خروج از شبکه در واحد زمان شبیه سازی می شود.

این ویژگی همچنین شامل این است که آیا شبیه سازی پیگیری و خروج گره ها از شبکه را کنترل می کند ، چه سطوحی از churn شبیه سازی می شود یا اینکه آیا شکست گره (به طور موقت یا دائم) کنترل می شود یا خیر.

2.2. قابلیت استفاده:

قابلیت استفاده برای اندازه گیری میزان یادگیری و سهولت استفاده از شبیه ساز استفاده می شود.

برای این منظور ، سند شبیه ساز باید جامع ، کاملاً مشخص ، قابل گسترش و قابل فهم باشد.

علاوه بر این ، سناریوهای آزمایش و آزمایش باید برای کاربران نهایی مناسب باشد.

زبان اسکریپت یا رابط های ارائه شده توسط اسناد شبیه ساز باید بیانگر و یادگیری آن آسان باشد.

2.3 مقیاس پذیری:

اندازه امکان پذیر شبکه ، به طور کلی از نظر تعداد گره ها ، که می تواند توسط شبیه ساز شبیه سازی شود ، مقیاس پذیری شبیه ساز را تعریف می کند.

اندازه شبکه یک برنامه از پروتکل P2P نسبتاً زیاد است و از این رو مقیاس پذیری یک ویژگی بسیار مهم و چالش برانگیز برای تأیید عملکرد یک شبیه ساز است.

بنابراین ، اگر یک شبیه ساز مقیاس پذیری بالاتری از هزاران گره یا بیشتر فراهم کند ، در انجام آزمایش های مداوم که اجرای آن بر روی هزاران ماشین در سناریوهای واقعی دشوار است ، مفید است.

در کنار آن ، استفاده کارآمد از منابع محاسباتی موجود نیز ویژگی مهمی برای بهبود توانایی مقیاس سازی است.

2.4 آمار:

یکی دیگر از جنبه های اصلی شبیه ساز ، نتایج تولید شده و نحوه ذخیره سازی آن برای مراجعه بیشتر است.

برای انجام تجزیه و تحلیل آماری ، نتایج باید بیانگر و آسان باشد.

باید مکانیزمی وجود داشته باشد که امکان تکرار آزمایشاتی مانند صرفه جویی در حالت شبیه ساز را فراهم کند تا قابلیت تکرار نتایج قابل تأیید باشد.

2.5 تجسم تعاملی:

برای اعتبارسنجی و اشکال زدایی از پروتکل های همپوشانی جدید یا موجود ، یک ویژوالایزر مانند GUI باید در دسترس باشد.

تجسم گر توپولوژی شبکه اصلی و توپولوژی همپوشانی را به روشی سفارشی تجسم می کند.

از آنجا که مقاله ما همچنین بر روی اجرای پروتکل P2P از طریق مطالعه موردی متمرکز است ، ما علاوه بر معیارهایی که در بحث شد ، معیارهای دیگری را برای شبیه سازهای مختلف در نظر می گیریم:

2.6 پروتکل های P2P اجرا شده:

این ویژگی شامل پروتکل های اساسی است که توسط شبیه ساز P2P پیاده سازی شده است.

شبیه ساز را می توان بر اساس پروتکل های پیاده سازی شده اصلی مشابه برنامه مورد نیاز انتخاب کرد.

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

شبیه سازهای موجود را می توان بر اساس این خصوصیات مقایسه کرد.

با این حال ، تمام شبیه سازها تمام خصوصیات مورد بحث را دنبال نمی کنند.

ما در بخش بعدی در مورد شبیه سازهای مختلف با خصوصیات آنها بحث می کنیم.

3. شبیه سازهای مختلف شبکه P2P:

ما شبیه سازهای مختلف P2P را بررسی می کنیم و آنها را بر اساس کاربرد آنها در پروتکل های اساسی مشخص می کنیم.

شبیه سازهای عمومی که می تواند برای هر برنامه P2P استفاده شود ، شبیه سازهای خاص پروتکل که به طور خاص برای یک پروتکل موجود یا شبیه سازهای خاص دامنه طراحی شده اند که سیستم های P2P را در زمینه خاصی پوشش می دهند ..

3.1 شبیه سازهای عمومی:

شبیه ساز عمومی P2P ماژول های رایج بسیاری را برای شبیه سازی پروتکل ارائه می دهد ، کاربران فقط نیاز به دستیابی به قسمت اصلی پروتکل یا برنامه دارند.

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

PeerSim ، OverSim ، 3LS ، PlanetSim چند نمونه از شبیه سازهای عمومی هستند.

3.1.1 PeerfactSim.KOM:

PeerfactSim.KOM [24] یک شبیه ساز مبتنی بر جاوا است که برای کاربردهای P2P در مقیاس بزرگ طراحی شده است.

برای شروع شبیه سازی از یک فایل پیکربندی مبتنی بر XML استفاده می شود که لایه های موجود را نشان می دهد.

(http://peerfact.kom.e-technik.tu-darmstadt.de/de/) ..

معماری شبیه ساز: PeerfactSim.KOM یک شبیه ساز عادی و گسسته است که از همپوشانی های ساختاری و بدون ساختار پشتیبانی می کند.

شبیه ساز از یک معماری لایه ای تشکیل شده است.

لایه برنامه ، لایه سرویس ، لایه پوشش ، لایه انتقال و لایه شبکه که سعی دارد جنبه های مختلف سیستم P2P را پوشش دهد.

در هر لایه از یک یا چند رابط استفاده شده است که قابلیت ارائه به لایه های باقیمانده را دارد.

این لایه شبکه را برای برقراری ارتباط در نظر گرفته و از این رو ، از انتقال سطح بسته بسته پیام با جزئیات پشتیبانی می کند.

PeerfactSim.KOM یک مولد چرخش بر اساس یک عملکرد ریاضی فراهم می کند که از اتصال یا خروج گره مراقبت می کند.

قابلیت استفاده: مستندات گسترده ای در وب سایت PeerfactSim.KOM موجود است.

رابط هایی را در هر لایه ارائه می دهد که خدمات را به لایه های دیگر ارائه می دهد.

بر اساس این رابط ها ، شبیه ساز مفهوم پیاده سازی اسکلت و پیش فرض را فراهم می کند.

آمار: PeerfactSim.KOM معماری خاص خود را برای جمع آوری داده های شبیه سازی های مداوم فراهم می کند.

این از معماری ورود به سیستم برای ردیابی و اشکال زدایی از یک شبیه سازی و یک معماری آماری استفاده می کند تا داده های مهم مربوط به آمار پرواز یا برای پردازش های بعدی را بدست آورد.

تجسم تعاملی: م :لفه تجسم مجتمع امکان تجسم توپولوژی و پیام های رد و بدل شده سیستم P2P شبیه سازی شده را فراهم می کند.

با ارائه توپولوژی ، تجسم می تواند نظیرها را براساس مختصات ارائه شده لایه شبکه سازماندهی کند یا آنها را در یک توپولوژی حلقه ای مرتب کند.

پروتکل های P2P اجرا شده: پوشش های بدون ساختار: GIA ، Gnutella 0.4 ، Gnutella 0.6 ، Napster. روکش های ساختاری: CAN ، Chord ، C-DHT ، Kademlia ، Pastry ، Globase ..

3.1.2. D-P2P-Sim:

D-P2P-Sim [25] یک محیط شبیه سازی توزیع شده جدید است که به زبان جاوا با GUI برای شبیه سازی P2P نوشته شده است.

این عملکرد پروتکل های مختلف را با ادغام مجموعه ای از ابزارها در یک راه حل نرم افزاری واحد ارزیابی می کند.

D-P2P-Sim + یک پیشرفت D-P2P-Sim برای ارائه پشتیبانی شبیه سازی چند میلیون گره ، قابلیت های شبیه سازی مدل های بازیابی شکست و آمار بیشتر است (http://students.ceid.upatras.gr/papalukg/) ..

معماری شبیه ساز: D-P2P-Sim یک موضوع چند موضوعی عمومی ، مبتنی بر رویدادها است که برای دستیابی به هزاران / میلیون گره با استفاده از رویکرد رویداد محور که آن را شبیه ساز واقعی تر می کند ، از یک روش جمع آوری استفاده می کند.

این دارای ویژگی های کلیدی به شرح زیر است: (i) بی طرفانه: مستقل از پروتکل سازوکار پیاده سازی شده برای جمع آوری داده های عملکرد ، (ii) واقع گرایی: پیاده سازی تا حد ممکن به سطح برنامه نرم افزار P2P ، (III) توزیع شده: چندین کامپیوتر را در شبکه یا حتی خوشه ها ، (iv) قابل پلاگین و توسعه پذیر: فراهم می کند API قابل توسعه و مبتنی بر مکانیزم پلاگین جاوا.

معماری D-P2P-Sim به چهار ماژول تقسیم شده است.

پیام عبور از محیط ، شبکه همپوشانی ، خدمات از راه دور و برنامه های شبیه ساز.

شبیه ساز دو نوع فایل پیکربندی را با فرمت XML به عنوان ورودی i-e می پذیرد - یکی که پارامترهای شبیه ساز را تعریف می کند و دیگری پارامترهای شبیه سازی را تعریف می کند.

D-P2P-Sim از churn برای عملیات پیوستن و ترک همکار پشتیبانی می کند ..

قابلیت استفاده: D-P2P-Sim API قابل جابجایی و قابل توسعه ای را فراهم می کند که برای توسعه بیشتر نیز موجود است.

علاوه بر این ، این شامل یک نمونه ساختگی ساختگی با تمام کد و جزئیات برای طراحی اولیه یک پروتکل P2P با مکانیسم معامله پیام ، مدیریت مسیریابی و طرح معماری است.

Statistics: یک رابط کاربری گرافیکی یکپارچه و شامل عملکرد آماری گرافیکی است.

شبکه حاوی پیام ها توسط مانیتور شبکه مشاهده می شود و توسط فیلتر شبکه فیلتر می شود تا داده های آماری مفیدی استخراج شود که توسط مانیتور overlay پردازش بیشتری می شوند.

Interactive visualizer: برای ترسیم نتایج از دکمه های GUI استفاده می کند.

تجسم برای تجسم توپولوژی در ادبیات مشخص نشده است ..

پروتکل های P2P اجرا شده: Chord، BATON * ..

3.1.3. ProtoPeer:

ProtoPeer [23] مجموعه توزیع شده ای از نمونه های اولیه سیستم است که به زبان جاوا نوشته شده است و امکان تغییر بین شبیه سازی رویدادها و استقرار شبکه زنده را بدون تغییر کد برنامه فراهم می کند.

مدل سازی از دست دادن و تأخیر در رابط شبکه محصور شده است تا به راحتی مدل شبیه سازی را به شبکه زنده تغییر دهید.

(http://sourceforge.net/projects/protopeer/) ..

معماری شبیه ساز: ProtoPeer یک شبیه ساز عمومی و مبتنی بر رویداد گسسته است که از پوشش های ساختاری و بدون ساختار پشتیبانی می کند.

برنامه ای که با استفاده از ProtoPeer ساخته شده مجموعه پیام ها و پیام دهنده خاص خود را دارد و همچنین تایمرها و کنترل کننده تایمر را تعریف می کند.

همسالان از طریق ارسال پیام با یکدیگر ارتباط برقرار می کنند.

ProtoPeer از مکانیزم تزریق رویداد برای پشتیبانی از ورود و خروج مخاطبان و همچنین عدم موفقیت همکاران استفاده می کند.

قابلیت استفاده: ProtoPeer دارای یک API برای ساخت سیستم های خودسرانه ارسال پیام است که از I / O شبکه ، سریال سازی پیام و صف پیام پشتیبانی می کند.

علاوه بر این ، به کاربران امکان می دهد پیاده سازی خود را به برق وصل کنند.

برنامه های کاربردی در ProtoPeer می توانند به گلهای قرمز تبدیل شوند که قابل استفاده مجدد ، آزمایش واحد هستند و می توانند برای دستیابی به عملکرد همتا مورد نظر ، با هم ترکیب شوند.

با این حال ، مستندات به طور دقیق ارائه نشده است ..

آمار: از طریق ابزار اندازه گیری با انجام تماس به API اندازه گیری در مکان های مناسب در کد برنامه.

این آمار را می توان در سطوح مختلف تجمع محاسبه کرد: برای هر کاربر ، در هر پنجره زمانی و برچسب اندازه گیری.

ProtoPeer آمار اولیه را محاسبه می کند ، یعنی.

میانگین ، جمع یا واریانس پرواز و همچنین می توان آنها را در یک پرونده ثبت اندازه گیری وارد کرد تا بعدا تجزیه و تحلیل شود.

پروتکل های P2P اجرا شده: آکورد ..

3.1.4. PeerSim:

PeerSim [29] ، [30] ، [31] شبیه ساز توسعه یافته در پروژه به نام BISON است ، که به طور کلی برای شبیه سازی پروتکل شبکه P2P پویا در مقیاس بزرگ استفاده می شود.

شبکه به عنوان لیستی از گره ها مدل سازی می شود. یک گره لیستی از پروتکل ها دارد و شبیه سازی دارای مقدمات اولیه و کنترل است.

اولیه سازها قبل از شبیه سازی اجرا می شوند ، در حالی که کنترل ها در هنگام شبیه سازی اجرا می شوند.

آنها ممکن است هر جز component را اصلاح یا نظارت کنند.

به عنوان مثال ، آنها ممکن است گره های جدید اضافه کنند یا گره های موجود را از بین ببرند. یا ممکن است در سطح پروتکل ها عمل کنند تا ورودی خارجی به آنها بدهد یا پارامترهای آنها را اصلاح کند.

برنامه ها و کنترل های اجزای i-e قرار است توسط موتور شبیه ساز که بصورت دوره ای توسط فایل پیکربندی تنظیم می شوند ، اجرا شوند.

این موارد را می توان برای نظارت و جمع آوری داده های آماری یا برای شبیه سازی ریزش شبکه در محیط های پویا ، یعنی استفاده کرد.

پیوند گره ، خرابی گره و خروج گره ..

PeerSim بر اساس م Javaلفه های جاوا طراحی شده است که گسترش آن آسان است و دارای اندازه قابل توجهی از گره های شبیه سازی شده است.

در حال حاضر فعال است و کد شبیه سازی در http://peersim.sourceforge.net/ در دسترس است.

معماری شبیه ساز: PeerSim یک شبیه ساز عمومی است که می تواند برای شبیه سازی همپوشانی های ساختاریافته و غیر ساختاری استفاده شود.

این از سناریوهای پویا مانند churn و سایر مدل های خرابی پشتیبانی می کند.

PeerSim منحصراً بر روی شبیه سازی عملکرد فوق العاده در سطح انتزاع سطح همپوشانی شبکه تمرکز دارد.

این مورد هیچگونه هزینه و جزئیات مربوط به شبکه ارتباطی اساسی مانند پشته TCP / IP یا تأخیر را در نظر نمی گیرد و از این رو از مسیریابی مبتنی بر جریان پشتیبانی می کند.

PeerSim دو نوع موتور شبیه سازی را ارائه می دهد ، یعنی.

موتور مبتنی بر چرخه و موتور مبتنی بر رویداد.

در مدل مبتنی بر چرخه ، همه گره ها به طور تصادفی انتخاب می شوند و هر پروتکل گره به نوبه خود در هر چرخه فراخوانی می شود.

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

موتور مبتنی بر چرخه می تواند مقیاس پذیری و عملکرد بالایی داشته باشد اما با غفلت از شبیه سازی در لایه حمل و نقل و وجود فیزیکی شرایط همزمان ، امکانات زیادی را از دست می دهد.

در حالی که موتور مبتنی بر رویداد از پویایی ، همزمانی پشتیبانی می کند و واقع گرایانه تر است اما مقیاس پذیری شبیه سازی را کاهش می دهد.

PeerSim معماری لایه ای را برای شبیه سازی تعریف می کند.

قابلیت استفاده: ماژول های PeerSim به راحتی قابل درک هستند ، با استفاده مجدد و اجزای اضافی را می توان بر اساس نیازها متصل کرد.

مستندات غنی برای موتور مبتنی بر چرخه در دسترس است ، در حالی که موتور مبتنی بر رویداد دارای مستندات ضعیف است حتی اگر واقع بینانه تر باشد.

با این حال ، پیاده سازی مبتنی بر چرخه به راحتی می تواند به پیاده سازی مبتنی بر رویداد تبدیل شود.

آمار: اجزای موجود در قالب ناظران را می توان برای جمع آوری آمار از گره های مختلف در هنگام شبیه سازی پیاده سازی کرد.

Interactive visualizer: بسته های کلاس پیاده سازی را ارائه می دهد که مدل های شناخته شده ای مانند نمودار تصادفی ، شبکه و BA-Graph را برای تجسم شبیه سازی پشتیبانی می کند.

پروتکل های P2P اجرا شده: پروتکل های از پیش تعریف شده را برای شبیه سازی P2P فراهم می کند ، یعنی.

OverStat ، SG-1 و T-Man [16].

پوشش های مختلف P2P یعنی

Pastry ، Chord ، BitTorrent نیز توسط محققان با استفاده از PeerSim توسعه داده شده است.

3.1.5. RealPeer:

RealPeer [27] یک چارچوب نرم افزار منبع باز ، مستقل از پلت فرم و شی گرا است که به زبان جاوا نوشته شده و از مدل سازی و شبیه سازی و همچنین توسعه سیستم های P2P پشتیبانی می کند.

(http://sourceforge.net/projects/realpeer/) ..

معماری شبیه ساز: RealPeer یک شبیه ساز عمومی و بسیار مدولار است که از شبیه سازی رویداد گسسته استفاده می کند و می تواند برای شبیه سازی همپوشانی های ساختاریافته و غیر ساختاری استفاده شود.

یک سیستم P2P در مدل دامنه چارچوب RealPeer یک جمع است که از مجموعه ای از همتا و یک شبکه فیزیکی تشکیل شده است.

نمونه های کلاس های مفهومی مشخص می کنند که آیا سیستم P2P نشان داده شده باید در نقش یک مدل استفاده شود - کلاسها مدل مفاهیم خود را کپسوله می کنند یا یک سیستم واقعی است - کلاسها وقایع واقعی مفاهیم خود را محصور می کنند.

علاوه بر این ، یک برنامه P2P به چهار لایه تقسیم شده است.

هسته P2P ، خدمات P2P ، برنامه و رابط کاربری.

RealPeer از مکانیزم عبور پیام برای ارسال و دریافت پیام از طریق شبکه فیزیکی با استفاده از MessageProtocol استفاده می کند.

با گذشت زمان ، مدل های دامنه تصفیه می شوند تا زمانی که در پایان فرایند توسعه با سیستم واقعی P2P مورد نظر مطابقت داشته باشند.

این از اجرای موازی پشتیبانی نمی کند اما هدف آن افزودن قابلیت در آینده است.

قابلیت استفاده: معماری چارچوب RealPeer به گونه ای قابل توسعه است که توسعه دهنده می تواند عناصر چارچوب را با هم ترکیب ، آزادانه مبادله و استفاده مجدد کند.

اسناد در وب موجود است ..

آمار: این چارچوب مجموعه ای از ObserverEvents را تعریف می کند که انواع مختلف داده های شبیه سازی را که توسط افزونه های ثبت شده Observer مصرف می شود ، در خود قرار داده است.

این افزونه ها داده ها را به ابزارهای تجزیه و تحلیل خارجی برای استفاده مجدد در مدل های مختلف صادر می کند.

پروتکل های P2P اجرا شده: GnuTella (نسخه 4) ..

3.1.6. OMNeT ++:

OMNeT ++ [32]، [33] یک شبیه ساز قابل توسعه ، مدولار و مبتنی بر م componentلفه است که با زبان C ++ نوشته شده است.

می توان آن را برای شبیه سازی در زمان واقعی ، شبیه سازی شبکه ، یکپارچه سازی پایگاه داده ، از زبانهای جایگزین مانند C # یا Java و چندین توابع دیگر پشتیبانی کرد.

این دقیقاً یک شبیه ساز شبکه نیست بلکه دارای دامنه کاربردی در زمینه پردازنده های چندگانه و سایر سیستم های توزیع شده است.

ویژگی اصلی OMNeT ++ قابلیت استفاده مجدد از مدل ها است.

با موفقیت در زمینه های دیگر مانند شبیه سازی سیستم های IT ، شبکه های صف بندی ، معماری سخت افزار و فرایندهای تجاری نیز مورد استفاده قرار گرفته است.

OMNeT ++ همچنین دارای تعدادی مدل مشارکتی است که پروتکلها یا شبیه سازی های P2P را ارائه می دهند.

توپولوژی های چند لایه توسط OMNeT ++ پشتیبانی می شوند.

قابلیت همکاری جاوا توسط JSimpleModule ارائه شده است که افزونه ای است که اجازه می دهد ماژول های OMNeT ++ در جاوا نوشته شوند.

(https://omnetpp.org/) ..

معماری شبیه ساز: OMNet ++ یک شبیه ساز عمومی و در سطح بسته است که فقط از پوشش های ساختاریافته پشتیبانی می کند.

این از شبیه سازی رویداد گسسته که در آن ماژول ها از طریق ارسال پیام با یکدیگر ارتباط برقرار می کنند پشتیبانی می کند.

علاوه بر این ، OMNeT ++ از اجرای شبیه سازی توزیع شده موازی پشتیبانی می کند.

قابلیت استفاده: اساساً ماژولها یا م componentsلفه های ساده را طراحی می کند و سپس آنها را در ماژول های مرکب دسته بندی می کند که در صورت لزوم به ماژول های ساده تقسیم می شوند.

ماژول های قابل توسعه از طریق پیام های دارای پارامتر ارتباط برقرار می کنند و سپس با استفاده از یک زبان برنامه نویسی NED (توصیف NEtwork) در اجزای بزرگتر جمع می شوند.

OMNeT ++ دارای پشتیبانی گسترده از رابط کاربری گرافیکی است و به دلیل معماری مدولار ، هسته شبیه سازی (و مدل ها) را می توان به راحتی در برنامه ها جاسازی کرد ..

آمار: به کاربر کمک می کند تا با ثبت تعاملات بین ماژول ها در یک پرونده ، تعامل را تجسم کند.

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

تجسم تعاملی: OMNeT ++ IDE دارای یک ابزار نمودار نمودار توالی است که نمای پیچیده ای از چگونگی پیگیری وقایع را به دنبال دارد.

این ابزار می تواند علل یا عواقب یک رویداد را تجزیه و تحلیل و نمایش دهد.

پروتکل های P2P اجرا شده: شبیه سازی ازدحام P2P ، پخش مستقیم ویدئو P2P ..

3.1.7. OverSim:

OverSim [34] ، [35] یک چارچوب شبیه سازی منبع باز مبتنی بر OMNeT ++ (نوشته شده در C ++) برای شبکه های همپوشانی و نظیر به نظیر است.

سه مدل شبکه برای OverSim اجرا شده است.

ساده ، SingleHost و INET.

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

با توجه به سربار کم بودن تکنیک ها ، مدل Simple منجر به سطح بالایی از دقت و توانایی شبیه سازی شبکه ها با تعداد زیادی گره می شود.

مدل SingleHost از پیاده سازی پروتکل پوشش بدون تغییر کد در شبکه های واقعی مانند PlanetLab استفاده مجدد می کند.

در اینجا ، هر نمونه از OverSim فقط یک میزبان را تقلید می کند که می تواند از طریق شبکه های موجود مانند اینترنت به موارد دیگر متصل شود.

مدل زیرین INET از چارچوب INET OMNeT ++ مشتق شده است که شامل مدل های شبیه سازی تمام لایه های شبکه از لایه MAC به بعد است.

از آنجایی که چارچوب INET برای شبکه های مقیاس بزرگ بهینه نشده است ، کد پروفایل شده است و مسیریابی مبتنی بر جدول هش و حافظه پنهان رابط برای انتقال سریعتر بسته های داده اضافه می شود که منجر به بهینه سازی توپولوژی های پوشش و کاهش تاخیر بسته می شود.

(http://oversim.org/) ..

معماری شبیه ساز: OverSim یک شبیه ساز عمومی و در سطح بسته است که از همپوشانی های ساختاریافته و بدون ساختار پشتیبانی می کند.

از شبیه سازی رویداد گسسته (DES) برای شبیه سازی تبادل و پردازش پیام های شبکه استفاده می کند.

علاوه بر این ، OverSim از سه مدل شبکه یعنی پشتیبانی می کند.

ساده ، SingleHost و INET.

این از معماری لایه ای پشتیبانی می کند که شامل لایه های کاربرد ، پوشش و زیر لایه است.

همچنین از churn با استفاده از مدل های LifeTimeChurn و ParetoChurn پشتیبانی می کند.

قابلیت استفاده: شبیه ساز دارای رابط لایه پوشش عالی برای توسعه و جایگزینی پروتکل لایه پوشش است.

این یک رابط کاربری گرافیکی فوق العاده دارد ، بنابراین آزمایش و اشکال زدایی راحت است. اجرای پروتکل های پوشش مجدد قابل استفاده است.

آمار: ناظر جهانی برای جمع آوری داده های آماری جهانی.

این اطلاعات از ترافیک شبکه ارسالی ، دریافتی یا ارسال شده به ازای هر گره ، تحویل بسته موفقیت آمیز یا ناموفق و شمارش بسته هاپ را جمع آوری می کند.

تجسم کننده تعاملی: مشابه OMNet ++ ..

پروتکل های P2P اجرا شده: پروتکل های ساختاری نظیر به نظیر یعنی.

وتر ، کادملیا ، شیرینی ، کورد و بروس ؛ پروتکل های بدون ساختار Peer-to-Peer یعنی

GIA

پوشش های تخصصی تر برای تبادل پیام های رویداد در بازی های آنلاین چند نفره عظیم مبتنی بر Peer-to-Peer مانند VAST یا پوشش مبتنی بر انتشار / اشتراک ..

3.1.8. بافنده روکش:

Overlay weaver [36] ، [37] یک مجموعه ابزار ساخت روکش P2P است که به زبان جاوا نوشته شده و علاوه بر توسعه دهندگان برنامه ، از الگوریتم های مسیریابی برای محققان پشتیبانی می کند.

برای توسعه دهندگان برنامه ها ، این مجموعه ابزار API مشترکی را برای سرویس های سطح بالاتر مانند Distributed Hash Table (DHT) و چندپخشی فراهم می کند.

توسعه دهندگان الگوریتم می توانند با آزمایش تکراری روی شبیه ساز ، الگوریتم های جدید و پیاده سازی آنها را به سرعت بهبود بخشند.

لایه مسیریابی از خدمات DHT و خدمات چندپخشی جدا شده است.

برنامه های کاربردی با تکیه بر API مشترک به پروتکل حمل و نقل خاص ، پیاده سازی پایگاه داده و الگوریتم مسیریابی بستگی دارند.

هر زمان که با استفاده از این شبیه سازی انجام شد ، بسیاری از مشکلات وجود دارد مانند جمع آوری آمار به کار زیادی نیاز دارد ، مستندات باید نوشته شوند و عدم مقیاس پذیری ممکن است نیاز به یک طراحی مجدد اساسی داشته باشد.

الگوریتمی که به تازگی پیاده سازی شده است می تواند روی شبیه ساز قابل آزمایش ، ارزیابی و مقایسه باشد که می تواند ده ها هزار گره مجازی را میزبانی کند.

این امکان شبیه سازی در مقیاس بزرگ و مقایسه منصفانه بین الگوریتم ها را فراهم می کند.

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

(http://overlayweaver.sourceforge.net/) ..

معماری شبیه ساز: شبیه ساز Overlay Weaver یک شبیه ساز مبتنی بر پیام عمومی است که فقط از پوشش های ساختاری پشتیبانی می کند.

این برنامه از RPC با استفاده از پیام گسسته پیام عبور می کند که از JVM استفاده می کند.

پروتکل ها را می توان با تقلید از RPC با استفاده از TCP / UDP واقعی در یک شبکه واقعی آزمایش کرد.

گره های مختلف با ارسال و دریافت پیام با یکدیگر ارتباط برقرار می کنند.

شبیه سازی توزیع شده امکان پذیر است اما خیلی آزمایش نشده است ..

کاربرد: API تمیز و خوب طراحی شده است به طوری که منبع کاملاً خوانا است.

رابط Overlay Weaver از تعداد کمی ابزار خط فرمان و شبیه ساز تشکیل شده است.

با این حال ، اسناد پراکنده است ..

آمار: تمام ارتباطات از طریق شبکه می تواند با استفاده از یک شمارنده پیام در هنگام اجرای سرویس پیام رسانی گزارش شود.

پیشخوان پیام ، آمار ورود به سیستم و تجزیه و تحلیل گزارش ها را در زمان اجرا جمع آوری می کند.

تجسم گر تعاملی: تجسم گره ها و ارتباط بین آنها با استفاده از یک ابزار تجسم پیام رسان انجام می شود.

با این حال ، ویژوالایزر علاوه بر دو برابر شدن تعداد پیام ها ، با تجسم ، بار دیگری را بر روی شبیه ساز تحمیل می کند.

این منجر به کاهش حداکثر تعداد گره های تقلیدی می شود.

پروتکل های P2P اجرا شده: الگوریتم های مسیریابی چندگانه مبتنی بر DHT مانند Chord ، Kademlia ، Koorde ، Pastry و Tapestry و یک شبیه ساز محیط توزیع شده ..

3.1.9. PlanetSim:

PlanetSim [38] ، [39] ، [40] یک شبیه ساز شبکه همپوشانی رویداد گسسته است که به زبان جاوا نوشته شده است.

از تکنیک های مهندسی نرم افزار برای طراحی و اجرای پروتکل ها و برنامه های جدید به راحتی استفاده می کند.

با استفاده از طراحی خوش ساخت ، یک API تمیز برای اجرای الگوریتم های همپوشانی و خدمات برنامه در دسترس است.

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

این به وضوح بین ایجاد و اعتبارسنجی الگوریتم های همپوشانی (Chord، Pastry) و ایجاد و آزمایش سرویس های جدید در بالای پوشش های موجود تمایز قائل می شود.

علاوه بر این ، PlanetSim یک الگوریتم مورچه ارائه می دهد که به طور هوشمندانه پیوندهای جدیدی را در مسیرهای بیش از حد در همپوشانی Peer-to-Peer اضافه می کند و از این رو ، عملکرد مسیریابی پوشش Peer-to-Peer را بهبود می بخشد.

(http://ants.etse.urv.es/planet/planetsim/) ..

معماری شبیه ساز: PlanetSim یک شبیه ساز عمومی است که از هر دو شبکه همپوشانی P2P ساخت یافته و بدون ساختار پشتیبانی می کند.

این یک شبیه ساز شبکه همپوشانی رویداد گسسته است که از اجرای مبتنی بر بسته پشتیبانی می کند.

سلسله مراتب PlanetSim را می توان در طبقه بندی لایه لایه برنامه کاربردی i-e- لایه ، لایه همپوشانی و لایه شبکه ای که طبقات معمولی API 0 ، 1 و 2 به آنها ترسیم می شود طبقه بندی کرد.

این لایه ها می توانند با استفاده از upcall و downcall از Common API با یکدیگر ارتباط برقرار کنند.

این از مدل churn پشتیبانی می کند که در آن گره ها می توانند به صورت پویا به شبکه بپیوندند یا از آن خارج شوند.

قابلیت استفاده: دارای یک API سلسله مراتب بسیار خوب و واضح است و رابط های داخلی مناسب برای نهادها را دارد.

علاوه بر این ، موجودی موجود را می توان به راحتی جایگزین کرد تا پیاده سازی را طبق تنظیمات شبیه سازی انجام دهد.

معماری Common API (CAPI) را پیاده سازی می کند تا توسعه و تجزیه و تحلیل الگوریتم های پوشش از برنامه ها جدا شود.

اسناد موجود در وب سایت PlanetSim [40] موجود است.

Statistics: آماری اساسی مانند زمان شبیه سازی کل و تعداد پیامهایی را که به عنوان بخشی از شبیه ساز به کار می روند و از طریق برنامه نویسی جنبه محور (AOP) قابلیت های آماری عمیق را فراهم می کند.

تجسم تعاملی: PlanetSim می تواند توپولوژی شبکه را به عنوان خروجی های GML یا Pajek نشان دهد و می توان شبیه سازی را برای استفاده مجدد روی دیسک ذخیره کرد.

پروتکل های P2P اجرا شده: همپوشانی های اجرا شده یعنی

Chord ، Symphony ، SkipNet و ساختارهای همپوشانی عمومی مانند SingleLinkedRing و LeafSetRouting.

علاوه بر این ، انواع خدمات مانند CAST ، DHT و میان افزار شی object ..

3.1.10. Dnet:

Dnet [41] یک شبیه ساز بسیار مدولار و کارآمد است که در ISO C / C ++ با دو هدف عمده ساخته شده است.

سهولت استفاده و کارایی و همچنین مقیاس پذیری.

(http://www.csse.uwa.edu.au/wilkia07/dnet/) ..

معماری شبیه ساز: Dnet یک شبیه ساز عمومی ، مبتنی بر رویداد گسسته و مبتنی بر پیام است که برای شبیه سازی توزیع شده سیستم های P2P طراحی شده است.

از یک برنامه ریز رویداد متوالی تک پردازنده و همچنین دو برنامه ریز رویداد توزیع شده یعنی استفاده می کند.

پیاده سازی های مشتق شده از طرح جلوگیری از بن بست Chandy-Misra و طرح Time War of Jefferson.

Dnet دارای دو نیمه مشخص است: هسته وظیفه برنامه ریزی رویدادها و مدیریت داخلی شبیه ساز را بر عهده دارد و ماژول های کاربر از طریق API با هسته تعامل می کنند تا کنترل کننده های رویدادها را مشخص کند.

علاوه بر این ، چارچوب شبیه سازی توزیع شده Dnet از رابط عبور پیام (MPI) برای انجام ارتباط بین شبیه ساز استفاده می کند و از این رو ، از اجرای موازی وقایع با افزایش سرعت با استفاده از چندین شبیه ساز پشتیبانی می کند ..

قابلیت استفاده: Dnet برای دستیابی به اجرای موازی رویدادها روی چندین شبیه ساز ، از API ها برای مدیریت رویدادها و MPI استفاده می کند.

برای بارگذاری توپولوژی های شبکه اصلی از یک فایل ، رابطی به قالب فایل استنفورد GraphBase پیاده سازی کرده است.

با این حال ، شبیه ساز Dnet مستند خوبی ندارد و وب سایت نیز در دسترس نیست.

تجسم كننده تعاملی: X با استفاده از یك مولد توپولوژی اینترنتی مانند GT-ITM ، BRITE یا Inet ، یك بستر مشابه اینترنت ایجاد كنید.

3.1.11. 3LS (3 سطح شبیه ساز):

3LS [42] یک شبیه ساز منبع باز برای شبکه های همپوشانی است که به زبان جاوا نوشته شده و برای غلبه بر مشکلات توسعه پذیری و قابلیت استفاده طراحی شده است.

3LS یک رابط دوستانه برای توسعه پروتکل جدید P2P فراهم می کند.

همچنان پیام ها از نظر دانه دانه بودن شبیه سازی به عنوان هدف اصلی شبیه سازی در نظر گرفته می شوند.

با این حال ، شبیه ساز نمی تواند جزئیات لایه انتقال را شبیه سازی کند و نمی تواند مسیریابی و منابع شبکه های P2P فایلها را به طور مناسب شبیه سازی کند ..

معماری شبیه ساز: 3LS یک شبیه ساز منحصر به فرد P2P با موتور شبیه سازی مبتنی بر ساعت است.

این یک شبیه ساز عمومی است که فقط از پوشش های بدون ساختار پشتیبانی می کند.

شبیه ساز کل ساختار را به سه لایه تقسیم می کند.

لایه شبکه ، لایه پروتکل و لایه کاربر ، مربوط به توپولوژی های مختلف شبکه ، پروتکل ها و شبیه سازی برنامه ها.

سطح پروتکل مسئول شبیه سازی پروتکل ها و برنامه های P2P است.

قابلیت استفاده: اطلاعات ورودی از کاربر از طریق یک رابط GUI یا یک فایل به سطح شبکه منتقل می شود.

برای شبیه سازی P2P به خوبی مستند نشده است ..

آمار: وقتی شبیه سازی کامل شد ، نتیجه در یک فایل ذخیره می شود ..

Interactive visualizer: ابزاری برای تجسم به نام Aisee ..

پروتکل های P2P اجرا شده: Gnutella 0.4 ..

3.1.12. سیم کارت بهینه:

Optimal-sim [43] در جاوا پیاده سازی شده است که به شما امکان می دهد از توپولوژی های واقعی مانند اینترنت در شبیه سازی استفاده شود.

معماری شبیه ساز: Optimal-sim یک شبیه ساز عمومی است که از حالت رویداد گسسته برای شبیه سازی برای تولید توپولوژی شبکه همپوشانی پشتیبانی می کند.

عملیات همتا مانند پیوستن به همتا ، مرخصی همکار یا شکست همکار به عنوان رویدادها شبیه سازی می شوند.

بنابراین ، Optimal-sim با شبیه سازی تغییر توپولوژی پویا و تبادل پیام شبکه های P2P ، مدل churn سیستم های P2P را شبیه سازی می کند.

قابلیت استفاده: API را برای توصیف الگوریتم های موجود در سیستم های P2P فراهم می کند.

آمار: با استفاده از ابزار مدیریت نتایج ..

تجسم كننده تعاملی: توپولوژی های زیربنایی شبکه به دلیل ویژگی های اساسی BRITE توسط ابزار جهانی تولید توپولوژی تولید می شوند.

انعطاف پذیری ، قابلیت انعطاف پذیری ، قابلیت همکاری ، قابلیت حمل و کاربر پسند ..

پروتکل های P2P اجرا شده: نمونه ای از شبیه سازی شبکه P2P ..

3.1.13. NS-2:

NS-2 [28] برای تحقیقات شبکه هدف قرار گرفته است که یک کتابخانه م thatلفه غنی فراهم می کند که می تواند در Linux ، UNIX ، Windows و سایر سیستم عامل های سیستم عامل اجرا شود.

NS-2 شبیه سازی را با استفاده از مخلوط C ++ و OTCL (نسخه شی گرا از TCL) انجام می دهد.

اسکریپت TCL گره ها و مشخصات پیوندهای ارتباطی را تعریف می کند ، در حالی که پروتکل ها در ++ C اجرا می شوند.

NS-2 بندرت در شبیه سازی p2p استفاده شد.

با این حال ، برای پشتیبانی کارآمد از پوششهای P2P [44] بهبود یافته است.

معماری شبیه ساز: NS-2 یک شبیه ساز سنتی است که برای سیستم های P2P طراحی نشده است.

این یک شبیه ساز رویداد گسسته است که پیکربندی و برنامه ریزی آن آسان است.

NS-2 از هر دو شبکه ساخت یافته و بدون ساختار پشتیبانی می کند.

NS-2 می تواند به طور موازی با تعدادی ماشین دیگر کار کند.

پشتیبانی از ریزش به وضوح در NS-2 تعریف نشده است.

قابلیت استفاده: این پشتیبانی قابل توجهی را برای شبیه سازی TCP ، مسیریابی و پروتکل چندپخشی از طریق شبکه بی سیم و بی سیم مرتب شده به روشی ساخت یافته یا بدون ساختار فراهم می کند.

مستندات گسترده ای برای اسکریپت نویسی NS-2 در دسترس است ..

تجسم تعاملی: NS-2 از NAM (Network AniMator) برای ارائه تجسم استفاده می کند.

پروتکل های P2P اجرا شده: GnuTella ..

3.2 شبیه سازهای خاص دامنه:

امروزه شبیه سازهای P2P برای دامنه یا زمینه خاص طراحی شده اند.

3.2.1 P2PRealm:

Peer-to-Peer Realm (P2PRealm) [45] یک شبکه Peer-to-Peer کارآمد است که در شبیه ساز جاوا برای مطالعه الگوریتم های مبتنی بر شبکه های عصبی نوشته شده است.

شبیه ساز به چهار قسمت تقسیم شده است.

شبکه P2P ، الگوریتم های P2P ، بهینه سازی شبکه عصبی و رابط ورودی / خروجی ..

معماری شبیه ساز: شبیه ساز P2PRealm یک شبیه ساز مبتنی بر زمینه ، انتقال پیام و آموزش تولید مبتنی بر سرعت با سرعت شبیه سازی به عنوان یک معیار اساسی است.

از برنامه نویسی موازی و شبکه پویا پشتیبانی می کند ..

قابلیت استفاده: P2PRealm پارامترهای مختلف ورودی را می گیرد ، یعنی.

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

این پرونده های خروجی یعنی

توپولوژی و توزیع همسایه ، بهترین و همه شبکه های عصبی هر نسل ، مسیرهای پرس و جو از هر گره شبکه P2P شروع می شود.

P2PRealm با استفاده از پلت فرم محاسبات توزیع شده نظیر به نظیر (P2PDisCo) توزیع موارد شبیه سازی را در چندین ماشین امکان پذیر می کند.

مستندات شبیه ساز به خوبی تعریف نشده است ..

مقیاس پذیری: متوسط ​​، 100000 گره

Statistics: آمار عملکرد پرس و جو از هر شبکه عصبی هنگام ارسال درخواست ها در یک یا چند شبکه P2P ثبت می شود ..

تجسم تعاملی: P2PRealm از ابزار تجسم Peer-to-Peer Studio (P2PStudio) استفاده می کند که ویژگی هایی را برای ترسیم توپولوژی شبکه و نمودارهای مختلف فراهم می کند ..

پروتکل های P2P اجرا شده: شبیه ساز P2PRealm شامل پیاده سازی های مختلف الگوریتم های کشف منابع P2P مانند جستجوی عرض-اول ، واکر تصادفی ، جستجوی بالاترین درجه و تقریب درخت بهینه K-Steiner مربوط به شبکه های عصبی است.

طرفداران:

شبیه ساز تخصصی P2P با تمرکز بر سرعت شبکه های عصبی ..

پشتیبانی از شبیه سازی موازی ..

موارد منفی:

مستندات به خوبی تعریف نشده است ..

3.2.2. DHTSim:

DHTSim [46] یک شبیه ساز ساختاری است که به زبان جاوا نوشته شده و برای تسهیل آموزش پروتکل های DHT طراحی شده است.

RPC (تماس از راه دور) به عنوان پیام مبتنی بر رویداد گسسته که از JVM عبور می کند ، اجرا می شود.

شناسه ها به طور تصادفی تعیین می شوند.

این یک پایه برای آموزش اجرای پروتکل های DHT است.

معماری شبیه ساز: DHTSim یک شبیه ساز مبتنی بر جریان مخصوص پروتکل است که با حالت شبیه سازی پیام گذرنده بر اساس رویداد گسسته طراحی شده است.

از شبیه سازی توزیع شده پشتیبانی نمی کند و اجازه نمی دهد گره ها از کار بیفتند.

شبیه ساز DHTSim RPC را در لایه همپوشانی پیاده سازی می کند.

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

بنابراین ، تا حدی از ریزش پشتیبانی می کند ..

قابلیت استفاده: API کاملاً ساده و مستندات محدود است.

مقیاس پذیری: متوسط ​​، 10،000 گره

آمار: سناریوهای شبیه ساز با استفاده از یک فایل اسکریپت ساده مشخص می شوند ..

طرفداران:

شبیه ساز رویداد به طور خاص برای DHT ها ..

API کاملاً ساده است ..

موارد منفی:

خرابی گره شبیه سازی نشده است ..

قابلیت زیادی برای استخراج آمار ندارد.

بدون پشتیبانی از شبیه سازی توزیع شده ..

3.3 شبیه سازهای خاص پروتکل:

از شبیه سازهای P2P مخصوص پروتکل برای ارزیابی صحت و کارایی یک پروتکل خاص استفاده می شود.

مثال شامل GnutellaSim [47] است که به طور خاص برای یک پروتکل محبوب GnuTella [4] و Freepastry [48] برای اجرای پروتکل Pastry [8] ساخته شده است.

3.3.1. GnutellaSim:

Gnutellasim [47] یک شبیه ساز مقیاس پذیر است که ارزیابی کاملی از سیستم Gnutella را انجام می دهد.

این به زبان برنامه نویسی C ++ و NS TCL نوشته شده است.

GnutellaSim یک شبیه ساز سطح بسته مخصوص پروتکل است که ارزیابی کامل سیستم Gnutella را با یک مدل شبکه دقیق امکان پذیر می کند.

این اولین سیستمی است که از یک شبکه همپوشانی بدون ساختار استفاده می کند.

این چارچوب به گونه ای طراحی شده است که برای ترکیب گزینه های مختلف پیاده سازی برای یک سیستم Peer-to-Peer خاص قابل حمل است و برای شبیه سازهای مختلف شبکه قابل حمل است.

GnutellaSim به لایه های برنامه ، لایه پروتکل و لایه سازگار سوکت تقسیم می شود.

از churn برای پیاده سازی محیط پویا پشتیبانی می کند.

ویژگی های معماری ایزوله عملکردی و ساختار متمرکز پروتکل باعث می شود GnutellaSim به راحتی برای دستیابی به سایر شبیه سازی های پروتکل P2P گسترش یابد.

این می تواند بر روی سیستم عامل NS-2 و PDNS (برای شبیه سازی در مقیاس بزرگ) اجرا شود.

ویژگی های اضافی عبارتند از: پنجره تبلیغاتی گیرنده ، بافر فرستنده ، API های Socket مانند ، ایجاد اتصال پویا TCP و انتقال بار واقعی.

GnuTella از مفهوم مکانیسم سیلاب برای ارسال نمایش داده شده از طریق پوشش محدود با دامنه محدود استفاده می کند و از این رو مقیاس پذیر نیست ، زیرا بار روی هر همتا با تعداد کل درخواست ها و اندازه سیستم رشد می کند.

بنابراین ، چارچوب GnuTella برای شبیه سازهای مختلف شبکه قابل حمل است.

با این حال ، برای پروتکل خاصی با مقیاس پذیری ضعیف طراحی شده است.

3.3.2. FreePastry:

FreePastry [48] پیاده سازی منبع باز شبکه ای با ساختار Pastry P2P است که برای استقرار در اینترنت در نظر گرفته شده است.

با استفاده از مکانیسم ارسال پیام در لایه حمل و نقل کار می کند.

FreePastry مجموعه ای از موجودات اساسی را که توسط برنامه به کار رفته است ، تعریف می کند.

Node ، Application ، EndPoint ، Message ، RouteMessage ، Id و NodeHandle با استفاده از Common API (CAPI).

API به زبان جاوا ساخته شده است.

در ابتدا FreePastry ساخته شده است که به کاربران امکان می دهد شبکه Pastry را ارزیابی کنند.

به تدریج برای انجام تحقیقات و توسعه بیشتر در بسترهای P2P و همچنین بستری برای توسعه برنامه ها گسترش می یابد.

FreePastry از یک برنامه ریز برای اجرای چندین گره در یک JVM یکسان استفاده می کند.

امنیت گره ها مسئله Freepastry است و نسخه های جدید آن در تلاشند تا امنیت حملات مخرب را تأمین کنند.

4. بحث:

بر اساس یافته های نظرسنجی و لیست نیازهای مورد بحث ، مشاهده شده است که شبیه سازهای عمومی در مقایسه با شبیه سازهای دامنه خاص یا پروتکل خاص ترجیح داده می شوند.

دلیل این امر این است که ، آنها شامل اجزای قابل وصل و قابل توسعه و رابط هایی هستند که می توانند برای توسعه اکثر برنامه ها استفاده شوند.

علاوه بر این ، معیارها یعنی

معماری شبکه اصلی ، مقیاس پذیری و پیاده سازی پروتکل اساسی از موارد مهمی است که باید هنگام انتخاب شبیه ساز در نظر گرفته شود.

مقایسه شبیه سازهای عمومی مختلف در جدول 1 نشان داده شده است.

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

Dnet ، P2PRealm و ProtoPeer مستندات ضعیفی دارند.

Overlay Weaver API و کد منبع مستند خوبی را ارائه می دهد ، اما برخی از اسناد در آن وجود ندارد.

میز 1 .

خلاصه ای از شبیه سازهای عمومی مختلف ..

از آنجا که مقیاس پذیری یکی از مهمترین نگرانیهای سیستمهای P2P واقعی است ، مقیاس پذیری شبیه سازهای P2P اغلب هنگامی که برای برنامه های P2P دنیای واقعی اعمال می شود ، ادعا می شود.

NS-2 یک شبیه ساز محبوب شبکه با مستندات گسترده است ، اما برای انجام شبیه سازی در لایه شبکه طراحی شده است در حالی که بیشتر تحقیقات P2P مربوط به لایه کاربرد است.

مقیاس پذیری آن محدود است و از این رو برای شبیه سازی شبکه های P2P ترجیح داده می شود.

به همین ترتیب ، بررسی نشان می دهد که RealPeer ، OMNeT ++ ، Overlay Weaver ، Dnet ، 3LS ، ProtoPeer و Optimal-sim نیز مقیاس پذیر نیستند و از این رو ممکن است برای شبیه سازی برنامه های P2P ترجیح داده نشوند.

در طرف دیگر ، PeerfactSim.KOM ، D-P2P-Sim ، PeerSim و PlanetSim دارای مقیاس پذیری بسیار بالایی (1،000،000 ⩾ گره) هستند که نیازهای مقیاس پذیری برنامه های P2P دنیای واقعی را برآورده می کند.

OverSim یک چارچوب شبیه سازی شبکه همپوشانی برای محیط شبیه سازی OMNeT ++ است.

OverSim به زبان ++ C نوشته شده است.

شبیه سازهای نوشته شده در جاوا به دلیل مجموعه ای غنی از API و عملکردهای داخلی داخلی در مقایسه با C ++ به راحتی قابل توسعه هستند.

بسته به نیازهای شبکه همپوشانی P2P ، افزودن ویژگی های جدید در کد شبیه سازی موجود که در جاوا نوشته شده آسان است.

خلاصه جنبه ها و محدودیت های مطلوب هر شبیه ساز عمومی در جدول 2 آورده شده است.

می توان مشاهده کرد که PeerSim ، PeerfactSim.KOM و PlanetSim می توانند به عنوان شبیه سازهای بهتری برای شبیه سازی کاربردهای مختلف P2P در نظر گرفته شوند.

آنها به زبان جاوا نوشته شده اند ، غنی از مستندات و بسیار مقیاس پذیر هستند.

در PeerSim ، فقط شبیه ساز مبتنی بر چرخه به خوبی مستند شده است ، با این حال ، شبیه سازی واقعیت محور تر نیز برای پاسخگویی به سناریوهای کاربردی در دنیای واقعی ارائه شده است.

م componentsلفه های جمع آوری داده های آماری در تجزیه و تحلیل پوشش P2P مفید است.

در PlanetSim ، طراحی و API کاملاً مستند است ، آموزشهای مفصلی نیز در دسترس است ، اما سازوکاری برای جمع آوری آمار ندارد ، این کار از طریق ویژوالایزر موجود انجام می شود.

PeerfactSim.KOM بسیار مقیاس پذیر ، مستندات غنی و معماری خاص خود را برای جمع آوری آمار دارد.

جدول 2

جنبه ها و محدودیت های مطلوب شبیه سازهای عمومی مختلف ..

علاوه بر این ، با توجه به وضعیت فعلی شبیه سازی مورد استفاده در P2P ، یک رابط برنامه عمومی و عمومی برای شبیه ساز P2P ایجاد شده است که مطابق با نیازهای محققان P2P است.

به سمت یک رابط مشترک: شبیه سازهای مختلف در معماری شبیه سازی ، ساختارهای شبیه سازی و پیاده سازی پروتکل اساسی و همچنین قابلیت استفاده از شبیه سازی متفاوت هستند.

آنها سطوح مختلف برداشت را برای مدلهای مختلف لایه زیرین فراهم می کنند و برنامه ها را می توان در دانه بندی متفاوت ارزیابی کرد.

محققان در [26] ادعا می کنند که شبیه سازهای موجود از عدم قابلیت همکاری و قابلیت حمل رنج می برند و مقایسه نتایج تحقیق را بسیار دشوار می کنند.

برای غلبه بر این مشکل ، آنها یک رابط برنامه کاربردی عمومی برای شبیه سازهای شبکه همپوشانی رویداد گسسته پیشنهاد می کنند.

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

پس از آن ، می توان آن را روی شبیه سازهای مختلف و همچنین در یک محیط شبکه واقعی اجرا کرد ، در نتیجه یک ارزیابی متنوع و گسترده را امکان پذیر می کند ..

الزامات اساسی از شبیه سازهای مختلف یعنی

مدیریت گره ، پیام ها ، زمانبندها ، اطلاعات توپولوژی شبکه ، عملکرد آماری و تحلیلی برای طراحی چنین رابط برنامه کاربردی عمومی ترکیب شده است.

بنابراین ، می توان با استفاده از این رابط مشترک از بسیاری از هزینه های اضافی پیاده سازی در آینده جلوگیری کرد ، زیرا پوشش ها و برنامه های P2P که یک بار اجرا می شوند می توانند با سایر شبیه سازها دوباره استفاده شوند.

در آخر ، ما در مورد پروتکل های P2P اجرا شده ، برنامه های P2P و دستورالعمل های تحقیقاتی بیشتر هر شبیه ساز عمومی در جدول 3 بحث می کنیم.

بر اساس اجرای پروتکل های مختلف P2P ، مشاهده می شود که P2P محبوب دارای روکش است.

CAN ، Chord ، Pastry ، Kademlia ، GnuTella ، BitTorrent قبلاً توسط شبیه سازهای مختلف P2P پیاده سازی و آزمایش شده اند.

PeerfactSim.KOM ، PeerSim ، PlanetSim و OverSim شبیه سازی انواع مختلف پروتکل های P2P موجود و محبوب (ساختار یافته و همچنین بدون ساختار) را ارائه می دهند.

این شبیه سازها برای محققان و توسعه دهندگان P2P ترجیح دارند که برنامه های جدید P2P را توسعه دهند.

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

PeerfactSim.KOM ، ProtoPeer ، PeerSim ، OverSim ، Overlay Weaver ، PlanetSim قابلیت شبیه سازی شبکه های پوششی مبتنی بر DHT را فراهم می کنند.

با این حال ، ممکن است ادبیات موجود در شبیه سازی نوع کارآمد دیگری از شبکه های پوششی مبتنی بر i-e-tree دارای ساختار ساختاری کمبود داشته باشد.

از این رو ، ما در بخش بعدی مطالعه موردی مربوط به اجرای شبکه پوشش درختی باینری و چند راهی را ارائه می دهیم.

با توجه به دانش ما ، حتی شبیه سازهای کارآمد PeerfactSim.KOM و PlanetSim ممکن است در ارائه رابط ها یا اجزای اجرای شبکه های همپوشانی درخت کم داشته باشند.

برای اجرای پروتکلهای مبتنی بر همپوشانی درخت به عنوان کارهای تحقیقاتی دیگر ، لازم است که آنها تمدید شوند.

با این حال ، PeerSim مجموعه ای غنی از اجزای سازنده و رابط های قابل جابجایی را برای اجرای پروتکل های همپوشانی نمودار / درخت جدا از پروتکل های شناخته شده مبتنی بر DHT فراهم می کند.

از این رو ، می توان آن را برای شبیه سازی نمودار و پوشش درختان ترجیح داد.

جدول 3

برنامه های P2P و دستورالعمل های تحقیق در مورد شبیه سازهای عمومی مختلف ..

در بخش زیر ، ما یک مطالعه موردی از اجرای شبکه های پوشش درخت BATON و BATON * را با استفاده از شبیه ساز PeerSim ارائه می دهیم زیرا رابط های مختلفی را برای پیاده سازی نمودارها یا درختان فراهم می کند. اهداف اصلی مطالعه موردی به شرح زیر است:

برای ارائه جزئیات استفاده از حالت رویداد محور شبیه ساز PeerSim ..

برای راهنمایی در مورد ایجاد پوشش های درختی P2P با استفاده از شبیه ساز PeerSim زیرا از اجرای پوشش های نمودار به طور موثر پشتیبانی می کند ..

5. مطالعه موردی:

اجرای پوشش BATON و BATON * با استفاده از حالت رویداد محور PeerSim:

حالت مبتنی بر رویداد شبیه ساز PeerSim [29] مبتنی بر رویکرد پیچیده تر اما واقع گرایانه تر با پشتیبانی از همزمانی است.

ما در این بخش برای درک بهتر نحوه اجرای پوشش های درختی با استفاده از PeerSim ، ابتدا مقدمه ای مختصر در مورد ساختار پوشش BATON و BATON * ارائه می دهیم.

5.1 ساختار BATON و BATON *:

BATON (BAlanced Tree Overlay Network) [10] بر اساس یک ساختار درختی باینری متعادل است که در آن هر همتا (گره) دارای یک سطح و یک عدد است که گره موجود در درخت را مشخص می کند.

هر گره پیوندها را به گره اصلی ، دو گره کودک ، گره های مجاور و گره های همسایه انتخاب شده حفظ می کند همانطور که در شکل 1 نشان داده شده است.

دو جدول مسیریابی کناری یعنی

یک جدول مسیریابی سمت چپ و یک جدول مسیریابی سمت راست حاوی پیوندهایی به گره ها در همان سطح با اعدادی هستند که کمتر از تعداد گره منبع با قدرت 2 کمتر (به ترتیب بیشتر) هستند.

گره n گره جدید را به عنوان گره فرزند می پذیرد فقط در صورتی که هر دو جدول مسیریابی پر باشد ، در غیر این صورت ، درخواست پیوستن یا به گره اصلی یا به گره مساوی از جدول مسیریابی یا به یکی از گره های مجاور ارسال می شود.

هزینه اتصال گره از نظر تعداد راپ های مسیریاب و هزینه به روزرسانی جدول های مسیریابی هر دو باید 2 N وارد شوند.

BATON * [11] پسوند BATON است که با بزرگ كردن فنوت درخت از باینری به مری ، هزینه گره و الگوریتم های جستجو را از log 2 N به log m N (m & gt؛ 2) كاهش می دهد.

هر گره در BATON * پیوندها را به گره های m کودکان ، به گره اصلی ، به گره های مجاور و به گره های همسایه انتخاب شده حفظ می کند همانطور که در شکل 2 نشان داده شده است.

جداول مسیریابی همسایه (چپ و راست) پیوندها را به گره های همسایه انتخاب شده در همان سطح با فاصله ای برابر با d * mi نگه می دارند ، جایی که d = 1 ، 2 ،… ، m-1 و i-0 ، از خود گره .

حداکثر اندازه جدول مسیریابی یک گره در سطح l m * l است.

یک گره تنها در صورتی می تواند گره اتصال جدید را به عنوان کودک بپذیرد که دارای میزهای مسیریابی همسایه کامل باشد اما دارای تعداد فرزندان m نیست.

در غیر این صورت ، باید درخواست پیوستن را به والدین خود ، گره مجاور سطح پایین آن یا گره همسایه که فرزندان کافی ندارد ، ارسال کند.

در BATON * ، گره تازه وارد شده می تواند در هر مکانی به ترتیب مجاورت ظاهر شود.

هزینه اتصال گره از نظر تعداد راپ های مسیریاب در BATON * قطعاً وارد N m می شود.

با این حال ، هزینه به روزرسانی جداول مسیریابی به O (m · log m N) محدود می شود.

5.2 حالت رویدادی شبیه ساز PeerSim:

همانطور که بحث شد ، شبیه ساز PeerSim با رابطهای پشتیبانی کننده شبکه پوشش گراف غنی شده است.

از این رو ، ما شبیه ساز PeerSim را برای شبیه سازی شبکه های همپوشانی درخت BATON و BATON * که زیر مجموعه ساختار نمودار هستند ، انتخاب می کنیم.

شبیه ساز PeerSim دارای چهار رابط اساسی است.

گره ، پروتکل ، قابل پیوند و کنترل.

رابط گره امکان دسترسی به پروتکل های نگهداری شده و شناسه ثابت گره را فراهم می کند.

Protocol نمونه اولیه ای را ارائه می دهد که ترکیبی از اجزای قابل plugga مختلف است و عملیاتی را که باید در هر چرخه انجام شود ، تعریف می کند ، به عنوان مثال CDProtocol برای حالت چرخه محور یا EDProtocol برای حالت رویداد محور.

Linkable رابطی است که برای مدیریت نمای گره استفاده می شود.

Linkable به طور معمول توسط پروتکل ها پیاده سازی می شود و سرویسی به پروتکل های دیگر برای دسترسی به مجموعه ای از گره های همسایه ارائه می دهد.

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

آغازگرها ، پویایی ها و ناظران انواع مختلف کنترل هستند.

شبکه P2P از گره تشکیل شده است.

در حالت رویداد محور ، پروتکل های مختلف به جای برنامه ریزی آنها با چرخه ، از طریق رویدادها برای اجرا برنامه ریزی می شوند.

رویدادها یا پیام ها توسط م controlلفه های کنترل یا توسط خود پروتکل ها از طریق لایه انتقال به پروتکل های مختلف ارسال می شوند.

پروتکل ها این پیام ها را کنترل می کنند و متناسب با آنها پاسخ می دهند.

موتور مبتنی بر رویداد بر اساس کلاس EDSimulator از بسته peersim.edsim ساخته شده است.

اولین مرحله در شبیه سازی ، خواندن فایل پیکربندی است که به عنوان یک پارامتر خط فرمان داده شده است.

پیکربندی شامل تمام پارامترهای شبیه سازی مربوط به تمام اشیا involved درگیر در آزمایش است.

سپس ، شبیه ساز شبکه را تنظیم می کند که گره های موجود در شبکه و پروتکل های موجود در آنها را مقدار دهی اولیه می کند.

هر گره از همان نوع پروتکل ها برخوردار است. یعنی نمونه هایی از پروتکل ها آرایه ای را در شبکه تشکیل می دهند که در هر گره یک نمونه وجود دارد.

در این مرحله ، مقداردهی اولیه ای انجام می شود که حالت های اولیه هر پروتکل را تنظیم می کند.

مرحله آغازین توسط اشیا control کنترلی انجام می شود که قرار است فقط در ابتدای هر آزمایش اجرا شوند.

پس از مقداردهی اولیه ، شبیه سازی رویداد محور اجرای کلیه اجزای مشخص شده پروتکل های i-e- و کنترل در صف رویداد را برنامه ریزی می کند.

این برنامه ریزی با پارامترهای {link Scheduler} هر م .لفه کنترل تعریف می شود.

سپس اولین رویداد از صف رویداد گرفته می شود.

اگر رویداد یک کنترل را در هم بپیچد ، کنترل اجرا می شود ، در غیر این صورت رویداد به پروتکل مقصد تحویل داده می شود ، که باید {link EDProtocol} را پیاده سازی کند.

این تکرار می شود در حالی که زمان فعلی کمتر از شبیه سازی پارامتر است. انتهای مشخص شده در پرونده پیکربندی یا صف رویداد خالی است.

ترتیب داده شده در پیکربندی در مواردی که رویدادهای کنترلی بیشتری در همان زمان قرار می گیرند ، رعایت می شود.

اگر تعداد بیشتری از رویدادهای غیر کنترل در یک زمان مشخص بیفتند ، آنها به ترتیب تصادفی پردازش می شوند.

این موتور همچنین رابط را برای افزودن رویدادها به صف فراهم می کند.

5.3 شبیه سازی BATON و BATON *:

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

در این بخش ، ما یک مطالعه موردی از شبیه سازی BATON و BATON * را با استفاده از یک حالت واقعه محور شبیه ساز PeerSim ارائه می دهیم.

5.3.1.

راه اندازی شبکه برای شبیه سازی.

طراحی شبکه همراه با پروتکل ها و کنترل ها با استفاده از شبیه ساز PeerSim در شکل 3 نشان داده شده است. هر گره از سه پروتکل پیروی می کند ، یعنی پروتکل IdleProtocol ، حمل و نقل (هر دو در PeerSim تعریف شده است) و BATONProtocol (تعریف شده توسط کاربر). شبکه همپوشانی BATON با یک گره مسیریابی واحد در گره های داده سطح -0 و متر کودکان که کل فضای داده را پوشش می دهند ، شروع می شود. مجموعه پروتکل ها و کنترل ها هنگام راه اندازی شبکه مشخص می شوند که به شرح زیر عمل می کنند (شکل 4):

1. پروتکل IdleProtocol یک پروتکل داخلی است که رابط قابل پیاده سازی را اجرا می کند و سرویس دیگری را برای دسترسی به مجموعه ای از گره های همسایه به پروتکل های دیگر ارائه می دهد.

نمونه های همان کلاس پروتکل قابل پیوند در گره ها یک شبکه روی هم را تعریف می کنند.

2. Protocol UniformRandomTransport یک پروتکل داخلی است که یک پروتکل حمل و نقل ایجاد می کند که برای ارسال پیام بین گره ها ضروری است.

عملیات ترافیک شبکه یعنی

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

3. پروتکل BATON پروتکل یک پروتکل اصلی تعریف شده توسط کاربر است که رفتار برنامه BATON را در هر گره شبیه سازی می کند.

این از رابط قابل اتصال IdleProtocol برای ایجاد پیوندها در میان گره ها استفاده می کند و پیام ها توسط پروتکل حمل و نقل تعریف شده در بالا رد و بدل می شوند.

کلاس های Routing Table و BATONMessage کلاسهای پشتیبانی برای ایجاد جداول مسیریابی چپ و راست گره و تعریف انواع پیامها به ترتیب می باشند.

4.Initializer Control WireRegRootedTree یک آغازگر داخلی است که از رابط قابل پیوند IdleProtocol برای ایجاد پیوندهای گره کودکان از گره اصلی به روش سلسله مراتبی ، از گره ریشه ، پیاده سازی می کند.

بنابراین ، شبکه چند لایه درختی را که با مقدار fanout m درخت مشخص شده ایجاد می کند (& gt؛ 2) ..

5.Initializer Control AssignNodeIDs یک تنظیم کننده کنترل تعریف شده توسط کاربر است که گره های موجود در شبکه را شروع می کند (در این حالت فقط 1 گره ریشه گره) با دادن شناسه ، سطح و تعداد گره منحصر به فرد با توجه به اندازه fanout و پیوند به گره والدین ..

6.Initializer Control BuildNodeStates یک تنظیم کننده اولیه تعریف شده توسط کاربر است که پیوندهای مجاور و جداول مسیریابی چپ و راست را برای هر گره موجود در حالت اولیه مقداردهی اولیه می کند.

اگر گره همسایه همسطح خاص وجود نداشته باشد ، ورودی های جداول مسیریابی پوچ هستند.

7.Dynamic Control DynamicNetwork یک روال کنترل داخلی برای ایجاد شبکه پویا با اضافه کردن / حذف تعداد گره ها در شبکه overlay است.

ما یک گره در بازه زمانی خاص (DNET_STEP) برای شبیه سازی رفتار ریزش شبکه اضافه کرده ایم.

همچنین حداقل و حداکثر تعداد گره های شبکه را مشخص می کند.

همچنین از کنترل BATONInitializer استفاده می کند.

8.Initializer Control BATONInitializer یک روال کنترل تعریف شده توسط کاربر است که گره را با اختصاص شناسه گره منحصر به فرد ، مقداردهی اولیه می کند.

علاوه بر این ، به طور تصادفی گره ای را انتخاب می کند که از قبل بخشی از BATON باشد و به گره جدید کمک می کند تا به شبکه بپیوندد.

در پایان ، این درخواست پیوستن گره جدید را در یک صف شبیه ساز اضافه می کند تا توسط BATONProtocol مراقبت شود.

پارامترهای ورودی و این پروتکل ها برای شبیه سازی با استفاده از فایل پیکربندی ارائه می شود همانطور که در بخش بعدی نشان داده شده است.

5.3.2. پرونده پیکربندی ورودی:

پرونده پیکربندی برای تنظیم پارامترهای ورودی یعنی ایجاد شده است.

fanout m ، اندازه اولیه شبکه ، مرحله تولید درخواست پیوند گره (برای پیوستن گره پویا) و غیره

برای اجرای BATON و BATON * ، مقدار fanout m متنوع است i-e- m = 2 برای BATON و m & gt؛ 2 برای BATON * با استفاده از این فایل پیکربندی.

بنابراین ، از همان پرونده پیکربندی می توان برای پیاده سازی BATON یا BATON * با تنظیم پارامتر m ..

پارامترهای جهانی: بخشی از فایل پیکربندی شامل پارامترهای جهانی برای شبیه سازی BATON و BATON * در شکل 5 نشان داده شده است.

چند پارامتر اول

SIZE ، M ، CYCLES ، DNET_STEP ، MINDELAY ، MAXDELAY مقادیر قابل تنظیم شبیه به ماکروها را تعریف می کنند.

با تنظیم این مقادیر ، می توان مقادیر پارامترهای باقیمانده را در پرونده پیکربندی کامل تغییر داد.

در مرحله بعدی ، هنگام اختصاص شناسه های گره به گره های شبکه ، از مقدار random.seed به عنوان یک مقدار دانه استفاده می شود.

پارامتر network.size تعداد اولیه گره های شبکه را نشان می دهد.

در شبیه سازی ما ، شبکه با یک گره مقداردهی اولیه می شود ، با این وجود می توان آن را به تعداد گره های اولیه در برنامه تنظیم کرد.

پارامتر simulation.endtime پارامتر اصلی در حالت رویداد محور است که زمان متوقف سازی شبیه سازی را نشان می دهد.

در زمان شروع با صفر مقداردهی اولیه می شود و با تاخیر پیام افزایش می یابد.

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

شبیه ساز پیام های نشانه ای را در مورد پیشرفت زمان در خروجی استاندارد در فرکانس توسط پارامتر simulation.logtime چاپ می کند.

Protocols: در پروتکل ها ، ما پروتکل ها را برای شبیه سازی BATON و BATON * یعنی پیکربندی می کنیم. پروتکل BATON که پروتکل تعریف شده ما است ، IdleProtocol که شبکه همپوشانی و UniformRandomTransport است و لایه انتقال را مشخص می کند (شکل 5 ب). پروتکل BATONProtocol از پروتکل های IdleProtocol و UniformRandomTransport و همچنین پارامتر fanout استفاده می کند. BATONProtocol رویدادهایی مانند اتصال گره و ترک گره را کنترل می کند و هنگامی که درخواست پیوستن به گره های رو به پایین هدایت می شود ، تعداد هاپ های مسیریاب را محاسبه می کند. این روش processEvent رابط نمونه اولیه پروتکل EDP به شرح زیر را لغو می کند:

public void processEvent (گره گره ، pid int ، رویداد شی) ؛.

گره گره منبع اصلی است که رویداد را کنترل می کند ، pid شناسه پروتکل i-e- پروتکل BATONProtocol است و رویداد یک رویداد مانند اتصال گره است.

گره جدید با استفاده از توپولوژی سیم کشی رابط IdleProtocol همانطور که در کنترل های مقداردهنده اولیه بحث شده است ، به عنوان گره فرزند گره موجود به شبکه می پیوندد.

علاوه بر این ، BATONProtocol پیوندها و جدول های مسیریابی گره تازه بهم پیوسته را ایجاد می کند و همچنین پیام های بروزرسانی را برای به روزرسانی جداول مسیریابی گره های همسایه موجود ارسال می کند.

دو پروتکل داخلی دیگر یعنی

IdleProtocol و UniformRandomTransport واسط هایی را برای ایجاد توپولوژی درخت و ارسال پیام ها به ترتیب با استفاده از لایه حمل و نقل فراهم می کنند.

کنترل های اولیه: اولین کنترل کننده اولیه WireRegRootedTree در بسته peersim.dynamics است که یک پروتکل قابل اتصال به IdleProtocol را می گیرد و اتصالات بین گره های شبکه اولیه را ایجاد می کند تا درخت ریشه دار BATON و BATON * با تعداد گره های کودکان ایجاد کند.

گره های فرزندان یک گره به عنوان گره های همسایه آن در رابط پیوند پذیر IdleProtocol شناخته می شوند که روشهایی مانند (i) افزودن گره همسایه را تعریف می کند - یک گره جدید هنگام اتصال به شبکه به عنوان گره فرزند گره موجود اضافه می شود ، (ii) برای شمارش تعداد گره های همسایه (گره های کودک) یا (iii) برای بدست آوردن گره همسایه (گره کودک) در موقعیت i.

کنترل اولیه اولیه تعریف شده توسط کاربر AssignNodeIds شناسه های گره را به گره های شبکه اختصاص می دهد.

آخرین کنترل کننده اولیه تعریف شده توسط کاربر BuildNodeStates پیوندهای مجاور و جداول مسیریابی گره های اولیه را در شبکه ایجاد می کند.

بنابراین ، این سه کنترل اولیه ساز یک درخت ریشه دار اولیه ایجاد می کند و حالات اولیه هر گره را در شبکه ایجاد می کند (شکل 5 c).

کنترل های دینامیکی: کنترل دینامیکی که برای شبیه سازی رفتار چرخش شبکه های پویا BATON و BATON * استفاده می شود. ما از کنترل DynamicNetwork تعریف شده در بسته peersim.dynamics برای تغییر اندازه شبکه ها با افزودن و حذف گره ها استفاده می کنیم (شکل 5 d). پارامتر add تعداد گره هایی را که باید در شبکه اضافه شوند (مقدار مثبت) یا از شبکه خارج می شوند (مقدار منفی) می گیرد. پارامترهای کوچک سازی و بزرگنمایی حداقل و حداکثر اندازه مجاز شبکه از نظر تعداد گره ها را مشخص می کنند. رویداد پیوستن یا ترک گره در مراحل مشخص شده توسط پارامتر DNET_STEP رخ می دهد. تولید رویداد add node باعث بوجود آمدن کنترل BATONInitializer می شود که یک گره موجود در شبکه را به عنوان گره seed پیدا می کند و درخواست پیوستن را برای افزودن گره جدید در شبکه ارسال می کند. این یک رویداد i-e-node با استفاده از روش add نمونه اولیه EDSimulator به ترتیب زیر به صف رویداد اضافه می شود:

خلأ ثابت استاتیک عمومی (تأخیر طولانی ، رویداد شیject ، گره گره ، int pid) ؛.

که در آن تأخیر تعداد واحدهای زمانی (غیر منفی) قبل از برنامه ریزی رویداد است.

پارامتر رویداد شی مرتبط با رویداد است ، گره پارامتر گره مربوط به رویداد است و پارامتر pid شناسه پروتکل است که رویداد شناسه پروتکل i-e- پروتکل BATON را به آن تحویل می دهد ..

5.3.3. مطالعه تجربی:

برای آزمایش ، ما از شبیه ساز PeerSim برای پیاده سازی و ارزیابی BATON (m = 2) [10] و BATON * (m = 4) [11] ، در حالت شبیه سازی رویداد محور استفاده می کنیم.

ما از پردازنده 2.53 گیگاهرتز ، 4 گیگابایت RAM ، JDK 1.7 (کیت توسعه جاوا) برای توسعه برنامه و NetBeans IDE (محیط توسعه یکپارچه) به عنوان یک رابط برنامه نویسی استفاده می کنیم.

در آزمایشات خود ، ما الگوریتم پیوستن گره را برای تعداد گره ها از 1000 تا 10000 پیاده سازی کردیم و میانگین تعداد هاپ مسیریابی مورد نیاز برای هر اندازه شبکه برای هر دو BATON و BATON * محاسبه شده است.

مقادیر fanout را به ترتیب 2 و 4 برای BATON و BATON * انتخاب می کنیم.

برای هر اندازه شبکه ، تعداد پیام های بروزرسانی جداول مسیریابی پس از پیوند گره نیز محاسبه می شود.

علاوه بر این ، ما همچنین تعداد گره ها را از 10 به 100000 تغییر می دهیم تا مقیاس پذیری و لگاریتمی را به رفتار m پایه اتصال گره برای BATON و BATON بررسی کنیم .. ..

1. عملکرد اتصال گره: در شکل 6a ، ما یک نمودار را نشان می دهیم که میانگین تعداد راپ های مسیریابی مورد نیاز برای پیدا کردن موقعیت گره جدید برای اتصال به اندازه های مختلف شبکه از 1000 تا 10000 را نشان می دهد.

مشاهده شده است که تعداد هاپ های مسیریاب برای BATON * با fanout m = 4 به O (ورود به سیستم N N) محدود می شود که کمتر از راپ های مسیریاب BATON است که برای اندازه های مختلف شبکه به O (log 2 N) متصل می شود .

بنابراین ، BATON * با توجه به مقدار fanout بالاتر که ارتفاع درخت را کاهش می دهد و از این رو ، عملکرد مسیریابی اتصال گره را بهبود می بخشد ، نسبت به درختان باینری یک مزیت دارد.

2. هزینه به روزرسانی جداول مسیریابی: بعد ، متوسط ​​تعداد پیام های بروزرسانی مورد نیاز برای ارسال توسط گره تازه بهم پیوسته جهت به روزرسانی جداول مسیریابی در شکل 6 b با افزایش اندازه شبکه از 1000 به 10000 نشان داده شده است.

مشاهده شده است که هزینه به روزرسانی جداول مسیریابی در BATON * در مقایسه با BATON بیشتر است.

تعداد پیوندهای افقی i-e- پیوندها به گره های همسایه در هر سطح با افزایش پدیده افزایش درخت چند راهی افزایش می یابد.

از این رو ، تعداد پیام های بروزرسانی برای به روزرسانی جداول مسیریابی گره تازه بهم پیوسته و همچنین جداول مسیریابی گره های همسایه نیز در محدوده O (m · log m N) افزایش می یابد ..

3. مقیاس پذیری: در آخر ، ما مقیاس پذیری شبکه همپوشانی BMMI-tree را از طریق نمودار موجود در شکل 6 نشان می دهیم.

مشاهده می کنیم که هر دو درخت i-e-BATON و BATON * با افزایش اندازه شبکه از 10 به 100000 قابل مقیاس هستند.

علاوه بر این ، همانطور که در همان نمودار نشان داده شده است ، عملکرد مسیریابی الگوریتم پیوند گره با توجه به افزایش اندازه شبکه از ماهیت لگاریتمی پیروی می کند.

بنابراین ، نتایج شبیه سازی BATON و BATON * با استفاده از شبیه ساز PeerSim با تجزیه و تحلیل ارائه شده در ادبیات مطابقت دارد.

تعداد هاپ های مسیریابی برای اتصال گره با افزایش fanout کاهش می یابد ، اما با هزینه به روزرسانی جداول مسیریابی ..

6. نتیجه گیری:

پس از بررسی جامع و مطالعه شبیه سازهای مختلف P2P ، نتیجه می گیریم که شبیه سازهای PeerSim ، PlanetSim و PeerfactSim.KOM در مقایسه با سایر شبیه سازها ترجیح داده می شوند.

آنها به زبان جاوا نوشته شده اند ، غنی از مستندات و بسیار مقیاس پذیر هستند.

علاوه بر این ، ما شبیه ساز PeerSim را برای اجرای پوشش های درختی BATON و BATON * با استفاده از حالت واقعیت محور شبیه ساز PeerSim انتخاب می کنیم.

نتایج تجربی BATON و BATON * با استفاده از حالت رویداد محور شبیه ساز PeerSim با تجزیه و تحلیل ارائه شده در ادبیات مطابقت دارد.

همانطور که از نتایج تجربی خود مشاهده کردیم ، با افزایش مقدار fanout (BATON *) ، تعداد رازهای مسیریابی برای الگوریتم پیوند گره کاهش می یابد.

با این حال ، هزینه به روزرسانی جداول مسیریابی بیشتر از BATON برای اندازه های مختلف شبکه در BATON * است.

علاوه بر این ، حالت واقعه محور شبیه سازی PeerSim همانطور که از مطالعه تجربی به دست آمده است ، من تا 100000 گره برای پوشش با ساختار درخت بسیار مقیاس پذیر است.

در آینده ، می توان شبیه سازهای عمومی بیشتری تولید کرد تا مقیاس پذیری و قابلیت حمل شبیه سازهای موجود را افزایش دهد.

همان شبیه سازی پروتکل پوشش P2P را می توان با شبیه سازهای مختلف و همچنین در شبکه واقعی اجرا کرد بدون اینکه روی کد به عنوان جهت تحقیق آینده تأثیر بگذارد.