Protocolo
de
Transporte "Stream Control
Transmission Protocol (SCTP)"
SCTP es un protocolo de transporte creado recientemente (año 2000)
comparado con TCP y UDP (la idea
de TCP fue publicada en 1974 y 1° estándar es del año 1980,
el cual fue reemplazado el 1981.
UDP fue diseñado por David P Reed en 1980 y estandarizado
el mismo año). SCTP, en principio fue diseñado para cubrir las necesidad
de aplicaciones emergentes como Telefonía IP, en particular para
transportar señalización a través de Internet.
Mientras TCP transporta un flujo continuo de bytes, SCTP transporta
secuencias de mensajes (cada mensaje es un grupo de bytes). Decimos que
SCTP es orientado al mensaje. Como UDP, en SCTP la aplicación
transmisora envía un mensaje en una operación, y ese mensaje es pasado a
la aplicación receptora en una operación.
Su servicio es:
- Confiable como TCP
- Orientado al mensaje. TCP es orientado al byte, UDP al bloque de datos
que se envíe cada vez.
- Provee múltiples flujos (streams) entre puntos extremos
- Provee soporte a nivel transporte para computadores con conexión a
varias redes o proveedores (multihoming). A través de un socket SCTP,
una aplicación puede enviar o recibir datos a través de WiFi, red
cableada y 4G de manera concurrentemente.
- Garantiza orden estricto de entrega de datos dentro de un mensaje
(como TCP) pero no hay garantía de orden entre mensajes (como
UDP).
SCTP posee ciertas ventajas sobre TCP en la
mayoría de las aplicaciones:
- SCTP soporta directamente multihoming, esto es conexión a través de
múltiples interfaces (múltiples IPs) desde una misma máquina.
- Elimina bloqueos debido al paquete más antiguo (head-of-line blocking)
cuando éste pertenece a otro mensaje. El bloqueo sigue existiendo dentro
de un mensaje, pues se compromete a entrega en orden dentro del mensaje.
- Los límites de los mensajes de la aplicación son preservados. En este
sentido es similar a UDP que es orientado a bloques.
- No provee servicio de mensajes ordenados (pero sí son confiables).
Todos los mensajes llegan, solo que posiblemente en otro orden. Al
interior de cada mensaje se mantiene orden.
- Algunas implementaciones ofrecen servicios confiables parciales. Esto
es el Tx puede señalar que si un mensaje no ha podido ser entregado
después de un tiempo, se descarta. Así se mejora el transporte de datos
ante congestión.
- SCTP ofrece prácticamente los mismos servicios que TCP, pero no
permite cerrar la conexión parcialmente (shutdown en un sentido), ni el
envío de datos urgentes (esta opción no la hemos estudiado en este
curso).
- SCTP posee mejor control para sintonizar el protocolo de transporte
según la necesidad de la aplicación. TCP es más rígido.
Modelo de interfaz Uno-a-uno y uno-a-muchos
Podemos crear dos tipos de sockets en SCTP: one-to-one o
one-to-many.
One-to-one:
Corresponde a una asociación (no se usa término "conexión" como en TCP, en
SCTP hablamos de "asociación") entre una aplicación y otra pero en lugar
de dos IPs puede involucrar más IPs en caso multihoming. Entre otras
razones, este tipo de socket fue desarrollado para facilitar la migración
de aplicación sobre TCP a SCTP.
One-to-many: En este caso podemos
tener múltiples asociaciones para un mismo sockets, es decir para este
socket podemos tener múltiples sockets remotos. Es similar al caso UDP
donde un socket servidor puede atender peticiones entrelazadas desde
múltiples clientes.
El usar un tipo de interfaz (socket) u otro depende de la aplicación; por
ejemplo, considerar:
- ¿Se trata de un servidor iterativo o concurrente?
- ¿Deseamos manejar varios descriptores en el servidor o sólo uno?
Sockets One-to-one
y one-to-many