Question

J'ai récemment vérifié le livre "Programmation réseau UNIX, vol. 1" par Richards Stevens et je trouve qu'il ya une troisième norme de couche de transport TCP et UDP en plus: SCTP .

Résumé: SCTP est un protocole de niveau de transport qui est géré par message comme UDP, mais fiable comme TCP. Voici un courte introduction d'IBM developerWorks .

Honnêtement, je ne l'ai jamais entendu parler de SCTP avant. Je ne me souviens pas lire à ce sujet dans les livres de réseau ou avoir entendu parler dans les classes que j'avais pris. Lecture autres questions stackoverflow qui mentionne SCTP suggère que je ne suis pas seul avec ce manque de connaissances.

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

Était-ce utile?

La solution

En effet, SCTP est utilisé principalement dans le domaine des télécommunications. Traditionnellement, les commutateurs de télécommunication SS7 utilisent système de signalisation n ° 7 ) pour interconnecter les différentes entités dans le réseau de télécommunication . Par exemple - les données d'abonné du fournisseur de télécommunications de base (HLR), avec un commutateur (MSC), l'abonné est connecté aussi (MSC)

.

La zone de télécommunications se déplace à des vitesses plus élevées et de l'environnement plus accessible. L'un de ces changements est de remplacer le protocole SS7 par un protocole IP plus élégant, rapide et flexible.

La zone des télécommunications est très conservatrice. Le réseau SS7 a été utilisé ici depuis des décennies. Il est un réseau fiable et fermé. Cela signifie qu'un utilisateur régulier n'a pas accès.

Le réseau IP, en revanche, est ouvert et non fiable, et les télécoms ne convertira pas à elle si elle ne traitera pas au moins la charge qui gère SS7. Voilà pourquoi SCTP a été développé. Il cherche:

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

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

Autres conseils

Nous déployons SCTP dans plusieurs applications maintenant et rencontré problème important avec le soutien SCTP dans divers routeurs à domicile. Ils simplement ne gèrent pas correctement SCTP. Je crois que c'est avant tout un problème de performance (la spécification du protocole SCTP nécessitent checksums pour l'ensemble des paquets à recalculés et non seulement pour les en-têtes).

Comme beaucoup d'autres SCTP prometteurs protocoles est malheureusement mort dans l'eau jusqu'à ce que D-Link et Netgear fixe leurs boîtes de NAT cassées.

SCTP nécessite plus la conception de l'application pour obtenir le meilleur usage. Il y a plus d'options que TCP, l'API Sockets comme est venu plus tard, et il est jeune. Cependant, je pense que la plupart des gens qui prennent le temps de le comprendre (et qui connaissent les lacunes de TCP) apprécie - il est un protocole bien conçu qui repose sur nos 30 années de ~ connaissance de TCP et UDP

.

L'un des aspects qui exige une certaine pensée est celle des cours d'eau. Streams fournir (en général, je pense que vous pouvez le désactiver) une garantie de l'ordre dans les (comme une connexion TCP), mais il peut y avoir plusieurs flux par connexion SCTP. Si les données de votre application peuvent être envoyées sur plusieurs cours d'eau, alors vous éviter de bloquer la tête de ligne où le récepteur affame en raison d'un paquet égarent. conversations efficacement différentes peuvent être eu sur la même connexion sans impact sur l'autre.

Une autre addition utile est celle de support multi-homing - une connexion peut être dans de multiples interfaces sur les deux extrémités et il fait face à des défaillances. Vous pouvez émuler cela dans TCP, mais à la couche application.

lien approprié heartbeating, qui est la première chose que toute application utilisant le protocole TCP pour les connexions non transitoires met en œuvre, est là gratuitement.

Mon résumé personnel de SCTP est qu'il ne fait rien que vous ne pouviez pas faire une autre façon (en TCP ou UDP) avec le soutien de l'application substantielle. La chose est qu'il fournit la possibilité de ne pas avoir à mettre en œuvre ce code (mal) vous.

FYI, SCTP est chargé en tant que charge pour Diamètre (cf RADIUS next gen). voir RFC 3588

   Diameter clients MUST support either TCP or SCTP, while agents and
   servers MUST support both.  Future versions of this specification MAY
   mandate that clients support SCTP.

SCTP est pas très bien connu et non utilisé / déployé un lot:

  • généralisée: Non largement intégré dans les piles TCP / IP (en 2013: manque encore nativement dans le dernier Mac OS X et Windows)
  • Bibliothèques: Peu de liaisons de haut niveau dans un format facile à utiliser les langues (Disclaimer: Je suis responsable de pysctp , support SCTP de pile facile pour Python)
  • NAT: NAT ne croise pas très bien / tout (moins de 1% des routeurs domestiques et entreprises Internet font NAT sur SCTP)
  • .
  • Popularité: Aucune application grand public utiliser
  • paradigme de programmation: il a un peu changé: il est toujours une prise, mais vous pouvez vous connecter de nombreux hôtes de nombreux hôtes (multihoming), datagrammes est ordonné et fiable, ... erc
  • Complexité: pile SCTP est complexe à mettre en oeuvre (due à ci-dessus)
  • Concours: Multipath TCP arrive et doit répondre aux besoins / capacités multihoming afin que les gens s'abstenir de mettre en œuvre SCTP si possible, en attendant PICM
  • Niche: besoins remplissages SCTP sont très particulières (commandés datagrammes fiables, multiflux) et ne sont pas nécessaires par des applications beaucoup
  • Sécurité: SCTP contrôles de sécurité élude (certains pare-feu, la plupart, tous DLPS IDS, ne semble pas netstat sauf CentOS / Redhat / Fedora ...)
  • Audit-capacité: Quelque chose comme 3 entreprises dans le monde ne régulièrement des audits de sécurité SCTP (Disclaimer: Je travaille dans l'un d'eux)
  • Courbe d'apprentissage: Pas beaucoup toolchain jouer avec SCTP (vérifiez l'excellent withsctp qui combine bien avec netcat ou utiliser socat)
  • Sous le capot: Principalement utilisé dans les télécommunications et chaque fois que vous envoyez des SMS, surfer sur le net sur vos appels téléphoniques mobiles ou faire, vous déclencher souvent des messages qui circulent sur SCTP (SIGTRAN / SS7 avec GSM / UMTS, diamètre avec LTE / IMS / RCS, S1AP / X2AP avec LTE), de sorte que vous utilisez réellement beaucoup, mais vous ne savez jamais à ce sujet; -)

p1. SCTP mappé directement sur IPv4 nécessite un soutien dans les passerelles NAT, qui n'a jamais été largement déployées partout, et sans elle, la passerelle NAT typique fait qu'un seul hôte privé par adresse publique se chargera d'utiliser SCTP à la fois.

p2. SCTP mappée sur UDP / IPv4 permet aux hôtes plus privés par adresse publique, mais les correspondances UDP dans les passerelles IPv4 / NAT sont notoirement difficiles à établir et maintenir maintenu, en raison du fait que UDP est un transport sans connexion sans état explicite pour un NAT à suivre .

p3. SCTP mappé directement sur IPv6 nécessite ... eh bien ... IPv6. Avez-vous essayé de déployer IPv6? Si oui, avez-vous essayé d'acheter un pare-feu IPv6? Soutient-il SCTP? Que diriez-vous d'un équilibreur de charge? Un accélérateur SSL?

p4. Enfin, beaucoup de l'Internet est à peu près à ce qui contraint peut passer à travers le port TCP 80 et le port 443, de sorte SCTP de toute la saveur a tendance à y perdre. Par conséquent, vous voyez des efforts comme le groupe de travail MPTCP IETF.

Beaucoup d'entre nous vont utiliser SCTP bientôt, car il est utilisé par WebRTC datachannels pour créer une couche fiable TCP comme au-dessus de UDP - SCTP sur DTLS sur UDP: https://tools.ietf.org/html/draft-ietf-rtcweb-data-channel-13 # section 6

Lecture de la la page SCTP Wikipédia Je dirais que la principale raison est que SCTP est un très jeune protocole (proposé en 2000), qui est actuellement non pris en charge par les systèmes d'exploitation grand public ( de Windows , OS X , Linux ).

Si « très jeune » ne semble pas approprié pour vous, pensez à IPV6 : « en Décembre 2008, en dépit de marquer son 10e anniversaire en tant que protocole Standards Track, IPv6 était à ses premiers balbutiements en termes de déploiement dans le monde entier en général. "

SCTP est largement utilisé dans le réseau LTE 4G où le diamètre est utilisé pour AAA.

Il pourrait ne pas être bien connu, mais ce n'est pas utilisé. Tout récemment, il y avait un projet publié au < a href = "http://www.ietf.org/" rel = "nofollow noreferrer"> IETF sur Utilisation SCTP comme protocole de couche de transport pour HTTP .

En ce qui concerne tous les commentaires sur les routeurs commerciaux étant cassé ou manque de soutien SCTP, le problème est que SCTP avec NAT est encore sous forme de projet avec l'IETF. Donc, il n'y a pas de spécification RFC pour les mettre en œuvre.

https://tools.ietf.org/html/draft- ietf-BEHAVE-sctpnat-09

SCTP est né trop tard, et pour beaucoup la situation TCP suffit.

En outre, comme je sais que la plupart de son utilisation est sur la zone de télécommunication.

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