In Asterisk Sip, chan_sip e chan_pjsip rappresentano cose differenti ma che spesso vengono accomunte o confuse.

Innanzitutto SIP rappresenta un protocollo di comunicazione atto a definire un insieme di regole per consentire la comunicazione di due o più dispositivi attraverso una rete Internet (IP).

Le specifiche del protocollo SIP sono definite nel RFC 3261 e rimangono un ottimo punto di partenza per capire il funzionamento dietro le quinte di un centralino VoIP, mentre sono indispensabili se volete avventurarvi nello studio dei Sip Proxy Server tipo Kamailio.

Quindi due dispositivi che rispettino le regole definite nel RFC 3261 dovrebbero essere in grado di comunicare tra di loro.

Chan_Sip rappresenta il SIP driver channel contenuto in maniera esclusiva nelle versioni di Asterisk  fino alla 11, cioè il software che consente la comunicazione dei dispositivi operanti attraverso il protocollo SIP dentro Asterisk.

Ad oggi 2018 chan_sip rispetto a chan_pjsip rimane il più usato per via della maggiore conoscenza ed utilizzo che si ha di esso, stabilità comprovata negli anni e supporto a livello di device e VoIP providers.

Asterisk Sip Chan_Sip Chan_PJSIP

PJSIP è la libreria che rappresenta le fondamenta del channel driver chan_pjsip ed è presente nelle versioni di Asterisk a partire dalla 12, e rappresenta uno dei tanti sforzi di Digium per tenere Asterisk sempre al passo con i tempi e sipratutto per rendere più semplice lo sviluppo di nuove funzionalità.

Chan_Sip con la sua natura monilitica era diventato difficile daampliare e  mantenere aggiornato, mentre la natura modulare di chan_pjsip (che di fatti si definisce come sip stack) consente l’aggiornamento e lo sviluppo di nuove funzionalità senza intaccare il core del funzionamento stesso.

Le funzionalità del protocollo SIP sono implementate attraverso chan_pjsip che funge da collegamento tra lo stack PJSIP ed Asterisk stesso ed avviene attraverso moduli caricabili dinamicamente, esistendo un core con le funzionalità principali ed vari moduli con le funzionalità caricabili dinamicamente.

Riporto la definizione di PJSIP contenuta nel sito http://www.pjsip.org/ perchè è quella che rappresenta in maniera migliore il perchè Digium ho optato verso questa scelta.

PJSIP is a free and open source multimedia communication library written in C language implementing standard based protocols such as SIP, SDP, RTP, STUN, TURN, and ICE. It combines signaling protocol (SIP) with rich multimedia framework and NAT traversal functionality into high level API that is portable and suitable for almost any type of systems ranging from desktops, embedded systems, to mobile handsets.