SIP SIP Dialogs and Transactions 2 — Questions and Answers
Question 1: Which SIP response first creates a confirmed dialog between two user agents?
- 100 Trying
- 180 Ringing
- 200 OK (Correct answer)
- 183 Session Progress
Correct answer: 200 OK
A confirmed dialog is established when the UAC receives a 2xx final response, which includes the To tag that completes the dialog identifier tuple.
Question 2: Why do SIP proxies insert themselves into the Record-Route header?
- To indicate the codec negotiated for the session
- To ensure subsequent in-dialog requests traverse the same proxy path (Correct answer)
- To specify the maximum hop count for the dialog
- To authenticate participants in subsequent transactions
Correct answer: To ensure subsequent in-dialog requests traverse the same proxy path
Proxies insert themselves into Record-Route so that UACs build a Route set ensuring future in-dialog requests follow the same path through those proxies.
Question 3: What occurs when a proxy forks an INVITE in SIP?
- Only the first responding UAS establishes a dialog; others are ignored
- Multiple early dialogs may be created, one per responding branch (Correct answer)
- The proxy merges all branch responses into a single response to the UAC
- The UAC must send a separate INVITE for each forked destination
Correct answer: Multiple early dialogs may be created, one per responding branch
When a proxy forks an INVITE, each branch that returns a provisional response with a To tag creates a separate early dialog with the UAC.
Question 4: What is Timer F used for in non-INVITE SIP client transactions?
- Retransmission interval for provisional responses
- The non-INVITE client transaction timeout before giving up (Correct answer)
- Time to wait before sending a CANCEL to the server
- Maximum duration allowed for the entire SIP dialog
Correct answer: The non-INVITE client transaction timeout before giving up
Timer F is the non-INVITE client transaction timeout (64*T1 by default); if no final response arrives before it fires, the transaction is considered failed.
Question 5: How does a UAC properly terminate a confirmed SIP dialog (active call)?
- By sending a CANCEL request to the UAS
- By sending a BYE request within the existing dialog (Correct answer)
- By closing the underlying TCP or UDP connection
- By sending a REGISTER with an Expires header value of 0
Correct answer: By sending a BYE request within the existing dialog
A confirmed dialog is terminated by sending a BYE request within the dialog; CANCEL can only be used to terminate a pending INVITE transaction before confirmation.
Question 6: What is a re-INVITE in SIP?
- A second initial INVITE sent after the first one is rejected
- An INVITE sent within an established dialog to modify session parameters (Correct answer)
- An INVITE retransmitted automatically due to a network timeout
- An INVITE used exclusively to refresh dialog expiration timers
Correct answer: An INVITE sent within an established dialog to modify session parameters
A re-INVITE is sent within an existing confirmed dialog to renegotiate session parameters such as codecs, put a call on hold, or add media streams.
Question 7: What is the significance of the branch parameter in the SIP Via header?
- It identifies the transport protocol (UDP, TCP, TLS) for the message
- It uniquely identifies a SIP transaction across the network (Correct answer)
- It specifies the IP address of the next hop proxy
- It indicates which SIP version the user agent supports
Correct answer: It uniquely identifies a SIP transaction across the network
The branch parameter in the Via header serves as a transaction identifier; RFC 3261 requires it to start with 'z9hG4bK' and be globally unique per transaction.
Which SIP response first creates a confirmed dialog between two user agents?