SCTP requiere más diseño dentro de la aplicación para obtener el mejor uso de la misma. Hay más opciones que TCP, la API tipo Sockets llegó más tarde y es joven. Sin embargo, creo que la mayoría de las personas que se toman el tiempo para entenderlo (y que conocen las deficiencias de TCP) lo aprecian: es un protocolo bien diseñado que se basa en nuestros ~ 30 años de conocimiento de TCP y UDP.
Uno de los aspectos que requiere cierta reflexión es el de las corrientes. Los flujos proporcionan (generalmente, creo que puede desactivarlo) una garantía de pedido dentro de ellos (al igual que una conexión TCP), pero puede haber múltiples flujos por conexión SCTP. Si los datos de su aplicación pueden enviarse a través de múltiples transmisiones, entonces evite el bloqueo de la línea de cabecera donde el receptor muere de hambre debido a un paquete perdido. Efectivamente se pueden tener diferentes conversaciones sobre la misma conexión sin impactar entre sí.
Otra adición útil es la de soporte multi-homing: una conexión puede ser a través de múltiples interfaces en ambos extremos y hace frente a fallas. Puede emular esto en TCP, pero en la capa de aplicación.
El enlace adecuado, que es lo primero que implementa cualquier aplicación que use TCP para conexiones no transitorias, está allí de forma gratuita.
Mi resumen personal de SCTP es que no hace nada que no podría hacer de otra manera (en TCP o UDP) con un importante soporte de aplicaciones. Lo que proporciona es la capacidad de no tener que implementar ese código (mal) usted mismo.
FYI, SCTP es obligatorio como compatible con Diameter (cf RADIUS next gen). ver RFC 3588
Los clientes de diámetro DEBEN soportar TCP o SCTP, mientras que los agentes y
Los servidores DEBEN soportar ambos. Las versiones futuras de esta especificación PUEDEN
ordenan que los clientes admitan SCTP.