RE-INVITE e attesa nelle chiamate VoIP SIP

RE-INVITE e attesa nelle chiamate VoIP SIP

La comprensione del funzionamento di una chiamata SIP, una volta appreso il meccanismo elementare basato sui messaggi di richiesta/risposta, non è particolarmente complesso. Esistono però argomenti che, per chi non conosce ancora il protocollo SIP nel dettaglio, possono creare confusione: uno di questi argomenti è il concetto di SIP RE-INVITE. Esso viene principalmente utilizzato per porre una chiamate in attesa, per riprenderla successivamente oppure per modificare in corsa gli attributi SDP e passare , ad esempio, al protocollo T38.

Cos’è il RE-INVITE

Per prima cosa è necessario precisare che il RE-INVITE non costituisce un metodo SIP indipendente. Si tratta di un comune messaggio di INVITE che però non serve per inizializzare una sessione SIP ma serve per modificare una sessione già stabilita con 200 OK finale ricevuto e messaggio ACK già trasmesso.

Il re-INVITE viene utilizzato all’interno di un dialogo SIP contenente, come previsto, un medesimo Call-ID, un Tag “From” e un tag “To”. Il Re-INVITE non viene utilizzato esclusivamente per mettere in attesa/riprendere una chiamata. Non è quindi corretto aspettarsi che una chiamata che riceve un re-INVITE sta entrando in uno stato di attesa/ripristino. Ad esempio il RE-INVITE è comunqnemente utilizzato nell’ambito delle trasmissioni FoIP (Fax Over IP) con switch al protocollo UDPTL T38.

I Passaggi per mettere in attesa una chiamata

A livello di protocollo SIP, l’utente deve eseguire i seguenti passaggi per mettere in attesa una chiamata e per riprenderla successivamente:

  • Il chiamante stabilisce una sessione di chiamata con il chiamato, utilizzando il normale flusso di chiamata (P1)
  • Dopo aver parlato tra di loro, il chiamante (o il chiamato) preme il pulsante di attesa sul proprio telefono (P2)
  • Il chiamato preme il pulsante Riprendi/Restore sul proprio telefono. Può trattarsi dello stesso pulsante usato per l’attesa (on hold) oppure di un pulsante diverso. Ciò dipende unicamente dalle specifiche del dispositivo utilizzato (P4)
  • Il chiamante riaggancia la chiamata.
sip onhold reinvite
Esempio 1:  chiamata VoIP SIP con messa in attesa e successiva ripresa della chiamata utilizzando il cambio degli attrinuti audio nell’SDP

Gli scambi di capacità a livello SDP

P1: Avvio della chiamata audio

Quando viene avviata una chimata SIP, nelle sezioni SDP dell’INVITE iniziale e del relativo 200 OK di risposta, vengono definiti gli estremi della sessione Multimediale da avviare. In questo caso le due sezioni SDP (chiamante e chiamato) contengono  l’attributo audio

media attribute (a): sendonly

Questo attributo indica che entrambi gli endpoint invieranno e riceveranno l’audio.

sendrecv SIP
L’attrinuto (a) sendrecv e la linea (m) indicano che la trasmissione è di tipo audio e che entrambi gli endpoint riceveranno e invieranno audio.

Nell’esempio 1 riportato nel paragrafo precedente la chiamata viene avviata con tradizionale audio bidirezionale nella fase P1. Matteo ha eseguito una chiamata a Simone e i due interlocutori si sono parlati.

P2: attesa (on hold)

La messa in attesa viene fornita con il messaggio di INVITE (P2) che Simone invia a Matteo premendo generalmente il pulsante di attesa presente sul telefono. Simone sta in realtà inviando un nuovo INVITE (si tratta di un Re-INVITE)  per “mettere in attesa il chiamante”, con il media attribute:

media attribute (a): sendonly

questo media attribute presente nell’SDP, dice chiaramente che Simone invierà i media audio senza ricevere nulla.

P3: Risposta 200 OK al Re-invite di attesa

Dopo aver ricevuto il re-INVITE, Matteo invierà una risposta di 200 OK (P3)  con il seguente attributo in SDP:

media attribute (a): recvonly

Ciò significa che Matteo non farà altro che ascoltare il chiamato.

Entrando nella modalità di attesa (on hold), Matteo viene silenziato ma può ricevere l’eventuale musica di attesa da Simone, se questa possibilità è configurata localmente sul dispositivo SIP o sul PBX. Matteo avrà ovviamente il microfono silenziato mentre Simone avrà l’altoparlante disabilitato.
Esiste anche la possibilità, prevista dalle RFC, che l’interno telefonico di Simone sia programmato per non inviare alcuna musica di attesa. In questo caso Simone avrebbe potuto inviare un INVITE con attributo SDP:

media attribute (a): inactive

In questo caso anche il telefono di Matteo avrebbe risposto con un 200 OK contenente il medesimo attributo SDP per silenziare bidirezionalmente la chiamata.

P4 e P5: Ripresa della chiamata (In Place)

Attraverso il Re-INVITE (P4) Simone riprende, di fatto la chiamata. In base a quanto abbiamo già visto l’operazione consiste in una nuova modificva dell’attributo audio SDP per riportarlo nella situazione originale di comunicazione bidirezionale. Sia nell’INVITE che nel successivo 200 OK (P5) troveremo nell’SDP:

media attribute (a): sendonly

La modifica del valore di Cseq

L’ultima cosa da rilevare, sicuramente non meno importante di quanto osservato sino a questo momento è relativa alla modifica del valore dell’header CSeq a seguito di ogni transazione di RE-INVITE. Il vaslore dell’header SIP CSeq aumenta infatti di una unità a partire dall’INVITE iniziale. Questa è la modalità utilizzata dal Protocollo SIP per distinguere una transazione inziale e una successiva ritrasmissione.

Lascia un commento

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