125 lines
3.9 KiB
Plaintext
125 lines
3.9 KiB
Plaintext
Medium-long term roadmap - 2014/06/19
|
|
|
|
Legend: '+' = done, '-' = todo, '*' = done except doc
|
|
|
|
1.6 or later :
|
|
- POST parameter extraction and size/speed measurement to use in ACLs
|
|
|
|
- return-html code xxx [ file "xxx" | text "xxx" ] if <acl>
|
|
|
|
- return-raw [ file "xxx" | text "xxx" ] if <acl>
|
|
|
|
- avg connect time, response time, connect errors, response errors in stats
|
|
|
|
- add the ability to only dump response errors to more easily detect
|
|
anomalies without being polluted with attacks in requests.
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
|
|
- add a flag in logs to indicate keep-alive requests ?
|
|
|
|
- make it possible to condition a timeout on an ACL (dynamic timeouts)
|
|
|
|
- forwardfor/originalto except with IPv6
|
|
|
|
- remove lots of remaining Alert() calls or ensure that they forward to
|
|
send_log() after the fork.
|
|
|
|
- tcp-request session
|
|
|
|
- tcp-request session expect-proxy {L4|L5} if ...
|
|
|
|
- http-request track-sc* to avoid having the ugly "if !HTTP" in tcp-request
|
|
|
|
- wait on resource (time, mem, CPU, socket, buffers, server's conn, server's rate, ...)
|
|
|
|
- bandwidth limits
|
|
|
|
- create internal services and make stats, CLI, etc... part of that.
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
|
|
Old, maybe obsolete points :
|
|
- clarify licence by adding a 'MODULE_LICENCE("GPL")' or something equivalent.
|
|
|
|
- 3 memory models : failsafe (prealloc), normal (current), optimal (alloc on
|
|
demand)
|
|
|
|
- implement support for event-triggerred epoll()
|
|
|
|
- verify if it would be worth implementing an epoll_ctl_batch() for Linux
|
|
|
|
- option minservers XXX : activates some spare servers when active servers
|
|
are insufficient
|
|
|
|
- new keyword 'check' : check http xxx, check smtp xxx, check ssl-hello
|
|
|
|
- initcwnd parameter for bind sockets : needed in kernel first
|
|
|
|
- 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.
|
|
|
|
Unsorted :
|
|
- outgoing log load-balancing (round-robin or hash among multiple servers)
|
|
|
|
- internal socket for "server XXX frontend:name"
|
|
|
|
- HTTP/2.0
|
|
|
|
- DNS requests on health checks
|
|
|
|
- XML inspection (content-switching for SOAP requests)
|
|
|
|
- sync all stick-tables data, not just serverid.
|
|
|
|
- request, session and user variables
|
|
|
|
- random cookie generator
|
|
|
|
- external checker
|
|
|
|
- fastcgi to servers
|
|
|
|
- hot config reload
|
|
|
|
- RAM-based cache for small files
|
|
|
|
- RHI - BGP
|
|
|
|
- telnet/SSH cli
|
|
|
|
- dynamic memory allocation
|
|
|
|
- dynamic weights based on check response headers and traffic response time
|
|
|
|
- various kernel-level acceleration (multi-accept, ssplice, epoll2...)
|