SSCA Proxy Servers 4 — Questions and Answers
Question 1: When a SIP proxy detects a routing loop, which response code should it return?
- 480 Temporarily Unavailable
- 482 Loop Detected (Correct answer)
- 483 Too Many Hops
- 500 Server Internal Error
Correct answer: 482 Loop Detected
A proxy returns 482 Loop Detected when it finds its own address in the Via header stack, indicating the request has looped back.
Question 2: What is the purpose of the 'branch' parameter in the Via header added by a SIP proxy?
- It identifies the transaction and must start with the magic cookie 'z9hG4bK' (Correct answer)
- It specifies the transport layer protocol used by the proxy
- It indicates whether the proxy is stateful or stateless
- It contains the proxy's IP address in encoded form
Correct answer: It identifies the transaction and must start with the magic cookie 'z9hG4bK'
The branch parameter uniquely identifies a transaction and RFC 3261 requires compliant implementations to begin it with the magic cookie 'z9hG4bK'.
Question 3: How does a SIP proxy using strict routing (RFC 2543 behavior) differ in handling the Request-URI compared to loose routing?
- Strict routing requires the proxy's address to be in the Request-URI, which the proxy replaces with the next Route header (Correct answer)
- Strict routing allows the proxy to forward without modifying the Request-URI
- Strict routing uses DNS-SRV exclusively while loose routing uses A records
- Strict routing only applies to REGISTER requests
Correct answer: Strict routing requires the proxy's address to be in the Request-URI, which the proxy replaces with the next Route header
In strict routing, the proxy must be the Request-URI target; it pops itself from the route set and places the next route entry as the new Request-URI.
Question 4: Which SIP method is a proxy NOT permitted to fork by default, according to RFC 3261?
- INVITE
- REGISTER (Correct answer)
- OPTIONS
- SUBSCRIBE
Correct answer: REGISTER
REGISTER requests should not be forked by a proxy because they are intended for a specific registrar, not multiple destinations.
Question 5: What information does a SIP proxy use from the location service (registrar database) when routing an incoming request?
- The registered Contact URI(s) mapped to the Address of Record (AOR) (Correct answer)
- The UA's preferred codec list
- The UA's maximum session duration
- The UA's supported SIP extensions
Correct answer: The registered Contact URI(s) mapped to the Address of Record (AOR)
The proxy queries the location service using the AOR from the Request-URI to retrieve the registered Contact URI(s) for the actual device(s) to forward the request to.
Question 6: When a proxy receives multiple 2xx responses due to parallel forking, what must it do with the additional 2xx responses after forwarding the first one?
- Forward all 2xx responses upstream to the UAC
- Send ACK and then BYE to terminate the extra dialogs (Correct answer)
- Queue the additional 2xx responses for future use
- Ignore all subsequent 2xx responses silently
Correct answer: Send ACK and then BYE to terminate the extra dialogs
For parallel forking, after forwarding the first 2xx, the proxy must acknowledge and tear down the remaining answered branches with ACK+BYE to avoid multiple active sessions.
Question 7: What does a SIP proxy do when it receives a response and needs to forward it upstream?
- It removes the topmost Via header and forwards to the address in the next Via header (Correct answer)
- It adds a new Via header and forwards to the original UAC
- It replaces the Contact header with its own address before forwarding
- It stores the response and waits for all branch responses before forwarding
Correct answer: It removes the topmost Via header and forwards to the address in the next Via header
When forwarding a response upstream, a proxy removes its own (topmost) Via header and sends the response to the address specified in the next Via header.
When a SIP proxy detects a routing loop, which response code should it return?