Los que llevamos años peleándonos con Asterisk sabemos que, por debajo, hay más de un millón de líneas de C funcionando desde hace dos décadas. C nos ha dado potencia y flexibilidad, pero también unos cuantos sustos: segfaults a las tres de la mañana, fugas de memoria y algún que otro core dump que nos ha quitado el sueño. Así que cuando alguien dice «¿y si reescribimos Asterisk en Rust?», se nos encienden los ojos. Pues bien, ya hay quien lo ha intentado: se llama Rustisk.
El proyecto, de Ryan Murphy, es un PBX nativo en Rust que sigue de cerca la arquitectura, el estilo de configuración y los interfaces de gestión que ya conocemos. La cifra impresiona: ~1,16 millones de líneas de C convertidas en unas 204K líneas de Rust, repartidas en 18 crates dentro de un workspace de Cargo. Trae un stack SIP propio (ni chan_sip ni pjsip, uno propio -no sé yo si eso me convence o me preocupa, pero bueno-), dialplan al estilo extensions.conf, AMI, ARI, CDR, varios channel drivers y hasta una capa de compatibilidad pjsip-shim que dice pasar el 100% de los tests de pjlib.
¿Qué nos aporta?
La gran promesa de Rust es la seguridad de memoria: nada de buffer overflows ni use-after-free gracias al sistema de ownership. Para un servicio que está expuesto a Internet recibiendo paquetes SIP de medio mundo, eso es oro puro. A esto se suman números golosos: procesado de mensajes SIP entre 2 y 5 veces más rápido, concurrencia moderna con Tokio en lugar de hilos POSIX y locking manual, y un binario de apenas ~6 MB frente a los 30-50 MB del Asterisk de toda la vida. Y, como detalle de buen gusto, 4.200+ tests integrados que corren con un simple cargo test.
¿Y las pegas?
Pues las pegas, como todo… El propio autor lo deja clarísimo: esto NO está para producción. Puede tirar llamadas, enrutar mal el audio o comportarse de forma inesperada. Es un proyecto experimental de investigación, no un sustituto. Varias aplicaciones del dialplan son stubs, hay channel drivers que son poco más que el esqueleto, el DTLS-SRTP está a medias, falta el transporte SIP sobre WebSocket y el backend de buzón de voz no está completo. Dicho de otro modo: es una prueba de concepto y poco más, pero pinta bien.
Cosas para pensar mientras tomamos un café
Más allá del titular, hay preguntas que a más de uno nos pican. ¿Cuánto tardaría una reescritura así en alcanzar la madurez de un Asterisk con 20 años de batallas reales encima? ¿Compensa la seguridad de memoria frente a perder el enorme ecosistema de módulos, AGIs y trucos que tenemos acumulados? ¿Veremos antes a Rust dentro del Asterisk oficial (módulos concretos reescritos) que un fork completo? ¿Y qué pasa con los codecs, que aquí van por FFI opcional y siguen dependiendo de librerías externas?
Sea como sea, da gusto ver que alguien se atreve a tocar las tripas del invento que nos da de comer. No vamos a migrar la centralita del cliente mañana, pero como ejercicio de «¿hasta dónde se puede llegar?» es de los que dan ganas de clonar el repo y trastear un rato.
Si os animáis, lo tenéis aquí: https://github.com/ryanmurf/rustisk/tree/master
Únete a la comunidad Sinologic
Crea tu cuenta gratuita y participa en las conversaciones sobre VoIP, Asterisk, Kamailio y telecomunicaciones IP.





¿Qué opinas tú?
Sé el primero en compartir tu opinión.