DragonFly kernel List (threaded) for 2008-05
DragonFly BSD
DragonFly kernel List (threaded) for 2008-05
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

sockbuf (was Re: BGL-free net stack)

From: Aggelos Economopoulos <aoiko@xxxxxxxxxxxxxx>
Date: Mon, 5 May 2008 20:36:44 +0300

On Wednesday 16 April 2008, Aggelos Economopoulos wrote:
> Hello all,
> for my diploma thesis, I've arranged to work on getting the DragonFlyBSD
> network stack[*] to run without the BGL. Now, it would be great if the
> code changes would become part of the project. So, my plan is to study
> the net code over easter vacation (it's been a long while since I last 
> at it and I've never been a network guy in any case) and then post a 
> preliminary roadmap on kernel@. At that point, everyone can give an opinion 
> before any code gets written.

On second thought, let me ask for input sooner rather than later. I'm leaning 
towards Matt's suggestion for a semi-lockless ring buffer for the sockbuf


One of the issues is that we can no longer give a stable character count for 
the sockbuf, since data can arrive (if we're a reader) or be removed (if 
we're a writer) at any time. But we can give some weaker guarantees: if we're 
a reader, we can get a lower bound for cc and if we're a writer we have an 
upper bound. Now, for references to the sendbuf in e.g. tcp_{in,out}put() I 
think we can get away with taking a snapshot of the cc; the alternative would 
be to try and make the code very very smart, but for now I'll settle for 
obvious correctness. From a superficial first look, I think the handling of 
so_oobmark will require some changes. At this point I'm inclined to start 
going through all users and updating them to use the new sockbuf and see if 
any real problems crop up. If anyone can see a fundamental problem or has a 
better approach to suggest, please speak up now, so that I won't waste time 
with a suboptimal/flawed approach.

I should also mention that I'm only interested in IPv4 TCP and UDP. The other 
protocols can stay under the BGL for now.

Of course the sockbuf isn't the only issue I've busied myself with the past 
couple of weeks, but it is one of the more interesting shared data 
structures. Hopefully I'll get around to starting a discussion on inpcbs and 
tcpcbs soon.


[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]