Greetings,

On 7/10/16 6:33 AM, Matt Esch wrote:
> I need to load balance a custom tcp protocol and wonder if HAProxy
> could be configured or extended for my use case.
>
> The protocol is a multiplexed frame-based protocol. An incoming socket
> can send frames in arbitrary order. The first 2 bytes dictate the
> frame length entirely (so max 64k per frame). The frame has a type and
> a header format, followed by a payload.
>
> The multiplexing works by assigning long ids in the frame header and
> pairing the responses based on this id.

Depending on what the id's actually look like this may or may not work,
but before I started writing a lot of C I'd try something such as
payload() per
https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#7.1.5 to
match an acl for use_backend; or stick on (using a table) via
https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#stick%20on.

Again, entirely possible that its not usable for your use-case, but if
it is it sounds much easier than trying to code another format.

- Chad
>
> A load balancer would read frames from the socket, parse the frame,
> select the correct backend from a header and route the request through
> an available backend peer. The response would be matched to the
> incoming socket based on the frame id.
>
> I expect (a lot of) c code will need to be written to support such a
> custom protocol. I'm looking for specific pointers about how to add
> such a protocol to the existing codebase in a way that would fit
> cleanly, and preferably in a modular fashion.
>
> Any hints appreciated
>
>
> ~Matt
>
>


Reply via email to