The TCP Proxy Buffer
Hi,
Sorry for more questions, but your articles and knowledge is best source of info about internal intricacies of TCP Express stack.
First of all it would be really great if you will consider creating article with some real life examples how to analyze traffic processed by BIG-IP and then how to convert results into fine tunning TCP profile settings. Generic info about TCP profile is great base to strat but still it so complicated matter that average person (like me) is quite soon getting lost :-(
Considering this article I wonder if my understanding of initial settings for buffers is correct:
- proxy-buffer-high = send-buffer-size = (clientside bandwidth) * (clientside RTT)
- proxy-buffer-low = (clientside bandwidth) * (serverside RTT)
- proxy-buffer-low must be sufficiently below proxy-buffer-high to avoid flapping.
proxy-buffer-high - it's based on assumption how much data theoretically BIG-IP will send before there is a chance for ACK to arrive - I guess it's theoretical because of receiver windo size that can force stopping sending more data before this value is reached?
So for client with bandwidth 25Mbps and RTT 100 ms result will be 3276800/0.1 (bandwidth converted to bytes assuming 1Kb = 1024b/100ms) = 327 000 bytes
proxy-buffer-low it's based on assumption that first BIG-IP will be able to reach backend server after RTT time, so BIG-IP should be able at least buffer this amount of data.
So for server bandwith 300Mbps and RTT 4ms result will be 157 286 bytes
I saw advices that stated to set it to 32k less that max but no more than 64k less - why. If this is true then low calculated above is way to small - isn't it?
If serverside profile receive window is 64k then backend server can theoretically send up to 64k data without ACK. Is that reason to set low to 64k less than high?
What is then relation between high-low size and receive window advertised on serverside? Is that something like that: if difference is bigger that receive window advertise receive window set, if less advertise receive window equal to difference? Probably it's more complicated but is this close to what happens?
I am not sure why proxy-buffer-high = send-buffer-size? Is that because of situation when all data send to client is ACKed (so Send Buffer is empty) and then we should have enough data in Proxy Buffer to again fill up Send Buffer?
Piotr