blob: ed417e2be614c3346077c8c2f3ed10a7c8fdd0c0 [file] [log] [blame]
Willy Tarreaud5961ad2017-11-24 18:00:32 +01001Medium-long term wish list - 2017/11/24
willy tarreau814cbc62006-05-13 13:00:29 +02002
Willy Tarreau21475e32010-05-23 08:46:08 +02003Legend: '+' = done, '-' = todo, '*' = done except doc
willy tarreau814cbc62006-05-13 13:00:29 +02004
Willy Tarreaud5961ad2017-11-24 18:00:32 +010051.9 or later :
Willy Tarreau21475e32010-05-23 08:46:08 +02006 - return-html code xxx [ file "xxx" | text "xxx" ] if <acl>
willy tarreau1f431b52006-05-21 14:46:15 +02007
Willy Tarreau65ce3912010-11-24 16:21:56 +01008 - return-raw [ file "xxx" | text "xxx" ] if <acl>
9
Willy Tarreau0a6b1fd2010-11-14 14:23:22 +010010 - have multi-criteria analysers which subscribe to req flags, rsp flags, and
11 stream interface changes. This would result in a single analyser to wait
12 for the end of data transfer in HTTP.
13
Willy Tarreau21475e32010-05-23 08:46:08 +020014 - support for time-ordered priority queues with ability to add an offset
15 based on request matching. Each session will have one ebtree node to be
16 attached to whatever queue the session is waiting in.
Willy Tarreau1c47f852006-07-09 08:22:27 +020017
Willy Tarreau5f0eee72013-06-17 14:51:38 +020018 - make it possible to condition a timeout on an ACL (dynamic timeouts)
Willy Tarreau0a6b1fd2010-11-14 14:23:22 +010019
20 - forwardfor/originalto except with IPv6
21
Willy Tarreau3c212372013-12-17 00:35:27 +010022 - tcp-request session expect-proxy {L4|L5} if ...
Willy Tarreau5f0eee72013-06-17 14:51:38 +020023
Willy Tarreau4167c882015-10-13 18:38:15 +020024 - wait on resource (time, mem, CPU, socket, server's conn, server's rate, ...)
willy tarreau814cbc62006-05-13 13:00:29 +020025
Willy Tarreau21475e32010-05-23 08:46:08 +020026 - bandwidth limits
willy tarreau814cbc62006-05-13 13:00:29 +020027
Willy Tarreau21475e32010-05-23 08:46:08 +020028 - buddy servers to build defined lists of failovers. Detect loops during
29 the config check.
30
31 server XXX buddy YYY
32 server YYY # may replace XXX when XXX fails
33
34 - spare servers : servers which are used in LB only when a minimum farm
35 weight threshold is not satisfied anymore. Useful for inter-site LB with
36 local pref by default.
37
Willy Tarreau65ce3912010-11-24 16:21:56 +010038 - add support for event-triggered epoll, and maybe change all events handling
39 to pass through an event cache to handle temporarily disabled events.
40
41 - evaluate the changes required for multi-process+shared mem or multi-thread
42 +thread-local+fast locking.
Willy Tarreau1c47f852006-07-09 08:22:27 +020043
Willy Tarreau3139fec2014-06-19 14:49:40 +020044Old, maybe obsolete points :
45 - clarify licence by adding a 'MODULE_LICENCE("GPL")' or something equivalent.
Willy Tarreau21475e32010-05-23 08:46:08 +020046
Willy Tarreau3139fec2014-06-19 14:49:40 +020047 - 3 memory models : failsafe (prealloc), normal (current), optimal (alloc on
48 demand)
Willy Tarreau21475e32010-05-23 08:46:08 +020049
Willy Tarreau3139fec2014-06-19 14:49:40 +020050 - verify if it would be worth implementing an epoll_ctl_batch() for Linux
Willy Tarreau21475e32010-05-23 08:46:08 +020051
Willy Tarreau3139fec2014-06-19 14:49:40 +020052 - option minservers XXX : activates some spare servers when active servers
53 are insufficient
Willy Tarreau1c47f852006-07-09 08:22:27 +020054
Willy Tarreau3139fec2014-06-19 14:49:40 +020055 - initcwnd parameter for bind sockets : needed in kernel first
Willy Tarreau5f0eee72013-06-17 14:51:38 +020056
Willy Tarreau3139fec2014-06-19 14:49:40 +020057 - have a callback function which would be called after a server is selected,
58 for header post-processing. That would be mainly used to remove then add
59 the server's name or cookie in a header so that the server knows it.
Willy Tarreau941aac02014-05-10 13:34:32 +020060
Willy Tarreau5f0eee72013-06-17 14:51:38 +020061Unsorted :
62 - outgoing log load-balancing (round-robin or hash among multiple servers)
Willy Tarreau3139fec2014-06-19 14:49:40 +020063
Willy Tarreau5f0eee72013-06-17 14:51:38 +020064 - internal socket for "server XXX frontend:name"
Willy Tarreau3139fec2014-06-19 14:49:40 +020065
Willy Tarreau5f0eee72013-06-17 14:51:38 +020066 - XML inspection (content-switching for SOAP requests)
Willy Tarreau3139fec2014-06-19 14:49:40 +020067
Willy Tarreau5f0eee72013-06-17 14:51:38 +020068 - random cookie generator
Willy Tarreau3139fec2014-06-19 14:49:40 +020069
Willy Tarreau5f0eee72013-06-17 14:51:38 +020070 - fastcgi to servers
Willy Tarreau3139fec2014-06-19 14:49:40 +020071
Willy Tarreau5f0eee72013-06-17 14:51:38 +020072 - hot config reload
Willy Tarreau3139fec2014-06-19 14:49:40 +020073
Willy Tarreau5f0eee72013-06-17 14:51:38 +020074 - RHI - BGP
Willy Tarreau3139fec2014-06-19 14:49:40 +020075
Willy Tarreau5f0eee72013-06-17 14:51:38 +020076 - telnet/SSH cli
Willy Tarreau3139fec2014-06-19 14:49:40 +020077
Willy Tarreau5f0eee72013-06-17 14:51:38 +020078 - dynamic memory allocation
Willy Tarreau3139fec2014-06-19 14:49:40 +020079
Willy Tarreau5f0eee72013-06-17 14:51:38 +020080 - dynamic weights based on check response headers and traffic response time
Willy Tarreau3139fec2014-06-19 14:49:40 +020081
Willy Tarreau5f0eee72013-06-17 14:51:38 +020082 - various kernel-level acceleration (multi-accept, ssplice, epoll2...)