In the good old days, most network daemons were just spawned by inetd (plus tcpwrappers). This model took a lot of omplexity away from implementing a network daemon and also meant that there was a central point for configuring the network side for these daemons (like access control).

Unfortunately, the main problem with this approach is that it only supports a strictly one process per connection model and therefore doesn't scale well, so most projects have decided to do their own connection handling now.

The Next-generation Internet Daemon project tries to address these shortcomings by using novel techniques to provide a high-performance, but still centralised connection management service to network daemons.

Asynchronous DNS library

Uses the asynchronous udns library to resolve multiple DNS requests in parallel.

Cooperative fiber scheduler

A cooperative fiber scheduler is used to avoid the complexities of a fully asynchronous system - combining the ease of use of synchronous APIs with the performance advantages of asynchronous kernel calls.

Multi-threaded edge-triggered epoll workers

Network I/O processing is done by multiple worker threads using edge-triggered epoll event notifications on Linux.

Scriptable configuration

The Guile Scheme interpreter is used to make the configuration as flexible and powerful as possible.