beautypg.com

Dialogic 6.2 User Manual

Page 253

background image

Understanding the SIP Protocol

November 2009

253

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