Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SO_REUSEPORT and Unix domain sockets

214 views
Skip to first unread message

Tobias Oberstein

unread,
May 27, 2014, 6:00:02 AM5/27/14
to
Linux kernels >= 3.9 allow sharing of sockets between processes with
in-kernel load-balancing by setting SO_REUSEPORT (eg
http://lwn.net/Articles/542629/)

How can this be used for sockets of type AF_UNIX?

I can only get it working with TCP sockets, not Unix domain sockets.

When using TCP, the incoming clients will get nicely balanced to all
processes listening. With Unix domain sockets, the incoming clients all
get connected only to the last started process.

The test code (Python) I was trying is here:

http://stackoverflow.com/questions/23742368/can-so-reuseport-be-used-on-unix-domain-sockets

Any hints appreciated,
/Tobias
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Eduardo Silva

unread,
Sep 19, 2014, 9:50:02 PM9/19/14
to
>
> How can this be used for sockets of type AF_UNIX?
>
> I can only get it working with TCP sockets, not Unix domain sockets.
>
> When using TCP, the incoming clients will get nicely balanced to all
> processes listening. With Unix domain sockets, the incoming clients all get
> connected only to the last started process.
>
> The test code (Python) I was trying is here:
>
> http://stackoverflow.com/questions/23742368/can-so-reuseport-be-used-on-unix-domain-sockets
>
> Any hints appreciated,
> /Tobias


Looking at the original patch looks like the implementation is only
done for TCP and UDP:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c617f398edd4db2b8567a28e899a88f8f574798d

UNIX domain sockets use the file system as the address name space, so
SO_REUSEPORT would not be applicable.

Tobias Oberstein

unread,
Sep 21, 2014, 10:00:02 AM9/21/14
to
Am 20.09.2014 03:44, schrieb Eduardo Silva:
>>
>> How can this be used for sockets of type AF_UNIX?
>>
>> I can only get it working with TCP sockets, not Unix domain sockets.
>>
>> When using TCP, the incoming clients will get nicely balanced to all
>> processes listening. With Unix domain sockets, the incoming clients all get
>> connected only to the last started process.
>>
>> The test code (Python) I was trying is here:
>>
>> http://stackoverflow.com/questions/23742368/can-so-reuseport-be-used-on-unix-domain-sockets
>>
>> Any hints appreciated,
>> /Tobias
>
>
> Looking at the original patch looks like the implementation is only
> done for TCP and UDP:
>
> http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c617f398edd4db2b8567a28e899a88f8f574798d
>

Ok, I see. Unfortunate.

> UNIX domain sockets use the file system as the address name space, so
> SO_REUSEPORT would not be applicable.
>

Yes, in case of Unix domain sockets, it's about "reusing paths", not ports.

Such an option for in-kernel load-balancing of Unix domain sockets would
be useful ..

/Tobias
0 new messages