Fork implementation in SIP Highlighted

92 0 0 0

Hello, guys!

Have a nice day!

Today I want to share with you the fork implementation in SIP. Let us have a look!

The SIP protocol implements the basic logical functions of the fork, including the call status maintenance of fork, managing multiple temporary dialogs, and maintaining the correct association between multiple early dialog messages on the outgoing and incoming sides before a session is created. The upper-layer service maintains the relationship between the context of multiple contacts and the fork call, and bears and controls early dialogs.

1. Check whether the fork occurs

If the called UE has registered multiple contact addresses, the SIP protocol needs to obtain the related fields from the code stream. Based on the Accept-Contact and Reject-Contact parameters, the SIP protocol determines the target set of the called UE and sorts the called UEs by priority. Then, the SIP protocol extracts the key information in the Request-Disposition header and determines whether to perform forking. The contents of the header are as follows:

proxy-directive = "proxy"
fork-directive = "fork" / "no-fork"
parallel-directive="parallel"/ "sequential"

proxy-directive indicates whether the current NE is a proxy. fork-directive indicates whether the fork is required. If fork-directive is set to no-fork, the initial request is sent only to the called terminal with the highest priority, and no fork is generated. If the value is fork, the parallel-directive value is further readed. If the value of parallel-directive is parallel, it indicates parallel forking. In parallel forking, the home proxy server of the called party needs to send the initial INVITE request to multiple called terminals at the same time, that is, parallel calls. If the value is sequential, the initial request is sent to multiple called terminals in sequence. The proxy server does not need to send the initial request to multiple called terminals at the same time. The initial request is sent to the first called terminal with the highest priority. If the call is connected, the initial request is sent to the second called terminal. If the call is not connected, the initial request is sent to the second called terminal.

2. Maintain sessions in the TU

The TU needs to maintain the dialog. To maintain the dialog, the TU needs to create a data area to save the corresponding information. In fork mode, multiple fork legs may be initiated at the same time, but the dialog information of multiple called terminals is not completely the same. If all the information is saved in a data area, it is easy to cause some misoperations. Therefore, the TU may be used to maintain multiple pairs of data areas. In a common call, the TU layer of the SIP needs to maintain only a pair of data areas on the incoming and outgoing sides. In this way, all messages are recorded and forwarded through this pair of data areas. In the fork mode, there are multiple terminals, and each terminal can send different requests and responses to the calling terminal. To independently store information of each terminal, the TU establishes a corresponding data area for each terminal. The incoming side and the outgoing side of the TU have multiple data areas respectively, and the incoming side and the outgoing side are in a one-to-one correspondence. Certainly, no matter whether the first branch or the second branch of the fork is connected to the calling party, the session is complete. Therefore, information may be exchanged between the two branches. In this case, a space such as CALL may be used to store indexes of data areas of the two branches, so that a data area of an incoming call can be quickly accessed to a data area of the other branch.

That is all, thanks for reading!

  • x
  • convention:


You need to log in to reply to the post Login | Register

Notice Notice: To protect the legitimate rights and interests of you, the community, and third parties, do not release content that may bring legal risks to all parties, including but are not limited to the following:
  • Politically sensitive content
  • Content concerning pornography, gambling, and drug abuse
  • Content that may disclose or infringe upon others ' commercial secrets, intellectual properties, including trade marks, copyrights, and patents, and personal privacy
Do not share your account and password with others. All operations performed using your account will be regarded as your own actions and all consequences arising therefrom will be borne by you. For details, see " Privacy."
If the attachment button is not available, update the Adobe Flash Player to the latest version!

My Followers

Login and enjoy all the member benefits

Login and enjoy all the member benefits