rulururu

post TCP est mort

June 3rd, 2013

Filed under: Innovation — admin @ 22:39

Mais on ne le sait pas encore 🙂
Pour vous en convaincre, je n’ai qu’un exemple : mosh (pour MObile SHell).
Je qualifierai Mosh de complément à ssh : il s’initialise bien sur TCP port 22, puis poursuit les communications, avec -je crois et j’espère- le même niveau de sécurité sur une (ou plusieurs) sockets UDP.

UDP lui apporte la réactivité dans la gestion des acknowledgments.

En résumé, il virtualise la session par rapport à la connnexion. Si la connexion expire ou disparaît, la session persiste et cherche/attend simplement un nouveau support de connexion.
Avantages immédiats :

  • Un keepalive permanent super dynamique, très pratique au niveau shell (je vois les caractères que j’ai tapés et que le serveur n’a pas encore confirmés, ils sont soulignés)
  • Je me déconnecte 1/2 h (genre sur mon PC via le téléphone en 3G, j’éteinds le téléphone et prends bien mon temps pour le rallumer), je reviens, mosh reprend immédiatement la main
  • Je change d’IP (dans le train, ou je switche de la 3G à un réseau wifi) ; je n’ai pas le sentiment de perte de session, pas besoin de me reconnecter.

Inconvénients :

  • le passage des firewalls, eh oui – mais mosh-server permet de choisir son port UDP ;), donc finalement, ce n’est qu’un port de plus à ouvrir
  • mosh ne gère pas [encore] du forward de ports

Ce que je n’ai pas mesuré :

  • Dans quelle mesure mosh augmente le volume de données échangées, avec tous ces ACKs UDP, par rapport à une session SSH traditionnelle

Sur des connexions qui perdent plus de 10% de datagrammes, TCP est terrible. Il double progressivement les retry, si bien que très vite, en n’ayant pas de chance et en perdant quelques paquets, la connexion peut se bloquer complétement pour très longtemps. Surtout avec une surcouche SSL.

Bref, vous doutez? Essayez mosh, vous serez bluffés ! En plus, il est déjà packagé debian (et même dans stable – pfff je suis en retard ou quoi ?).

La suite ? Pour les applis mobiles, hyper-réactives…vivement une implémentation de HTTP sans TCP, allez, UDP 80 ? 🙂

Que celui qui n’a jamais attendu 1/4 d’heure le chargement de Google Maps me jette la première pierre !

1 Comment »

  1. Autre solution: modifier TCP pour prendre en compte plusieurs chemins (multipath tcp : https://lwn.net/Articles/544399/ ). Mais bon visiblement tu es fâché avec TCP, et cela ne règle que le problème du changement de réseau, pas la reconnexion.

    La solution pratique pour tous les jours: screen, et pas d’utilisation de réseau avec forte latence (je ne prend pas le train).

    Comment by Luc — June 5, 2013 @ 17:14

RSS feed for comments on this post. TrackBack URI

Leave a comment

ruldrurd