Understanding the SIP Protocol

could proxy the INVITE to Caller B's voicemail server. A proxy server can also send an INVITE to a number of locations at the same time. This type of parallel search is known as forking (see below).

In this case, the 200 (OK) is routed back through the two proxies and is received by Caller A's softphone, which then stops the ringback tone and indicates that the call has been answered. Finally, Caller A's softphone sends an acknowledgement message, ACK, to Caller B's SIP phone to confirm the reception of the final response (200 (OK)). In this example, the ACK is sent directly from Caller A's softphone to Caller B's SIP phone, bypassing the two proxies. This occurs because the endpoints have learned each other's address from the Contact header fields through the INVITE/200 (OK) exchange, which was not known when the initial INVITE was sent. The lookups performed by the two proxies are no longer needed, so the proxies drop out of the call flow. This completes the INVITE/200/ACK three-way handshake used to establish SIP sessions.

Caller A and Caller B's media session has now begun, and they send media packets using the format to which they agreed in the exchange of SDP. In general, the end-to-end media packets take a different path from the SIP signaling messages.

During the session, either Caller A or Caller B may decide to change the characteristics of the media session. This is accomplished by sending a re-INVITE containing a new media description. This re-INVITE references the existing dialog so that the other party knows that it is to modify an existing session instead of establishing a new session. The other party sends a 200 (OK) to accept the change. The requestor responds to the 200 (OK) with an ACK. If the other party does not accept the change, he sends an error response such as 488 (Not Acceptable Here), which also receives an ACK. However, the failure of the re-INVITE does not cause the existing call to fail - the session continues using the previously negotiated characteristics.

At the end of the call, Caller B disconnects (hangs up) first and generates a BYE message. This BYE is routed directly to Caller A's softphone, again bypassing the proxies. Caller A confirms receipt of the BYE with a 200 (OK) response, which terminates the session and the BYE transaction. No ACK is sent - an ACK is only sent in response to an INVITE request. The reasons for this special handling for INVITE relate to the reliability mechanisms in SIP, the length of time it can take for a ringing phone to be answered, and

November 2009

253

Page 253
Image 253
Dialogic 6.2 manual November 253