J'ai une application embarquée qui a cette exigence: Un flux de réseau TCP sortant a besoin d'une priorité absolue absolue sur tout le trafic réseau sortant. Si des paquets attendent d'être transférés sur ce flux, ils doivent être les prochains paquets envoyés. Période. La mesure du succès est la suivante: Mesurez la latence de haute priorité quand il n'y a pas de trafic d'arrière-plan. Ajoutez du trafic d'arrière-plan et mesurez à nouveau. La différence de latence devrait être le temps d'envoyer un paquet de faible priorité. Avec un lien de 100Mbps, mtu = 1500, soit environ 150 us. Mon système de test a deux boîtiers Linux reliés par un câble croisé. J'ai essayé beaucoup, beaucoup de choses, et bien que j'aie considérablement amélioré la latence, n'ai pas atteint l'objectif (je vois actuellement 5 ms de latence ajoutée avec le trafic d'arrière-plan). J'ai déjà posté une autre question très spécifique, mais j'ai pensé que je devrais recommencer avec une question générale.Flux tcp Linux à faible latence
Première question: Est-ce possible avec Linux? Deuxième question: Si oui, que dois-je faire?
- tc?
- Quel qdisc devrais-je utiliser?
- Paramètres du réseau de Tweak Tweak? Lesquels?
- Quelles sont les autres choses qui me manquent?
Merci pour votre aide!
Eric
Mise à jour 04/10/2010: Je mis en place tcpdump à la fois du côté émission et côté réception. Voici ce que je vois sur le côté de transmission (où les choses semblent encombrés):
0 us Send SCP (low priority) packet, length 25208
200 us Send High priority packet, length 512
Du côté, je reçois vois:
~ 100 us Receive SCP packet, length 548
170 us Receive SCP packet, length 548
180 us Send SCP ack
240 us Receive SCP packet, length 548
... (Repeated a bunch of times)
2515 us Receive high priority packet, length 512
Le problème semble être la longueur du SCP paquet (25208 octets). Ceci est divisé en plusieurs paquets basés sur le mtu (que j'avais fixé à 600 pour ce test). Cependant, cela se passe dans une couche réseau inférieure que le contrôle du trafic, et donc ma latence est déterminée par la taille maximale du paquet de transmission tcp, pas le mtu! Arghhh ..
Quelqu'un sait-il un bon moyen de définir la taille de paquet maximale par défaut pour TCP sur Linux?
Est-ce une application que vous codifiez où vous pouvez contrôler vous-même ou essayez-vous d'utiliser un réseau ou un système d'exploitation pour y parvenir? – Nick
Il s'agit d'une application que je suis en train de coder, et j'ai un contrôle total sur les paramètres de socket. – Eric