benzedrine.cx - Prioritizing ACKs
I've linked to this page before, but it makes a good companion to my earlier post regarding resizing your TCP buffers. Daniel Hartmeier just about single-handedly wrote OpenBSD's packet filter application after Darren Reed "clarified" his license and the OpenBSD project had to remove all of Reed's IPF code.
So I think you should listen to dhartmei's advice on Prioritizing ACKs.
Simply put: A TCP conversation involves a back-and-forth flow of packets between hosts. Data is sent in SYN packets, and the receiver confirms that that data has been received by sending ACK packets. ACK packets don't have much of a payload because they exist solely to say "OK" all the time, but a normal firewall will treat big honkin' SYN packets and wee tiny ACK packets with equal priority, usually by means of a FIFO queue. It is not inconceivable that your computer's limit to how quickly it can download is partially hampered by its ability to quickly spit back ACKs. To look at this from the other end of the barrel, you can imagine how quickly you could do a TCP transfer if ACKs were 0-sized and magically instantaneous. The closer you can get your real-world system to that magical fantasy concept of instant ACKs, the quicker your data transfers can become.
Even simpler still: Prioritizing ACKs will make your downloads faster by reducing the length of time the server waits to receive your confirmations of receipt.
No comments:
Post a Comment