SIP - Forking
A volte un server proxy inoltra una singola chiamata SIP a più endpoint SIP. Questo processo è noto come fork. In questo caso, una singola chiamata può far squillare più endpoint contemporaneamente.
Con il fork SIP, puoi far squillare il tuo telefono fisso contemporaneamente al tuo softphone o un telefono SIP sul tuo cellulare, permettendoti di rispondere facilmente alla chiamata da entrambi i dispositivi.
In genere, in un ufficio, si supponga che il capo non sia in grado di rispondere alla chiamata o di allontanarsi, il fork SIP consente alla segretaria di rispondere alle chiamate del suo interno.
Il fork sarà possibile se è disponibile un proxy stateful in quanto deve funzionare e rispondere tra i tanti che riceve.
Abbiamo due tipi di biforcazione:
- Forking parallelo
- Forking sequenziale
Forking parallelo
In questo scenario, il server proxy eseguirà il fork di INVITE, ad esempio, su due dispositivi (UA2, UA3) alla volta. Entrambi i dispositivi genereranno 180 Squilli e chi riceve la chiamata genererà 200 OK. La risposta (supponiamo UA2) che raggiunge per prima l'Originator stabilirà una sessione con UA2. Per l'altra risposta, verrà attivato un CANCEL.
Se l'originatore riceve entrambe le risposte contemporaneamente, in base al valore q, inoltrerà la risposta.
Forking sequenziale
In questo scenario, il server proxy eseguirà il fork di INVITE su un dispositivo (UA2). Se UA2 non è disponibile o è occupato in quel momento, il proxy lo invierà a un altro dispositivo (UA3).
Ramo: ID e tag
Gli ID filiale aiutano i proxy a far corrispondere le risposte alle richieste forkate. Senza gli ID filiale, un server proxy non sarebbe in grado di comprendere la risposta biforcuta. Branch-id sarà disponibile nell'intestazione Via.
I tag vengono utilizzati dall'UAC per distinguere più risposte finali da diversi UAS. Un UAS non può risolvere se la richiesta è stata forkata o meno. Pertanto, è necessario aggiungere un tag.
I proxy possono anche aggiungere tag se genera una risposta finale, non inseriscono mai tag nelle richieste o nelle risposte che inoltrano.
È possibile che una singola richiesta possa essere forkata anche da più server proxy. Quindi il proxy che eseguirà il fork aggiungerà i propri ID univoci ai rami che ha creato.
Call leg e Call ID
Un segmento di chiamata si riferisce a una relazione di segnalazione uno a uno tra due programmi utente. L'ID chiamata è un identificatore univoco contenuto nel messaggio SIP che fa riferimento alla chiamata. Una chiamata è una raccolta di gambe di chiamata.
Un UAC inizia inviando un INVITO. A causa del fork, potrebbe ricevere più 200 OK da diversi UA. Ciascuno corrisponde a un segmento di chiamata diverso all'interno della stessa chiamata.
Una chiamata è quindi un gruppo di gambe di chiamata. Un segmento di chiamata si riferisce alla connessione end-to-end tra UA.
Gli spazi CSeq nelle due direzioni di un segmento di chiamata sono indipendenti. All'interno di una singola direzione, il numero di sequenza viene incrementato per ogni transazione.
Segreteria telefonica
La posta vocale è molto comune oggigiorno per gli utenti aziendali. È un'applicazione telefonica. Viene visualizzata l'immagine quando la parte chiamata non è disponibile o non è in grado di ricevere la chiamata, il PBX annuncia alla parte chiamante di lasciare un messaggio vocale.
L'agente utente riceverà una risposta 3xx o reindirizzerà al server di posta vocale se il numero della parte chiamata non è raggiungibile. Tuttavia, è necessario un qualche tipo di interno SIP per indicare al sistema di posta vocale quale casella vocale utilizzare, ovvero quale annuncio riprodurre e dove memorizzare il messaggio registrato. Ci sono due modi per ottenere questo risultato:
Utilizzando un'estensione del campo dell'intestazione SIP
Utilizzando l'URI della richiesta per segnalare queste informazioni
Supponiamo per l'utente sip:[email protected] ha un sistema di posta vocale su sip: voicemail.tutorialspoint.com che fornisce la posta vocale, l'URI di richiesta di INVITE quando viene inoltrato al server di posta vocale potrebbe essere simile a:
sip:voicemail.tutorialspoint.com;target = sip:[email protected];cause = 486
La figura seguente mostra come l'URI della richiesta trasporta l'identificatore della cassetta postale e il motivo (qui 486).