blob: 2231716121b9a6781f100923acfd0f72257285d8 [file] [log] [blame]
Willy Tarreau21475e32010-05-23 08:46:08 +02001Medium-long term roadmap - 2010/04/10
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 Tarreau21475e32010-05-23 08:46:08 +020051.5 (ETA 2010/12/31) :
6 - server-side HTTP keepalive
willy tarreau814cbc62006-05-13 13:00:29 +02007
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 Tarreau21475e32010-05-23 08:46:08 +020010 - return-raw [ file "xxx" | text "xxx" ] if <acl>
willy tarreau814cbc62006-05-13 13:00:29 +020011
Willy Tarreau21475e32010-05-23 08:46:08 +020012 - add support for client-side and server-side unix sockets
willy tarreau38d79062006-05-21 14:47:13 +020013
Willy Tarreau21475e32010-05-23 08:46:08 +020014 - try to remove srv==NULL internally and assign a dummy server to each backend
15 for dispatch, http_proxy and transparent modes.
willy tarreau814cbc62006-05-13 13:00:29 +020016
Willy Tarreau21475e32010-05-23 08:46:08 +020017 - rename L4 acls as L6 ACLs when some content is involved
willy tarreau814cbc62006-05-13 13:00:29 +020018
Willy Tarreau21475e32010-05-23 08:46:08 +020019 - add new L4 ACL checks immediately after accept, before even allocating the
20 buffers ("connection {accept|reject|delay|freeze} {if|unless}").
willy tarreau814cbc62006-05-13 13:00:29 +020021
Willy Tarreau21475e32010-05-23 08:46:08 +020022 - implement support for "connection freeze" after accept. A list of frozen
23 connections should be maintained so that it is possible to recycle them
24 when new file descriptors are required.
Willy Tarreau1c47f852006-07-09 08:22:27 +020025
Willy Tarreau21475e32010-05-23 08:46:08 +020026 - support for time-ordered priority queues with ability to add an offset
27 based on request matching. Each session will have one ebtree node to be
28 attached to whatever queue the session is waiting in.
Willy Tarreau1c47f852006-07-09 08:22:27 +020029
Willy Tarreau21475e32010-05-23 08:46:08 +020030 - assign a nice priority based on ACLs.
Willy Tarreaubaaee002006-06-26 02:48:02 +020031
Willy Tarreau21475e32010-05-23 08:46:08 +020032 - pattern extraction is needed for ACLs and stickiness. It would work like
33 this :
Willy Tarreaubaaee002006-06-26 02:48:02 +020034
Willy Tarreau21475e32010-05-23 08:46:08 +020035 acl <name> <pattern> [-i] <values>...
Willy Tarreaubaaee002006-06-26 02:48:02 +020036
Willy Tarreau21475e32010-05-23 08:46:08 +020037 All ACL fetch method currently available would be transformed into pattern
38 extraction methods. That way we could stick on hdr(x-forwarded-for) or use
39 source 0.0.0.0 usesrc <pattern> (such as "hdr_ip(headername)"). Note that
40 ACLs sometimes need iterative matching/extraction.
Willy Tarreaubaaee002006-06-26 02:48:02 +020041
Willy Tarreau21475e32010-05-23 08:46:08 +020042 - add support for complex pattern extraction rules :
Willy Tarreaubaaee002006-06-26 02:48:02 +020043
Willy Tarreau21475e32010-05-23 08:46:08 +020044 pattern = <pattern_term>
45 | '{' pattern_expr '}'
willy tarreau814cbc62006-05-13 13:00:29 +020046
Willy Tarreau21475e32010-05-23 08:46:08 +020047 pattern_expr = <pattern_term> [ <transform> ... ]
willy tarreau814cbc62006-05-13 13:00:29 +020048
Willy Tarreau21475e32010-05-23 08:46:08 +020049 - support loading data sets from files
50 + present/not present (eg: netmasks)
51 - pattern conversion per prefixes. Eg: convert src IP to country.
willy tarreau814cbc62006-05-13 13:00:29 +020052
Willy Tarreau21475e32010-05-23 08:46:08 +020053 - make new patterns available based on stickiness matching :
54 - number of entries in table for the matched pattern
55 - same after having increased the match counter
willy tarreau814cbc62006-05-13 13:00:29 +020056
Willy Tarreau21475e32010-05-23 08:46:08 +020057 - add support for concurrency match in tables
58 - just like stickiness, but counted per session (or request), increased
59 on first match and decreased at end of request or connection. This
60 requires that the session has a list of matched terms that must be
61 released at the end.
willy tarreau814cbc62006-05-13 13:00:29 +020062
Willy Tarreau21475e32010-05-23 08:46:08 +0200631.6 (will probably change anyway) :
64 - wait on resource (mem, socket, server's conn, server's rate, ...)
willy tarreau814cbc62006-05-13 13:00:29 +020065
Willy Tarreau21475e32010-05-23 08:46:08 +020066 - bandwidth limits
willy tarreau814cbc62006-05-13 13:00:29 +020067
Willy Tarreau21475e32010-05-23 08:46:08 +020068 - create internal services and make stats, CLI, etc... part of that.
Willy Tarreau1c47f852006-07-09 08:22:27 +020069
Willy Tarreau21475e32010-05-23 08:46:08 +020070 - use_server ... if ...
71
72 - buddy servers to build defined lists of failovers. Detect loops during
73 the config check.
74
75 server XXX buddy YYY
76 server YYY # may replace XXX when XXX fails
77
78 - spare servers : servers which are used in LB only when a minimum farm
79 weight threshold is not satisfied anymore. Useful for inter-site LB with
80 local pref by default.
81
Willy Tarreau1c47f852006-07-09 08:22:27 +020082
Willy Tarreau21475e32010-05-23 08:46:08 +020083Old, maybe obsolete points
84 - clarify licence by adding a 'MODULE_LICENCE("GPL")' or something equivalent.
85
86 - 3 memory models : failsafe (prealloc), normal (current), optimal (alloc on
87 demand)
88
89 - ability to assign a task priority based on L7 matching
Willy Tarreau1c47f852006-07-09 08:22:27 +020090
Willy Tarreau21475e32010-05-23 08:46:08 +020091 - implement support for event-triggerred epoll()
92
93 - verify if it would be worth implementing an epoll_ctl_batch() for Linux
94
95 - option minservers XXX : activates some spare servers when active servers
96 are insufficient
Willy Tarreau1c47f852006-07-09 08:22:27 +020097
98 - new keyword 'check' : check http xxx, check smtp xxx, check ssl-hello
99