I see your point about using pools in lieu of doing a redirects to other Virtuals. I'll need to check on whether that would be acceptable but let's suppose that it is, would the following be doable using an iRule:
Assume we have a Virtual (Virtual-A) and 3 pools (pool-A, pool-B, and pool-C)
1. A request comes into the Virtual-A for www.abc.com
2. If the cookie "cookieB" exists then sendto pool pool-B
3. If the cookie "cookieC" exists then sendto pool pool-C
4. No cookie was found as indicated. Now determine if this is a NEW session to www.abc.com e.g. someone typed in their browser "www.abc.com / someone hitting the default page, etc. What criteria determines a new session?
5. If it's not a new connection send to pool pool-A
6. If it is a new session then we want to determine, based on percentages of traffic, which pool to send this new session to. As an example to accomplish this we would want to do the following (you may have a better way to do this):
a. Run a Random Number Generator that returns a value between 1 and 100.
b. If the value > 10 then send to pool pool-A (e.g. we want 90% of new sessions go to pool-A) - exit
c. If the value is >=7 the sendto pool-B (e.g. we want 4% of new sessions go to pool-B - Drop a cookie "pool-B" (for future returning traffic) and may want to rewrite the host header - exit
d. Else send to pool-C (remaining value 1-6) so 6% of new sessions go to pool-C - Drop a cookie "pool-C" (for future returning traffic) and may want to rewrite the host header - exit