Forum Discussion
Phillip_Ulberg_
Nimbostratus
Nov 11, 2009load balance MSRDP traffic
I just need a basic iRule to dirct incoming requests from 3 vip's to 2 pools. I've done this before with HTTP traffic but not rdp, I'm hoping to re-use an existing iRule, modified of course for MSRDP traffic -
when HTTP_REQUEST {
Check requested host header (set to lowercase)
switch [string tolower [HTTP::host]] {
"VIP1" {
pool TS_2008_Test_Pool
}
"VIP2" {
pool Pool_Review
}
"VIP3" {
pool Pool_Review
}
}
}
TIA,
Phillip
21 Replies
- The_Bhattman
Nimbostratus
If you are using RDP then I believe you can replace HTTP_REQUEST with CLIENT_ACCEPTED.
However, are the 3 virtual address the same address on different ports?
CB - hoolio
Cirrostratus
Hi Phillip,
I don't believe there is a concept of hostname in RDP. This doc from MS (Click here section 2.2 Message Syntax) seems to support that.
I think the client just resolves the hostname to an IP address and tries to establish a TCP connection with that IP address.
Aaron - Phillip_Ulberg_
Nimbostratus
@CB - Yes, I am looking for the correct "CLIENT_ACCEPTED" syntax, the 3 vips internally have 3 unique IP's but all respond on port 3389. - The_Bhattman
Nimbostratus
What is the condition to which pool it will choose?
CB - Phillip_Ulberg_
Nimbostratus
The condition would be the vip the client enters to initiate their RDP session. - The_Bhattman
Nimbostratus
If you have 3 VIPS then I am assuming you mean each vip connection will either go to pool 1 or 2, where Pool 1 and 2 are the same pools in each seperate VIP, correct? If that is the case then you will need something to tell you which pool (pool1 or 2) to choose from.
CB - Phillip_Ulberg_
Nimbostratus
When the client brings up mstsc.exe they will enter "new.vip.com", or "old.vip.com", or "reallyold.vip.com". new.vip.com needs to route to Pool1, old.vip.com and reallyold.vip.com need to route to Pool2. - The_Bhattman
Nimbostratus
As Aaron had stated RDP doesn't insert hostnames in any of it's headers - just Ip address. So what you are asking is from I can tell not possible.
CB - hoolio
Cirrostratus
If new.vip.com, old.vip.com and reallyold.vip.com each resolve to unique IP addresses, you could configure whichever pool you want on each virtual server. But like CB said, I don't think it's possible to determine which hostname the client used to resolve to the virtual server IP address.
Aaron - Phillip_Ulberg_
Nimbostratus
How about something like this -
when CLIENT_ACCEPTED {
TCP::collect 25
}
when CLIENT_DATA {
if { [TCP::payload 25] contains "legacy" } {
pool Pool_Review
} else {
pool TS_2008_Test_Pool
}
TCP::release
}
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects
