206 votes

Pourquoi le SCTP est-il peu utilisé / connu?

J'ai récemment regardé le livre "UNIX Network Programming, Vol. 1" par Richards Stevens et j'ai trouvé qu'il existe une troisième couche de transport standard que TCP et UDP: SCTP.

Résumé: SCTP est un niveau transport protocole qui est piloté par message comme UDP, mais fiable comme TCP. Ici est une courte introduction à partir d'IBM DeveloperWorks.

Honnêtement, je n'ai jamais entendu parler de SCTP avant. Je ne peux pas me rappeler la lecture de ce sujet dans toute mise en réseau des livres ou entendu parler de lui dans les classes que j'avais pris. La lecture d'autres stackoverflow questions qui mentionne SCTP penser que je ne suis pas le seul avec ce manque de connaissances.

Pourquoi est-SCTP si inconnu? Pourquoi n'est-il pas beaucoup utilisé?

100voto

dimba Points 5389

En effet, SCTP est utilisé principalement dans le secteur des télécommunications de la région. Traditionnellement, les commutateurs téléphoniques utiliser SS7 (Système de Signalisation N ° 7) à l'interconnexion des différentes entités dans le réseau de télécommunication. Par exemple, le prestataire de services de télécommunications de l'abonné de la base de données(HLR), avec un commutateur (MSC), l'abonné est connecté (MSC).

Les télécom de la zone est en mouvement à des vitesses plus élevées et les plus accessibles de l'environnement. L'un de ces changements est de remplacer le protocole SS7 par certains plus élégant, rapide et flexible, basée sur IP protocole.

L'télécom région est très conservateur. Le réseau SS7 a été utilisé pendant des décennies. Il est très fiable et en réseau fermé. Cela signifie qu'un utilisateur normal n'a pas accès à elle.

Le réseau IP, en revanche, est de l'ouvrir et ne sont pas fiables, et les télécoms vont pas se convertir à elle si elle ne peut pas traiter au moins la charge que SS7 poignées. C'est pourquoi SCTP a été développé. Il essaie:

  • pour imiter, tous les avantages du réseau SS7 accumulées au fil des décennies.
  • pour créer un protocole orienté connexion mieux que la TCP dans la vitesse, la sécurité et la redondance

Les dernières versions de Linux ont déjà SCTP soutien.

72voto

pehrs Points 650

Nous avons déployé SCTP dans plusieurs applications maintenant et avons rencontré des problèmes importants avec le support SCTP dans divers routeurs domestiques. Ils ne manipulent simplement pas le SCTP correctement. Je pense qu'il s'agit avant tout d'un problème de performances (la spécification du protocole SCTP exige que les sommes de contrôle pour l'ensemble des paquets soient recalculées et pas uniquement pour les en-têtes).

Comme beaucoup d'autres protocoles prometteurs, le SCTP est malheureusement mort dans l'eau jusqu'à ce que D-link et Netgear corrigent leurs boîtes NAT endommagées.

56voto

Bwooce Points 1147

SCTP nécessite plus de design au sein de l'application pour obtenir le meilleur usage. Il y a plus d'options que le protocole TCP, les Sockets-tels que l'API est venu plus tard, et il est jeune. Cependant, je pense que la plupart des gens qui prennent le temps de comprendre (et qui fait connaître les défauts de TCP) l'apprécier-c'est un protocole qui s'appuie sur notre ~30 ans de connaissances de TCP et UDP.

Un des aspects qui nécessite une certaine réflexion, c'est que des cours d'eau. Les cours d'eau fournissent (d'habitude, je pense que vous pouvez le désactiver) une garantie à l'intérieur (un peu comme une connexion TCP), mais il peut y avoir plusieurs flux par SCTP connexion. Si les données de votre application peuvent être envoyées sur de multiples flux alors, vous évitez la tête de blocage de l'endroit où le récepteur meurt de faim en raison d'un paquet égaré. Effectivement différentes conversations sur la même connexion sans impacter les uns des autres.

Un autre ajout très utile, c'est que du multi-homing de soutien-une liaison peut être à travers de multiples interfaces sur les deux extrémités et il se débrouille avec les échecs. Vous pouvez émuler ce en TCP, mais au niveau de la couche application.

Lien heartbeating, qui est la première chose que toute application utilisant le protocole TCP pour les non-transitoire connexions met en œuvre, est-il gratuit.

Mon résumé de la SCTP, c'est qu'il ne fait rien, tu ne pouvais pas faire d'une autre manière (en TCP ou UDP) avec un important soutien de l'application. La chose, c'est la possibilité de ne pas avoir à mettre en œuvre ce code (mal) de vous-même.

Pour info, SCTP est mandaté comme pris en charge pour le Diamètre (cf RAYON de next gen). voir la RFC 3588

 Diamètre des clients DOIT prendre en charge le protocole TCP ou SCTP, tandis que les agents et les
 les serveurs DOIVENT soutenir à la fois. Les futures versions de cette spécification PEUT
 mandat que les clients prennent en charge SCTP.

50voto

Phil L. Points 81

SCTP est pas très bien connue et n'est pas utilisé/déployé beaucoup parce que:

  • Répandue: Pas largement intégrée dans des piles TCP/IP (en 2013: manque encore nativement dans la plus récente version de Mac OSX et Windows)
  • Bibliothèques: Quelques haut niveau des liaisons faciles à utiliser dans des langues (Disclaimer: je suis responsable de pysctp, SCTP facile support de la pile pour Python)
  • NAT: Ne pas traverser le NAT très bien/(moins de 1% de l'internet à la maison et de l'entreprise que les routeurs n'NAT sur SCTP).
  • Popularité: Aucun public en général app utiliser
  • Paradigme de programmation: il a un peu changé: c'est toujours un socket, mais vous pouvez connecter de nombreux hôtes de nombreux hôtes (hébergement multiple), le datagramme est commandé et fiable, erc...
  • Complexité: SCTP pile est complexe à mettre en œuvre (en raison ci-dessus)
  • Concours: Multipath TCP est à venir et qui doit répondre à hébergement multiple besoins / capacités afin que les gens s'abstenir de mise en œuvre de SCTP, si possible, en attendant PICM
  • Niche: Besoins SCTP les remplissages sont très particuliers (commandé fiable des datagrammes, multistream) et pas besoin de beaucoup d'applications
  • Sécurité: SCTP élude les contrôles de sécurité (certains pare-feu, la plupart des Ids, tous les Dlp, n'apparaît pas sur netstat sauf CentOS/Redhat/Fedora...)
  • Audit-capacité: quelque Chose comme 3 entreprises dans le monde font des vérifications de SCTP de sécurité (Disclaimer: je travaille dans l'un d'eux)
  • La courbe d'apprentissage: Pas beaucoup d'outils pour jouer avec SCTP (vérifier l'excellente withsctp qui combine joliment avec netcat ou de l'utilisation socat )
  • Sous le capot: principalement Utilisé dans les télécommunications et à chaque fois que vous envoyez des SMS, surfer sur le net sur votre mobile ou faire des appels téléphoniques, vous êtes souvent déclenchement de messages que le débit sur la SCTP (SIGTRAN/SS7 avec les réseaux GSM/UMTS, de Diamètre avec la technologie LTE/IMS/RCS, S1AP/X2AP avec LTE), de sorte que vous l'utiliser effectivement beaucoup, mais on ne sait jamais ;-)

15voto

james woodyatt Points 1519

p1. SCTP mappés directement sur IPv4 nécessite la prise en charge dans les passerelles NAT, qui n'a jamais été largement déployée n'importe où, et sans elle, le typique passerelle NAT sera seulement permis de privé un hôte par l'adresse publique à l'aide de SCTP à la fois.

p2. SCTP mappé sur UDP/IPv4 permet plus privés d'hôtes par l'adresse publique, mais UDP mappages en IPv4/passerelles NAT sont notoirement difficiles à établir et à maintenir maintenu, en raison du fait que le protocole UDP est un sans connexion de transport sans aucune explicite de l'état pour un NAT à suivre.

p3. SCTP mappés directement sur IPv6 nécessite... eh bien... IPv6. Avez-vous essayé de déployer l'IPv6? Si oui, avez-vous essayé d'acheter un coupe-feu IPv6? Prend-il en charge SCTP? Comment faire un équilibreur de charge? Un accélérateur SSL?

p4. Enfin, un grand nombre de l'Internet est à peu près limitée à ce qui peut s'adapter à travers le protocole TCP port 80 et le port 443, donc SCTP de toute saveur tend à perdre. Donc, vous voyez les efforts comme le MPTCP du groupe de travail de l'IETF.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X