Это утилита и библиотека командной строки, написанная для тестирования потоков многоадресного трафика в сети, а также стресс-тестирования сети и устройств.
Эта утилита способна полностью разрушить среду L2, которая не настроена должным образом, поэтому рекомендуется соблюдать осторожность.
mcast — это утилита командной строки, способная отправлять и получать многоадресный или общий UDP-трафик. Он также позволяет моделировать соединения, выходы и запросы IGMP.
ПРИМЕЧАНИЕ. В настоящее время разработано и протестировано на Mac OSX 10.13.3 с версией Go 1.10. Программа должна работать на любом Posix/Unix, но на данный момент не полностью работает на Windows. Для некоторых функций могут потребоваться права суперпользователя.
Этот репозиторий распространяется по лицензии GPLv3. Подробности смотрите на LICENSE.md.
Авторские права (C) 2018 г. Уилл Смит
Эта программа является свободным программным обеспечением: вы можете распространять ее и/или изменять в соответствии с условиями Стандартной общественной лицензии GNU, опубликованной Фондом свободного программного обеспечения, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии.
Данная программа распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии ТОРГОВОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. Дополнительную информацию см. в Стандартной общественной лицензии GNU.
Вместе с этой программой вы должны были получить копию Стандартной общественной лицензии GNU. Если нет, см. http://www.gnu.org/licenses/.
У вас должен быть установлен go. Если вы этого не сделали или не уверены, посетите https://golang.org/doc/install. У вас также должна быть установлена поддерживаемая и протестированная версия ОС и 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 для автоматического запуска тестов, кросс-компиляции под 3 операционные системы и создания zip-артефакта. В репозитории есть git-hook, который запускает эту фиксацию при фиксации и помечает фиксацию как пройденную или неудачную.
План состоит в том, чтобы протестировать код в трех операционных системах и проверить взаимодействие между отправкой и получением многоадресной рассылки в кластере Jenkins.
Существует также план автоматического создания новой версии с двоичными файлами, когда будет сделан новый помеченный коммит в master и он пройдет тесты.
В настоящее время выполняются только тесты кода. Они выполняются в среде Linux через официальный докер-контейнер golang. Двоичные файлы хранятся в Jenkins, и выпуски необходимо производить вручную.
Я написал эту программу для проверки функциональности многоадресной рассылки в своих сетевых проектах, поскольку обнаружил, что существующих инструментов для тестирования многоадресной рассылки не хватает. Мне нужен был небольшой портативный двоичный файл, который я мог бы скопировать на любой хост для быстрого тестирования. Это особенно полезно для виртуальных лабораторных сред.
Мне также нужно было тестировать и иметь возможность наблюдать за поведением трафика в беспроводных сетях, чтобы понять варианты конфигурации поставщиков, которые приводят к наиболее надежной конфигурации многоадресной рассылки для беспроводной среды. На данный момент, при правильном наборе опций этой программы, один хост может вызвать DoS для всего беспроводного сегмента, если беспроводная инфраструктура не настроена должным образом или поставщик не предоставляет возможность настраивать или контролировать поведение многоадресной рассылки.
Я воспользовался возможностью использовать эту программу, чтобы узнать больше о многоадресной рассылке и немного написать код на Golang.
Я использовал пакет https://github.com/troglobit/mtools для первоначального тестирования программы во время ее разработки. Этот набор инструментов также послужил источником вдохновения для mcast. Я решил не расширять mtools, так как мне хотелось легкого параллелизма, простой кросс-компиляции и кросс-платформенных двоичных файлов.
Вот некоторые другие инструменты, которые я использую или использовал для тестирования функций многоадресной рассылки.