Каково влияние установки значений свойств socket.ReceiveBufferSize и socket.SendBufferSize при использовании протокола UDP в вашей собственной реализации Reliable UDP? Если они не оказывают влияния, предполагается ли отключение их значения, устанавливая их равными 0?
При работе с протоколом UDP настройки socket.ReceiveBufferSize и socket.SendBufferSize не имеют никакого воздействия, так как UDP является протоколом без установления соединения и не гарантирует доставку пакетов, а также их порядок. В случае использования собственной реализации Reliable UDP, которая добавляет надежность доставки и управление потерянными пакетами поверх протокола UDP, настройки socket.ReceiveBufferSize и socket.SendBufferSize могут играть роль в оптимизации процесса передачи данных. Однако, если они не оказывают влияния на вашу конкретную реализацию Reliable UDP, то можно установить их значения равными 0 или отключить их. В целом, при работе с протоколом UDP важно учитывать особенности этого протокола, связанные с отсутствием гарантии доставки и установления соединения, чтобы эффективно использовать его в своих сетевых приложениях.
https://github.com/quic-go/quic-go/wiki/UDP-Buffer...
Experiments have shown that QUIC transfers on high-bandwidth connections can be limited by the size of the UDP receive and send buffer. The receive buffer holds packets that have been received by the kernel, but not yet read by the application (quic-go in this case). The send buffer holds packets that have been sent by quic-go, but not sent out by the kernel. In both cases, once these buffers fill up, the kernel will drop any new incoming packet.
Therefore, quic-go tries to increase the buffer size. The way to do this is an OS-specific, and we currently have an implementation for linux, windows and darwin. However, an application is only allowed to do increase the buffer size up to a maximum value set in the kernel. Unfortunately, on Linux this value is rather small, too small for high-bandwidth QUIC transfers.