Documentation on writing a custom socket

Robert Watson rwatson at
Mon Mar 10 18:38:20 UTC 2008

On Sun, 9 Mar 2008, Hans Petter Selasky wrote:

> On Saturday 08 March 2008, Robert Watson wrote:
>> On Sat, 8 Mar 2008, Hans Petter Selasky wrote:
>> For example, do you anticipate using or even needing the routing 
>> facilities, and how might you map ISDN telephony parts into the normal 
>> network stack infrastructure of addresses, routing, interfaces, etc?
> ISDN is very simple. In the ISDN world there is a term called TEI which is 
> the Terminal Entity Identifier. This kind of like an IP address.
> Besides from the signalling there are 2 B-channels which can transport data 
> or audio. One of my goals is to achive zero copy when moving data to/from an 
> ISDN line and also in combination to Voice over IP. Currently data is moved 
> through userland (Asterisk typically) which is usable in the short term, but 
> in the long run I want this extra copying removed. The idea is that I can 
> route [IP] packets (mbufs) through various filters in the kernel without the 
> need for copy.

While I'm not opposed to the idea in principle, I would recommend thinking 
very carefully before committing to the protocol stack approach as it comes 
with a lot of maintenance baggage and is a pretty heavy-weight activity.  The 
reason to do that instead of just doing a custom device stack that plugs into 
the network stack only where it intersects with, say, encapsulated IP, would 
be if you really need to expose a full socket abstraction to userspace.

Robert N M Watson
Computer Laboratory
University of Cambridge

More information about the freebsd-hackers mailing list