blob: 2231716121b9a6781f100923acfd0f72257285d8 [file] [log] [blame]
Medium-long term roadmap - 2010/04/10
Legend: '+' = done, '-' = todo, '*' = done except doc
1.5 (ETA 2010/12/31) :
- server-side HTTP keepalive
- return-html code xxx [ file "xxx" | text "xxx" ] if <acl>
- return-raw [ file "xxx" | text "xxx" ] if <acl>
- add support for client-side and server-side unix sockets
- try to remove srv==NULL internally and assign a dummy server to each backend
for dispatch, http_proxy and transparent modes.
- rename L4 acls as L6 ACLs when some content is involved
- add new L4 ACL checks immediately after accept, before even allocating the
buffers ("connection {accept|reject|delay|freeze} {if|unless}").
- 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.
- assign a nice priority based on ACLs.
- pattern extraction is needed for ACLs and stickiness. It would work like
this :
acl <name> <pattern> [-i] <values>...
All ACL fetch method currently available would be transformed into pattern
extraction methods. That way we could stick on hdr(x-forwarded-for) or use
source 0.0.0.0 usesrc <pattern> (such as "hdr_ip(headername)"). Note that
ACLs sometimes need iterative matching/extraction.
- add support for complex pattern extraction rules :
pattern = <pattern_term>
| '{' pattern_expr '}'
pattern_expr = <pattern_term> [ <transform> ... ]
- support loading data sets from files
+ present/not present (eg: netmasks)
- pattern conversion per prefixes. Eg: convert src IP to country.
- make new patterns available based on stickiness matching :
- number of entries in table for the matched pattern
- same after having increased the match counter
- add support for concurrency match in tables
- just like stickiness, but counted per session (or request), increased
on first match and decreased at end of request or connection. This
requires that the session has a list of matched terms that must be
released at the end.
1.6 (will probably change anyway) :
- wait on resource (mem, socket, server's conn, server's rate, ...)
- bandwidth limits
- create internal services and make stats, CLI, etc... part of that.
- use_server ... if ...
- 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.
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)
- ability to assign a task priority based on L7 matching
- 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