2014-06-19 14:49:40 +02:00
Medium-long term roadmap - 2014/06/19
2006-06-26 02:48:02 +02:00
2010-05-23 08:46:08 +02:00
Legend: '+' = done, '-' = todo, '*' = done except doc
2006-06-26 02:48:02 +02:00
2014-06-19 14:49:40 +02:00
1.6 or later :
2010-11-24 16:21:56 +01:00
- POST parameter extraction and size/speed measurement to use in ACLs
2010-11-14 14:23:22 +01:00
2010-05-23 08:46:08 +02:00
- return-html code xxx [ file "xxx" | text "xxx" ] if <acl>
2006-05-13 13:00:29 +02:00
2010-11-24 16:21:56 +01:00
- return-raw [ file "xxx" | text "xxx" ] if <acl>
2010-11-14 14:23:22 +01:00
- avg connect time, response time, connect errors, response errors in stats
2010-11-24 16:21:56 +01:00
- add the ability to only dump response errors to more easily detect
anomalies without being polluted with attacks in requests.
2010-11-14 14:23:22 +01:00
- have multi-criteria analysers which subscribe to req flags, rsp flags, and
stream interface changes. This would result in a single analyser to wait
for the end of data transfer in HTTP.
2010-05-23 08:46:08 +02:00
- implement support for "connection freeze" after accept. A list of frozen
connections should be maintained so that it is possible to recycle them
when new file descriptors are required.
2006-05-13 13:00:29 +02:00
2010-05-23 08:46:08 +02:00
- support for time-ordered priority queues with ability to add an offset
based on request matching. Each session will have one ebtree node to be
attached to whatever queue the session is waiting in.
2006-07-09 08:22:27 +02:00
2010-11-14 14:23:22 +01:00
- add a flag in logs to indicate keep-alive requests ?
2010-05-23 08:46:08 +02:00
2013-06-17 14:51:38 +02:00
- make it possible to condition a timeout on an ACL (dynamic timeouts)
2010-11-14 14:23:22 +01:00
- forwardfor/originalto except with IPv6
- remove lots of remaining Alert() calls or ensure that they forward to
send_log() after the fork.
2013-06-17 14:51:38 +02:00
- tcp-request session
2013-12-17 00:35:27 +01:00
- tcp-request session expect-proxy {L4|L5} if ...
2013-06-17 14:51:38 +02:00
2013-12-17 00:35:27 +01:00
- http-request track-sc* to avoid having the ugly "if !HTTP" in tcp-request
2013-06-17 14:51:38 +02:00
- wait on resource (time, mem, CPU, socket, buffers, server's conn, server's rate, ...)
2010-05-23 08:46:08 +02:00
- bandwidth limits
2006-07-09 08:22:27 +02:00
2010-05-23 08:46:08 +02:00
- create internal services and make stats, CLI, etc... part of that.
2006-07-09 08:22:27 +02:00
2010-05-23 08:46:08 +02:00
- buddy servers to build defined lists of failovers. Detect loops during
the config check.
server XXX buddy YYY
server YYY # may replace XXX when XXX fails
- spare servers : servers which are used in LB only when a minimum farm
weight threshold is not satisfied anymore. Useful for inter-site LB with
local pref by default.
2010-11-24 16:21:56 +01:00
- add support for event-triggered epoll, and maybe change all events handling
to pass through an event cache to handle temporarily disabled events.
- evaluate the changes required for multi-process+shared mem or multi-thread
+thread-local+fast locking.
2010-05-23 08:46:08 +02:00
2011-03-01 21:28:51 +01:00
- ability to decide whether to drain or kill sessions when putting a server
to maintenance mode => requires a per-server session list and the change
above.
2014-06-19 14:49:40 +02:00
Old, maybe obsolete points :
- clarify licence by adding a 'MODULE_LICENCE("GPL")' or something equivalent.
2010-05-23 08:46:08 +02:00
2014-06-19 14:49:40 +02:00
- 3 memory models : failsafe (prealloc), normal (current), optimal (alloc on
demand)
2010-05-23 08:46:08 +02:00
2014-06-19 14:49:40 +02:00
- implement support for event-triggerred epoll()
2010-05-23 08:46:08 +02:00
2014-06-19 14:49:40 +02:00
- verify if it would be worth implementing an epoll_ctl_batch() for Linux
2010-05-23 08:46:08 +02:00
2014-06-19 14:49:40 +02:00
- option minservers XXX : activates some spare servers when active servers
are insufficient
2006-07-09 08:22:27 +02:00
2014-06-19 14:49:40 +02:00
- new keyword 'check' : check http xxx, check smtp xxx, check ssl-hello
2006-07-09 08:22:27 +02:00
2014-06-19 14:49:40 +02:00
- initcwnd parameter for bind sockets : needed in kernel first
2013-06-17 14:51:38 +02:00
2014-06-19 14:49:40 +02:00
- have a callback function which would be called after a server is selected,
for header post-processing. That would be mainly used to remove then add
the server's name or cookie in a header so that the server knows it.
2014-05-10 13:34:32 +02:00
2013-06-17 14:51:38 +02:00
Unsorted :
- outgoing log load-balancing (round-robin or hash among multiple servers)
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- internal socket for "server XXX frontend:name"
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- HTTP/2.0
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- DNS requests on health checks
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- XML inspection (content-switching for SOAP requests)
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- sync all stick-tables data, not just serverid.
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- request, session and user variables
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- random cookie generator
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- external checker
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- fastcgi to servers
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- hot config reload
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- RAM-based cache for small files
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- RHI - BGP
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- telnet/SSH cli
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- dynamic memory allocation
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- dynamic weights based on check response headers and traffic response time
2014-06-19 14:49:40 +02:00
2013-06-17 14:51:38 +02:00
- various kernel-level acceleration (multi-accept, ssplice, epoll2...)