Enviado por admin el
OpenSIPS 4.0 se presenta como un punto de inflexión. El objetivo es eliminar limitaciones heredadas desde los tiempos de SER, rediseñando conceptos que llevan más de 20 años sin cambios sustanciales.
TCP: de multiproceso a multihilo — El framework TCP actual, basado en un proceso TCP Main que distribuye conexiones entre TCP workers, se reemplaza por un modelo multihilo dentro de un solo proceso. Esto elimina la migración de conexiones entre procesos, reduce overhead y permite usar librerías como OpenSSL de forma nativa (ya que OpenSSL soporta multithreading pero no multiproceso).
TLS: limpieza general — OpenSSL se beneficia directamente del cambio a multihilo, eliminando los "twitches" (parches forzados) que causaban crashes, memory leaks y conflictos entre módulos. El módulo StirShaken migrará a una librería más ligera como BoringSSL. WolfSSL dejará de estar embebido en el código y pasará a linkeo dinámico, permitiendo actualizaciones independientes.
Ramas TM dinámicas — El límite histórico de 32 (o 64) ramas por transacción desaparece. Las ramas se asignarán dinámicamente en lugar de reservar memoria estática, algo crítico para escenarios de Class V con Hunt-Groups en cascada y Push Notifications.
Interfaces bond — Se podrán agrupar sockets de distintos protocolos y familias de direcciones (IPv4/IPv6, UDP/TCP) bajo una interfaz lógica. OpenSIPS seleccionará automáticamente el socket correcto según el destino final.
Profiling SIP y de procesos — Se añade profiling por mensaje SIP (timestamps, rutas ejecutadas, funciones llamadas) y por proceso/worker (estados idle, running, blocked). Los datos se podrán recoger vía logs, opensips-cli o servicios HTTP, con soporte para OpenTelemetry.
Proxy Protocol (HAProxy) — Soporte para PROXY protocol en la capa TCP, permitiendo preservar la IP real del cliente cuando OpenSIPS opera detrás de firewalls o proxies como Cloudflare.
Interoperabilidad PRACK + UPDATE — El módulo dialog actuará como B2BUA para PRACK y UPDATE, generando PRACKs cuando un extremo no soporta 100rel y convirtiendo UPDATEs a re-INVITEs cuando sea necesario. Esto facilita la integración entre sistemas IMS y dispositivos legacy.
WebSocket genérico — Una interfaz WebSocket genérica manejable desde el script de routing, pensada para integrar servicios de IA, APIs de provisioning o protocolos como Janus y Verto sin desarrollo custom por cada caso.
Estado actual — De las 12 features planificadas, 5 están en desarrollo (TCP framework, StirShaken SSL, WolfSSL, ramas TM dinámicas, HAProxy) y 7 pendientes (OpenSSL rework, interfaces bond, profiling SIP, profiling de procesos, OpenTelemetry, PRACK+UPDATE, WebSocket genérico).
Comentarios recientes