Re: [PATCH 0/10] af_unix: add multicast and filtering features to AF_UNIX
From: Eric Dumazet <hidden>
Date: 2012-03-01 16:00:51
Also in:
lkml
Le jeudi 01 mars 2012 à 14:56 +0100, Javier Martinez Canillas a écrit :
We could use AF_INET multicast on a local machine but we need some ordering and control flow requirements that are not guaranteed on UDP multicast over IP. That's why we thought to add a new address family AF_MCAST.
It seems application logic and complexity pushed into kernel, for a very single user (even if used in a lot of products) : D-Bus
To make it a general local multicast solution and not being too specific we added some flags to control its behavior like MCAST_MREQ_DROP_WHEN_FULL to decide to either block the sender or drop the packet when one receiver has its queue full.
I am only wondering how many lines this is going to add in kernel for a complete implementation, given your performance expectations, flow control, reliability, not counting all security issues (ancillary messages and so on) In case of IP_MULTICAST_LOOP, we could allow the sender to sleep if receiver queue is full, with a bit of tweaking in stack (current implementation uses loopback re-inject, so requires softirq handling). In fact, we could use a new IP_MULTICAST_LOCAL option, so that sender processing doesnt trigger a softirq handler at all and is allowed to sleep if needed. For example skb allocations could use GFP_KERNEL instead of current GFP_ATOMIC ones in udp mcast . I dont know, maybe it would be a smaller patch.