https://gilbertasm.github.io/2018/09/13/tunning-ud... — про UDP-буферы
Ниже по стеку идёт алгоритм управления очередью, еще ниже — буфер сетевой карты (txqueuelen).
Интервал между отправкой может быть любой, ОС не даст вам выйти за собственные буферы (блокирующий сокет заблокируется на отправке, неблокирующий вернёт EAGAIN).
То, что вы спрашиваете, называется pacing — оптимальный интервал между отправками двух пакетов. На современных ядрах Linux (вернее, при использовании современных протоколов управления очередью fq/fq_codel) pacing есть по умолчанию. Управлять им можно с помощью
SO_MAX_PACING_RATE setsockopt.
Ну и конечно, для протокола поверх UDP вам необходимо реализовать собственный алгоритм управления потоком (Congestion Control Algorithm), чтобы учитывать скорость передачи от вас и приёма ваших пакетов другой стороной.
Материал по теме:
https://blog.cloudflare.com/accelerating-udp-packe...
vger.kernel.org/lpc_net2018_talks/willemdebruijn-l...