هذه عبارة عن أداة مساعدة لسطر الأوامر ومكتبة مكتوبة لاختبار تدفقات حركة مرور البث المتعدد على الشبكة، واختبار الضغط على الشبكة والأجهزة.
هذه الأداة المساعدة قادرة على تعطيل بيئة L2 التي لم يتم تكوينها بشكل قوي، لذا يجب توخي الحذر.
mcast عبارة عن أداة مساعدة لسطر الأوامر قادرة على إرسال واستقبال حركة مرور UDP متعددة البث أو عامة. كما يسمح أيضًا بمحاكاة عمليات الانضمام والمغادرة والاستعلام لـ IGMP.
ملاحظة: تم تطويره واختباره حاليًا على نظام التشغيل Mac OSX 10.13.3 مع إصدار Go 1.10. يجب أن يعمل البرنامج على أي نظام Posix/Unix، لكنه لا يعمل حاليًا بشكل كامل على نظام Windows. قد تكون حقوق المستخدم المتميز مطلوبة لبعض الوظائف.
هذا المستودع عبارة عن تراخيص بموجب GPLv3. راجع LICENSE.md للحصول على التفاصيل.
حقوق الطبع والنشر (C) 2018 لويل سميث
هذا البرنامج هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة جنو العامة كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الترخيص، أو (حسب اختيارك) أي إصدار لاحق.
يتم توزيع هذا البرنامج على أمل أن يكون مفيدًا، ولكن دون أي ضمان؛ دون حتى الضمان الضمني لقابلية التسويق أو الملاءمة لغرض معين. راجع رخصة جنو العامة لمزيد من التفاصيل.
يجب أن تكون قد حصلت على نسخة من رخصة جنو العامة مع هذا البرنامج. إذا لم يكن الأمر كذلك، راجع http://www.gnu.org/licenses/.
يجب أن تكون قد قمت بالتثبيت. إذا لم تقم بذلك، أو لم تكن متأكدًا، قم بزيارة https://golang.org/doc/install. يجب عليك أيضًا تشغيل إصدار OS وGo مدعوم ومختبر.
تثبيت البرنامج مع
go install github.com/individuwill/mcast
أو بدلاً من ذلك، قم بتنزيل الثنائيات المعدة مسبقًا من الإصدارات v0.1
قم بتشغيل جهاز الاستقبال على جهاز كمبيوتر واحد
mcast receive
قم بتشغيل المرسل على كمبيوتر آخر
mcast send
يجب تمكين توجيه البث المتعدد بين المضيفين
يتم تشغيل mcast بواسطة أوامر فرعية. يمكنك استدعاء mcast مثل:
mcast subcommand [-options...]
قائمة الأوامر الفرعية هي:
لدى كل أمر فرعي بعد ذلك مجموعة من الخيارات للتحكم في سلوكه. تشترك العديد من الأوامر في خيارات متشابهة، ويكون بناء جملة الخيار هو نفسه في هذه الحالة. فيما يلي شرح تفصيلي لكل أمر فرعي والخيارات المرتبطة به.
عرض رسالة المساعدة والاستخدام للتطبيق
mcast help [command]
يمكن عرض التعليمات الخاصة بأمر فرعي محدد عن طريق تحديد الأمر الذي تريد الحصول على مساعدة بشأنه.
سيتم إرسال حركة مرور UDP إلى عنوان IP المحدد. سيتم الإرسال بشكل مستمر في حلقة بفاصل زمني محدد حتى يتم إنهاء البرنامج أو إرسال الحد الأقصى لعدد الرسائل.
mcast send [-options...]
الخيارات هي:
سيتم الاستماع إلى حركة مرور UDP على عنوان IP المحدد وطباعة المحتوى النصي لرسائل UDP المستلمة إذا تم تمكين الخيار.
mcast receive [-options...]
الخيارات هي:
لم يتم تنفيذها بعد
لم يتم تنفيذها بعد
لم يتم تنفيذها بعد
توجد حاليًا بعض اختبارات التعليمات البرمجية الأساسية في المستودع، ولكن هناك حاجة إلى تغطية أكثر شمولاً.
يمكنك تنفيذ الاختبارات يدويًا باستخدام أحد الأوامر التالية:
go test ./..
go test github.com/individuwill/mcast
go test github.com/individuwill/mcast/multicast
يوجد ملف Jenkins في جذر المستودع لتشغيل الاختبارات تلقائيًا، والتجميع المتقاطع لثلاثة أنظمة تشغيل، وإنشاء ملف مضغوط. يوجد خطاف git في الريبو يقوم بتشغيل هذا الالتزام، وسيضع علامة على الالتزام بأنه ناجح أو فاشل.
تتمثل الخطة في اختبار الكود على أنظمة التشغيل الثلاثة، واختبار التفاعل بين إرسال واستقبال البث المتعدد في مجموعة جينكينز.
هناك أيضًا خطة لإنشاء إصدار جديد تلقائيًا باستخدام الثنائيات عند إجراء التزام جديد بعلامة رئيسية واجتياز الاختبارات.
حاليًا يتم تنفيذ اختبارات التعليمات البرمجية فقط. يتم تنفيذها في بيئة Linux من خلال حاوية golang docker الرسمية. يتم تخزين الثنائيات في Jenkins، ويجب إجراء الإصدارات اليدوية.
لقد كتبت هذا البرنامج لاختبار وظيفة البث المتعدد في تصميمات شبكتي حيث وجدت نقصًا في الأدوات الحالية لاختبار البث المتعدد. كنت بحاجة إلى ملف ثنائي صغير محمول يمكنني نسخه إلى أي مضيف لإجراء اختبار سريع. وهذا مفيد بشكل خاص لبيئات المختبرات الافتراضية.
كنت بحاجة أيضًا إلى اختبار سلوك حركة المرور في الشبكات اللاسلكية والقدرة على مراقبته لفهم خيارات تكوين البائع التي تؤدي إلى أقوى تكوين للبث المتعدد لبيئة لاسلكية. إلى هذه النقطة، مع مجموعة الخيارات الصحيحة مع هذا البرنامج، يمكن لمضيف واحد أن يتسبب في حجب الخدمة لقطاع لاسلكي بالكامل إذا لم يتم تكوين البنية التحتية اللاسلكية بشكل صحيح أو لم يوفر البائع القدرة على تكوين سلوك البث المتعدد أو التحكم فيه.
انتهزت الفرصة لاستخدام هذا البرنامج لمعرفة المزيد حول البث المتعدد والقيام ببعض الترميز في Golang.
لقد استخدمت مجموعة https://github.com/troglobit/mtools للاختبار الأولي للبرنامج أثناء تطويره. كانت مجموعة الأدوات هذه أيضًا مصدر إلهام لـ mcast. لقد اخترت عدم توسيع أدوات mtools لأنني أردت التزامن السهل والتجميع المتقاطع السهل والثنائيات عبر الأنظمة الأساسية.
فيما يلي بعض الأدوات الأخرى التي أستخدمها أو أستخدمها لاختبار وظيفة البث المتعدد