stringtranslate.com

Protocolo de transmisión de control de flujo

El protocolo de transmisión de control de flujo ( SCTP ) es un protocolo de comunicaciones de redes informáticas en la capa de transporte del conjunto de protocolos de Internet . Originalmente diseñado para el transporte de mensajes del Sistema de señalización 7 (SS7) en telecomunicaciones, el protocolo proporciona la característica orientada a mensajes del Protocolo de datagramas de usuario (UDP), al tiempo que garantiza un transporte confiable y en secuencia de mensajes con control de congestión como el Protocolo de control de transmisión ( TCP). A diferencia de UDP y TCP, el protocolo admite rutas redundantes y de múltiples conexiones para aumentar la resiliencia y la confiabilidad.

SCTP está estandarizado por Internet Engineering Task Force (IETF) en RFC  9260. La implementación de referencia de SCTP se lanzó como parte de FreeBSD versión 7 y desde entonces se ha adaptado ampliamente a otras plataformas.

Supervisión formal

El grupo de trabajo de Transporte de Señalización del IETF ( SIGTRAN ) definió el protocolo (número 132 [1] ) en octubre de 2000, [2] y el grupo de trabajo del Área de Transporte del IETF (TSVWG) lo mantiene. RFC  9260 define el protocolo. RFC  3286 proporciona una introducción.

Transmisión múltiple basada en mensajes

Las aplicaciones SCTP envían datos para su transmisión en mensajes (grupos de bytes) a la capa de transporte SCTP. SCTP coloca los mensajes y la información de control en fragmentos separados (fragmentos de datos y fragmentos de control), cada uno identificado por un encabezado de fragmento . El protocolo puede fragmentar un mensaje en varios fragmentos de datos, pero cada fragmento de datos contiene datos de un solo mensaje de usuario. SCTP agrupa los fragmentos en paquetes SCTP. El paquete SCTP, que se envía al Protocolo de Internet , consta de un encabezado de paquete, fragmentos de control SCTP (cuando sea necesario), seguidos de fragmentos de datos SCTP (cuando estén disponibles).

SCTP puede caracterizarse como orientado a mensajes, lo que significa que transporta una secuencia de mensajes (cada uno de los cuales es un grupo de bytes), en lugar de transportar un flujo ininterrumpido de bytes como en TCP. Al igual que en UDP, en SCTP un remitente envía un mensaje en una operación y ese mensaje exacto se pasa al proceso de aplicación receptor en una sola operación. Por el contrario, TCP es un protocolo orientado a flujos, que transporta flujos de bytes de forma fiable y en orden. Sin embargo, TCP no permite que el receptor sepa cuántas veces la aplicación del remitente llamó al transporte TCP pasándole grupos de bytes para enviar. En el remitente, TCP simplemente agrega más bytes a una cola de bytes que esperan salir a través de la red, en lugar de tener que mantener una cola de mensajes salientes individuales separados que deben conservarse como tales.

El término transmisión múltiple se refiere a la capacidad de SCTP de transmitir varias secuencias independientes de fragmentos en paralelo, por ejemplo, transmitir imágenes de páginas web simultáneamente con el texto de la página web. En esencia, implica agrupar varias conexiones en una única asociación SCTP, operando con mensajes (o fragmentos) en lugar de bytes.

TCP preserva el orden de los bytes en la secuencia al incluir un número de secuencia de bytes con cada segmento . SCTP, por otro lado, asigna un número de secuencia o una identificación de mensaje [nota 1] a cada mensaje enviado en una secuencia. Esto permite ordenar de forma independiente los mensajes en diferentes flujos. Sin embargo, el orden de los mensajes es opcional en SCTP; una aplicación receptora puede optar por procesar mensajes en el orden de recepción en lugar de en el orden de envío.

Características

Las características de SCTP incluyen:

Los diseñadores de SCTP originalmente lo idearon para el transporte de telefonía (es decir, el Sistema de Señalización 7) sobre el Protocolo de Internet, con el objetivo de duplicar algunos de los atributos de confiabilidad de la red de señalización SS7 en IP. Este esfuerzo del IETF se conoce como SIGTRAN . Mientras tanto, se han propuesto otros usos, por ejemplo, el protocolo Diámetro [3] y el Reliable Server Pooling (RSerPool). [4]

Motivación y adopción

TCP ha proporcionado el medio principal para transferir datos de manera confiable a través de Internet. Sin embargo, TCP ha impuesto limitaciones a varias aplicaciones. De RFC  4960:

La adopción se ha visto frenada por la falta de conocimiento, la falta de implementaciones (particularmente en Microsoft Windows), la falta de soporte de aplicaciones y la falta de soporte de red. [6]

SCTP ha sido adoptado en el espacio de la telefonía móvil como protocolo de transporte para varias interfaces de red centrales . [7]

multihoming

SCTP proporciona rutas redundantes para aumentar la confiabilidad.

Cada punto final SCTP necesita verificar la accesibilidad de las direcciones primaria y redundante del punto final remoto mediante un latido . Cada punto final SCTP necesita reconocer los latidos que recibe del punto final remoto.

Cuando SCTP envía un mensaje a una dirección remota, la interfaz de origen solo la decidirá la tabla de enrutamiento del host (y no SCTP).

En multihoming asimétrico, uno de los dos puntos finales no admite multihoming.

En multihoming local y remoto único, si no se puede acceder a la dirección primaria remota, la asociación SCTP falla incluso si es posible una ruta alternativa.

Estructura del paquete

Un paquete SCTP consta de dos secciones básicas:

  1. El encabezado común , que ocupa los primeros 12 bytes y está resaltado en azul.
  2. Los fragmentos de datos , que ocupan la parte restante del paquete. El primer fragmento está resaltado en verde y el último de N fragmentos (Chunk N) está resaltado en rojo.

Cada fragmento comienza con un identificador de tipo de un byte, con 15 tipos de fragmentos definidos por RFC  9260 y al menos 5 más definidos por RFC adicionales. [nota 2] Ocho bits de bandera, un campo de longitud de dos bytes y los datos componen el resto del fragmento. Si el fragmento no forma un múltiplo de 4 bytes (es decir, la longitud no es un múltiplo de 4), entonces se rellena con ceros, que no están incluidos en la longitud del fragmento. El campo de longitud de dos bytes limita cada fragmento a una longitud de 65.535 bytes (incluidos los campos de tipo, banderas y longitud).

Seguridad

Aunque el cifrado no formaba parte del diseño SCTP original, SCTP se diseñó con funciones para mejorar la seguridad, como un protocolo de enlace de 4 vías (en comparación con el protocolo de enlace de 3 vías de TCP ) para proteger contra ataques de inundación SYN y "cookies" grandes para verificación de asociación. y autenticidad.

La confiabilidad también fue una parte clave del diseño de seguridad de SCTP. Multihoming permite que una asociación permanezca abierta incluso cuando algunas rutas e interfaces están inactivas. Esto es de particular importancia para SIGTRAN , ya que transporta SS7 a través de una red IP utilizando SCTP y requiere una gran resiliencia durante las interrupciones del enlace para mantener el servicio de telecomunicaciones incluso cuando se soportan anomalías en la red.

SCTP es a veces un buen candidato para la toma de huellas dactilares . Algunos sistemas operativos se entregan con soporte SCTP habilitado y, como no es tan conocido como TCP o UDP, a veces se pasa por alto en las configuraciones de firewall y detección de intrusos, lo que a menudo permite sondear el tráfico.

Implementaciones

La implementación de referencia SCTP se ejecuta en FreeBSD, Mac OS X, Microsoft Windows y Linux. [8]

Los siguientes sistemas operativos implementan SCTP:

Controladores de terceros:

Biblioteca de espacio de usuario :

Las siguientes aplicaciones implementan SCTP:

Túnel sobre UDP

En ausencia de soporte SCTP nativo en los sistemas operativos, es posible hacer un túnel SCTP sobre UDP, [22] así como asignar llamadas API TCP a llamadas SCTP para que las aplicaciones existentes puedan usar SCTP sin modificaciones. [23]

RFC

Ver también

Notas

  1. ^ El fragmento de DATOS usa un número de secuencia para mensajes ordenados, el fragmento I-DATA , que resuelve algunos problemas con el fragmento de DATOS original, usa una identificación de mensaje para todos los mensajes.
  2. ^ Consulte la estructura del paquete SCTP para obtener más detalles.

Referencias

  1. ^ "Números de protocolo". iana.org . IANA . Consultado el 9 de septiembre de 2014 .
  2. ^ Protocolo de transmisión de control de flujo. IETF . Octubre de 2000. doi : 10.17487/RFC2960 . RFC 2960.
  3. ^ "Transporte". Protocolo base de diámetro. IETF . segundo. 2.1. doi : 10.17487/RFC3588 . RFC 3588 . Consultado el 18 de mayo de 2012 .
  4. ^ "Escenario de ejemplo utilizando los servicios de sesión RSerPool". Una descripción general de los protocolos de agrupación de servidores confiables. IETF . pag. 10. seg. 4.2. doi : 10.17487/RFC5351 . RFC 5351.
  5. ^ RFC 9260, sección 1.5.5
  6. ^ Hogg, Scott. "¿Qué pasa con el protocolo de transmisión de control de flujo (SCTP)?". Mundo de la Red . Consultado el 4 de octubre de 2017 .
  7. ^ Olsson, Magnus; Mulligan, Catalina; Sultana, Shabnam; Rommer, Stefan; Frid, Lars (2013). Redes de paquetes EPC y 4G: impulsando la revolución de la banda ancha móvil (2ª ed.). Amsterdam Boston: Elsevier/AP, Academic Press es una editorial de Elsevier. pag. 491.ISBN 978-0-12-394595-2.
  8. ^ "Implementación de referencia para SCTP - RFC4960". GitHub . Consultado el 14 de octubre de 2013 . Esta es la implementación de referencia para SCTP. Es portátil y se ejecuta en FreeBSD/MAC-OS/Windows y en User Space (incluido Linux).
  9. ^ "sys/netinet/sctp.h". Referencia cruzada de BSD . NetBSD . 2017-06-27 . Consultado el 21 de enero de 2019 .
  10. ^ "man4/sctp.4". Referencia cruzada de BSD . NetBSD . 2018-07-31 . Consultado el 21 de enero de 2019 .
  11. ^ "DragonFly elimina SCTP". Listas.dragonflybsd.org . Consultado el 28 de abril de 2016 .
  12. ^ "Acerca de los avances tecnológicos de FreeBSD". El proyecto FreeBSD. 2008-03-09 . Consultado el 13 de septiembre de 2008 . SCTP: FreeBSD 7.0 es la implementación de referencia para el nuevo protocolo SCTP (Stream Control Transmission Protocol) de IETF, destinado a admitir VoIP, telecomunicaciones y otras aplicaciones con gran confiabilidad y transmisión de calidad variable a través de características como entrega multiruta, conmutación por error. y transmisión múltiple.
  13. ^ "Protocolo de transmisión de control de flujo (SCTP)". Compañía de desarrollo Hewlett-Packard. Archivado desde el original el 3 de enero de 2013.
  14. ^ "Redes TCP/IP". Soporte para desarrolladores de QNX . Sistemas de software QNX . Consultado el 13 de septiembre de 2008 ."Novedades de esta referencia". Referencia de la biblioteca QNX . Sistemas de software QNX . Consultado el 18 de diciembre de 2012 .
  15. ^ "Plataforma de desarrollo de software QNX 6.4.0".
  16. ^ "Redes del sistema operativo Solaris 10: rendimiento de red extremo". Microsistemas solares . Consultado el 13 de septiembre de 2008 .
  17. ^ "SctpDrv: un controlador SCTP para Microsoft Windows". Archivado desde el original el 8 de octubre de 2017 . Consultado el 4 de enero de 2022 .
  18. ^ "Extensión del kernel de red SCTP para Mac OS X". GitHub . 23 de septiembre de 2021.
  19. ^ "sctplab/usrsctp". Github . Consultado el 21 de septiembre de 2021 .
  20. ^ "Página de descarga SCTP". 29 de mayo de 2006 . Consultado el 4 de febrero de 2011 .
  21. ^ "Instalador de la biblioteca SCTP de Windows" . Consultado el 4 de febrero de 2011 .
  22. ^ Tuexen, Michael; Stewart, Randall R. (mayo de 2013). Encapsulación UDP de paquetes del Protocolo de transmisión de control de flujo (SCTP) para comunicación de host final a host final. IETF . doi : 10.17487/RFC6951 . RFC 6951.
  23. ^ Bickhart, Ryan; Paul D. Amer; Randall R. Stewart (2007). "Capa de cuña de traducción transparente de TCP a SCTP" (PDF) . Consultado el 13 de septiembre de 2008 .
  24. ^ D. Ala; A. Yourtchenko (abril de 2012). "Happy Eyeballs: éxito con hosts de doble pila". herramientas.ietf.org . IETF .
  25. ^ Khademi, Naeem; Brunström, Anna; Hurtig, Per; Grinnemo, Karl-Johan (21 de julio de 2016). "Ojos felices para la selección de transporte". herramientas.ietf.org . IETF . Consultado el 9 de enero de 2017 .

enlaces externos