Как получить максимальную пропускную способность при UDP broadcast в гигабитной сети?

Есть некоторое специфичное оборудование - несколько плат с ПЛИС на борту. Мне нужно посылать им данные (много данных) по сети ethernet.
Было принято решение посылать UDP бродкастами.
Пакеты в среднем около 1300 байт.
Программа на ПК открывает UDP сокет и использует его для отправки пакетов. То есть использую стандартное WIndows API компьютера.
С моего ноутбука (Core i7, windows 8.1 prof) я легко могу отправлять более 900 мбит/сек так как сеть гигабитная. Все ок.
На других компьютерах бывает больше 250мбит не удается прокачать. Почему?
Все настройки сетевой карты вроде бы такие же (разгрузка UDP checksum, RSS, jumbo frames, модерация прерываний и прочие.. ). Брендмауэр выключен. Статический IP назначен, IPv6 выключен. Пробовал настройки QoS для приложения- но ими похоже только ограничить пропускную способность можно, а поднять не получается. Использовал команды PowerShell для назначения свойств QoS приложения типа new-netqospolicy -name "qqq" -app "myApp.exe" -proto UDP -minbw 90 и прочие команды. Они в общем влияют но позволяют ограничить - поднять не получается.
Интересно, что одно приложение может посылать 250Мбит в сек. А два приложения уже совместно более 400мбит посылают. То есть в принципе сама сетевая плата вполне справляется с отправкой, но есть какое-то ограничение пропускной способности на процесс?
На моем ноуте Core i7 я ничего вообще особенно не настраиваю.
Что делать?
  • Вопрос задан
  • 659 просмотров
Пригласить эксперта
Ответы на вопрос 1
@throughtheether
human after all
Было принято решение посылать UDP бродкастами.
Надеюсь, переделаете хотя бы в мультикаст.
Все настройки сетевой карты вроде бы такие же (разгрузка UDP checksum
Я бы на вашем месте вообще бы ее не считал.
, RSS
насколько помню, RSS распределяет входящие пакеты, не понял, как вам эта технология поможет
, jumbo frames
Опять же не понял, как настройка jumbo frames должна улучшить доставку фреймов менее 1500 байт размером.
Что делать?
Используйте ОС Linux/FreeBSD с нормальными сетевыми картами (Intel 82576 и подобные). В случае FreeBSD попробуйте NETMAP. ОС Windows - не лучший вариант для высокопроизводительной обработки сетевого трафика. Если по какой-то причине не можете отказаться от Windows - попробуйте разнести устройства по разным адресам (возможно, мультикастовым) и для каждого устройства (или группы устройств) слать трафик из отдельного процесса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы