Будет ли снижена пропускная способность сети, если я подключу много сокетов к одному порту? - PullRequest
0 голосов
/ 25 сентября 2011

Я создаю 3 сокета (гнезда отправителя) для отправки моих данных на удаленный одиночный сокет с использованием UDP.

Я связал все эти 3 гнезда отправителя на одном и том же порту.

Будет ли такой дизайн связывания всех 3-х сокетов отправителя на одном и том же порту снижать эффективность передачи пакетов?Или я должен создать новый порт и новый сокет для каждого из моих потоков?Моя цель - посылать пакеты как можно быстрее и поддерживать постоянную загруженность сети.

Важно: Я использую UDP-сокеты.В отличие от сокетов TCP, в которых для каждого из дочерних потоков создан отдельный процесс.

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Я не могу придумать причину, по которой привязка нескольких сокетов к одному и тому же порту повлияет на эффективность отправки тем или иным способом.Поскольку ваш ЦП (предположительно) намного быстрее, чем ваша сетевая карта, вашим ограничивающим фактором будет скорость, с которой ваше оборудование Ethernet может передавать данные в сеть, ничего больше.

Конечно, единственный реальный способзнать наверняка - значит попробовать оба пути и посмотреть, есть ли различия в пропускной способности;но я был бы удивлен, если бы вы это сделали.

(Обратите внимание, что при отправке пакетов UDP важно не пытаться отправлять их быстрее, чем их может передать сетевая карта, иначе ядро ​​просто отбросит пакеты UDPон не имеет места в своем буфере отправки для. В частности, вам нужно либо отправить с использованием блокирующего ввода-вывода (в этом случае вызов send () не вернется, пока у ядра не будет достаточно места для буфера отправки, чтобы отправитьпакет, который вы просили его отправить), или используйте неблокирующий ввод / вывод, но отправляйте пакет только тогда, когда UDP select () (или poll () или что-то еще) как готовый к записи. В противном случае вы получитеУдивительно быстрая «скорость отправки», когда 99% ваших пакетов были отправлены только в битовую корзину; ^))

0 голосов
/ 25 сентября 2011

Количество сокетов на порт не имеет значения.Порты не являются физическими объектами, и у них нет полосы пропускания, которую можно разделить между пользователями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...