blob: f22363e8b4e3232c42e4e7fe140326bfd8d08bde [file] [log] [blame]
Willy Tarreau3139fec2014-06-19 14:49:40 +02001Medium-long term roadmap - 2014/06/19
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 Tarreau3139fec2014-06-19 14:49:40 +020051.6 or later :
Willy Tarreau65ce3912010-11-24 16:21:56 +01006 - POST parameter extraction and size/speed measurement to use in ACLs
Willy Tarreau0a6b1fd2010-11-14 14:23:22 +01007
Willy Tarreau21475e32010-05-23 08:46:08 +02008 - return-html code xxx [ file "xxx" | text "xxx" ] if <acl>
willy tarreau1f431b52006-05-21 14:46:15 +02009
Willy Tarreau65ce3912010-11-24 16:21:56 +010010 - return-raw [ file "xxx" | text "xxx" ] if <acl>
11
Willy Tarreau0a6b1fd2010-11-14 14:23:22 +010012 - avg connect time, response time, connect errors, response errors in stats
13
Willy Tarreau65ce3912010-11-24 16:21:56 +010014 - add the ability to only dump response errors to more easily detect
15 anomalies without being polluted with attacks in requests.
16
Willy Tarreau0a6b1fd2010-11-14 14:23:22 +010017 - have multi-criteria analysers which subscribe to req flags, rsp flags, and
18 stream interface changes. This would result in a single analyser to wait
19 for the end of data transfer in HTTP.
20
Willy Tarreau21475e32010-05-23 08:46:08 +020021 - implement support for "connection freeze" after accept. A list of frozen
22 connections should be maintained so that it is possible to recycle them
23 when new file descriptors are required.
Willy Tarreau1c47f852006-07-09 08:22:27 +020024
Willy Tarreau21475e32010-05-23 08:46:08 +020025 - support for time-ordered priority queues with ability to add an offset
26 based on request matching. Each session will have one ebtree node to be
27 attached to whatever queue the session is waiting in.
Willy Tarreau1c47f852006-07-09 08:22:27 +020028
Willy Tarreau0a6b1fd2010-11-14 14:23:22 +010029 - add a flag in logs to indicate keep-alive requests ?
willy tarreau814cbc62006-05-13 13:00:29 +020030
Willy Tarreau5f0eee72013-06-17 14:51:38 +020031 - make it possible to condition a timeout on an ACL (dynamic timeouts)
Willy Tarreau0a6b1fd2010-11-14 14:23:22 +010032
33 - forwardfor/originalto except with IPv6
34
Willy Tarreau0a6b1fd2010-11-14 14:23:22 +010035 - remove lots of remaining Alert() calls or ensure that they forward to
36 send_log() after the fork.
37
Willy Tarreau5f0eee72013-06-17 14:51:38 +020038 - tcp-request session
39
Willy Tarreau3c212372013-12-17 00:35:27 +010040 - tcp-request session expect-proxy {L4|L5} if ...
Willy Tarreau5f0eee72013-06-17 14:51:38 +020041
Willy Tarreau3c212372013-12-17 00:35:27 +010042 - http-request track-sc* to avoid having the ugly "if !HTTP" in tcp-request
Willy Tarreau5f0eee72013-06-17 14:51:38 +020043
Willy Tarreau5f0eee72013-06-17 14:51:38 +020044 - wait on resource (time, mem, CPU, socket, buffers, server's conn, server's rate, ...)
willy tarreau814cbc62006-05-13 13:00:29 +020045
Willy Tarreau21475e32010-05-23 08:46:08 +020046 - bandwidth limits
willy tarreau814cbc62006-05-13 13:00:29 +020047
Willy Tarreau21475e32010-05-23 08:46:08 +020048 - create internal services and make stats, CLI, etc... part of that.
Willy Tarreau1c47f852006-07-09 08:22:27 +020049
Willy Tarreau21475e32010-05-23 08:46:08 +020050 - buddy servers to build defined lists of failovers. Detect loops during
51 the config check.
52
53 server XXX buddy YYY
54 server YYY # may replace XXX when XXX fails
55
56 - spare servers : servers which are used in LB only when a minimum farm
57 weight threshold is not satisfied anymore. Useful for inter-site LB with
58 local pref by default.
59
Willy Tarreau65ce3912010-11-24 16:21:56 +010060 - add support for event-triggered epoll, and maybe change all events handling
61 to pass through an event cache to handle temporarily disabled events.
62
63 - evaluate the changes required for multi-process+shared mem or multi-thread
64 +thread-local+fast locking.
Willy Tarreau1c47f852006-07-09 08:22:27 +020065
Willy Tarreaub5495552011-03-01 21:28:51 +010066 - ability to decide whether to drain or kill sessions when putting a server
67 to maintenance mode => requires a per-server session list and the change
68 above.
69
Willy Tarreau3139fec2014-06-19 14:49:40 +020070Old, maybe obsolete points :
71 - clarify licence by adding a 'MODULE_LICENCE("GPL")' or something equivalent.
Willy Tarreau21475e32010-05-23 08:46:08 +020072
Willy Tarreau3139fec2014-06-19 14:49:40 +020073 - 3 memory models : failsafe (prealloc), normal (current), optimal (alloc on
74 demand)
Willy Tarreau21475e32010-05-23 08:46:08 +020075
Willy Tarreau3139fec2014-06-19 14:49:40 +020076 - implement support for event-triggerred epoll()
Willy Tarreau21475e32010-05-23 08:46:08 +020077
Willy Tarreau3139fec2014-06-19 14:49:40 +020078 - verify if it would be worth implementing an epoll_ctl_batch() for Linux
Willy Tarreau21475e32010-05-23 08:46:08 +020079
Willy Tarreau3139fec2014-06-19 14:49:40 +020080 - option minservers XXX : activates some spare servers when active servers
81 are insufficient
Willy Tarreau1c47f852006-07-09 08:22:27 +020082
Willy Tarreau3139fec2014-06-19 14:49:40 +020083 - new keyword 'check' : check http xxx, check smtp xxx, check ssl-hello
Willy Tarreau1c47f852006-07-09 08:22:27 +020084
Willy Tarreau3139fec2014-06-19 14:49:40 +020085 - initcwnd parameter for bind sockets : needed in kernel first
Willy Tarreau5f0eee72013-06-17 14:51:38 +020086
Willy Tarreau3139fec2014-06-19 14:49:40 +020087 - have a callback function which would be called after a server is selected,
88 for header post-processing. That would be mainly used to remove then add
89 the server's name or cookie in a header so that the server knows it.
Willy Tarreau941aac02014-05-10 13:34:32 +020090
Willy Tarreau5f0eee72013-06-17 14:51:38 +020091Unsorted :
92 - outgoing log load-balancing (round-robin or hash among multiple servers)
Willy Tarreau3139fec2014-06-19 14:49:40 +020093
Willy Tarreau5f0eee72013-06-17 14:51:38 +020094 - internal socket for "server XXX frontend:name"
Willy Tarreau3139fec2014-06-19 14:49:40 +020095
Willy Tarreau5f0eee72013-06-17 14:51:38 +020096 - HTTP/2.0
Willy Tarreau3139fec2014-06-19 14:49:40 +020097
Willy Tarreau5f0eee72013-06-17 14:51:38 +020098 - DNS requests on health checks
Willy Tarreau3139fec2014-06-19 14:49:40 +020099
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200100 - XML inspection (content-switching for SOAP requests)
Willy Tarreau3139fec2014-06-19 14:49:40 +0200101
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200102 - sync all stick-tables data, not just serverid.
Willy Tarreau3139fec2014-06-19 14:49:40 +0200103
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200104 - request, session and user variables
Willy Tarreau3139fec2014-06-19 14:49:40 +0200105
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200106 - random cookie generator
Willy Tarreau3139fec2014-06-19 14:49:40 +0200107
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200108 - external checker
Willy Tarreau3139fec2014-06-19 14:49:40 +0200109
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200110 - fastcgi to servers
Willy Tarreau3139fec2014-06-19 14:49:40 +0200111
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200112 - hot config reload
Willy Tarreau3139fec2014-06-19 14:49:40 +0200113
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200114 - RAM-based cache for small files
Willy Tarreau3139fec2014-06-19 14:49:40 +0200115
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200116 - RHI - BGP
Willy Tarreau3139fec2014-06-19 14:49:40 +0200117
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200118 - telnet/SSH cli
Willy Tarreau3139fec2014-06-19 14:49:40 +0200119
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200120 - dynamic memory allocation
Willy Tarreau3139fec2014-06-19 14:49:40 +0200121
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200122 - dynamic weights based on check response headers and traffic response time
Willy Tarreau3139fec2014-06-19 14:49:40 +0200123
Willy Tarreau5f0eee72013-06-17 14:51:38 +0200124 - various kernel-level acceleration (multi-accept, ssplice, epoll2...)