On Friday 11 June 2010, Andrei Pelinescu-Onciul wrote:
[..]
So it might be a good idea to evaluate how big is the actual improvement with raw sockets over the multiple sockets, if its make sense to from a maintenance POV to go with this solution (not sure how complicated the actual implementation will be..).
We cannot go with multiple udp sockets because then we will have multiple source ports, which is something one does not want for a sip proxy (think natted UACs). A possible workaround is to use multiple ports and SRV records to balance the traffic on them, but IMHO the raw socket should solve the problem in a simpler way (from the sr.cfg point of view). The only problem is finding the right MTU, but I guess for most setups (that don't use multiple interfaces with different MTUs) a sr.cfg configurable mtu would do (at least for the initial version).
Anyway from the coding point of view I'm almost ready, the testing will be more difficult.
Hi Andrei,
thanks for the clarification. I completely forgot about the problem with the multiple source ports.. Just as a side note, maybe also interesting in this problem space are the new RFS/RPS implementations in upcoming 2.6.35:
http://lwn.net/Articles/382428/ http://lwn.net/Articles/362339/
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdif... http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdif...
even if in the patches they mentioned mainly TCP based workloads, the gains looks promising.
Regards,
Henning