| 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 |
| |