Question

J'envisage d'utiliser SCTP au lieu de TCP pour une application P2P écrite en C. Je le fais? Aussi, comment la vitesse de SCTP se compare-t-elle à la vitesse de TCP?

EDIT: J'ai découvert que SCTP peut être tunnellisé sur UDP avec SCTP n'est pas interopérable avec le SCTP non tunnellisé.

Était-ce utile?

La solution

Si c'est pour un réseau local, allez-y.

Notez cependant que si vous envisagez de l’utiliser sur Internet ouvert, de nombreux pare-feu grand public ne sont pas assez souples pour permettre l’utilisation de protocoles IP non reconnus.

Autres conseils

Avez-vous déterminé si SCTP était déjà préinstallé sur vos systèmes cibles ou si votre application devait inclure SCTP elle-même? D'après mon expérience, je ne m'attendrais pas à ce que tous les systèmes soient équipés de SCTP, et je ne m'attendrais pas à ce qu'ils le fassent s'il s'agissait de Windows.

Si vous incluez SCTP dans l'application elle-même, le nombre de messages transmis au noyau sortant du noyau sera plus que doublé, ce qui aura un impact sur les performances par rapport à l'utilisation du protocole TCP pré-installé.

Avez-vous envisagé les avantages que vous souhaitez tirer de SCTP? Vous avez parlé de tolérance aux pannes, mais pour que cela fonctionne avec SCTP, l'application doit disposer de plusieurs ports Ethernet et d'adresses IP. Est-ce probable sur votre application?

Autant que j'aime SCTP (!), j’envisagerais sérieusement de conserver TCP si vous n’êtes pas sûr que SCTP est nécessaire ou si vous ne contrôlez pas les hôtes sur lesquels votre application est déployée.

Cordialement

Comment cela vous aide-t-il?

Vous êtes P2P, chaque pair doit disposer d'au moins un socket ouvert sur un autre.

Si vous avez un socket ouvert, vous pouvez faire tout ce que vous devez faire par-dessus. Si vous avez choisi l'approche d'un socket par fichier et que plusieurs fichiers sont transférés simultanément entre deux pairs, SCTP vous enregistre un socket par fichier. Toutefois, sur un réseau P2P normal, quelle que soit sa taille, vous ne pourrez presque jamais jamais faire transférer simultanément plusieurs fichiers entre deux homologues.

Vous n'avez qu'un seul socket et votre propre petit protocole; envoyer un paquet avec un en-tête, l’en-tête indique le type de contenu, par ex. une commande ou une partie d'un fichier - et si oui, quel fichier et quelle plage d'octets.

Bien sûr, vous aurez un peu d’argent pour cela, alors que si vous avez un socket pour les commandes et un par fichier, vous êtes plus efficace. Sauvegarder un socket par pair (en supposant un téléchargement à la fois) vaut-il le temps, la galère et la complexité de l’utilisation de SCTP?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top