web-dev-qa-db-fra.com

Quelle est la différence entre VPN sur TCP vs UDP?

Mon fournisseur VPN me donne l'option entre utiliser UDP et TCP pour les connexions. Selon ce site UDP est plus rapide sur de courtes distances. Je suis sur le même continent que mon serveur, est-ce considéré comme une courte distance? Existe-t-il un test pour comparer les deux?

37
David Drohang

Un VPN sert à envelopper des paquets IP bruts dans une sorte de "tunnel" entre deux sites (l'un des sites pouvant être réduit à un ordinateur, c'est-à-dire le vôtre). TCP est un protocole qui se trouve au-dessus de l'IP et utilise des paquets IP (qui sont "peu fiables": ils peuvent être perdus, dupliqués, réorganisés ... ) pour fournir un canal bidirectionnel fiable pour les octets de données, où les octets atteignent toujours le récepteur dans l'ordre où ils ont été envoyés. TCP fait cela en utilisant un assortiment complexe de métadonnées avec des accusés de réception et des réémissions explicites. Ainsi, TCP entraîne une légère surcharge réseau).

Si le VPN utilise TCP, alors votre propre TCP utiliseront les paquets IP envoyés via le VPN, donc vous finissez par payer le TCP surcharge deux fois. Un VPN basé sur UDP a donc le potentiel pour des performances légèrement meilleures. D'autre part, la protection cryptographique du VPN nécessite une gestion de l'état, ce qui peut être plus difficile pour la mise en œuvre du VPN lors de l'utilisation d'UDP, il est donc possible que le VPN basé sur UDP ait une surcharge supplémentaire à gérer.

Par conséquent, la situation des performances n'est pas claire et vous devez mesurer.

44
Thomas Pornin

Vous pouvez essayer de télécharger un fichier via l'une ou l'autre méthode et voir si les vitesses de téléchargement sont radicalement différentes.

Les compromis entre TCP et UDP (quelle que soit l'utilisation du VPN) est toujours le même: vous sacrifiez la vitesse pour la fiabilité car UDP est sans connexion et le serveur envoie les données théoriquement (selon l'implémentation) peu importe qu'il atteigne la destination ou non. C'est bien dans des choses comme les jeux sur Internet où chaque paquet peut être un mouvement par un utilisateur, mais dans des choses comme le cryptage où des bits de données manquants signifient qu'un message entier peut avoir besoin d'être renvoyé, TCP serait plus apprécié car le temps gagné en utilisant UDP pourrait être perdu en ayant à renvoyer un message entier.

Être sur le même continent n'est généralement pas considéré comme une courte distance. J'envisagerais d'être dans le même bâtiment, peut-être dans la même ville que sur une courte distance mais pas beaucoup plus loin que cela. Plus un paquet doit traverser de sauts, plus il risque d'être corrompu à un moment donné en cours de route. Si vous voulez voir combien de sauts il faut pour arriver à votre destination, essayez d'exécuter une commande "trace route".

J'espère que j'ai aidé.

13
NULLZ

UDP est préféré pour les VPN, la surcharge est moindre. Cette discussion sur la non-fiabilité d'UDP est théorique. Puisque nous effectuons des tunnels, il n'y a pas de différence entre un datagramme TCP perdu sur Internet ouvert et un datagramme TCP perdu dans un TCP tunnel ou un TCP datagramme perdu dans un tunnel UDP. Tout sera retransmis.

Un problème avec les tunnels UDP est qu'ils sont sans état, ce qui rend plus difficile la sécurisation au niveau du pare-feu. Les paquets de réponse ne sont pas différents des paquets source. Du point de vue de la sécurité, les tunnels TCP sont plus faciles.

11
mgjk

C'est vraiment la même chose que TCP et UDP sont normalement. TCP est un système où par chaque paquet est garanti d'arriver dans l'ordre. Si un paquet est reçu dans le désordre, il est stocké et si un paquet n'apparaît pas pour combler une lacune, il est redemandé. Cela garantit un flux complet sans perte de données, mais cela signifie qu'une connexion peut être bloquée par un paquet manquant pendant que l'information est à nouveau demandée.

UDP, d'autre part, n'offre aucune garantie de ce type et les informations arriveront dans l'ordre de leur arrivée et seront traitées comme telles. Je ne suis pas sûr des implications de sécurité exactement, mais vous obtiendriez probablement un délai similaire dans UDP si vous utilisez un chiffrement de flux de chaînage non parallélisable car il aurait besoin de tous les paquets pour arriver dans l'ordre, mais cela pourrait également être surmonté par en utilisant un mode de chiffrement qui prend en charge le déchiffrement parallèle.

Donc, fondamentalement, la seule chose que le VPN ajoute au mélange TCP/UDP typique est qu'il limite un peu la nature des modes de cryptage, mais est autrement le compromis typique.

3
AJ Henderson

La distance physique réelle point à point ne signifie rien dans le monde Internet, tout dépend des interconnexions des FAI. Une fois, j'ai fait un ping sur un serveur dans le rack à côté de moi et il y avait un retard de 300 ms parce que les paquets étaient acheminés à travers le Pacifique et vice-versa parce que c'était ainsi que les FAI étaient connectés les uns aux autres. Si les serveurs avaient été directement connectés, le retard aurait été de quelques microsecondes. Les serveurs étaient à quelques centimètres l'un de l'autre, mais la distance réelle parcourue par les paquets aller-retour sur tous les Hops était de l'ordre de 25 000 miles! C'est un exemple extrême, mais il illustre que vous ne pouvez pas faire confiance à la distance.

Plutôt que la distance dont vous avez besoin pour examiner la latence, c'est le temps d'aller-retour qu'il faut pour répondre à un écho envoyé à la destination VPN. Quant au temps d'aller-retour qui ferait d'UDP un meilleur choix que TCP je ne sais pas, et ce n'est pas si simple car il y a d'autres facteurs:

  • perte et gigue des paquets: UDP est très sensible à la perte et à la gigue des paquets (paquet hors service) et il n'a pas de mécanisme de correction intégré comme TCP le fait. Toute latence ou gigue érodera tout avantage d'utiliser UDP sur TCP
  • Efficacité de la pile IP du système d'exploitation: l'application VPN utilisera la pile TCP/IP du système d'exploitation, qui traitera également les paquets UDP. Une grande partie de l'efficacité relative de TCP contre UDP dépendra de la façon dont le système d'exploitation (et tout filtrage de paquets ou pare-feu sur le chemin) traite TCP contre UDP
  • Codage de l'application: la qualité de l'application VPN fera une grande différence, tout comme le logiciel VPN de l'appareil auquel vous vous connectez. Par exemple, comment récupère-t-il des paquets UDP perdus? Peut-il demander des retransmissions ou s'appuie-t-il sur les applications en amont pour demander des retransmissions?

Il y a trop de facteurs pour vous donner une réponse définitive car cela dépend de trop de facteurs. Vous devrez simplement essayer les deux méthodes et voir.

2
GdD