summaryrefslogtreecommitdiff
path: root/docs/network/README
blob: f7fc47b850bf2e42d5168248d8f9da5e3249b635 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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