“line” behavior would return a 180 Ringingresponse and initiate
alerting even when there is an active session established. The called
party can then either place the session on hold and answer the second
call, or ignore the second caller.
■■ Call hold—This feature has many forms in the PSTN, from a button on a
telephone set that simply cuts the speaker and microphone to advanced
features in PBX or ISDN systems. In a SIP network, a call is placed on
hold by sending a re-INVITE, changing the media stream from bidirec-
tional (sendrecv) to unidirectional (sendonly). Note that older SIP
implementations may implement hold with a re-INVITEwith a connec-
tion IP address of 0.0.0.0 in the SDP. The call is taken off hold when
either party sends a re-INVITEwith bidirectional media or a nonzero
connection IP address.
■■ Call park and pickup—In this feature, a call is placed on hold at one loca-
tion and then retrieved (picked up) at another location. There are a
number of ways to implement these features in SIP. Some of them use
third-party call control and a re-INVITE, while others use a REFERand
then a redirect.
■■ Call forwarding—There are three options with this feature: forward on
busy, don’t answer, and unconditional. Forwarding can be done in SIP
either in a proxy or in a user agent, as shown in Chapter 7, “SIP Service
Creation.” A proxy can translate one URI for another, resulting in a for-
ward that is transparent to the calling user agent. Alternatively, a user
agent or a proxy can issue a redirection response (302 Moved). A proxy
receiving a 486 Busy Hereresponse can invoke a call-forward-on-busy
feature by generating an ACKand then forwarding the INVITEto
another URI. A proxy can also start a ring timer upon receipt of a 180
Ringingresponse, and then send a CANCELand proxy the INVITEto
another URI to implement a call-forward, don’t-answer service.
■■ Calling line identification—The ability to display calling line identifica-
tion is a useful feature in the PSTN to aid the caller during alerting in
deciding whether to answer a call or to implement automated screening
services. For example, a feature could be implemented to block incom-
ing SIP calls in which the calling party has not been identified. The
basic functionality is built into SIP to accomplish this, using the From
header. However, since the Fromheader is populated by the calling
user agent and not by a trusted source such as a carrier, this calling line
identification is not verified or guaranteed to be accurate. The use of the
Identityheader field to provide a way to check the validity of the
Fromheader field is discussed in Chapter 9, “SIP Security.”
SIP Telephony 197