LINUX.ORG.RU
ФорумAdmin

UDP multicast на loopback интерфейс делает систему неотзывчивой

 , , ,


0

1

Есть pcap файл с записью двух минут UDP-трафика (около 800 мб). Я, с помощью спецальной самописной тулзы, проигрываю его на loopback интерфейсе (multicast на определенный group/port) порциями по 1000 пакетов с интервалом в 10 мс. Мультикаст слушает другая прога, которая обрабатывает пакеты. Я её, собственно, и тестирую.

Проблема в том, что, через некоторое время, GUI в системе перестает реагировать на любые действия. Терминал, что характерно, работает и позволяет убить процессы, это иногда помогает и система размораживается.

Я мониторю нагрузку и не вижу явных причин, почему система вешается. ЦПУ загружен на 50-70%, памяти хватает, дисковый io минимален. Явных процессов которые жрут ресурсы нет.

Я не силён в сетевом стеке linux, но подозреваю, что ядро не справляется с траффиком на loopback. Вопрос в том, так ли это и как бы мне потестить моё приложение на локальной тачке.

★★★★☆

Пока в голову приходит только несколько вируалок на KVM и отдельная виртуальная сеть для них, чтоб мултикаст по ней гонять.

cocucka ★★★★☆
() автор топика

Да не должно быть так.

Все что не влезло в буфер на приеме - дропается. Умирание GUI это либо WM-у плохо, либо самому Xorg.

Посмотри, не попадает ли МС-трафик в другие сетевые интерфейсы.

К какому интерфейсу привязан маршрут 224.0.0.0/4 и есть ли он.

В dmesg нек смотрел?

С меньшей скоростью не пробовал воспроизводить файл? Хотя с другой стороны 100 Kpps это не очень много.

Мультикаст вещь хитрая. Тестирование через lo возможно требует каких-то специфических настроек.

Для повторения трафика (тестирования DPI) я использовал tap-интерфейс который подключался в мост. Мост был сконфигурирован статически (адрес/маска + маршруты)

С другой стороны, можно использовавть veth-интерфейсы.

Как ты воспроизводишь трафик? через raw-сокет?

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

Посмотри, не попадает ли МС-трафик в другие сетевые интерфейсы.

Я смотрел траффик на др интерфейсах. Там по нулям.

С меньшей скоростью не пробовал воспроизводить файл? Хотя с другой стороны 100 Kpps это не очень много.

Да мне б с большей скоростью отправлять. Это я пока по лайту тестирую.

Как ты воспроизводишь трафик? через raw-сокет?

У меня прога на яве, она в DatagramSocket пишет, т.е. явно не в raw. Я думал еще udpreplay попробовать, т.к. та прога весьма корявая.

К какому интерфейсу привязан маршрут 224.0.0.0/4 и есть ли он.

В dmesg нек смотрел?

Это я не проверял, завтра гляну.

Тестирование через lo возможно требует каких-то специфических настроек.

Вот я и думаю, может упустил что.

Для повторения трафика (тестирования DPI) я использовал tap-интерфейс который подключался в мост. Мост был сконфигурирован статически (адрес/маска + маршруты) С другой стороны, можно использовавть veth-интерфейсы.

Я хочу попробовать в виртуалках всё поднять. С клиентом и паблишером на разных машинах и виртуальной сеткой. Я не хочу в офисную сетку флудить, а то там и так полно мультикаста без меня.

cocucka ★★★★☆
() автор топика
Ответ на: комментарий от cocucka

У меня прога на яве, она в DatagramSocket пишет, т.е. явно не в raw. Я думал еще udpreplay попробовать, т.к. та прога весьма корявая.

На яве? Месье знает толк в изващениях! :) Наверяка какой-нибудь tcpreplay умеет делать то, что тебе нужно.

Поднимать для запуска одного процесс виртуалку - это перебор.

Самое быстрое и наименее затратное - это veth + netns. Один конец отдается в другой net_ns. Накладные расходы минимальные.

В гугле масса примеров настройки veth для связи разных netns и запуска процесса в другом netns

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.