Пространство пользователя может вызывать и отправлять только пакеты размера MTU.
Это заставит отправлять несколько вызовов, но позволит избежать фрагментации IP.
Но отправка нескольких вызовов приведет к переключению контекста нескольких пользователей / ядра.
Другой способ состоит в том, что пользовательское пространство может отправлять большие пакеты (может иметь размер N * MTU), что приведет к N IP-фрагментам, но уменьшит переключение контекста пользователя / ядра.
С другой стороны, фрагменты IP также могут замедлять сетевой путь, поскольку все маршрутизаторы должны накапливать пакет перед маршрутизацией вперед.
После моего исследования гугла я пришел к выводу, что использование iovec с readv / writev и отправка размера MTU, возможно, является подходящим решением, поскольку оно решает как проблемы с переключением контекста, так и фрагментацию IP.
Буду признателен за глубокое понимание и мнение по этому поводу.