Frage

Ich habe vor kurzem das Buch aus "UNIX Network Programming, Vol. 1" von Richards Stevens und ich fand, dass es eine dritte Transportschicht Standard neben TCP und UDP: SCTP .

Zusammenfassung: SCTP ist ein Transport-Level-Protokoll, die Message-Driven wie UDP, aber zuverlässig wie TCP. Hier ist ein kurze Einführung von IBM Developerworks .

Ehrlich gesagt, ich habe noch nie von SCTP gehört. Ich kann nicht über sie erinnern in allen Netzwerken, Bücher zu lesen oder hören, über sie in den Klassen I genommen hatte. andere Fragen Stackoverflow die SCTP erwähnt schlägt vor, dass ich mit diesem Mangel an Wissen nicht allein bin.

Warum ist SCTP so unbekannt? Warum ist es nicht viel genutzt?

War es hilfreich?

Lösung

Tatsächlich ist SCTP vor allem im Telekommunikationsbereich verwendet. Traditionell verwendet, Telekommunikationsschalter SS7 ( Signalisierungssystem Nr 7 ) an verschiedene Einheiten in dem Telekommunikationsnetzwerk miteinander verbinden . Zum Beispiel - die Teilnehmerdatenbank der Telekommunikationsanbieter (HLR), mit einem Schalter (MSC), wird der Teilnehmer auch verbunden (MSC)

.

Der Telekom-Bereich zu höheren Geschwindigkeiten und mehr erreichbar Umgebung bewegt. Eine dieser Änderungen ist SS7-Protokoll durch eine elegantere, schnelle und flexible IP-basiertes Protokoll zu ersetzen.

Der Telekom-Bereich ist sehr konservativ. Das SS7-Netzwerk wurde hier seit Jahrzehnten eingesetzt. Es ist sehr zu einem zuverlässigen und geschlossenen Netzwerk. Dies bedeutet ein normaler Benutzer keinen Zugriff auf sie hat.

Das IP-Netzwerk, ist dagegen offen und nicht zuverlässig, und Telekom wird es nicht umwandeln, wenn sie nicht zumindest die Last handhaben werden, dass SS7 abwickelt. Aus diesem Grund SCTP entwickelt wurde. Es wird versucht:

  • alle Vorteile des SS7-Netzwerks über die Jahrzehnte angesammelt imitieren.
  • ein verbindungsorientiertes Protokoll besser als TCP in der Geschwindigkeit, Sicherheit und Redundanz
  • erstellen

Die neuesten Versionen von Linux haben bereits SCTP-Unterstützung.

Andere Tipps

Wir haben SCTP in verschiedenen Anwendungen bewährt sich bereits jetzt, und stieß auf erhebliches Problem mit SCTP-Unterstützung in verschiedenen Home-Router. Sie sind einfach nicht umgehen SCTP richtig. Ich glaube, dass dies in erster Linie ein Leistungsproblem ist (die SCTP-Protokoll-Spezifikation erfordert Prüfsummen für die ganzen Pakete und nicht nur für die Header neu berechnet werden).

Wie viele andere viel versprechende Protokolle SCTP leider tot im Wasser, bis D-Link und Netgear behebt ihre gebrochenen NAT-Boxen.

erfordert SCTP mehr Design in der Anwendung die optimale Nutzung zu bekommen. Es gibt mehr Möglichkeiten als TCP, der Sockets-API wie kam später, und es ist jung. Aber ich denke, die meisten Leute, die ihnen die Zeit nehmen, sie zu verstehen (und wer die Mängel des TCP wissen) zu schätzen - es ist ein gut gestaltetes Protokoll, das auf unseren ~ 30 Jahre Wissen über TCP und UDP baut

.

Einer der Aspekte, die sich Gedanken erfordert, dass der Ströme. Bäche bieten (in der Regel, ich glaube, Sie es ausschalten können) eine Auftragsgarantie in sie (ähnlich wie eine TCP-Verbindung), aber es können mehrere Streams pro SCTP-Verbindung sein. Wenn die Daten Ihrer Anwendung können mehrere Streams gesendet werden über dann vermeiden Sie Head-of-Line-Blockierung, wo der Empfänger aufgrund eines verlegter Paket hungert. Effektiv verschiedene Gespräche können ohne Auswirkungen auf sich über die gleiche Verbindung zu haben.

Eine weitere sinnvolle Ergänzung ist, dass die Multi-Homing-Unterstützung - eine Verbindung über mehrere Schnittstellen an beiden Enden sein kann und es meistert mit einem Defekt. Sie können dies emulieren in TCP, aber auf der Anwendungsschicht.

Die richtige Verbindung heartbeating, die das erste, was jede Anwendung unter Verwendung von TCP für nicht-transiente Verbindungen implementiert, ist es kostenlos.

Meine persönliche Zusammenfassung von SCTP ist, dass er nichts tun Sie nicht eine andere Art und Weise (in TCP oder UDP) mit wesentlichen Anwendungsunterstützung tun könnte. Die Sache, die es bietet, ist die Fähigkeit, nicht, dass Code zu implementieren (schlecht) selbst.

FYI, ist SCTP für Durchmesser (cf RADIUS Next-Gen) als unterstützt beauftragt. siehe 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 ist nicht sehr viel bekannt und können nicht verwendet / Einsatz viel, weil:

  • Verbreitet: Nicht weit verbreitet in der TCP / IP-Stacks integriert:
  • (im Jahr 2013 noch nativ in aktuellen Mac OSX und Windows fehlt)
  • Bibliotheken: Ein paar hohe Bindungen in einfachen Sprachen (Disclaimer zu verwenden: ich bin Betreuer des pysctp , SCTP einfachen Stapel Unterstützung für Python)
  • NAT: Hat nicht NAT überqueren sehr gut / haupt (weniger als 1% Internet Home & Enterprise-Router tun NAT auf SCTP)
  • .
  • Beliebtheit: keine Öffentlichkeit App verwenden Sie es
  • Programmierparadigma: es ein wenig verändert: es ist immer noch eine Steckdose, aber man kann viele Hosts zu viele Hosts (Multihoming) verbinden, Datagramm bestellt und zuverlässig, erc ...
  • Komplexität: SCTP-Stack ist komplex zu implementieren (aufgrund oben)
  • Wettbewerb: Multipath TCP kommt und sollte multihoming Bedürfnisse / Fähigkeiten ansprechen so von Menschen verzichten SCTP wenn möglich umzusetzen, für MTCP warten
  • Nische: Needs SCTP Füllungen sind sehr eigenartig (geordnete zuverlässige Datagramme, Multistream) und nicht viel Anwendungen
  • benötigt
  • Sicherheit: SCTP ausweicht Sicherheitskontrollen (einige Firewalls, die meisten IDS, alle DLPs, erscheint nicht auf netstat außer CentOS / Redhat / Fedora ...)
  • Audit-Fähigkeit: So etwas wie 3-Unternehmen der Welt routinemäßig tun Audits von SCTP Sicherheit (Disclaimer: Ich in einem von ihnen arbeiten)
  • Lernkurve: Nicht viel Werkzeugkette mit SCTP (überprüfen Sie die ausgezeichnete spielen withsctp , die gut mit netcat oder verwenden socat)
  • kombiniert
  • Unter der Haube: Gebrauchte meist in der Telekommunikation und Sie jedes Mal SMS senden, starten Sie das Netz auf Ihrem Handy oder telefonieren surfen, sind Sie oft Nachrichten auslösende, die über SCTP fließen (SIGTRAN / SS7 mit GSM / UMTS, Durchmesser mit LTE / IMS / RCS, S1AP / X2AP mit LTE), so dass Sie es tatsächlich eine Menge verwenden, aber man weiß ja nie darüber; -)

p1. SCTP abgebildet direkt über IPv4-Unterstützung in NAT-Gateways erfordert, die weit überall eingesetzt nie wurde, und ohne sie das typische NAT-Gateway erlaubt nur einen privaten Host pro Beschallungs- zu einem Zeitpunkt unter Verwendung von SCTP zu sein.

p2. SCTP kartiert über UDP / IPv4 ermöglicht mehr privaten Hosts pro Beschallungs-, aber UDP-Zuordnungen in IPv4 / NAT-Gateways sind notorisch heikel gehalten zu etablieren und zu halten, aufgrund der Tatsache, dass UDP ein verbindungsloses Transport ohne expliziten Zustand ist für ein NAT zu verfolgen .

p3. SCTP kartiert direkt über IPv6 erfordert ... na ja ... IPv6. Haben Sie versucht, IPv6 zu implementieren? Wenn ja, haben Sie versucht, einen IPv6-Firewall zu kaufen? Ist es SCTP unterstützen? Wie über einen Load-Balancer? Ein SSL-Beschleuniger?

p4. Schließlich wird ein großer Teil des Internet so ziemlich eingeschränkt, was 443 über TCP-Port 80 und Port passen, so SCTP jeden Geschmack dort zu verlieren neigt. Daher sehen Sie Anstrengungen wie der MPTCP Gruppe in IETF arbeiten.

Viele von uns werden SCTP bald verwenden, da es von WebRTC datachannels verwendet wird eine TCP-wie zuverlässige Schicht auf UDP zu schaffen - SCTP über DTLS über UDP: https://tools.ietf.org/html/draft-ietf-rtcweb-data-channel-13 # Abschnitt-6

Lesen Sie die SCTP Wikipedia Ich würde sagen, dass der Hauptgrund ist, dass SCTP ist ein sehr junges Protokoll (vorgeschlagen im Jahr 2000), die derzeit nicht unterstützt von dem Mainstream ist OSs ( Fenster , OS X , Linux ).

Wenn „sehr jung“ scheint unangemessen Sie, denken Sie an IPV6 : „im Dezember 2008 trotz seiner 10 Jahre als Standards Track-Protokoll Kennzeichnung, war IPv6 nur in den Kinderschuhen in Bezug auf die allgemeinen weltweiten Einsatz. "

ist SCTP extensiv in dem 4G LTE-Netz verwendet, in denen Durchmesser für AAA verwendet werden.

Es ist vielleicht nicht allgemein bekannt sein, aber es ist nicht ungenutzt. Erst vor kurzem gab es eine Entwurf auf dem veröffentlichten < a href = "http://www.ietf.org/" rel = "nofollow noreferrer"> IETF über SCTP als Transport Layer-Protokoll für HTTP .

In Bezug auf alle Kommentare über kommerzielle Router gebrochen oder SCTP-Unterstützung fehlt, ist das Problem, dass SCTP mit NAT ist noch im Entwurf mit der IETF. So gibt es keine RFC-Spezifikation für sie, sie umzusetzen.

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

SCTP ist zu spät geboren, und für viele Situation TCP ist genug.

Auch, wie ich die meisten seiner Nutzung weiß auf Telekommunikationsbereich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top