TL;DR: Astazi publicam Sipral 1.0, SIP stack-ul client pe care l-am anuntat in august si l-am scris de la zero in Rust. Ofera semnalizare, media, criptare si NAT traversal printr-un singur C ABI, pe iOS, Android, macOS, Windows si Linux, si da agentilor vocali AI o linie telefonica directa, fara server media intermediar. Este disponibil sub AGPL-3.0 sau cu licenta comerciala, pe sipral.org.
Cuprins
- De la idee la 1.0
- Ce contine Sipral 1.0
- Cifre masurate
- Comparatie cu PJSIP, baresip si Linphone
- Testat pe centralele reale
- Licentiere
- Ce urmeaza
- Ce inseamna pentru clientii Sytek
- Intrebari frecvente
- Glosar
De la idee la 1.0
In august am explicat de ce construim un SIP stack propriu, in Rust: bibliotecile consacrate vin sub GPL, sunt scrise in C, iar agentii vocali stau departe de linia telefonica. Am promis atunci ca publicam proiectul cand versiunea 1.0 este completa si masurata. Acum este.
Numele este acronimul pentru Session Initiation Protocol Rust Audio Layer. Sytek Electro SRL detine integral drepturile asupra codului, ceea ce face posibila licenta dubla.
Ce contine Sipral 1.0
- Semnalizare SIP conform RFC 3261, cu server location prin DNS dupa RFC 3263, PRACK, UPDATE, session timers, transferuri si forking.
- Codecuri: Opus, G.722, G.711, L16 si G.729 cu anexele A si B.
- Criptare: SRTP cu SDES si AES-GCM, DTLS-SRTP, TLS, plus semnarea si verificarea STIR/SHAKEN (RFC 8224, RFC 8588).
- NAT traversal: STUN, TURN pe UDP, TCP si TLS, ICE complet si lite.
- Doua moduri: cu dispozitiv audio (microfon, difuzor si echo cancellation oferit de platforma) sau fara dispozitiv audio, cu vocea predata aplicatiei ca frame-uri PCM pe 16 biti.
- Un singur C ABI (versiunea 1.0), cu bindings pentru Swift, Kotlin, Java, .NET, Python, Dart si React Native. O aplicatie construita pe 1.0 merge cu orice versiune 1.x ulterioara, fara recompilare.
- Diagnostic: pentru fiecare apel, un decision log cu motivul fiecarei decizii, export pcapng cu date personale mascate (GDPR) si un debug log din care credentialele si cheile sunt eliminate.
Lista completa a specificatiilor implementate este pe pagina de functionalitati Sipral.
Cifre masurate
Toate cifrele de mai jos sunt publicate pe sipral.org impreuna cu metodologia: hardware, versiuni, setari si data rularii.
| Indicator | Rezultat |
|---|---|
| Apeluri simultane intr-un singur proces | 10.000, cu audio in ambele sensuri |
| Memorie per apel | aproximativ 72 KB |
| Fuzzing pe parsere si protocol engines | 61 de miliarde de executii, zero crash-uri |
| Suita de teste RFC 4475 (mesaje SIP dificile) | verificata mesaj cu mesaj |
| Limbaje suportate printr-un singur C ABI | 7 |
Comparatie cu PJSIP, baresip si Linphone
Pe 2 octombrie 2026, Sipral 1.0, pjsua 2.17 (PJSIP), baresip 4.11.0 si linphonec 5.3.105 (Linphone) au fost rulati contra aceluiasi Asterisk 22.10.1, cu memoria si procesorul masurate la fel pentru toti patru. Fiecare client a fost folosit in versiunea livrata de distributie.
| Masuratoare | Sipral | pjsua | baresip | linphonec |
|---|---|---|---|---|
| Memorie, inregistrat si idle | 5,4 MB | 12,9 MB | 12,2 MB | 57,8 MB |
| INVITE autentificat cu ICE, pe UDP | 1236 B, nefragmentat | 1868 B, fragmentat | 1475 B, fragmentat | 1593 B, fragmentat |
| Audio reluat dupa schimbarea retelei, fara interventia aplicatiei | 240 ms | nu isi revine singur | 2260 ms | 2120 ms |
Pe retele degradate (pierderi de pachete, profil mobil si profil satelit), toti cei patru clienti au tinut calitatea in aceeasi banda. Rezultatele complete, inclusiv procesorul pe apel si scenariile cu mai multe apeluri, sunt pe pagina de comparatie Sipral.
Testat pe centralele reale
Fiecare scenariu a rulat prin API-ul nativ si din nou prin C ABI, pe retele curate si degradate:
- Asterisk 22 - inregistrare, apel, hold, transfer direct si asistat, DTMF, SRTP, DTLS-SRTP, G.729, mesaje.
- FreeSWITCH 1.10 prin Kamailio 6.1 si prin OpenSIPS 4.0 - inregistrare si rutare prin doua proxy-uri independente.
- baresip - apel de la telefon la telefon, cu SRTP si DTLS-SRTP.
- FreePBX 16 in functiune - pe propriile interioare, inclusiv transferuri, DTMF si SRTP.
- NAT - apeluri prin STUN, ICE prin doua NAT-uri si TURN relay acolo unde drumul direct e blocat.
Licentiere
Sipral are licenta dubla:
- AGPL-3.0-only, fara cost, pentru proiecte care pot publica tot codul.
- Licenta comerciala, pentru produse closed source, App Store si Google Play, servicii modificate nepublicate si revanzare OEM. Un pret per companie, perpetuu pentru versiunile livrate in perioada de mentenanta, fara redevente si fara numarare per utilizator sau per canal.
Detaliile sunt pe pagina de licentiere, iar ofertele se cer prin formularul Sipral.
Ce urmeaza
Conform roadmap-ului public:
- 1.1, primul trimestru din 2027 - comportament mai bun la volume mari de apeluri: pornirea apelului fara asteptari inutile, detectie DTMF mai ieftina, pacing audio constant la 20 ms.
- 1.2, al doilea trimestru din 2027 - agenti vocali si enterprise: conectori pentru serviciile speech-to-speech in timp real, exemple Pipecat si LiveKit Agents, autentificare OAuth2 la centrala, pachet Node.js.
- 2.0, in 2027 - video cu VP8, VP9 si AV1 si ZRTP key agreement.
Ce inseamna pentru clientii Sytek
Sipral este produsul nostru, scris de la zero. Pentru firmele cu care lucram, inseamna ca telefonia poate intra direct in aplicatiile business pe care le construim:
- softphone in aplicatia interna sau in portalul echipei de teren;
- apeluri si istoric de apeluri in CRM, legate de fisa clientului;
- agent vocal AI pe linia firmei, inregistrat direct pe centrala existenta.
Daca ai un astfel de proiect, scrie-ne sau suna la +40 374 550 149. Pentru licente Sipral folosesti direct sipral.org.
Intrebari frecvente
Ce este Sipral? Sipral este un SIP stack client scris in Rust de Sytek Electro SRL din Cluj-Napoca. Acopera semnalizarea, media, criptarea si NAT traversal, expuse printr-un singur C ABI cu bindings pentru sapte limbaje.
Pe ce platforme ruleaza Sipral? iOS, Android, macOS, Windows si Linux, fie cu microfon si difuzor, fie fara dispozitiv audio, pentru agenti vocali.
Ce licenta are Sipral? AGPL-3.0-only fara cost, sau licenta comerciala per companie pentru produse closed source si App Store / Google Play. Ofertele se cer pe sipral.org.
Prin ce difera Sipral de PJSIP? Nu contine cod GPL, este scris in Rust si are un singur C ABI. In masuratorile din 2 octombrie 2026 a folosit cea mai putina memorie dintre cei patru clienti testati si si-a revenit singur dupa schimbarea retelei in 240 ms.
Poate un agent vocal AI sa raspunda la telefon cu Sipral? Da. Agentul se inregistreaza ca interior pe centrala si primeste vocea ca frame-uri PCM pe 16 biti, fara server media intermediar.
Cu ce centrale telefonice a fost testat Sipral? Asterisk 22, FreeSWITCH 1.10 prin Kamailio si OpenSIPS, baresip si un FreePBX 16 in functiune.
Ce urmeaza dupa Sipral 1.0? 1.1 in primul trimestru din 2027, 1.2 in al doilea trimestru din 2027 si 2.0, cu video, in 2027.
Poate Sytek integra Sipral intr-o aplicatie pentru firma mea? Da. Integram telefonia in aplicatii business la comanda: softphone intern, apeluri din CRM sau agent vocal pe linia firmei. Licenta Sipral se obtine separat, prin sipral.org.
Glosar
- Sipral - Session Initiation Protocol Rust Audio Layer, SIP stack-ul client dezvoltat de Sytek.
- SIP stack client - biblioteca de cod care face apelurile VoIP dintr-o aplicatie.
- C ABI - interfata binara standard prin care o biblioteca poate fi apelata din aproape orice limbaj.
- Bindings - stratul subtire care face o biblioteca apelabila natural dintr-un limbaj anume (Swift, Kotlin, Python si celelalte).
- NAT traversal - tehnicile prin care un apel trece de routerele si firewall-urile care ascund dispozitivele in spatele unei adrese publice.
- DTLS-SRTP - metoda de a negocia cheile de criptare pentru voce direct intre cele doua capete ale apelului.
- STIR/SHAKEN - standard de semnare a apelurilor, prin care se verifica daca numarul apelantului este autentic.
- ICE - procedura prin care doua capete gasesc cel mai bun drum de retea intre ele, inclusiv prin NAT.
- Fuzzing - testare cu volume mari de date generate aleator sau malformate, ca sa iasa la iveala erorile pe care testele obisnuite nu le prind.
- Fragmentare IP - impartirea unui pachet prea mare in bucati; pentru SIP pe UDP, multe routere si firewall-uri pierd fragmentele, iar apelul nu se mai stabileste.