ns-3 برنامج محاكاة الشبكة التعليمي. الفصول 1,2،XNUMX

يفتح هذا المقال سلسلة من المنشورات مع ترجمة الكتاب المدرسي "الإصدار التعليمي ns-3 ns-3.29طبقًا لمحاكاة الشبكة ns-3.

ns-3 برنامج محاكاة الشبكة التعليمي. الفصول 1,2،XNUMX

هذه الوثيقة هي ترجمة للوثيقة الإنجليزية الأصلية ، والتي تمت كتابتها بها reStructuredText إلى أبو الهول وتخزينها في الدليل وثيقة / تعليمي الكود المصدري ns-3.

1 مقدمة
1.1 حول ns-3
1.2 لمستخدمي ns-2
1.3 المشاركة في المشروع
1.4 تنظيم الإدارة
2 مصادر المعلومات
2.1 الشبكة
2.2 جيت
2.3.AF
2.4 بيئة التطوير
2.5 برمجة المقبس
3
4
5
6
7
الفصول 8 و 9

قم بتنزيل الترجمة في ملف pdf واحد

الوثائق الأولية لمشروع ns-3 متاحة في خمسة أشكال:

مقدمة

جهاز محاكاة ns-3 عبارة عن جهاز محاكاة شبكة أحداث منفصل مصمم بشكل أساسي للاستخدام البحثي والتعليمي. بدأ مشروع تطوير ns-3 في عام 2006 وهو مشروع مفتوح المصدر.

الغرض من هذا الدليل هو تقديم ns-3 للمستخدمين الجدد بطريقة منهجية ومنظمة. قد يكون من الصعب أحيانًا على المبتدئين الحصول على المعلومات الضرورية وتحويلها إلى محاكاة عمل. في هذا البرنامج التعليمي ، سنقوم بتنفيذ العديد من أمثلة المحاكاة ، مع إظهار وشرح المفاهيم والميزات الأساسية أثناء تقدمنا.

بينما نمضي قدمًا ، سنوفر وثائق ns-3 كاملة ونوفر روابط إلى الكود المصدري للمهتمين بفهم النظام بعمق.

في البداية ، هناك بعض النقاط الرئيسية التي يجب ملاحظتها:

  • ns-3 مفتوح المصدر ، ويهدف المشروع إلى الحفاظ على بيئة مفتوحة يمكن للباحثين من خلالها المساهمة في تطوير برامجهم ومشاركتها.
  • ns-3 ليس امتدادًا متوافقًا مع الإصدارات السابقة لـ ns-2 ، إنه جهاز محاكاة جديد. تمت كتابة كلا المحاكيات بلغة C ++ ، لكن ns-3 عبارة عن محاكي جديد لا يدعم واجهات برمجة التطبيقات ns-2.

1.1 حول ns-3

تم تصميم جهاز محاكاة ns-3 لتوفير نظام أساسي مفتوح وقابل للتوسيع لنمذجة الشبكة وبحوث الشبكة والتعليم. باختصار ، يوفر ns-3 نماذج لكيفية تنفيذ شبكات بيانات الحزم وتشغيلها ويمنح المستخدم محرك محاكاة لتشغيل تجارب المحاكاة. يمكن أن تكون أسباب استخدام ns-3 مواقف تحتاج فيها إلى إجراء بحث يكون من الصعب أو المستحيل القيام به على نظام حقيقي ، والقدرة على دراسة سلوك النظام في بيئة محكومة بإحكام ، وبيئة قابلة للتكرار ، ومعرفة كيفية عمل الشبكات. .

سيلاحظ المستخدمون أن مجموعة النماذج المقدمة في ns-3 تركز على نمذجة تشغيل بروتوكولات وشبكات الإنترنت ، ولكن ns-3 لا يقتصر على أنظمة الإنترنت فقط ، بل يستخدم بعض المستخدمين ns-3 لنمذجة الأنظمة غير القائمة على الإنترنت .

هناك العديد من أدوات نمذجة الشبكة. فيما يلي بعض الميزات المميزة لـ ns-3 مقارنة بالأدوات الأخرى.

  • تم تصميم ns-3 كمجموعة من المكتبات التي يمكن ربطها معًا وكذلك مع مكتبات البرامج الخارجية الأخرى. بينما توفر بعض منصات المحاكاة للمستخدمين بيئة متكاملة واحدة مع واجهة مستخدم رسومية تدير جميع الأعمال ، فإن ns-3 أكثر نمطية في هذا الصدد. يمكن استخدام العديد من الرسوم المتحركة الخارجية وأدوات تحليل البيانات والتصور مع ns-3. ومع ذلك ، من المتوقع أن يعمل المستخدمون على سطر الأوامر وباستخدام أدوات تطوير برامج C ++ و / أو Python.
  • يُستخدم ns-3 بشكل أساسي في الأنظمة Linux أو macOSعلى الرغم من وجود دعم لأنظمة BSD بالإضافة إلى المنصات Windows، قادر على تجميع التعليمات البرمجية لـ Linuxمثل Windows نظام فرعي لـ Linux أو سيجوين. موطنها الأصلي Windows لا يدعم Visual Studio حاليًا هذه الميزة، على الرغم من أن المطور يعمل على تنفيذها. Windows يمكن أيضًا استخدام جهاز افتراضي مع Linux.
  • ns-3 ليس منتجًا برمجيًا مدعومًا رسميًا من أي شركة. يتم تقديم الدعم لـ ns-3 بأقصى قدر من الكفاءة على منتدى مستخدمي ns-3 (ns-3-users@googlegroups.com).

1.2 لمستخدمي ns-2

بالنسبة لأولئك الذين هم على دراية بـ ns-2 (أداة شائعة سبقت ns-3) ، فإن التغيير الخارجي الأكثر وضوحًا في الانتقال إلى ns-3 هو التغيير في لغة البرمجة. تتم كتابة البرامج في ns-2 بلغة OTcl ويمكن تصور نتائج المحاكاة باستخدام رسام شبكة nam. في ns-2 ، لا يمكن تشغيل محاكاة بحتة من C ++ (أي كبرنامج رئيسي () بدون أي OTcl). علاوة على ذلك ، تمت كتابة بعض مكونات ns-2 بلغة C ++ ، بينما تمت كتابة البعض الآخر بلغة OTcl. في ns-3 ، تمت كتابة المحاكي بالكامل بلغة C ++ مع روابط بايثون اختيارية. لذلك ، يمكن كتابة نصوص المحاكاة بلغة C ++ و Python. يتوفر رسامون وعارضون جدد ويستمر تطويرهم. نظرًا لأن ns-3 يولد ملفات تتبع حزمة pcap ، يمكن أيضًا استخدام أدوات مساعدة أخرى لتحليل التتبع. في هذا البرنامج التعليمي ، سنركز أولاً على البرمجة النصية المطبقة في C ++ وتفسير النتائج من خلال تحليل ملفات التتبع.

ولكن هناك أيضًا أوجه تشابه (على سبيل المثال ، تعتمد كلتا الأداتين على كائنات C ++ ، وقد تم نقل بعض التعليمات البرمجية ns-2 إلى ns-3). بينما نمضي قدمًا ، سنحاول إظهار الاختلافات بين ns-2 و ns-3.

السؤال الذي نسمعه كثيرًا هو "هل لا يزال يتعين علي استخدام ns-2 أم التبديل إلى ns-3؟" وفقًا للمؤلف ، إذا لم يكن المستخدم مرتبطًا بطريقة ما بـ ns-2 (بناءً على الراحة الشخصية الحالية ومعرفة ns-2 ، أو بناءً على نموذج محاكاة محدد متوفر فقط في ns-2) ، فعندئذٍ مع ns- 3 سيكون أكثر إنتاجية للأسباب التالية:

  • يتم الحفاظ على ns-3 بشكل كبير من خلال قائمة بريدية نشطة وسريعة الاستجابة للمستخدم ، بينما يتم الحفاظ على ns-2 بشكل خفيف ولم تشهد تغييرات كبيرة في شجرة الكود الرئيسية الخاصة بها منذ أكثر من عقد.
  • يوفر ns-3 ميزات غير متوفرة في ns-2 ، مثل وقت تشغيل رمز التنفيذ (مما يسمح للمستخدمين بتشغيل رمز تنفيذ حقيقي في جهاز المحاكاة).
  • يوفر ns-3 مستوى أساسيًا أقل من التجريد من ns-2 ، مما يسمح له بمطابقة كيفية تفاعل الأنظمة الحقيقية بشكل أفضل. تم إصلاح بعض القيود الموجودة في ns-2 (مثل الدعم الصحيح لأنواع واجهة متعددة على مضيف) في ns-3.

بفضل تاريخها الطويل، تتمتع ns-2 بمجموعة أكثر تنوعًا من الوحدات النمطية المدعومة مقارنةً بـ ns-3. مع ذلك، تتميز ns-3 بنماذج أكثر تفصيلًا في العديد من مجالات البحث الشائعة (بما في ذلك نماذج LTE وWiFi المعقدة)، كما أن دعمها لرمز التنفيذ يسمح بنطاق واسع جدًا من النماذج عالية الدقة. قد يتفاجأ المستخدمون عندما يعلمون أن حزمة الشبكات بأكملها Linux يمكن تغليفها في عقدة ns-3 باستخدام إطار عمل التنفيذ المباشر للتعليمات البرمجية (DCE). ويمكن أحيانًا نقل نماذج ns-2 إلى ns-3، خاصةً إذا تم تنفيذها بلغة C++.

عندما تكون في شك ، من الجيد النظر إلى كل من المحاكيات (بالإضافة إلى المحاكيات الأخرى) ، لا سيما النماذج المتاحة لبحثك ، ولكن ضع في اعتبارك أن نتيجتك قد تكون أفضل باستخدام أداة قيد التطوير النشط حاليًا . والمدعوم (ns-3).

1.3 المشاركة في المشروع

ns-3 هي محاكاة علمية وتعليمية لمجتمع البحث. وسيعتمد على مساهمات المجتمع المستمرة في تطوير نماذج جديدة ، وتصحيح الأخطاء أو الحفاظ على النماذج الحالية ، ومشاركة النتائج. هناك بعض السياسات التي نأمل أن تشجع الناس على المساهمة في ns-3 كما يفعلون مع ns-2:

  • ترخيص مفتوح المصدر يعتمد على التوافق مع ترخيص GNU GPLv2.
  • ويكي.
  • صفحة كود المساهم، على غرار الصفحة الشائعة لـ ns-2.
  • باستخدام GitLab.com ، بما في ذلك متتبع الأخطاء:
    https://www.gitlab.com/nsnam

نحن نتفهم أنه حتى لو كنت تقرأ هذا المستند ، فقد لا تخطط للمساهمة فيه في هذه المرحلة. لكننا نريدك أن تعرف أن المساهمة في روح المشروع وأننا نقدر ملاحظاتك حتى حول تجربتك المبكرة مع ns-3 (على سبيل المثال "هذا القسم من البرنامج التعليمي لم يكن له معنى ...") ، الإبلاغ عن وثائق قديمة أو تعليق في الكود ، إلخ ... الطريقة المفضلة لإرسال التصحيحات هي إما إلى الفرع (fork) إلى https://www.gitlab.com/nsnam بإصلاحاتك وإنشاء طلب سحب ، أو إنشاء طلب سحب على جهاز التعقب الخاص بنا وإضافة تصحيح.

1.4 تنظيم الإدارة

يفترض هذا الدليل أن المستخدمين الجدد قد يذهبون في البداية ، على سبيل المثال ، على طول هذا المسار:

  • حاول تنزيل وبناء نسخة ؛
  • حاول تشغيل بعض البرامج النموذجية ؛
  • انظر إلى نتيجة المحاكاة وحاول ضبطها.
    في النهاية ، حاولنا تنظيم العرض التقديمي وفقًا لهذه الخطوات.

الفصل 2

مصادر المعلومات

2.1 الشبكة

هناك العديد من الموارد المهمة التي يجب أن يكون أي مستخدم ns-3 على دراية بها. الموقع الرئيسي موجود في: https://www.nsnam.org
ويوفر الوصول إلى المعلومات الأساسية حول نظام ns-3. الوثائق التفصيلية متاحة من خلال الموقع الرئيسي على: https://www.nsnam.org/documentation/.

في نفس صفحة الويب ، يمكنك أيضًا العثور على المستندات المتعلقة بهيكل النظام.

توجد صفحة wiki تكمل موقع الويب الرئيسي ns-3 ، يمكنك العثور عليها في: https://www.nsnam.org/wiki/.

ستجد هناك إجابات للأسئلة المتداولة للمستخدمين والمطورين ، بالإضافة إلى أدلة استكشاف الأخطاء وإصلاحها ، ورموز الطرف الثالث ، والمستندات ، وما إلى ذلك.
يمكن العثور على الكود المصدري وعرضه على GitLab.com:
https://gitlab.com/nsnam/.

في نفس المكان في المستودع مع الاسم NS-3-ديف هي شجرة التطوير الحالية. يمكن أيضًا العثور على الإصدارات السابقة ومستودعات المطورين الأساسية التجريبية ضمن Mercurial على الموقع القديم للمشروع على:
http://code.nsnam.org.

2.2 جيت

تحتاج أنظمة البرامج المعقدة إلى طريقة ما لإدارة التنظيم وتغيير الكود الأساسي والوثائق. هناك العديد من الطرق لتحقيق ذلك ، وربما تكون قد سمعت عن بعض الأنظمة المستخدمة بشكل شائع لهذا الغرض. حتى وقت قريب ، استخدم مشروع ns-3 Mercurial كنظام تحكم في التعليمات البرمجية المصدر ، ولكن في ديسمبر 2018 ، انتقلنا إلى استخدام Git. على الرغم من أنك لست بحاجة إلى معرفة الكثير عن Git لقراءة هذا البرنامج التعليمي ، فإننا نوصيك بالتعرف عليه واستخدامه للوصول إلى الكود المصدري. يوفر GitLab.com موارد لإتقان المهارات الأساسية في: https://git-scm.com/book/ru/v2.

2.3.AF

بعد تنزيل الكود المصدري على جهاز الكمبيوتر الخاص بك ، ستحتاج إلى تجميعه حتى يصبح البرنامج جاهزًا للعمل. كما هو الحال مع التحكم في المصدر ، هناك العديد من الأدوات المتاحة لأداء هذه الوظيفة. ربما تكون أشهر هذه الأدوات هي Make. في حين أن هذه الأداة هي الأكثر شهرة ، تجدر الإشارة إلى أنها الأكثر تعقيدًا عند استخدامها في نظام كبير جدًا وقابل للتكوين بدرجة عالية. وقد أدى ذلك إلى تطوير العديد من البدائل. في الآونة الأخيرة ، تم تطوير هذه الأنظمة باستخدام لغة Python.

يستخدم مشروع ns-3 نظام بناء Waf. إنه جزء من جيل جديد من أنظمة البناء المستندة إلى Python. لبناء نظام ns-3 موجود ، لا تحتاج إلى معرفة Python.

للراغبين في معرفة تفاصيل استخدام Waf ، هناك كتاب متاح على:
https://waf.io/book/
والرمز الحالي:
https://gitlab.com/ita1024/waf/.

2.4 بيئة التطوير

كما هو مذكور أعلاه ، يتم تنفيذ البرامج النصية في ns-3 في C ++ أو Python. تتوفر معظم ns-3 API في Python ، لكن النماذج مكتوبة بلغة C ++ على أي حال. يفترض هذا البرنامج التعليمي أنك على دراية بالبرمجة الموجهة للكائنات في C ++. مع تقدمنا ​​، سنقضي بعض الوقت في مراجعة المفاهيم الأكثر تقدمًا والميزات غير المألوفة للغة مثل التعابير وأنماط التصميم. لا نريد أن يتحول هذا البرنامج التعليمي إلى برنامج تعليمي C ++ ، لذلك نتوقع معرفة أساسية باللغة. هناك العديد من مصادر المعلومات حول C ++ متاحة عبر الإنترنت أو مطبوعة.

إذا كنت جديدًا على C ++ ، فتعلم أساسيات اللغة باستخدام برنامج تعليمي أو موقع ويب يوفر دروسًا تعليمية أو وصفات قبل المتابعة. على سبيل المثال ، مثل هذا: https://github.com/ashtanyuk/CPP-2018.

تحت Linuxيستخدم نظام ns-3 عدة مكونات من مجموعة أدوات GNU. مجموعة الأدوات هي مجموعة من أدوات البرمجة المتوفرة في بيئة برمجية معينة. للاطلاع على نظرة عامة سريعة حول ما تتضمنه مجموعة أدوات GNU، انظر http://en.wikipedia.org/wiki/GNU_toolchain.

يستخدم المحاكي ns-3 ملفات gcc و GNU و gdb. في الوقت نفسه ، لا نستخدم أدوات صناعة أو أدوات آلية من أدوات جنو لبناء المشروع. نستخدم Waf لهذه الوظائف.

В macOS يتم استخدام مجموعة أدوات Xcode. يُنصح بشدة مستخدمي ns-3 على نظام Mac بتثبيت Xcode وحزم أدوات سطر الأوامر من متجر تطبيقات Apple، ولمزيد من المعلومات، تفضل بزيارة صفحة ويكي تثبيت ns-3: (https://www.nsnam.org/wiki/Installation).

عادةً، يعمل مؤلف ns-3 في Linux أو بيئة شبيهة بنظام يونكس. لأولئك الذين يعملون في ظل Windowsتوجد بيئات تحاكي البيئة بدرجات متفاوتة Linuxبالنسبة لهؤلاء المستخدمين، كان مشروع ns-3 يدعم تاريخيًا (ولكن ليس حاليًا) التطوير في بيئة Cygwin. لمزيد من التفاصيل حول التنزيل ومعلومات إضافية حول Cygwin وns-3، تفضل بزيارة صفحة ويكي ns-3.
http://www.cygwin.com/.

لا يدعم نظام MinGW حاليًا بشكل رسمي. بديل آخر لنظام Cygwin هو تثبيت بيئة افتراضية، مثل VMware Server، حيث يمكنك تثبيت النظام. Linux.

2.5 برمجة المقبس

ستستخدم الأمثلة في هذا الدرس التعليمي الإمكانيات الأساسية لواجهة برمجة تطبيقات Berkeley Sockets. إذا كنت جديدًا على استخدام المقابس، فننصحك بالتعرف على واجهة برمجة التطبيقات وبعض حالات الاستخدام الشائعة. للحصول على نظرة عامة جيدة حول برمجة المقابس، TCP/IP نوصي باستخدام: "TCP/IP المقابس في C"، دوناهو وكالفيرت.

يوجد موقع ويب مرتبط يحتوي على مصدر الأمثلة الموجودة في الكتاب ، والذي يمكنك العثور عليه في:
http://cs.baylor.edu/~donahoo/practical/CSockets/.

إذا فهمت الفصول الأربعة الأولى من الكتاب (أو بالنسبة لأولئك الذين ليس لديهم حق الوصول إلى نسخة من الكتاب ، فيجب أن يكون عملاء وخوادم الصدى الموضحة على موقع الويب المرتبط أعلاه) كافية لفهم البرنامج التعليمي. يوجد كتاب مشابه
"مآخذ الإرسال المتعدد ، مآخذ الإرسال المتعدد" ، Makofske و Almeroth.

يغطي المواد التي قد تحتاجها إذا كنت تدرس أمثلة الإرسال المتعدد للتوزيع.

تابع: 3

المصدر: www.habr.com

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster