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° estandar es del año 1981). 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.
Su servicio es:
- Confiable
- 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)
- Garantiza orden estricto de entrega de datos dentro de un mensaje pero no hay garantía de orden entre mensajes.
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)
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