Назад | Перейти на главную страницу

Отправить дубликаты UDP-пакетов на другой компьютер

У нас есть рабочий сервер, на который мы получаем непрерывный поток UDP-пакетов (~ 15 Мбит / с). У нас есть небольшая исследовательская группа, которая хочет обработать тот же самый поток для некоторых исследовательских целей на другом сервере. Сервер исследовательской группы также находится в той же подсети. Сначала мы подумали о создании копии потока на самом коммутаторе и переводе сервера исследовательской группы в неразборчивый режим, но ИТ-группа не желает программировать коммутаторы таким образом. Поэтому нам было интересно, сможем ли мы воссоздать поток для исследовательского сервера на самом производственном сервере.

Производственный сервер достаточно мощный, чтобы справиться с любой нагрузкой на ЦП, которая может возникнуть из-за создания дублирующихся пакетов. Однако воспроизведение потока должно происходить почти в реальном времени (допустима задержка в пару секунд). Сервер работает под управлением Debian на процессоре x64 и имеет много свободной оперативной памяти.

General Googling рассказал мне о UDP samplicator на github. Однако я хотел знать, есть ли более чистый подход, например. Примитив уровня ОС / инструмент для этого?

Спасибо Брэндону Ксавье за ​​то, что указал нам правильное направление. Команда на рабочем сервере выглядела так:

sudo iptables -t mangle -A PREROUTING -i enp10s0 -p udp --dport 35000 -j TEE --gateway 192.168.100.8

где enp10s0 - принимающее устройство NIC, 35000 - порт назначения пакетов, а 192.168.100.8 - IP-адрес сервера исследовательской группы. Заметка что пакет воссоздается как есть на уровне IP для другой машины. Итак, на другой машине ваша программа синтаксического анализа должна быть в беспорядочном режиме, чтобы ее прочитать.