haproxy/src
Willy Tarreau 16401e8162 [MEDIUM] add support for binding to source port ranges during connect
Some users are already hitting the 64k source port limit when
connecting to servers. The system usually maintains a list of
unused source ports, regardless of the source IP they're bound
to. So in order to go beyond the 64k concurrent connections, we
have to manage the source ip:port lists ourselves.

The solution consists in assigning a source port range to each
server and use a free port in that range when connecting to that
server, either for a proxied connection or for a health check.
The port must then be put back into the server's range when the
connection is closed.

This mechanism is used only when a port range is specified on
a server. It makes it possible to reach 64k connections per
server, possibly all from the same IP address. Right now it
should be more than enough even for huge deployments.
(cherry picked from commit c6f4ce8fc4)
2009-07-14 20:13:26 +02:00
..
acl.c [MEDIUM] acl: when possible, report the name and requirements of ACLs in warnings 2008-08-03 09:41:05 +02:00
appsession.c [MINOR] task: keep a task count and clean up task creators 2009-03-21 18:13:21 +01:00
backend.c [MEDIUM] add support for binding to source port ranges during connect 2009-07-14 20:13:26 +02:00
base64.c [BUILD] change declaration of base64tab to fix build with Intel C++ 2008-06-29 17:17:38 +02:00
buffers.c [OPTIM] buffer: replace rlim by max_len 2009-01-09 11:14:39 +01:00
cfgparse.c [MEDIUM] add support for binding to source port ranges during connect 2009-07-14 20:13:26 +02:00
checks.c [MEDIUM] add support for binding to source port ranges during connect 2009-07-14 20:13:26 +02:00
client.c [MINOR] compute the max of sessions/s on fe/be/srv 2009-05-10 18:52:49 +02:00
cttproxy.c [CLEANUP] remove many #include <types/xxx> from C files 2008-07-16 10:30:42 +02:00
dumpstats.c [MINOR] stats/html: use the arial font before helvetica 2009-05-10 20:13:32 +02:00
eb32tree.c [MINOR] update ebtree to version 4.1 2009-03-21 10:23:36 +01:00
eb64tree.c [MINOR] merge ebtree version 3.0 2007-11-28 14:20:44 +01:00
ebpttree.c [MINOR] merge ebtree version 3.0 2007-11-28 14:20:44 +01:00
ebtree.c [MINOR] merge ebtree version 3.0 2007-11-28 14:20:44 +01:00
ev_epoll.c [BUG] O(1) pollers should check their FD before closing it 2009-05-10 10:18:54 +02:00
ev_kqueue.c [BUG] O(1) pollers should check their FD before closing it 2009-05-10 10:18:54 +02:00
ev_poll.c [MEDIUM] pollers: don't wait if a signal is pending 2009-05-10 09:57:21 +02:00
ev_select.c [MEDIUM] pollers: don't wait if a signal is pending 2009-05-10 09:57:21 +02:00
ev_sepoll.c [BUG] O(1) pollers should check their FD before closing it 2009-05-10 10:18:54 +02:00
fd.c [MEDIUM] add support for binding to source port ranges during connect 2009-07-14 20:13:26 +02:00
freq_ctr.c [OPTIM] freq_ctr: do not rotate the counters when reading 2009-03-06 14:29:25 +01:00
haproxy.c [BUG] ensure that we correctly re-start old process in case of error 2009-07-14 20:12:15 +02:00
hdr_idx.c [CLEANUP] remove many #include <types/xxx> from C files 2008-07-16 10:30:42 +02:00
log.c [MINOR] implement per-logger log level limitation 2009-05-10 17:20:05 +02:00
memory.c [MEDIUM] ensure we don't recursively call pool_gc2() 2009-04-21 02:17:45 +02:00
pipe.c [MEDIUM] introduce pipe pools 2009-01-25 13:49:53 +01:00
proto_http.c [MINOR] add options dontlog-normal and log-separate-errors 2009-05-10 11:57:02 +02:00
proto_tcp.c [BUG] fix parser crash on unconditional tcp content rules 2009-05-10 12:22:39 +02:00
proto_uxst.c [BUG] reject unix accepts when connection limit is reached 2009-03-28 11:02:18 +01:00
protocols.c [CLEANUP] remove many #include <types/xxx> from C files 2008-07-16 10:30:42 +02:00
proxy.c [MINOR] compute the max of sessions/s on fe/be/srv 2009-05-10 18:52:49 +02:00
queue.c [BUG] do not dequeue the backend's pending connections on a dead server 2008-12-07 23:51:12 +01:00
rbtree.c [MINOR] imported the rbtree function from Linux kernel 2007-01-07 02:12:57 +01:00
regex.c [CLEANUP] shut warnings 'is*' macros from ctype.h on solaris 2007-06-17 21:51:38 +02:00
server.c [CLEANUP] remove many #include <types/xxx> from C files 2008-07-16 10:30:42 +02:00
session.c [BUG] reset the stream_interface connect timeout upon connect or error 2009-03-28 11:01:20 +01:00
sessionhash.c [PATCH] appsessions: cleanup DEBUG_HASH and initialize request_counter 2008-08-13 23:43:26 +02:00
signal.c [MINOR] add basic signal handling functions 2009-05-10 09:24:23 +02:00
standard.c [MEDIUM] add support for binding to source port ranges during connect 2009-07-14 20:13:26 +02:00
stream_interface.c [CLEANUP] buffer_flush() was misleading, rename it as buffer_erase 2009-03-08 20:33:29 +01:00
stream_sock.c [BUG] stream_sock: check for shut{r,w} before refreshing some timeouts 2009-03-29 10:18:41 +02:00
task.c [MINOR] show sess: report number of calls to each task 2009-03-28 17:54:35 +01:00
time.c [MINOR] add curr_sec_ms and curr_sec_ms_scaled for current second. 2009-03-05 16:56:16 +01:00
uri_auth.c [CLEANUP] remove 65 useless NULL checks before free 2008-08-03 20:48:50 +02:00