Hi Berk,
I'm really intereted in this. I have a load of legacy tcp session
based load balancing with I'd love to migrate to an OpenBSD/pf based
solution. Do you have a patch with applies cleanly to 4.0 ?
/Pete
On 26. okt. 2006, at 22.16, Berk D. Demir wrote:
Pete Vickers wrote:
1) When using sticky-address in the rdr rules client-server
associations are added to the internal Sources table.
It is impossible to remove entries for a single backend from this
table. If a backend fails and is removed from the rdr destination
table this table will have to be flushed, making all clients
end up on
new backends, wich is unacceptable in many configurations.
If this table is not cleared then the rdr destination table is
not
inspected for client IP's found in the Sources table. These
clients
will still be sent to the failed and removed backend.
Preferably entries could be removed from this table based on
source-IP and backend-IP:backend-port, and maybe even the virtual
service IP:port or a pf rule number.
2) TCP sessions to a failed backend will continue to exist after the
backend is removed from the rdr destination table. As of today
these
sessions can be removed with pfctl by specifying the source and
destination IP addresses. Since different services can run on
differerent port numbers on the same machines it should be
possible to
specify a destination port number as well.
I guess that if a backend dies then the client is notified
about this
just as if it had been speaking directly to the backend, so it
might
not be necessary to clean out these sessions at all, and maybe
even
the tcpdrop tool will do the trick?
Anyway, main issue is with removing single sessions from the
internal Sources table (as it is called in pfctl(8)).
I've submitted a patch, adding a new ioctl to pf and an
implementation to clear src-track entries likewise states (-k
1.1.1.1 -k 2.3.5.0/23).
A patched build (smt. between 4.0 and -current) is running in many
DCs in my county right now.
pfctl.c changed after my submission. I have to fix the patches and
post here in case it helps.
It needs to get OKs from developers to get into the tree. Last
touch with a developer about this patch was with dhartmei on Jul 25.
(I'll post it tomorrow)