Articulo de referencia

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 ...

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 ofrece la funcionalidad orientada a mensajes del Protocolo de Datagramas de Usuario (UDP) al tiempo que garantiza un transporte fiable y secuencial de mensajes con control de congestión , similar al del Protocolo de Control de Transmisión (TCP). A diferencia de UDP y TCP, el protocolo admite la multiconexión y rutas redundantes para aumentar la resiliencia y la fiabilidad.

SCTP está estandarizado por el Grupo de Trabajo de Ingeniería de Internet (IETF) en el RFC 9260. La implementación de referencia de SCTP se publicó como parte de FreeBSD versión 7 y desde entonces se ha adaptado ampliamente a otras plataformas. 

Supervisión formal

El grupo de trabajo SIGTRAN (Señalización y Transporte ) de la IETF definió el protocolo (número 132 [ 1 ] ) en octubre de 2000 [ 2 ] , y el grupo de trabajo TSVWG (Área de Transporte) de la IETF lo mantiene. El RFC 9260 define el protocolo. El 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 bloques separados (bloques de datos y bloques de control), cada uno identificado por una cabecera de bloque . El protocolo puede fragmentar un mensaje en varios bloques de datos, pero cada bloque de datos contiene información de un solo mensaje de usuario. SCTP agrupa los bloques en paquetes SCTP. El paquete SCTP, que se envía al protocolo de Internet , consta de una cabecera de paquete, bloques de control SCTP (cuando sea necesario) seguidos de bloques de datos SCTP (cuando estén disponibles).

SCTP se caracteriza por estar orientado a mensajes, lo que significa que transporta una secuencia de mensajes (cada uno un grupo de bytes), en lugar de transportar un flujo continuo de bytes como en TCP. Al igual que en UDP, en SCTP un emisor envía un mensaje en una sola operación, y ese mismo mensaje se transmite al proceso de la aplicación receptora también 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 emisora ​​ha llamado al transporte TCP pasándole grupos de bytes para su envío. En el emisor, TCP simplemente añade más bytes a una cola de bytes que esperan ser enviados 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 para 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 conserva el orden de bytes en el flujo al incluir un número de secuencia de bytes con cada segmento . SCTP, por otro lado, asigna un número de secuencia o un identificador de mensaje [ nota 1 ] a cada mensaje enviado en un flujo. Esto permite ordenar los mensajes de forma independiente en diferentes flujos. Sin embargo, el orden de los mensajes es opcional en SCTP; una aplicación receptora puede optar por procesar los mensajes en el orden de recepción en lugar del orden de envío.

Características

Las características de SCTP incluyen:

  • Transmisión fiable de flujos de datos tanto ordenados como desordenados.
  • Compatibilidad con multihoming, donde uno o ambos extremos de una conexión pueden constar de más de una dirección IP, lo que permite una conmutación por error transparente entre rutas de red redundantes.
  • La entrega de fragmentos dentro de flujos independientes elimina el bloqueo innecesario de cabecera de línea , a diferencia de la entrega de flujo de bytes TCP.
  • Fiabilidad parcial explícita
  • Selección y monitorización de la ruta para seleccionar una ruta de transmisión de datos principal y probar la conectividad de la ruta de transmisión.
  • Los mecanismos de validación y confirmación protegen contra los ataques de inundación y notifican la presencia de fragmentos de datos duplicados o faltantes.
  • Detección de errores mejorada adecuada para tramas jumbo de Ethernet

Los diseñadores de SCTP lo concibieron originalmente para el transporte de telefonía (es decir, el Sistema de Señalización 7) a través del Protocolo de Internet, con el objetivo de replicar 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 Diameter [ 3 ] y Reliable Server Pooling (RSerPool) [ 4 ] .

Motivación y adopción

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

  • TCP proporciona tanto una transferencia de datos fiable como una entrega de datos con estricto orden de transmisión. Algunas aplicaciones requieren una transferencia fiable sin mantenimiento de la secuencia, mientras que otras se conformarían con un orden parcial de los datos. En ambos casos, la propiedad de bloqueo de cabecera de TCP provoca retrasos innecesarios.
  • Para las aplicaciones que intercambian registros o mensajes distintos, la naturaleza orientada al flujo de TCP requiere la adición de marcadores explícitos u otra codificación para delimitar los registros individuales.
  • Para evitar el envío de muchos paquetes IP pequeños cuando un único paquete más grande habría sido suficiente, la implementación de TCP puede retrasar la transmisión de datos mientras espera que la aplicación pueda tener más datos en cola ( algoritmo de Nagle ). Aunque muchas implementaciones de TCP permiten deshabilitar el algoritmo de Nagle, esto no es un requisito de la especificación. SCTP, por otro lado, permite configurar la transmisión sin retardo como predeterminada para una asociación, eliminando cualquier retraso no deseado, pero a costa de una mayor sobrecarga de transferencia. [ 5 ]
  • El alcance limitado de los sockets TCP complica la tarea de proporcionar una capacidad de transferencia de datos de alta disponibilidad utilizando hosts con múltiples interfaces de red.
  • TCP es relativamente vulnerable a ataques de denegación de servicio, como los ataques SYN .

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

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

Viviendas múltiples

Multiconexión SCTP
Multihoming asimétrico: multihoming local a conexión única remota
Multihoming asimétrico: de conexión única local a multihoming remoto.

SCTP proporciona rutas redundantes para aumentar la fiabilidad.

Cada punto final SCTP debe comprobar la accesibilidad de las direcciones principal y redundante del punto final remoto mediante una señal de latido . Cada punto final SCTP debe confirmar la recepción de las señales de latido del punto final remoto.

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

En la multiconexión asimétrica, uno de los dos puntos finales no admite la multiconexión.

En el caso de multihoming local y homing único remoto, si la dirección primaria remota no es accesible, 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 porción restante del paquete. El primer fragmento está resaltado en verde, y el último de los N fragmentos (Fragmento 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), se rellena con ceros, que no se incluyen 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 original de SCTP, este protocolo se diseñó con características para mejorar la seguridad, como el protocolo de enlace de 4 vías (en comparación con el protocolo de enlace de 3 vías de TCP ) para proteger contra los ataques de inundación SYN , y grandes "cookies" para la verificación de la asociación y la autenticidad.

La fiabilidad también fue un aspecto clave del diseño de seguridad de SCTP. La multiconexión permite que una asociación permanezca abierta incluso cuando algunas rutas e interfaces no están disponibles. Esto es de particular importancia para SIGTRAN , ya que transmite SS7 a través de una red IP mediante SCTP y requiere una gran resiliencia durante las interrupciones del enlace para mantener el servicio de telecomunicaciones incluso ante anomalías en la red.

Implementaciones

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

Los siguientes sistemas operativos implementan SCTP:

Controladores de terceros:

  • Microsoft Windows :
    • El controlador del kernel SctpDrv es una adaptación de la pila SCTP de BSD a Windows (abandonada después de 2012) [ 17 ].
  • macOS :
    • Extensión del núcleo de red SCTP para Mac OS X [ 18 ]

Biblioteca de espacio de usuario :

Las siguientes aplicaciones implementan SCTP:

Tunelización sobre UDP

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

RFC

  • Protocolo de transmisión de control de flujo RFC 9260 
  • RFC 8540 Protocolo de transmisión de control de flujo: Erratas y problemas en RFC 4960 (obsoleto por RFC 9260) 
  • RFC 7829 SCTP-PF: Un algoritmo de conmutación por error rápida para el protocolo de transmisión de control de flujo 
  • Reinicio del RTO del protocolo TCP y del protocolo de transmisión de control de flujo (SCTP) según RFC 7765 
  • RFC 7496 Políticas adicionales para la extensión del protocolo de transmisión de control de flujo parcialmente confiable 
  • Extensión SACK-IMMEDIATELY del RFC 7053 para el protocolo de transmisión de control de flujo (obsoleta por el RFC 9260) 
  • RFC 6951 Encapsulación UDP de paquetes del Protocolo de Transmisión de Control de Flujo (SCTP) para comunicación de host final a host final 
  • RFC 6525 Protocolo de transmisión de control de flujo (SCTP) Reconfiguración de flujo 
  • Extensiones de la API de sockets RFC 6458 para el protocolo de transmisión de control de flujo (SCTP) 
  • RFC 6096 Protocolo de transmisión de control de flujo (SCTP) Registro de indicadores de fragmento (obsoleto por RFC 9260) 
  • RFC 5062: Se han detectado ataques de seguridad contra el Protocolo de Transmisión de Control de Flujo (SCTP) y existen contramedidas actuales. 
  • RFC 5061 Protocolo de transmisión de control de flujo (SCTP) Reconfiguración dinámica de direcciones 
  • Adaptación del protocolo de transmisión de control de flujo (SCTP) de RFC 5043 para la colocación directa de datos (DDP). 
  • RFC 4960 Protocolo de transmisión de control de flujo (obsoleto por RFC 9260) 
  • RFC 4895 Fragmentos autenticados para el protocolo de transmisión de control de flujo (SCTP) 
  • RFC 4820: Relleno de fragmentos y parámetros para el protocolo de transmisión de control de flujo (SCTP). 
  • Erratas y problemas de la especificación del protocolo de transmisión de control de flujo (SCTP) RFC 4460 (obsoleto por RFC 9260) 
  • RFC 3873 Base de información de gestión (MIB ) del protocolo de transmisión de control de flujo (SCTP ) 
  • RFC 3758 Extensión de confiabilidad parcial del protocolo de transmisión de control de flujo (SCTP) 
  • RFC 3554 Sobre el uso del protocolo de transmisión de control de flujo (SCTP) con IPsec 
  • RFC 3436 Seguridad de la capa de transporte sobre el protocolo de transmisión de control de flujo 
  • RFC 3309 Cambio de suma de comprobación del protocolo de transmisión de control de flujo (SCTP) (obsoleto por RFC 4960) 
  • RFC 3286 Introducción al protocolo de transmisión de control de flujo 
  • Declaración de aplicabilidad del protocolo de transmisión de control de flujo RFC 3257 
  • Protocolo de transmisión de control de flujo RFC 2960 (actualizado por RFC 3309 y obsoleto por RFC 4960) 

Véase también

Notas

  1. El fragmento DATA utiliza un número de secuencia para los mensajes ordenados, el fragmento I-DATA , que resuelve algunos problemas con el fragmento DATA original, utiliza un identificador 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 . sec. 2.1. doi : 10.17487/RFC3588 . RFC 3588. Recuperado el 18 de mayo de 2012 . 
  4. "Escenario de ejemplo utilizando los servicios de sesión RSerPool" . Descripción general de los protocolos de agrupación de servidores confiables . IETF . pág. 10. sec. 4.2. doi : 10.17487/RFC5351 . RFC 5351 .   
  5. RFC 9260, sección 1.5.5
  6. Hogg, Scott. "¿Qué hay del protocolo de transmisión de control de flujo (SCTP)?" . Network World . Archivado del original el 30 de agosto de 2014 . Recuperado el 4 de octubre de 2017 .
  7. Olsson, Magnus; Mulligan, Catherine; Sultana, Shabnam; Rommer, Stefan; Frid, Lars (2013). EPC y redes de paquetes 4G: impulsando la revolución de la banda ancha móvil (2.ª ed.). Ámsterdam Boston: Elsevier/AP, Academic Press es un sello editorial de Elsevier. pág. 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 portable y se ejecuta en FreeBSD/MAC-OS/Windows y en espacio de usuario (incluido Linux).
  9. "sys/netinet/sctp.h" . Referencia cruzada de BSD . NetBSD . 27 de junio de 2017. Consultado el 21 de enero de 2019 .
  10. "man4/sctp.4" . Referencia cruzada de BSD . NetBSD . 31-07-2018 . Consultado el 21-01-2019 .
  11. "DragonFly elimina SCTP" . Lists.dragonflybsd.org . 7 de enero de 2015. Consultado el 28 de abril de 2016 .
  12. "Acerca de los avances tecnológicos de FreeBSD" . El proyecto FreeBSD. 9 de marzo de 2008. Consultado el 13 de septiembre de 2008. SCTP : FreeBSD 7.0 es la implementación de referencia para el nuevo protocolo IETF Stream Control Transmission Protocol (SCTP), destinado a admitir VoIP, telecomunicaciones y otras aplicaciones con una fuerte fiabilidad y transmisión de calidad variable a través de características como la entrega por múltiples rutas, la conmutación por error y la transmisión múltiple.
  13. "Protocolo de transmisión de control de flujo (SCTP)" . Hewlett-Packard Development Company.{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  14. "Redes TCP/IP" . Soporte para desarrolladores de QNX . Sistemas de software QNX . Consultado el 13 de septiembre de 2008 ."Novedades en 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" . Sun Microsystems . Consultado el 13 de septiembre de 2008 .
  17. "SctpDrv: un controlador SCTP para Microsoft Windows" . Archivado del 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. "sctplib y socketapi: La biblioteca SCTP de espacio de usuario (sctplib) y la biblioteca de API de sockets (socketapi)" . 9 de julio de 2025. Consultado el 9 de julio de 2025 .
  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 interconexión de traducción TCP a SCTP transparente" (PDF) . Recuperado el 13 de septiembre de 2008 .
  24. D. Wing; A. Yourtchenko (abril de 2012). "Happy Eyeballs: Success with Dual-Stack Hosts" . tools.ietf.org . IETF .
  25. Khademi, Naeem; Brunstrom, Anna; Hurtig, Per; Grinnemo, Karl-Johan (21 de julio de 2016). "Happy Eyeballs for Transport Selection" . tools.ietf.org . IETF . Consultado el 9 de enero de 2017 .
  • sigtran (archivado)
  • "Grupo de Trabajo sobre Señalización del Transporte (sigtran)" .
  • "Grupo de Trabajo del Área de Transporte (tsvwg)" .
  • "Proyecto OpenSS7" .
  • Grupo de trabajo SCTP para Linux
  • "Página de Michael Tüxen en SCTP" .
  • "Página de SCTP de Lode Coene" .
  • "Página del proyecto SCTP de Thomas Dreibholz" .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Stream_Control_Transmission_Protocol&oldid=1355802989 "