netdev
[Top] [All Lists]

Re: anyone ever done multicast AF_UNIX sockets?

To: Chris Friesen <cfriesen@xxxxxxxxxxxxxxxxxx>
Subject: Re: anyone ever done multicast AF_UNIX sockets?
From: Greg Daley <greg.daley@xxxxxxxxxxxxxxxxx>
Date: Fri, 28 Feb 2003 09:21:38 +1100
Cc: linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx, linux-net@xxxxxxxxxxxxxxx
Organization: Monash University
References: <3E5E7081.6020704@nortelnetworks.com>
Reply-to: greg.daley@xxxxxxxxxxxxxxxxx
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020529
Hi Chris,

Please check out the uml_switch
written by jeff dike for Mser Mode Linux.

It is a user-space program which emultates
an ethernet switch (or hub).  It emulates
link-layer multicast on UNIX domain sockets.

Greg Daley

Chris Friesen wrote:

It is fairly common to want to distribute information between a single sender and multiple receivers on a single box.


Multicast IP sockets are one possibility, but then you have additional overhead in the IP stack.

Unix sockets are more efficient and give notification if the listener is not present, but the problem then becomes that you must do one syscall for each listener.

So, here's my main point--has anyone ever considered the concept of multicast AF_UNIX sockets?

The main features would be:
--ability to associate/disassociate a socket with a multicast address
--ability to associate/disassociate with all multicast addresses (possibly through some kind of raw socket thing, or maybe a simple wildcard multicast address)
--on process death all sockets owned by that process are disassociated from any multicast addresses that they were associated with
--on sending a packet to a multicast address and there are no sockets associated with it, return -1 with errno=ECONNREFUSED


The association/disassociation could be done using the setsockopt() calls the same as with udp sockets, everything else would be the same from a userspace perspective.

Any thoughts?  How hard would this be to put in?

Chris





<Prev in Thread] Current Thread [Next in Thread>