DragonFly BSD

NetMP

NetMP

What's this all about?

new sockbuf

Why do we want to change the sockbuf implementation? Look here.

You can find the new sockbuf code in the 'sockbuf' branch at http://repo.or.cz/w/dragonfly/netmp.git

UPDATE : switched the sockbuf branch to a new semi-lockless sockbuf implementation by Matthew Dillon. Still pondering about a different linked-list implementation (M_CORAL, this is probably only meaningful if you've followed the discussion on irc) without the added indirection through the cupholders.

Cupholder pros:

M_CORAL pros:

Ring buffer pros:

My plan is to use the cupholder implementation for now and revisit this later. The APIs are largely compatible anyway.

XXX : the rest of this section refers to the ring buffer implementation

If you want to do some testing, you can follow these instructions. Some modules and a few userland utilities don't know about the new sockbuf yet, so please only try to build the kernel as described in the mail above.

Known issues:

Stuff that's expected to work: ftp/http/ssh/nfs/dns/ping

tcpcb

An overview of the problems with accesses to the tcpcb can be found in this message.

Accesses to the tcpcb now always go through the protocol thread. Work started here, was revised later and I fixed the last known bugs shortly afterwards.

UDP inpcb

See the subthread starting here.

socket

Start by reading this mail; needless to say, my analysis was not entirely spotless. Taking into account Matt's suggestions, work has been ongoing in the socket branch in the netmp repo (see above). Also see the rest of the thread. The rest of the socket fields (except ->so_oobmark) are discussed here.