
詳細可參考 3GPP 23.228 4.2.7.1 SIPForking
FORK更好的解釋就是分線器/路由器,由一個線纜然後分解成很多個使用者。在SIP協定中概念也是類似的。
The IM CN subsystem shall have thecapability to fork requests to multiple destinations; thiscapability is subject to rules for forking proxies defined in IETFRFC 3261 [12].
舉例說明就是:以QQ來說,使用者可以同時在PC上等,UE1上登陸和UE2上登陸。如果這個時候有人發消息給這個使用者,那麼這個消息該傳遞給誰那?如果啟用FORK的話,那麼會傳給3個終端,這個就是FORK分拆的過程。如果不分拆,那麼就是NO-FORK。那麼這樣又有問題,不分拆的話,到底傳給那個終端那?這個在SIP注冊時,有相應的使用者辨別叫做GRUU(Globally RoutableUser Agent URI),GURRY又分為兩類,P-GRUU(主-GRUU)和T-GRUU(臨時的GRUU),如果不分拆,則消息傳遞給P-GRUU
詳細解釋:
What is "fork" ?
Yes.. it is what you think of now. It isone of the most common tools you use when you eat something. If youlook at the shape, a handle (grabbing part) is splitted intomultiple thin branches.
If you are familiar with Unix/Linuxprogramming, you will be well aware of 'fork'. Basically it is amethod of creating multiple child process from aprocess.
SIP Forking means similar thing. You canthink of this as a mechanism to split a SIP call into multipleclones for multiple endpoints.
I found a very good high level descriptionof SIP forking from 3CX website(http://www.3cx.com/faqs/copyofauto-attendant/) asbelow.
SIP forking refers to the processof 揻orking� asingle SIP call to multiple SIP endpoints. This is a very powerfulfeature of SIP. A single call can ring manyendpoints at the same time.
With SIP forking you can have your deskphone ring at the same time as your softphone or a SIP phone onyour mobile. For example, you would use SIP forking to ring yourdeskphone and your Android SIP Phone at the same time, allowing youto take the call from either device easily. No forwarding ruleswould be necessary as both devices would ring. In the same mannerSIP forking can be used in an office and allow the secretary toanswer calls to the extension of his/her boss when he is away orunable to take the call.
Overall flow goes like this :
i) a UA send INVITE and this messagereaches Proxy Server
ii) the Proxy server has information onwhich multiple endpoints it has to deliver (fork) the messages andfork the INVITE to each of endpoints
There are mainly two different types offorking. Parallel and Sequencial Forking.
In Parallel forking, the callgets splitted and conveyed to multiple endpoints simultaneously. InSequencial forking, the call gets delivered to an end point andgets forked only when there is no response from the first endpoint