On Mon, Mar 10, 2025 at 03:47:42PM -0600, Maximo Pech wrote:
> Hi,
> 
> I'm running ipfs and for best performance it requires increasing the
> udp receive buffer size as explained below
> 
> https://github.com/quic-go/quic-go/wiki/UDP-Buffer-Sizes
> 
> However, I've noticed that setting net.inet.udp.recvspace above
> 2097152 results in socket(2) failing with ENOBUF. It doesn't matter
> what the actual resource usage is, just setting it makes many programs
> that call socket() to fail, for example ifconfig, netstat.
> 
> I believe that probably I'm hitting another system limit, so I would
> need to increase that as well but I don't know what it would be. I've
> tested this on two different systems, with 1G memory and 2G memory and
> the behavior is the same.
> 
> Any advice would be appreciated.
> 

Yes, this is the limit for max bytes in socket buffer. The
*.{send,recv}space sysctl values should not exceed this limit. Thanks
for pointing.

The UNIX sockets already have the SB_MAX for upper limit.

Index: sys/netinet/ip_divert.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_divert.c,v
diff -u -p -r1.100 ip_divert.c
--- sys/netinet/ip_divert.c     2 Mar 2025 21:28:32 -0000       1.100
+++ sys/netinet/ip_divert.c     11 Mar 2025 09:32:17 -0000
@@ -63,8 +63,8 @@ u_int   divert_recvspace = DIVERT_RECVSP
 #endif
 
 const struct sysctl_bounded_args divertctl_vars[] = {
-       { DIVERTCTL_RECVSPACE, &divert_recvspace, 0, INT_MAX },
-       { DIVERTCTL_SENDSPACE, &divert_sendspace, 0, INT_MAX },
+       { DIVERTCTL_RECVSPACE, &divert_recvspace, 0, SB_MAX },
+       { DIVERTCTL_SENDSPACE, &divert_sendspace, 0, SB_MAX },
 };
 
 const struct pr_usrreqs divert_usrreqs = {
Index: sys/netinet/udp_usrreq.c
===================================================================
RCS file: /cvs/src/sys/netinet/udp_usrreq.c,v
diff -u -p -r1.334 udp_usrreq.c
--- sys/netinet/udp_usrreq.c    2 Mar 2025 21:28:32 -0000       1.334
+++ sys/netinet/udp_usrreq.c    11 Mar 2025 09:32:17 -0000
@@ -159,8 +159,8 @@ const struct pr_usrreqs udp6_usrreqs = {
 
 const struct sysctl_bounded_args udpctl_vars[] = {
        { UDPCTL_CHECKSUM, &udpcksum, 0, 1 },
-       { UDPCTL_RECVSPACE, &udp_recvspace, 0, INT_MAX },
-       { UDPCTL_SENDSPACE, &udp_sendspace, 0, INT_MAX },
+       { UDPCTL_RECVSPACE, &udp_recvspace, 0, SB_MAX },
+       { UDPCTL_SENDSPACE, &udp_sendspace, 0, SB_MAX },
 };
 
 struct inpcbtable udbtable;
Index: sys/netinet6/ip6_divert.c
===================================================================
RCS file: /cvs/src/sys/netinet6/ip6_divert.c,v
diff -u -p -r1.99 ip6_divert.c
--- sys/netinet6/ip6_divert.c   2 Mar 2025 21:28:32 -0000       1.99
+++ sys/netinet6/ip6_divert.c   11 Mar 2025 09:32:17 -0000
@@ -66,8 +66,8 @@ u_int   divert6_recvspace = DIVERT_RECVS
 #endif
 
 const struct sysctl_bounded_args divert6ctl_vars[] = {
-       { DIVERT6CTL_RECVSPACE, &divert6_recvspace, 0, INT_MAX },
-       { DIVERT6CTL_SENDSPACE, &divert6_sendspace, 0, INT_MAX },
+       { DIVERT6CTL_RECVSPACE, &divert6_recvspace, 0, SB_MAX },
+       { DIVERT6CTL_SENDSPACE, &divert6_sendspace, 0, SB_MAX },
 };
 
 const struct pr_usrreqs divert6_usrreqs = {

Reply via email to