keep in sync with OGN upstream (SVN-322 && SVN-323) && fixed ISUPPORT (005) raw ...
[ircu2.10.12-pk.git] / README
1
2         Welcome to ircu2.10.12, the Undernet IRC daemon
3
4 Version u2.10.12 of the Undernet ircd incorporates many new features
5 over its predecessor, and we feel that using it will make you very
6 happy indeed.
7
8 New features include:
9   - A completely rewritten network event engine, which make full use
10     of the asynchronous event engines available in FreeBSD (kqueue)
11     and Solaris (/dev/poll), resulting in dramaticaly improved
12     performance.
13   - New F: (feature) lines in ircd.conf, and the GET/SET commands allow
14     many settings to be changed dynamically, rather than by with compile-
15     time configuration.
16   - The new "account" feature added to the P10 protocol, allows people to
17     remain logged in to service bots (i.e., gnuworld) during a netsplit.
18     This means people will not have to login again once the network rejoins.
19
20 INSTALLATION
21
22 Please see the INSTALL file for installation instructions, for hints on how
23 to best configure your OS for running ircu under high load, see the various
24 README.<platform> files.
25
26 COMPATIBILITY
27
28 This version of ircu will only work with servers that use the P10 protocol,
29 some of the new features will only work between ircu2.10.12 servers.
30
31 GENERAL PERFORMANCE HINTS
32
33 For platform-specific notes and hints, see the platform-specific
34 sections below.  These notes apply to servers that will serve large
35 numbers (thousands) of clients simultaneously.  If your server serves
36 a small amount of users, the defaults should work well enough.
37
38  - Run an OS that supports an asynchronous network event engine; currently
39    these are FreeBSD (kqueue), and Solaris (/dev/poll); possibly other BSDs
40    will also support kqueue. This will have a dramatic effect on performance.
41  - Make things as lean as possible: Make your server dedicated to ircu,
42    disable anything that is not neccesary, and build a custom kernel (where
43    possible).
44  - Tune kernel parameters as described in the platform-specific
45    sections below.
46  - With many clients connecting each second, ircu will be doing lots of DNS
47    lookups. Make sure that the DNS server(s) in your /etc/resolv.conf are as
48    close as possible, or run a local caching DNS server on your IRC server.
49
50 TIME SYNCHRONIZATION
51
52 Many things can and will go horribly wrong when the clocks on the servers
53 on your network become (too far) out of sync. It is therefore highly
54 recommended that all servers run a version of ntpd that will keep their
55 clocks from going astray.
56
57 INFORMATION HIDING
58
59 As per undernet-admins CFV-165, this server contains code that will,
60 by default, hide certain information from ordinary users. If you do
61 not want this, override the default "HIS" feature settings in your
62 ircd.conf.
63
64 MORE INFORMATION
65
66 For more information on this software, see the included documentation
67 in the doc/ directory, as well as http://coder-com.undernet.org.
68
69 For general information on the Undernet, vist http://www.undernet.org
70
71 Happy IRCing!
72
73 RUNNING THIS SERVER ON LINUX
74
75 If you run Linux 2.6 or above (or 2.4 with appropriate patches), ircu
76 can use the epoll family of system calls for much more efficient
77 checks of which connections are active.  Most pre-epoll systems will
78 use 100% CPU with 2000 clients; with epoll, a server may use only a
79 few percent of CPU with the same load.
80
81 To handle that many connections, the ircd must be started with a high
82 enough file descriptor resource.  Check your distribution's docs on
83 how to set the global and per-user limits according to your expected
84 load.
85
86 RUNNING THIS SERVER ON FREEBSD
87
88 When running on FreeBSD, ircu can make use of the kqueue() event engine, which
89 results in much improved performance over the old poll()-based method. kqueue
90 is included in the more recent 4.x releases of FreeBSD.
91
92 In order for ircu to be able to serve many clients simultaneously, you need
93 to increase the maximum allowable number of open files in the system. To do
94 this, add commands such as the following during your system's boot sequence:
95
96 sysctl -w kern.maxfiles=16384
97 sysctl -w kern.maxfilesperproc=16384
98
99 Unless you will be serving thousands of clients simultaneously, you will not
100 need to do the following, unless of course you just can't stand having a
101 system that is not optimized to its limits :)
102
103 Build a custom kernel: Make your kernel as lean as possible by removing all
104 drivers and options you will not need. The following parameters will affect
105 performance, they are listed with suggested values only. For more information
106 on what they do exactly, see FreeBSD's documentation.
107
108 maxusers        2048
109 options         NMBCLUSTERS=65535
110 options         ICMP_BANDLIM
111
112 Also, you may wish to run the following at system startup (from /etc/rc.local,
113 or whichever other method you prefer):
114
115 sysctl -w net.inet.tcp.rfc1323=1
116 sysctl -w net.inet.tcp.delayed_ack=0
117 sysctl -w net.inet.tcp.restrict_rst=1
118 sysctl -w kern.ipc.maxsockbuf=2097152
119 sysctl -w kern.ipc.somaxconn=2048
120
121 Created by Sengaia <sengaia@undernet.org>, July 20 2002.
122
123 RUNNING THIS SERVER ON SOLARIS
124
125 When running on Solaris, ircu can make use of the /dev/poll event engine, which
126 results in much improved performance over the old poll()-based method. Solaris
127 versions 8 and 9 include /dev/poll out of the box, for Solaris 7 you will have
128 to grab and install Patch-ID 106541-21.
129
130 In order to increase the number of clients ircu can handle, add lines such as
131 the following to /etc/system:
132
133 * set hard limit on file descriptors
134 set rlim_fd_max = 16384
135 * set soft limit on file descriptors
136 set rlim_fd_cur = 8192
137
138 For more useful hints see http://www.sean.de/Solaris/soltune.html
139
140 Created by Sengaia <sengaia@undernet.org> on July 20, 2002.