Esta es una utilidad de línea de comandos y una biblioteca escrita para probar los flujos de tráfico de multidifusión en la red y realizar pruebas de esfuerzo de la red y los dispositivos.
Esta utilidad es capaz de alterar por completo un entorno L2 que no esté configurado de manera sólida, por lo que se recomienda precaución.
mcast es una utilidad de línea de comandos capaz de enviar y recibir tráfico UDP genérico o de multidifusión. También permite la simulación de uniones, salidas y consultas de IGMP.
NOTA: Actualmente desarrollado y probado en Mac OSX 10.13.3 con Go versión 1.10. El programa debería funcionar en cualquier Posix/Unix, pero actualmente no funciona completamente en Windows. Es posible que se requieran derechos de superusuario para algunas funciones.
Este repositorio tiene licencias bajo GPLv3. Consulte LICENSE.md para obtener más detalles.
Derechos de autor (C) 2018 Will Smith
Este programa es software libre: puede redistribuirlo y/o modificarlo según los términos de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia o (a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea de utilidad, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia pública general de GNU para obtener más detalles.
Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa. Si no, consulte http://www.gnu.org/licenses/.
Debes tenerlo instalado. Si no lo hace o no está seguro, visite https://golang.org/doc/install. También debe ejecutar una versión de OS y Go compatible y probada.
Instalar el programa con
go install github.com/individuwill/mcast
O, alternativamente, descargue archivos binarios prediseñados de las versiones v0.1
Ejecute el receptor en una computadora
mcast receive
Ejecute el remitente en otra computadora
mcast send
El enrutamiento de multidifusión debe estar habilitado entre hosts
mcast está controlado por subcomandos. Invocas mcast como:
mcast subcommand [-options...]
La lista de subcomandos es:
Cada subcomando tiene un conjunto de opciones para controlar su comportamiento. Muchos de los comandos comparten opciones similares y la sintaxis de las opciones es la misma cuando este es el caso. A continuación se muestra una explicación detallada de cada subcomando y sus opciones asociadas.
Mostrar mensaje de ayuda y uso de la aplicación.
mcast help [command]
La ayuda para un subcomando específico se puede mostrar especificando el comando con el que desea ayuda.
Enviará tráfico UDP a la dirección IP especificada. Se enviará continuamente en un bucle en un intervalo específico hasta que finalice el programa o se envíe el número máximo de mensajes.
mcast send [-options...]
Las opciones son:
Escuchará el tráfico UDP en la dirección IP especificada e imprimirá el contenido de texto de los mensajes UDP recibidos si la opción está habilitada.
mcast receive [-options...]
Las opciones son:
Aún no implementado
Aún no implementado
Aún no implementado
Algunas pruebas de código básicas están actualmente presentes en el repositorio, pero se necesita una cobertura mucho más amplia.
Puede ejecutar manualmente las pruebas con 1 de los siguientes comandos:
go test ./..
go test github.com/individuwill/mcast
go test github.com/individuwill/mcast/multicast
Hay un archivo Jenkins en la raíz del repositorio para ejecutar automáticamente las pruebas, realizar una compilación cruzada para 3 sistemas operativos y crear un artefacto zip. Hay un git-hook en el repositorio que ejecuta esta confirmación y marcará la confirmación como aprobada o fallida.
El plan es probar el código en los 3 sistemas operativos y probar la interacción entre el envío y la recepción de multidifusión en el clúster jenkins.
También existe un plan para crear automáticamente una nueva versión con binarios cuando se realiza una nueva confirmación etiquetada con el maestro y pasa las pruebas.
Actualmente sólo se ejecutan las pruebas de código. Se ejecutan en un entorno Linux a través del contenedor Docker oficial de Golang. Los binarios se almacenan en Jenkins y se deben realizar liberaciones manuales.
Escribí este programa para probar la funcionalidad de multidifusión en mis diseños de red, ya que encontré que faltaban herramientas existentes para probar la multidifusión. Necesitaba un pequeño binario portátil que pudiera copiar a cualquier host para realizar pruebas rápidas. Esto es especialmente útil para entornos de laboratorio virtuales.
También necesitaba probar y poder observar el comportamiento del tráfico en redes inalámbricas para comprender las opciones de configuración de los proveedores que conducen a la configuración de multidifusión más sólida para un entorno inalámbrico. Hasta este punto, con el conjunto correcto de opciones de este programa, un solo host puede provocar un DoS en todo un segmento inalámbrico si la infraestructura inalámbrica no está configurada correctamente o el proveedor no brinda la capacidad de configurar o controlar el comportamiento de multidifusión.
Aproveché la oportunidad de utilizar este programa para aprender más sobre multidifusión y codificar en Golang.
Utilicé la suite https://github.com/troglobit/mtools para las pruebas iniciales del programa mientras lo desarrollaba. Ese conjunto de herramientas también fue inspiración para mcast. Elegí no extender mtools porque quería una fácil concurrencia y una fácil compilación cruzada y archivos binarios multiplataforma.
Aquí hay algunas otras herramientas que uso o usé para probar la funcionalidad de multidifusión.