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 pensado 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 múltiples conexiones y rutas redundantes para aumentar la resiliencia y la confiabilidad.

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

Supervisión formal

El grupo de trabajo de Transporte de Señalización ( SIGTRAN ) de la IETF definió el protocolo (número 132 [1] ) en octubre de 2000, [2] y el grupo de trabajo del Área de Transporte de la IETF (TSVWG) 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 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 ellos un grupo de bytes), en lugar de transportar un flujo continuo 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 operación. Por el contrario, TCP es un protocolo orientado a flujos, que transporta flujos de bytes de forma fiable y ordenada. Sin embargo, TCP no permite que el receptor sepa cuántas veces la aplicación remitente llamó al transporte TCP que le pasaba grupos de bytes para enviar. En el remitente, TCP simplemente añade más bytes a una cola de bytes que esperan salir por la red, en lugar de tener que mantener una cola de mensajes salientes individuales separados que deben conservarse como tales.

El término multitransmisión se refiere a la capacidad de SCTP de transmitir varios flujos 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, que funciona sobre mensajes (o fragmentos) en lugar de bytes.

TCP conserva el orden de bytes en el flujo incluyendo 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 de forma independiente los mensajes en diferentes flujos. Sin embargo, el orden de los mensajes es opcional en SCTP; una aplicación receptora puede elegir procesar los 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, Signaling System 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 de 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 manera confiable a través de Internet. Sin embargo, TCP ha impuesto limitaciones a varias aplicaciones. Según RFC  4960:

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

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

Alojamiento múltiple

SCTP proporciona rutas redundantes para aumentar la confiabilidad.

Cada punto final SCTP debe verificar la accesibilidad de las direcciones primarias y redundantes del punto final remoto mediante un latido . Cada punto final SCTP debe 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 será decidida por la tabla de enrutamiento del host (y no por SCTP).

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

En el host múltiple local y el host único remoto, si no se puede acceder a la dirección principal 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 los N fragmentos (fragmento N) está resaltado en rojo.

Cada fragmento comienza con un identificador de tipo de un byte, con 15 tipos de fragmento 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 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 era parte del diseño original de SCTP, SCTP fue diseñado 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 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. El 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 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 cuando se soportan anomalías en la red.

SCTP es a veces un buen candidato para la toma de huellas digitales . Algunos sistemas operativos incluyen la compatibilidad con SCTP habilitada y, como no es tan conocido como TCP o UDP, a veces se lo pasa por alto en las configuraciones de detección de intrusiones y firewall, lo que a menudo permite el sondeo del tráfico.

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:

Biblioteca de espacio de usuario :

Las siguientes aplicaciones implementan SCTP:

Túneles sobre UDP

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

RFC (Requerimientos de comentarios)

Véase también

Notas

  1. ^ El fragmento DATA utiliza un número de secuencia para 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 de base de diámetro. IETF . sec. 2.1. doi : 10.17487/RFC3588 . RFC 3588 . Consultado el 18 de mayo de 2012 .
  4. ^ "Ejemplo de escenario que utiliza 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é pasa con el protocolo de transmisión de control de flujo (SCTP)?". Network World . Archivado desde el original el 30 de agosto de 2014. Consultado el 4 de octubre de 2017 .
  7. ^ Olsson, Magnus; Mulligan, Catherine; 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.). Á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 User Space (incluido Linux).
  9. ^ "sys/netinet/sctp.h". Referencia cruzada de BSD . NetBSD . 2017-06-27 . Consultado el 2019-01-21 .
  10. ^ "man4/sctp.4". Referencia cruzada de BSD . NetBSD . 2018-07-31 . Consultado el 2019-01-21 .
  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. 2008-03-09 . Consultado el 2008-09-13 . SCTP: FreeBSD 7.0 es la implementación de referencia para el nuevo protocolo IETF Stream Control Transmission Protocol (SCTP), destinado a soportar VoIP, telecomunicaciones y otras aplicaciones con una gran fiabilidad y una transmisión de calidad variable a través de funciones como entrega por múltiples rutas, conmutación por error y transmisión múltiple.
  13. ^ "Protocolo de transmisión de control de flujo (SCTP)". Hewlett-Packard Development Company. Archivado desde el original el 3 de enero de 2013.
  14. ^ "Redes TCP/IP". Soporte para desarrolladores de QNX . Sistemas de software de 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 desde el original el 8 de octubre de 2017. Consultado el 4 de enero de 2022 .
  18. ^ "Extensión de núcleo 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 de SCTP". 2006-05-29 . Consultado el 2011-02-04 .
  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). "Transparent TCP-to-SCTP Translation Shim Layer" (PDF) . Consultado el 13 de septiembre de 2008 .
  24. ^ D. Wing; A. Yourtchenko (abril de 2012). "Happy Eyeballs: Success with Dual-Stack Hosts" (Ojos felices: éxito con hosts de doble pila). tools.ietf.org . IETF .
  25. ^ Khademi, Naeem; Brunstrom, Anna; Hurtig, Per; Grinnemo, Karl-Johan (21 de julio de 2016). "Happy Eyeballs for Transport Selection" (Ojos felices para la selección de transporte). tools.ietf.org . IETF . Consultado el 9 de enero de 2017 .

Enlaces externos