У меня есть установка, при которой одна «ведущая» система Linux связывается с 3 «подчиненными» системами, также работающими под управлением Linux, на выделенном интерфейсе Ethernet (только мастер и 3 подчиненных). Ведомые устройства отправляют данные на мастер через UDP каждые 5 мс или около того. Кроме того, мастер имеет приложения, которые непрерывно извлекают файлы из всех трех ведомых по протоколам FTP, SCP и т. Д.
Пакеты UDP должны собираться ведущим как можно быстрее, предпочтительно в течение 3-4 мс. Когда я запускаю установку только с приложением приема UDP, запущенным на главном компьютере, я вижу, что это условие легко выполняется. Тем не менее, когда FTP / SCP / и т. Д. приложения также остаются запущенными, во время приема наблюдаются всплески. Размер передаваемых файлов довольно меньше, но каждый второй или около того получает новый файл от каждого ведомого устройства.
Тот факт, что результаты хороши при запуске установки без активных приложений передачи файлов, говорит о том, что "организация очередей / планирование" в сети Linux, похоже, дает одинаковый приоритет как UDP, так и другим протоколам. Может быть, он даже удерживает UDP, если FTP работает?
Есть ли способ сообщить Linux (программно / командам), чтобы он отдавал наивысший приоритет связи UDP и "приостанавливал" другие вещи, такие как передача файлов, когда сообщение UDP готово к приему?
Редактировать 1: я добавил их для управления трафиком на основе типа протокола (UDP - протокол 17)
tc qdisc add dev eth0 root handle 10: prio
tc filter add dev eth0 parent 10: protocol ip prio 1 u32 match ip protocol 17 0xff flowid 10:1
tc filter add dev eth0 parent 10: prio 3 protocol all u32 match u32 0 0 flowid 10:3
Третий - это «фильтр всех совпадений». Однако это не имеет значения. Я все еще получаю такие же шипы.