BroadNet
SIGTRANTransporte

SCTP: Stream Control Transmission Protocol

Actualizado el 4 min de lecturaBasado en estándares
Respuesta directa

SCTP (RFC 4960) es un transporte fiable y orientado a mensajes diseñado para señalización. A diferencia del flujo de bytes único de TCP, entrega mensajes discretos por múltiples streams independientes (evitando el bloqueo de cabecera de línea) y admite multihoming —varias direcciones IP por punto final para la conmutación automática de trayecto—. SIGTRAN lo usa para transportar SS7 sobre IP.

§01

Por qué SCTP en lugar de TCP

La señalización SS7 necesita entrega fiable, en secuencia y de baja latencia con conmutación por error rápida, requisitos que TCP cumple solo en parte. TCP es un flujo de bytes único, así que un segmento perdido bloquea todos los bytes posteriores hasta que se retransmite (bloqueo de cabecera de línea), y una conexión TCP está ligada a un par de direcciones IP, así que un fallo de trayecto la rompe. SCTP se diseñó para solucionar ambas cosas: entrega mensajes independientes por múltiples streams y liga una asociación a varias direcciones para una conmutación transparente. También resiste ataques de inundación SYN con una negociación en cuatro fases.

SCTP frente a TCP
PropiedadTCPSCTP
Modelo de datosFlujo de bytesOrientado al mensaje (conserva los límites)
FlujosUnoMúltiples flujos independientes por asociación
Bloqueo de cabeza de líneaA lo largo de toda la conexiónConfinado a un solo flujo
Direccionamiento de puntos finalesPar IP únicoConexión multihoming (varias direcciones IP por punto final)
Handshake3 vías (expuesto a SYN flood)Negociación en 4 pasos con cookie firmada
Opciones de entregaSolo ordenadoOrdenado o no ordenado por mensaje
§02

Multistreaming

Una asociación SCTP transporta múltiples streams lógicos, numerados por Stream Identifier. Cada stream se ordena de forma independiente mediante un Stream Sequence Number, mientras que un único Transmission Sequence Number (TSN) rige la entrega fiable en toda la asociación. El efecto es que una pérdida en un stream no detiene los demás: un mensaje atascado para un destino no bloquea la señalización para otro. Las aplicaciones también pueden enviar mensajes sin ordenar cuando no se requiere secuenciación, reduciendo aún más la latencia.

§03

Multihoming y conmutación por error

Un punto final SCTP puede ligar varias direcciones IP —normalmente en trayectos de red separados—. Una dirección es el trayecto primario; las demás son alternativas. SCTP monitoriza continuamente cada dirección de destino con chunks HEARTBEAT y, si el trayecto primario falla, retransmite por una alternativa sin derribar la asociación. Esto da a los enlaces de señalización una resiliencia de clase operador sobre IP que una conexión TCP con un solo alojamiento no puede ofrecer, y es una razón principal por la que SIGTRAN eligió SCTP.

§04

El formato de paquete basado en chunks

Un paquete SCTP tiene una cabecera común de 12 bytes —puertos de origen y destino, un Verification Tag de 32 bits que protege la asociación y una suma de comprobación CRC-32c— seguida de uno o más chunks. Los chunks son autodescriptivos (type, flags, length, value) y varios pueden agruparse en un paquete. Los chunks de control establecen y gestionan la asociación; los chunks DATA transportan mensajes de usuario. Esta estructura permite a SCTP confirmar, hacer heartbeat y transportar datos de forma eficiente en el mismo paquete.

Estructura de un paquete SCTPtext
Common header (12 bytes):
  Source port (2)  Destination port (2)
  Verification Tag (4)   Checksum CRC-32c (4)
Then 1..n chunks, each:
  Type (1)  Flags (1)  Length (2)  Value (variable)
e.g.  [ DATA chunk (TSN, Stream ID, SSN, payload) ] [ SACK chunk ]
§05

Tipos de chunk y establecimiento de asociación

Una asociación se establece con una negociación en cuatro fases —INIT, INIT ACK (que transporta una cookie de estado firmada), COOKIE ECHO, COOKIE ACK—, que permite al servidor permanecer sin estado hasta que se devuelve la cookie, frustrando los ataques de inundación SYN. Los datos fluyen en chunks DATA confirmados por SACK. Los HEARTBEAT/HEARTBEAT ACK sondean los trayectos inactivos. La asociación se cierra con elegancia con SHUTDOWN o de forma abrupta con ABORT.

Tipos de chunk SCTP comunes
TipoFragmentoPropósito
0DATATransportar un mensaje de usuario (TSN, ID de flujo, SSN, carga útil)
1 / 2INIT / INIT ACKIniciar asociación; INIT ACK lleva la cookie de estado
3SACKAcuse selectivo de los DATA recibidos
4 / 5HEARTBEAT / HEARTBEAT ACKSondear la alcanzabilidad de una dirección de destino
6ABORTCierre anormal e inmediato de la asociación
7 / 8SHUTDOWN / SHUTDOWN ACKCierre ordenado
10 / 11COOKIE ECHO / COOKIE ACKCompleta el handshake de cuatro vías
Preguntas frecuentes

Preguntas frecuentes

¿Cuál es la principal ventaja de SCTP sobre TCP?

Dos cosas: el multistreaming, para que un paquete perdido en un stream no bloquee los demás (sin bloqueo de cabecera de línea en toda la conexión), y el multihoming, para que un punto final pueda usar varias direcciones IP y conmutar automáticamente cuando cae un trayecto. Ambas importan mucho para la fiabilidad de la señalización.

¿Qué es el multihoming de SCTP?

El multihoming permite a una sola asociación SCTP ligar varias direcciones IP por punto final. Una es el trayecto primario y el resto alternativas, monitorizadas por heartbeats. Si el trayecto primario falla, SCTP retransmite por una alternativa sin caer la asociación: redundancia de trayecto integrada en el transporte.

¿Qué es un chunk de SCTP?

Un chunk es una unidad autodescriptiva dentro de un paquete SCTP, con type, flags, length y value. Los chunks DATA transportan mensajes de usuario; los chunks de control (INIT, SACK, HEARTBEAT, SHUTDOWN y otros) gestionan la asociación. Varios chunks pueden agruparse en un solo paquete.

¿Por qué SCTP usa una negociación en cuatro fases?

El paso extra permite al respondedor permanecer sin estado hasta que recibe de vuelta una cookie de estado firmada (en COOKIE ECHO). Como no se asigna estado de asociación hasta que la cookie regresa, SCTP resiste los ataques de agotamiento de recursos de tipo inundación SYN que afectan a la negociación en tres fases de TCP.

¿Qué es el Verification Tag en SCTP?

Un valor de 32 bits en la cabecera común, intercambiado durante el establecimiento de la asociación, que ambos puntos finales deben incluir en cada paquete. Valida que un paquete pertenece a la asociación actual, protegiendo contra paquetes obsoletos y ataques de inyección a ciegas.

Referencias

Especificaciones de la fuente

Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.

BNMantenido por el equipo de ingeniería BroadNet·Mensajería de nivel empresarial desde 2003.
Colócalo en el cable

Desarrollado con un enlace SMPP real y una API REST.

Solicita acceso de prueba con claves de prueba reales: primero envía a tu propio número verificado y, una vez aprobada tu identidad de remitente y las rutas, pasa a producción en más de 200 países.