¿Por qué es SCTP no mucho utilizado / conocida
-
19-09-2019 - |
Pregunta
Recientemente Fui a ver el libro "Red UNIX Programación, Vol. 1" Richards Stevens y yo descubrimos que hay una tercera capa de transporte estándar, además de TCP y UDP: SCTP .
Resumen: SCTP es un protocolo de nivel de transporte que es controlado por mensajes como UDP, pero fiable como TCP. Aquí es un corta desde developerWorks IBM .
Sinceramente, nunca he oído hablar de SCTP antes. No me acuerdo de leer en cualquier libro de redes o de oír hablar de ella en las clases que había tomado. Lectura otra pregunta StackOverflow que menciona SCTP sugiere que no estoy solo con esta falta de conocimiento.
¿Por qué es tan desconocido SCTP? Por qué no se utiliza mucho?
Solución
De hecho, SCTP se utiliza sobre todo en el área de las telecomunicaciones. Tradicionalmente, los conmutadores de telecomunicaciones utilizan SS7 ( de señalización Nº 7 Sistema ) para interconectar diferentes entidades en la red de telecomunicaciones . Por ejemplo - base de datos de abonado del proveedor de telecomunicaciones (HLR), con un conmutador (MSC), el abonado está conectado también (MSC)
.El área de las telecomunicaciones se está moviendo a velocidades más altas y ambiente más accesible. Uno de estos cambios es reemplazar el protocolo SS7 mediante algún protocolo más elegante, rápido y flexible basada en IP.
El área de las telecomunicaciones es muy conservador. La red SS7 se ha utilizado aquí durante décadas. Es muy fiable y una red cerrada. Esto significa que un usuario normal no tiene acceso a ella.
La red IP, por el contrario, está abierta y no fiable, y de telecomunicaciones no convertirá a él si no va a manejar al menos la carga que maneja SS7. Es por esto que se desarrolló SCTP. Se trata de:
- para imitar todas las ventajas de la red SS7 acumulado a lo largo de las décadas.
- para crear un protocolo orientado a la conexión TCP mejor que en la velocidad, seguridad y redundancia
Las últimas versiones de Linux ya tienen el apoyo SCTP.
Otros consejos
Hemos estado desplegando SCTP en varias aplicaciones ahora, y encontramos un problema significativo con el apoyo SCTP en varios routers domésticos. Ellos simplemente no manejan correctamente SCTP. Creo que esto es principalmente una cuestión de resultados (la especificación del protocolo SCTP requieren sumas de comprobación para el conjunto de paquetes se recalcula y no sólo para los encabezados).
Al igual que muchos otros protocolos prometedores SCTP es tristemente muerto en el agua hasta que D-Link y Netgear fija sus cajas de NAT rotos.
SCTP requiere más de diseño dentro de la aplicación para obtener el mejor uso de ella. Hay más opciones que TCP, la API de sockets-como vino después, y es joven. Sin embargo creo que la mayoría de las personas que toman el tiempo para entender que (y que conocen las deficiencias de TCP) lo aprecio - es un protocolo bien diseñado que se basa en nuestros ~ 30 años de conocimiento de TCP y UDP
.Uno de los aspectos que requiere un poco de pensamiento es el de los arroyos. Proporcionar corrientes (por lo general, creo que se puede apagar) una garantía de orden dentro de ellos (al igual que una conexión TCP) pero no puede haber múltiples flujos por conexión SCTP. Si los datos de su aplicación pueden ser enviados a través de múltiples flujos a continuación, a evitar la cabeza de la línea de bloqueo en el que el receptor se muere de hambre debido a un paquete extraviado. Efectivamente diferentes conversaciones se pueden tener sobre la misma conexión sin impactar entre sí.
Otra adición útil es la de soporte multi-homing - una conexión puede ser a través de múltiples interfaces de en ambos extremos y que hace frente a fallos. Puede emular esto en TCP, pero a la capa de aplicación.
adecuada heartbeating enlace, que es lo primero que cualquier aplicación que utilice TCP para las conexiones implementos no transitorios, es allí de forma gratuita.
Mi resumen personal de SCTP es que no hace nada que no podía hacer de otra manera (en TCP o UDP) con soporte de aplicaciones sustancial. Lo que ofrece es la posibilidad de no tener que aplique el código (mal) usted mismo.
FYI, SCTP es obligatoria como compatible para Diámetro (cf RADIUS siguiente gen). consulte 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 no es muy conocida y no se utiliza / desplegado mucho porque:
- generalizada: No ampliamente integrado en pilas TCP / IP (en 2013: desaparecidos de forma nativa en el último Mac OS X y Windows)
- Bibliotecas: Pocos enlaces de alto nivel en fácil de usar idiomas (Negación: estoy mantenedor de pysctp , el apoyo SCTP fácil pila para Python)
- NAT: no atraviesa NAT muy bien / en absoluto (menos del 1% de Internet hogar y la empresa enrutadores NAT en SCTP) .
- popularidad: No aplicación público en general lo utilizan
- paradigma de programación: se ha cambiado un poco: sigue siendo un socket, pero se puede conectar muchos anfitriones a muchos anfitriones (multihoming), datagrama se ordena y fiable, ERC ...
- Complejidad: pila SCTP es complejo de implementar (debido a arriba)
- Competencia: Multipath TCP se acerca y debe hacer frente a las necesidades / capacidades multihoming para que las personas se abstengan de la implementación SCTP si es posible, a la espera de PCTM
- Nicho: Necesidades rellenos SCTP son muy peculiares (datagramas ordenados fiables, múltiples receptores) y que no se necesitan por tanto aplicaciones
- Seguridad: SCTP evade los controles de seguridad (algunos servidores de seguridad, la mayoría de IDSes, todos los DLP, no aparece en netstat excepto CentOS / RedHat / Fedora ...)
- Auditoría-capacidad: Algo así como 3 empresas en el mundo de forma rutinaria hacer auditorías de seguridad SCTP (Negación: Yo trabajo en una de ellas)
- Curva de aprendizaje: No mucho cadena de herramientas para jugar con SCTP (comprobar la excelente rel="noreferrer"> que combina muy bien con netcat o utilizar socat)
- Bajo el capó: Se utiliza sobre todo en telecomunicaciones y cada vez que envía SMS, empezar a navegar por la red en sus llamadas de teléfono móvil o hacer, que está provocando a menudo los mensajes que fluyen sobre SCTP (SIGTRAN / SS7 con GSM / UMTS, con Diámetro LTE / IMS / RCS, S1AP / X2AP con LTE), por lo que realmente se utilicen mucho, pero nunca se sabe de ella; -)
p1. SCTP asigna directamente sobre IPv4 requiere apoyo en las puertas de enlace NAT, que nunca ha sido ampliamente desplegados en cualquier lugar, y sin que la puerta de entrada típica NAT sólo se permite un host privado por megafonía a estar utilizando SCTP a la vez.
p2. SCTP mapeado a través de UDP / IPv4 permite más hosts privados por megafonía, pero asignaciones UDP en IPv4 pasarelas / NAT son notoriamente difíciles de establecer y mantener mantenido, debido al hecho de que UDP es un transporte sin conexión sin ningún estado explícito para un NAT para realizar un seguimiento .
p3. SCTP asigna directamente a través de IPv6 requiere ... bueno ... IPv6. ¿Ha tratado de implementar IPv6? Si es así, ¿ha tratado de comprar un servidor de seguridad IPv6? ¿Es compatible con SCTP? ¿Qué tal un balanceador de carga? Un acelerador SSL?
p4. Por último, una gran cantidad de Internet es más o menos limitado a lo que puede pasar a través del puerto TCP 80 y el puerto 443, por lo SCTP de cualquier sabor tiende a perder allí. Por lo tanto, los esfuerzos que se ve como el MPTCP grupo de trabajo IETF.
Muchos de nosotros va a utilizar SCTP pronto, ya que es utilizado por datachannels WebRTC para crear una capa TCP-como fiable en la parte superior de la UDP - SCTP sobre DTLS sobre UDP: https://tools.ietf.org/html/draft-ietf-rtcweb-data-channel-13 # sección-6
La lectura de la href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol" rel="nofollow noreferrer"> página yo diría que la razón principal es que es SCTP un protocolo muy joven (propuesto en 2000) que se encuentra actualmente sin el apoyo de la corriente principal de los sistemas operativos ( Windows , OS X , Linux ).
Si "muy joven" parece apropiada para usted, piense en IPV6 : "en diciembre 2008, a pesar de que marca su décimo aniversario como un protocolo de Estándares, IPv6 sólo en su infancia en términos de despliegue en general en todo el mundo. "
SCTP se utiliza ampliamente en la red de 4G LTE donde se utiliza Diámetro de AAA.
Puede que no sea muy conocido, pero no es utilizada. Muy recientemente se produjo un proyecto publicado en el < a href = "http://www.ietf.org/" rel = "nofollow noreferrer"> IETF sobre el uso de SCTP como un protocolo de capa de transporte para HTTP .
En referencia a todos los comentarios acerca de los routers comerciales se rompa o que carecen de apoyo SCTP, la cuestión es que SCTP con NAT se encuentra todavía en fase de proyecto con el IETF. Así que no hay especificación RFC para que puedan ponerlo en práctica.
https://tools.ietf.org/html/draft- IETF-comportan-sctpnat-09
SCTP nace demasiado tarde, y para muchos situación TCP es suficiente.
Además, como sé que la mayoría de su uso es en el área de telecomunicaciones.