How to increase ACK speed for TCP packets in Platform SDK Windows Sockets.

  • Thread starter Thread starter Ricardo Vazquez
  • Start date Start date
R

Ricardo Vazquez

I have implemented a Receiver-SMTP server for file transferring between a PC
and a voice-mail machine which already had a Sender-SMTP inside.
It works beautiful BUT slow.
The voice-mail machine sends TCP packets of exactly 1400 bytes and waits for
ACK; (due to hardware restrictions it is not able to do it with a higher
window level, I mean, it is not able to keep on sending packets until the
arrival of that ACK).
But the PC seems to be waiting for longer packets, so it waits for 200
miliseconds (time-out) before giving that ACK.
I'm using Platform SDK Windows Sockets.

My question is:

Is there any way to fit the TCP packet size I'm waiting, so that after
receiving that exact amount of bytes the ACK is immediately fired? Or is it
configured by the operating system and not programmatically changeable?
Is there any other way to increase speed for that ACK sending?

Thank you!!

Ricardo Vázquez.
Madrid, Spain.
 
Yes, I do.

You can see my problem get solved changing Windows 2000 TcpIp settings in
the Registry:
This is the answer I finally found to my question:
Delayed Acknowledgments
As specified in RFC 1122, TCP uses delayed acknowledgments (ACKs) to reduce
the number of packets sent on the media. Rather than sending an
acknowledgment for each TCP segment received, Windows 2000 TCP takes a
common approach to implementing delayed ACKs. As data is received by TCP on
a given connection, it only sends an acknowledgment back if one of the
following conditions is met:

a.. No ACK was sent for the previous segment received.
b.. A segment is received, but no other segment arrives within 200
milliseconds for that connection.
Normally an ACK is sent for every other TCP segment received on a
connection, unless the delayed ACK timer (200 milliseconds) expires. The
delayed ACK timer for each interface can be adjusted by setting the value of
the TCPDelAckTicks registry entry
(HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
\<interface>), which was first introduced in Microsoft® Windows NT® version
4.0, Service Pack 4.
 
Back
Top