Hi all,

here it is, the first development version for branch 1.4.

This one is the same as 1.3.19 + the following goodies :

  - linux-specific optimizations to save up to 3 packets per
    connection (2 on the client side, 1 on the server side).
    The client-side savings can reduce bandwidth requirements
    by 5-10% on sites which use a lot of small requests, and
    reduce latency by about as much. See "option tcp-smart-accept"
    and "tcp-smart-connect" (for the server side). This also
    improves max session rate by about as much since we're already
    bound by system time.

  - support for TCP MSS adjustment for listeners : initially thought
    a long time ago in order to help with clients running poor PPPoE
    configurations, it happens to be helpful for people running on
    gigabit with jumbo frames on the LAN but who want to limit their
    frames to 1.5 kB to the net.

  - improved the way protocol analysers are called so that we can 
    have as many of them as we want which are permanently attached
    to the stream even during data forwarding. This will help a lot 
    for implementing HTTP keepalive as well as other protocols which
    require step-by-step analysis (eg: POP, SMTP, FTP, ...). This is
    not a user-visible change though.

  - split of the HTTP analyser into multiple stages. Not user-visible
    either though it will help implement the "use-server" directive.
    Some more splitting is still required.

  - support for the use_backend statement in TCP frontends, allowing
    to switch a connection to a backend or another depending on any
    criteria (protocol, IP, ...).

  - ability to detect HTTP protocol in TCP ACLs and to use any HTTP-specific
    matching (eg: URL, header, ...) in TCP rules. This allows you to
    run HTTPS+HTTP+another protocol on the same port and switch to the
    appropriate backend depending on what is detected. In order to achieve
    this, the ACLs now report to the frontend what kind of information they
    need.

  - ability to switch to an HTTP backend from a TCP frontend. This allows
    normal HTTP processing (persistence, ...) after an HTTP request has
    been detected in a TCP connection.

  - ACL support for matching RDP cookies. For instance you can allow some
    users to connect and reject others. Or send some users to a given farm
    and others to the rest.

  - Persistence on RDP cookie : when an RDP cookie is detected using the ACL
    above, it is possible to extract it and find the associated server, then
    direct the connection to this server. Thus you don't depend on the IP
    address, which is handy when users come in through proxies or are
    masqueraded by their site's router.

  - Balance on RDP cookie : this permits hashing of an RDP cookie (eg:
    username) so that it provides poor man's persistence, but may be
    useful for some scenarios.

  - CLF log format : some users are heavily relying on the CLF format due
    to some crappy, non-customizable, log analysers. Now, adding the "clf"
    keyword after "option httplog" will switch the log output to CLF, and
    will append all the non-CLF information (timers, ...) in individual
    extra columns.

Note: the last 4 points (RDP and CLF) are internal developments which were
      realized at Exceliance and contributed back to HAProxy. I'm saying it
      because there aren't that many companies who contribute code back, and
      I'd like to incite other ones to do so.


Since this version is not much different from 1.3.19 (except the new features),
it is relatively stable. It's been running fine in production for a few weeks
not on several sites (you know who you are), so those who need some of those
features can reasonably give it a try.

Oh, BTW, it's here :

   http://haproxy.1wt.eu/download/1.4/src/

Have fun,
Willy


Reply via email to