Hi Shawn,
You should be able to load balance domain controller requests with a virtual server. I'd start with a virtual server which handles all protocols and a single pool member both configured on port 0. You can use an iRule to log the client IP:port and destination IP:port in CLIENT_ACCEPTED. You can then track which ports the client is using and then lock down the ports the VS accepts traffic on once it's working. Here's an example:
when CLIENT_ACCEPTED {
Check the protocol for this connection
switch [IP::protocol] {
6 {
TCP connection
log local0. "[IP::client_addr]:[TCP::client_port]: TCP connection to [IP::local_addr]:[TCP::local_port]"
}
17 {
UDP connection
log local0. "[IP::client_addr]:[UDP::client_port]: UDP connection to [IP::local_addr]:[UDP::local_port]"
}
default {
Not TCP or UDP
log local0. "[IP::client_addr]: [IP::protocol] connection to [IP::local_addr]"
}
}
}
Once you have this working for a single DC pool member, you could add a second pool member and a source address persistence profile to the VS to ensure clients are persisted to the same DC.
Aaron