Il s'agit d'un utilitaire de ligne de commande et d'une bibliothèque écrits pour tester les flux de trafic multicast sur le réseau et tester le réseau et les appareils.
Cet utilitaire est capable de perturber entièrement un environnement L2 qui n'est pas configuré de manière robuste, la prudence est donc de mise.
mcast est un utilitaire de ligne de commande capable d'envoyer et de recevoir du trafic UDP multicast ou générique. Il permet également de simuler les jointures, les sorties et les requêtes IGMP.
REMARQUE : Actuellement développé et testé sur Mac OSX 10.13.3 avec Go version 1.10. Le programme devrait fonctionner sur n'importe quel Posix/Unix, mais ne fonctionne actuellement pas entièrement sous Windows. Des droits de superutilisateur peuvent être requis pour certaines fonctionnalités.
Ce référentiel est sous licence GPLv3. Voir LICENSE.md pour plus de détails.
Copyright (C) 2018 Will Smith
Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la licence publique générale GNU telle que publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre choix) toute version ultérieure.
Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de QUALITÉ MARCHANDE ou d’ADAPTATION À UN USAGE PARTICULIER. Voir la licence publique générale GNU pour plus de détails.
Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme. Sinon, consultez http://www.gnu.org/licenses/.
Vous devez avoir été installé. Si vous ne le faites pas ou si vous n'êtes pas sûr, visitez https://golang.org/doc/install. Vous devez également exécuter une version OS and Go prise en charge et testée.
Installer le programme avec
go install github.com/individuwill/mcast
Ou bien téléchargez les binaires prédéfinis à partir des versions v0.1
Exécutez le récepteur sur un ordinateur
mcast receive
Exécutez l'expéditeur sur un autre ordinateur
mcast send
Le routage multicast doit être activé entre les hôtes
mcast est piloté par des sous-commandes. Vous invoquez mcast comme :
mcast subcommand [-options...]
La liste des sous-commandes est la suivante :
Chaque sous-commande dispose ensuite d'un ensemble d'options pour contrôler son comportement. De nombreuses commandes partagent des options similaires et la syntaxe des options est la même dans ce cas. Vous trouverez ci-dessous une explication détaillée de chaque sous-commande et de ses options associées.
Afficher l'aide et le message d'utilisation de l'application
mcast help [command]
L'aide pour une sous-commande spécifique peut être affichée en spécifiant la commande pour laquelle vous souhaitez obtenir de l'aide.
Enverra le trafic UDP à l’adresse IP spécifiée. Enverra en continu en boucle à un intervalle spécifié jusqu'à ce que le programme soit terminé ou que le nombre maximum de messages soit envoyé.
mcast send [-options...]
Les options sont :
Écoutera le trafic UDP sur l'adresse IP spécifiée et imprimera le contenu textuel des messages UDP reçus si l'option est activée.
mcast receive [-options...]
Les options sont :
Pas encore mis en œuvre
Pas encore mis en œuvre
Pas encore mis en œuvre
Certains tests de code de base sont actuellement présents dans le référentiel, mais une couverture beaucoup plus étendue est nécessaire.
Vous pouvez exécuter manuellement les tests avec l'une des commandes suivantes :
go test ./..
go test github.com/individuwill/mcast
go test github.com/individuwill/mcast/multicast
Il existe un fichier Jenkins à la racine du référentiel pour exécuter automatiquement les tests, compiler de manière croisée pour 3 systèmes d'exploitation et créer un artefact zip. Il y a un git-hook dans le dépôt qui exécute cette validation, et il marquera la validation comme réussie ou échouée.
Le plan est de tester le code sur les 3 systèmes d'exploitation, et de tester l'interaction entre l'envoi et la réception du multicast dans le cluster jenkins.
Il est également prévu de créer automatiquement une nouvelle version avec des binaires lorsqu'un nouveau commit balisé vers master est effectué et qu'il réussit les tests.
Actuellement, seuls les tests de code sont exécutés. Ils sont exécutés dans un environnement Linux via le conteneur Docker officiel de Golang. Les binaires sont stockés dans Jenkins et des versions manuelles doivent être effectuées.
J'ai écrit ce programme pour tester la fonctionnalité de multidiffusion dans mes conceptions de réseau, car j'ai constaté que les outils existants pour tester la multidiffusion manquaient. J'avais besoin d'un petit binaire portable que je pourrais copier sur n'importe quel hôte pour des tests rapides. Ceci est particulièrement utile pour les environnements de laboratoire virtuel.
J'avais également besoin de tester et d'observer le comportement du trafic dans les réseaux sans fil afin de comprendre les options de configuration des fournisseurs qui conduisent à la configuration de multidiffusion la plus robuste pour un environnement sans fil. À ce stade, avec le bon ensemble d'options avec ce programme, un seul hôte peut provoquer un DoS sur un segment sans fil entier si l'infrastructure sans fil n'est pas correctement configurée ou si le fournisseur n'offre pas la possibilité de configurer ou de contrôler le comportement de multidiffusion.
J'en ai profité pour utiliser ce programme pour en savoir plus sur le multicast et faire un peu de codage en Golang.
J'ai utilisé la suite https://github.com/troglobit/mtools pour les premiers tests du programme lors de son développement. Cet ensemble d’outils a également inspiré mcast. J'ai choisi de ne pas étendre mtools car je voulais une concurrence facile, une compilation croisée et des binaires multiplateformes faciles.
Voici quelques autres outils que j'utilise ou que j'utilise pour tester la fonctionnalité de multidiffusion