Hierbei handelt es sich um ein Befehlszeilendienstprogramm und eine Bibliothek, die zum Testen von Multicast-Verkehrsflüssen im Netzwerk und zum Stresstest des Netzwerks und der Geräte geschrieben wurden.
Dieses Dienstprogramm kann eine L2-Umgebung, die nicht robust konfiguriert ist, vollständig stören. Daher ist Vorsicht geboten.
mcast ist ein Befehlszeilendienstprogramm, das Multicast- oder generischen UDP-Verkehr senden und empfangen kann. Es ermöglicht auch die Simulation von IGMP-Joins, -Leaves und -Abfragen.
HINWEIS: Derzeit entwickelt und getestet unter Mac OSX 10.13.3 mit Go Version 1.10. Das Programm sollte auf jedem Posix/Unix funktionieren, funktioniert derzeit jedoch nicht vollständig unter Windows. Für einige Funktionen sind möglicherweise Superuser-Rechte erforderlich.
Dieses Repository ist unter GPLv3 lizenziert. Weitere Informationen finden Sie unter LICENSE.md.
Copyright (C) 2018 Will Smith
Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) einer späteren Version weiterverbreiten und/oder ändern.
Dieses Programm wird in der Hoffnung verbreitet, dass es nützlich ist, jedoch OHNE JEGLICHE GARANTIE; ohne die stillschweigende Garantie der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Weitere Einzelheiten finden Sie in der GNU General Public License.
Sie sollten zusammen mit diesem Programm eine Kopie der GNU General Public License erhalten haben. Wenn nicht, siehe http://www.gnu.org/licenses/.
Sie müssen go installiert haben. Wenn Sie dies nicht tun oder sich nicht sicher sind, besuchen Sie https://golang.org/doc/install. Sie müssen außerdem eine unterstützte und getestete Betriebssystem- und Go-Version ausführen.
Programm installieren mit
go install github.com/individuwill/mcast
Oder laden Sie alternativ vorgefertigte Binärdateien aus der Version v0.1 herunter
Führen Sie den Receiver auf einem Computer aus
mcast receive
Führen Sie den Absender auf einem anderen Computer aus
mcast send
Multicast-Routing zwischen Hosts muss aktiviert sein
mcast wird durch Unterbefehle gesteuert. Sie rufen mcast wie folgt auf:
mcast subcommand [-options...]
Die Liste der Unterbefehle lautet:
Jeder Unterbefehl verfügt dann über eine Reihe von Optionen zur Steuerung seines Verhaltens. Viele der Befehle haben ähnliche Optionen und die Optionssyntax ist in diesem Fall dieselbe. Nachfolgend finden Sie eine detaillierte Erläuterung jedes Unterbefehls und der zugehörigen Optionen.
Hilfe- und Nutzungsmeldung für die Anwendung anzeigen
mcast help [command]
Hilfe für einen bestimmten Unterbefehl kann angezeigt werden, indem Sie den Befehl angeben, zu dem Sie Hilfe benötigen.
Sendet UDP-Verkehr an die angegebene IP-Adresse. Sendet kontinuierlich in einer Schleife im angegebenen Intervall, bis das Programm beendet wird oder die maximale Anzahl an Nachrichten gesendet wird.
mcast send [-options...]
Die Optionen sind:
Hört den UDP-Verkehr an der angegebenen IP-Adresse ab und druckt den Textinhalt der empfangenen UDP-Nachrichten aus, wenn die Option aktiviert ist.
mcast receive [-options...]
Die Optionen sind:
Noch nicht implementiert
Noch nicht implementiert
Noch nicht implementiert
Einige grundlegende Codetests sind derzeit im Repository vorhanden, es ist jedoch eine viel umfassendere Abdeckung erforderlich.
Sie können die Tests manuell mit einem der folgenden Befehle ausführen:
go test ./..
go test github.com/individuwill/mcast
go test github.com/individuwill/mcast/multicast
Im Stammverzeichnis des Repositorys befindet sich eine Jenkins-Datei zum automatischen Ausführen der Tests, zum Cross-Compilieren für drei Betriebssysteme und zum Erstellen eines Zip-Artefakts. Es gibt einen Git-Hook im Repo, der dieses On-Commit ausführt und das Commit als bestanden oder fehlgeschlagen markiert.
Der Plan besteht darin, den Code auf den drei Betriebssystemen zu testen und die Interaktion zwischen Senden und Empfangen von Multicast im Jenkins-Cluster zu testen.
Es ist auch geplant, automatisch eine neue Version mit Binärdateien zu erstellen, wenn ein neues getaggtes Commit zum Master durchgeführt wird und die Tests bestanden werden.
Derzeit werden nur die Codetests ausgeführt. Sie werden in einer Linux-Umgebung über den offiziellen Golang-Docker-Container ausgeführt. Die Binärdateien werden in Jenkins gespeichert und müssen manuell freigegeben werden.
Ich habe dieses Programm geschrieben, um die Multicast-Funktionalität in meinen Netzwerkdesigns zu testen, da ich festgestellt habe, dass vorhandene Tools zum Testen von Multicast fehlen. Ich brauchte eine kleine tragbare Binärdatei, die ich zum schnellen Testen auf jeden Host kopieren konnte. Dies ist besonders nützlich für virtuelle Laborumgebungen.
Außerdem musste ich das Verkehrsverhalten in drahtlosen Netzwerken testen und beobachten, um die Konfigurationsoptionen der Anbieter zu verstehen, die zu der stabilsten Multicast-Konfiguration für eine drahtlose Umgebung führen. Bisher kann ein einzelner Host mit den richtigen Optionen dieses Programms einen DoS für ein ganzes WLAN-Segment verursachen, wenn die WLAN-Infrastruktur nicht ordnungsgemäß konfiguriert ist oder der Anbieter keine Möglichkeit zur Konfiguration oder Steuerung des Multicast-Verhaltens bietet.
Ich habe die Gelegenheit genutzt, dieses Programm zu nutzen, um mehr über Multicast zu lernen und etwas in Golang zu programmieren.
Ich habe die https://github.com/troglobit/mtools-Suite zum ersten Testen des Programms während der Entwicklung verwendet. Dieses Toolset war auch Inspiration für mcast. Ich habe mich entschieden, mtools nicht zu erweitern, da ich einfache Parallelität und einfaches Cross-Compiling und plattformübergreifende Binärdateien wollte.
Hier sind einige andere Tools, die ich zum Testen der Multicast-Funktionalität verwende oder verwende