Goals: - text-based protocols, telnetish, TCP/IPish - comminucate over sockets (requests to services), both in client- (connect) and server-mode (bind,listen,accept) - there should be no difference whether we talk to sockets, pipes of an external process or a file - how events are colleted (select,poll,kqueue,/dev/poll,epoll,etc.) should be abstracted - should be usable in single- and multithreaded environment - we should scale, but not in the webserver-style (which would be optimization done too early in the wrong direction!) - protocols should be designable like a Russian Nested Doll for being fast in business layer to device new protocols suiting the problem - reach the 100MBit/s sustained transfer rate (yes I know, there are Gigabits/s NICs out there, but their speed is almost impossible to reach) Links: - Boost ASIO: on design - POCO Net classes: on design - http://www.kegel.com/rn/: an epoll/kqueue abstraction interface in C, good for idea hunting - http://www.kegel.com/c10k.html: how to get more than 10k clients on a machine, a lot of useful links - http://www.bullopensource.org/posix: POSIX effort to normalize asynchronous I/O interfaces - Boinc: http://boinc.berkeley.edu: some ideas around protocol FSMs in networking - http://www.artima.com/articles/io_design_patterns1.html: on Reactor and Proactor and a hybrid the emulated Proactor - http://www.developerweb.net/forum/forumdisplay.php?s=cb7c1122ba4551d2fa866b1d6cf2b97f&f=70: UNIX Socket FAQ: very good resource for all kind of detail problems