Повышает ли пропуск данных через несколько портов UDP - PullRequest
0 голосов
/ 01 декабря 2018

В настоящее время я внедряю надежный транспорт UDP, вдохновленный KCP, Dragonite и QUIC, только для самообразования.Я хочу применить несколько оптимизаций, одна из которых - мультиплексирование.

Моя идея такова: я разделяю данные на маленькие порции (размер порции коррелирует с MTU) и асинхронно параллельно отправляю и получаю их через несколько сокетов датаграмм (как на клиенте, так и на сервере) с использованием сопрограмм.

Будет ли работать это решение?Стоит ли ожидать улучшения производительности?

1 Ответ

0 голосов
/ 01 декабря 2018

В отличие от TCP UDP не имеет медленного запуска, то есть он может начать отправку с полной скоростью (если она известна) с самого начала.Таким образом, по существу, пределы того, насколько быстро может выполняться отправка, это либо скорость, с которой локальная система может отправлять данные, либо доступная пропускная способность.Предполагая, что отправка не связана с процессором, и трафик всех представленных вами множественных сокетов будет проходить одинаково (исходящая сетевая карта, маршрутизаторы, входящая сетевая карта), и в промежуточных коробках не выполняется формирование трафика для конкретного соединения, а затем используется несколькоСокеты не должны приводить к увеличению скорости, поскольку это не меняет способ использования различных узких мест.

Это изменяется, если отправка связана с ЦП.В этом случае использование нескольких сопрограмм в сочетании с несколькими сокетами может более эффективно использовать современные многопроцессорные системы, поскольку они одновременно работают на нескольких ядрах ЦП и таким образом могут отправлять больше пакетов до тех пор, пока они снова не будут связаны с ЦП.

Это также меняется, если трафик ограничен пропускной способностью, но есть альтернативный путь к целевой системе, который обеспечивает дополнительную пропускную способность.Привязав сокеты к другому локальному IP-адресу (на другой локальной сетевой карте) или выбрав другой целевой IP-адрес (для той же целевой системы), можно было бы использовать такой альтернативный путь и, таким образом, использовать дополнительную пропускную способность.

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

...