Как отправить большие данные по сети, используя протокол UDP? - PullRequest
0 голосов
/ 09 мая 2018

Пространство пользователя может вызывать и отправлять только пакеты размера MTU. Это заставит отправлять несколько вызовов, но позволит избежать фрагментации IP. Но отправка нескольких вызовов приведет к переключению контекста нескольких пользователей / ядра.

Другой способ состоит в том, что пользовательское пространство может отправлять большие пакеты (может иметь размер N * MTU), что приведет к N IP-фрагментам, но уменьшит переключение контекста пользователя / ядра.

С другой стороны, фрагменты IP также могут замедлять сетевой путь, поскольку все маршрутизаторы должны накапливать пакет перед маршрутизацией вперед.

После моего исследования гугла я пришел к выводу, что использование iovec с readv / writev и отправка размера MTU, возможно, является подходящим решением, поскольку оно решает как проблемы с переключением контекста, так и фрагментацию IP.

Буду признателен за глубокое понимание и мнение по этому поводу.

...