Chiudere una chiamata SIP: l’utilizzo dei metodi BYE e CANCEL

Chiudere una chiamata SIP: l’utilizzo dei metodi BYE e CANCEL

Tra le nozioni fondamentali da apprendere per chi si avvicina al mondo delle chiamate VoIP con il protocollo SIP, vi sono quelle relative agli scenari tipici delle conversazioni telefoniche SIP. Durante il percorso formativo della VoIP Academy VoipVoice, le prime nozioni che normalmente forniamo ai frequentanti sono relative alla lingua parlata dal protocollo SIP e alla sintassi utilizzata. Il tutto è meno complicato di quanto potrebbe sembrare ed è fondamentale per comprendere il funzionamento di qualunque telefono o centralino IP. Conoscere il Protocollo SIP consente di utilizzare con facilità qualunque dispositivo, a prescindere dall’interfaccia di configurazione utilizzata.

In altri articoli di approfondimento abbiamo già esaminato le Richieste e le Riposte SIP che costituiscono la base di funzionamento del protocollo. Abbiamo inoltre osservato la Struttura di un tipico messaggio SIP e quella della sezione SDP.

Dopo aver appreso le regole di base del protocollo SIP, la prima cosa da fare è quella di analizzare i flussi tipici di una chiamata VoIP che è normalmente organizzata in messaggi di richiesta, alternati a messaggi di risposta. L’INVITE è il messaggio di richiesta tipico con il quale si avvia una chiamata. I tipici messaggi di richiesta per la chiusura di una chiamata, sono invece BYE e CANCEL. Oggi vorrei soffermarmi proprio su queste due tipologia di richiesta.

Chiusura di una chiamata con BYE (sessione stabilita)

Raffaele ha chiamato Alessia e Alessia ha risposto. Hanno parlato per un po’ di tempo e, alla fine Alessia ha salutato e riagganciato. La sessione è iniziata con un INVITE e si è conclusa con un BYE. Si tratta di una situazione abbastanza tipica.

Si noti che BYE viene utilizzato per chiudere una sessione stabilita tra i due interlocutori. In linguaggio SIP, una sessione si definiste “stabilita” quando l’INVITE ha ricevuto una risposta finale di 200 OK.

Richiesta Sip Bye

Chiusura di una chiamata con CANCEL (sessione non stabilita)

Diamo ora uno sguardo a uno scenario diverso. Immaginate che Raffaele chiami Alessia, ma questa volta Alessia non possa risponde al telefono. Raffaele potrebbe attendere che la chiamata raggiunga il timeout, ma non ha il tempo di attendere e quindi riattacca semplicemente.

Cosa accade in questo caso? Abbiamo visto che la richiesta di BYE viene usata per concludere (rilasciare) una sessione stabilita. Chiaramente questa chiamata non ha ricevuto una risposta finale di 200 OK, ma solo risposte provvisorie di 100 Trying (tentativo in corso) e 180 (squillo in corso). Il telefono di Alessia sta quindi squillando, in virtù del messaggio di risposta 180 (ringing).

È qui che entra in gioco la richiesta di CANCEL (ANNULLA). A differenza di un BYE, CANCEL chiude una sessione che non ha ancora ricevuto una risposta finale.

Il Flusso di richieste e risposte SIP avrà questo aspetto:

Richiesta SIP Cancel

Il CANCEL informa Alessia che Raffaele sta concludendo la sessione prematuramente e che Alessia deve fare lo stesso dal suo lato. In altre parole, il telefono di Alessia deve smettere di squillare e tornare nello stato di inattività.

In questa situazione è fondamentale rendersi conto che il 200 OK che segue immediatamente dopo la richiesta di CANCEL, non è riferito alla richiesta iniziale di INVITE ma è la risposta con la quale Alessia riconosce di aver ricevuto il CANCEL (Annullamento) e di aver iniziato il processo di smantellamento della sessione. Questo processo viene eseguito interrompendo lo squillo e restituendo una risposta SIP 487 (Richiesta Terminata) a Raffele. Il 487 è la risposta finale per la sequenza INVITE. Questo fa sì che Raffaele risponda con un ACK di conferma.

È assolutamente fondamentale che la risposta di 487 venga inviata. In caso contrario, Raffaele (e qualsiasi proxy tra Raffaele e Alessia) non rilascerebbe correttamente la sessione, facendo in modo che la chiamata rimanga “sospesa”.

 

Chiamata con Biforcazione (Call Forking)

La richiesta di CANCEL è essenziale nel caso di biforcazione della chiamata. La biforcazione delle chiamate si verifica quando qualcuno chiama un utente che ha registrato registrato su due o più dispositivi contemporaneamente sul proprio interno o sulla propria numerazione. Nel caso in cui il PBX supporti questa funzionalità, in caso di chiamata in ingresso, ogni singolo dispositivo registrato (ad es. un telefono fisso e un cordless IP) squillerà. Sarà però possibile rispondere da uno solo del due telefoni. Ciò significa che le restanti chiamate in arrivo dovranno essere annullate!

A differenza della situazione in cui Raffaele annulla la chiamata senza che Alessia risponda, Raffaele non invierà le richieste di CANCEL. In effetti, Raffaele non sarà nemmeno al corrente nemmeno che tutti quei dispositivi stanno squillando. Ciò accade perché la biforcazione delle chiamate viene eseguita da un proxy SIP per conto di Raffaele. Raffaele saprà unicamente di aver eseguito una chiamata, che qualcosa ha squillato dall’altra parte e che la chiamata ha ricevuto risposta.

Ciò significa che il proxy invia i messaggi CANCEL a tutti i restanti dispositivi che squillano dopo aver preso in carica la richiesta di INVITE.

 

Conclusioni

E’ importante distinguere le richieste di conclusione di una chiamata effettuate con un BYE da quelle effettuate con un CANCEL. BYE non è CANCEL e CANCEL non è BYE. Entrambi svolgono il compito di rilasciare/concludere le sessioni. La differenza netta nell’utilizzo di BYE e CANCEL riguarda il momento in cui le sessioni vengono rilasciate. Per l’utilizzatore finale non cambia nulla in quanto la chiamata viene conclusa riagganciando il ricevitore o cliccando sul tasto rosso di chiusura della chiamata. Per un installatore specializzato la questione è più tecnica e, a prescindere dal PBX, ogni eventuale problema si risolve sempre imparando a leggere il codice SIP contenuto in un tracciato .pcap attraverso il conosciutissimo applicativo Wireshark.

Sei un installatore nel mondo del VoIP e vuoi apprendere il protocollo VoIP SIP, indipendentemente da qualunque telefono o centralino IP? Desideri collaborare con un fornitore in grado di trasmetterti tutte le informazioni necessarie per operare in maniera efficace ed efficiente? VoipVoice ti mette a disposizione un percorso formativo professionale unico in Italia. Clicca qui per maggiori informazioni sui nostri corsi formativi e di certificazione.

 

Lascia un commento

Questo sito utilizza cookies per darti la miglior esperienza possibile. Accetta il loro utilizzo cliccando sul tasto "Accetto".