2012-04-19 1 views
1

J'ai une application où deux ordinateurs sont très proches - généralement à quelques pieds l'un de l'autre.Comment réduire le nombre de TCP ACK lors d'un transfert de masse hautement fiable

J'ai une connexion TCP entre les applications sur les deux ordinateurs. Le serveur a été écrit en C sous Linux, le client sous Windows utilisant C# avec TCPClient.

Sur cette socket, je transfère de très grandes charges utiles, souvent des gigaoctets à la fois. Lorsque j'utilise Wireshark pour surveiller la communication, je constate qu'environ 66% des paquets transmis sont des ACK. Chacun des paquets de charge utile tend à être d'environ 5k. Ainsi, le pourcentage de données dans ACK est très faible, juste un pour cent ou deux.

Dois-je me préoccuper du nombre d'ACK? Je ne suis pas préoccupé par la perte de paquets, je m'attends à ce que la connexion soit de haute qualité en termes de perte de paquets.

Y at-il quelque chose que je peux (ou devrais?) Faire pour réduire le nombre d'ACK?

+2

Comment voyez-vous des paquets de 5 Ko de longueur? Comme c'est bien au-dessus de la taille habituelle de MTU et de la taille de segment de TCP? Je suppose également que les ACK sont envoyés dans une direction (du côté recevant les données)? Droite? – selbie

+0

@selbie - peut-être que ce n'est pas ethernet phy? Peut-être que c'est un lien de fibre étrange? –

Répondre

2

Ce que vous voyez probablement est le récepteur accusant réception des transmissions de l'expéditeur. Le récepteur doit utiliser des paquets uniquement ACK, car il n'a rien d'autre à envoyer (l'expéditeur envoie également des ACK - chaque paquet TCP contient un ACK).

Je ne pense pas que vous devriez être dérangé par le nombre d'ACK - l'expéditeur ne les attend pas si sa taille de fenêtre est assez grande. La question que vous devriez vous poser est: est-ce que j'obtiens le débit que je devrais obtenir sur ma vitesse LAN?

Questions connexes