Excellentes performances UDP contre faibles performances TCP en tunnel IPsec

Bonjour à tous -

J’ai un tunnel IPsec entre un centre de données et ma maison. Le centre de données est 2.4.5, la maison est 2.5.2. Ce tunnel peut passer 900 Mbps de trafic UDP lors d’un test avec iperf3 visant une bande passante de 900M, mais il ne passe qu’environ 80 Mbps de façon constante en utilisant TCP dans iperf3, avec des performances similaires pour le transfert de fichiers cifs/smb (l’usage prévu du tunnel).

Le MSS est réglé à 1360 car j’utilise IPv6 pour IPsec côté maison vers d’autres emplacements. Les captures de paquets semblent correctes - pas d’erreurs ni de pertes que je puisse voir, ni côté WAN ni à l’intérieur des réseaux.

Des idées sur ce que je pourrais manquer pour obtenir de meilleures performances avec TCP ? Je voudrais atteindre au moins 125 Mbps pour TCP, ce qui saturerait la bande passante en aval d’une autre localisation que je souhaite connecter à cette configuration.

Merci d’avance.

EDIT - Il semble que le problème vienne du fait que FreeBSD 12/Truenas n’est pas optimisé pour une utilisation WAN dès l’installation. Après ajustements, il a été possible d’atteindre rapidement plus de 100 Mbps. Avec Ubuntu, les tests ont démarré à environ 160 Mbps dès la sortie de l’installation.

Votre fenêtre de réception pourrait être trop petite, ce qui empêche l’expéditeur d’envoyer suffisamment de paquets pour exploiter pleinement votre bande passante disponible, car ils sont encore en vol et pas encore accusés de réception. Bandwidth-delay product - Wikipedia

Either you use more TCP streams in parallel, or enlarge the receiving window.

Les valeurs MTU et MSS sont-elles correctes ?

Essayez de vérifier cette option - Déchargement TCP matériel de segmentation (Hardware TCP Segmentation Offloading).

Dans un tunnel privé sans collision ou trafic, UDP et TCP devraient être assez proches en termes de performance. Faites-vous les tests avec un seul flux utilisant les mêmes outils ? Rappelez-vous que UDP peut seulement gérer une session à pleine vitesse (principalement). TCP peut gérer le contrôle de congestion, donc il peut faire plusieurs sessions, mais elles seront plus lentes globalement.

Les chiffres que vous donnez indiquent qu’il y a une mauvaise configuration ou un mauvais alignement important.

Mesurez-vous entre pfsenses ? Ou derrière des serveurs ?

Lorsque j’ai configuré OpenVPN sur pfSense l’année dernière, je me souviens avoir lu que OpenVPN utilise généralement UDP plutôt que TCP. Cela était lié à la combinaison de la fiabilité de TCP avec celle du VPN, entraînant une augmentation exponentielle des overheads, tandis que UDP, moins fiable, n’avait pas ce problème. J’ai fait une recherche rapide sur Google et je n’ai pas trouvé de référence, mais je me demande si quelque chose de similaire se produit dans votre cas.