IMS  

 

 

 

Forking

What is "fork" ?

Yes.. it is what you think of now. It is one of the most common tools you use when you eat something. If you look at the shape, a handle (grabbing part) is splitted into multiple thin branches.

If you are familiar with Unix/Linux programming, you will be well aware of 'fork'. Basically it is a method of creating multiple child process from a process.

SIP Forking means similar thing. You can think of this as a mechanism to split a SIP call into multiple clones for multiple endpoints.

I found a very good high level description of SIP forking from 3CX website (http://www.3cx.com/faqs/copyofauto-attendant/) as below.

SIP forking refers to the process of forking a single SIP call to multiple SIP endpoints. This is a very powerful feature of SIP.  A single call can ring many endpoints at the same time.

With SIP forking you can have your desk phone ring at the same time as your softphone or a SIP phone on your mobile. For example, you would use SIP forking to ring your deskphone and your Android SIP Phone at the same time, allowing you to take the call from either device easily. No forwarding rules would be necessary as both devices would ring. In the same manner SIP forking can be used in an office and allow the secretary to answer calls to the extension of his/her boss when he is away or unable to take the call.

Overall flow goes like this :

  • i) a UA send INVITE and this message reaches Proxy Server
  • ii) the Proxy server has information on which multiple endpoints it has to deliver (fork) the messages and fork the INVITE to each of endpoints

There are mainly two different types of forking. Parallel and Sequencial Forking.

In Parallel forking, the call gets splitted and conveyed to multiple endpoints simultaneously. In Sequencial forking, the call gets delivered to an end point and gets forked only when there is no response from the first end point.